From e0b263b88bab6137fbf2fbc60049d93075a869db Mon Sep 17 00:00:00 2001 From: Jerome Wu Date: Thu, 22 Nov 2018 15:49:35 +0800 Subject: [PATCH] Add partial recongnize unit tests --- .eslintrc | 3 +- .gitignore | 4 +- dist/tesseract.min.js | 2 +- dist/tesseract.min.js.map | 2 +- dist/worker.min.js | 4 +- dist/worker.min.js.map | 2 +- package-lock.json | 1601 ++++++++++++++++++++-- package.json | 6 +- scripts/dist/tesseract.min.js | 2 - scripts/dist/tesseract.min.js.map | 1 - scripts/dist/worker.min.js | 9 - scripts/dist/worker.min.js.map | 1 - scripts/server.js | 6 +- scripts/test-helper.js | 17 + scripts/webpack.config.prod.js | 2 +- src/common/worker.js | 17 +- src/node/index.js | 2 +- tests/.eslintrc | 5 + tests/assets/images/cosmic.png | Bin 0 -> 13037 bytes tests/assets/images/simple.bmp | Bin 0 -> 172938 bytes tests/assets/images/simple.jpg | Bin 0 -> 4978 bytes tests/assets/images/simple.pbm | Bin 0 -> 7211 bytes tests/assets/images/simple.png | Bin 0 -> 1305 bytes tests/assets/images/testocr.jpg | Bin 0 -> 70583 bytes tests/assets/images/testocr.pbm | Bin 0 -> 38411 bytes tests/assets/images/testocr.png | Bin 0 -> 23359 bytes tests/assets/testocr.bmp | Bin 1228938 -> 0 bytes tests/assets/traineddata/eng.traineddata | Bin 0 -> 23466654 bytes tests/recognize.test.js | 100 ++ 29 files changed, 1632 insertions(+), 154 deletions(-) delete mode 100644 scripts/dist/tesseract.min.js delete mode 100644 scripts/dist/tesseract.min.js.map delete mode 100644 scripts/dist/worker.min.js delete mode 100644 scripts/dist/worker.min.js.map create mode 100644 scripts/test-helper.js create mode 100644 tests/.eslintrc create mode 100644 tests/assets/images/cosmic.png create mode 100644 tests/assets/images/simple.bmp create mode 100644 tests/assets/images/simple.jpg create mode 100644 tests/assets/images/simple.pbm create mode 100644 tests/assets/images/simple.png create mode 100644 tests/assets/images/testocr.jpg create mode 100644 tests/assets/images/testocr.pbm create mode 100644 tests/assets/images/testocr.png delete mode 100755 tests/assets/testocr.bmp create mode 100644 tests/assets/traineddata/eng.traineddata create mode 100644 tests/recognize.test.js diff --git a/.eslintrc b/.eslintrc index fa01611..5103e0e 100644 --- a/.eslintrc +++ b/.eslintrc @@ -2,7 +2,8 @@ "extends": "airbnb", "env": { "browser": true, - "node": true + "node": true, + "mocha": true }, "rules": { "no-underscore-dangle": 0, diff --git a/.gitignore b/.gitignore index 53e3db6..2f837a7 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ node_modules/* yarn.lock tesseract.dev.js worker.dev.js -*.traineddata \ No newline at end of file +/*.traineddata +/examples/**/*.traineddata +.nyc_output diff --git a/dist/tesseract.min.js b/dist/tesseract.min.js index b0e739d..39b7ec1 100644 --- a/dist/tesseract.min.js +++ b/dist/tesseract.min.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Tesseract=t():e.Tesseract=t()}(window,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){const r=n(3),o={corePath:`https://cdn.jsdelivr.net/gh/naptha/tesseract.js-core@2.0.0-beta.4/tesseract${"object"==typeof WebAssembly?"":"asm"}.js`,langPath:"https://cdn.jsdelivr.net/gh/naptha/tessdata@gh-pages/3.02/"};{const{version:e}=n(4);o.workerPath=`https://cdn.jsdelivr.net/gh/naptha/tesseract.js@${e}/dist/worker.js`}t.defaultOptions=o,t.spawnWorker=((e,t)=>{let n;if(window.Blob&&window.URL){const e=new Blob([`importScripts("${t.workerPath}");`]);n=new Worker(window.URL.createObjectURL(e))}else n=new Worker(t.workerPath);return n.onmessage=(({data:t})=>{e._recv(t)}),n}),t.terminateWorker=(e=>{e.worker.terminate()}),t.sendPacket=((e,t)=>{(e=>r(e)?fetch(e).then(e=>e.buffer()):new Promise)(t.payload.image).then(e=>new Uint8Array(e)).then(n=>{e.worker.postMessage({...t,payload:{...t.payload,image:Array.from(n)}})})})},function(e,t,n){const r=n(2),o=n(0),s=n(5),i=n(6);e.exports={TesseractWorker:class{constructor(e={}){this.worker=null,this.workerOptions=Object.assign({},o.defaultOptions,e),this._currentJob=null,this._queue=[]}recognize(e,t={lang:"eng"}){return this._delay(n=>{n._send("recognize",{image:e,options:r.string(t)?{lang:t||"eng"}:t,workerOptions:this.workerOptions})})}detect(e,t={}){return this._delay(n=>{n._send("detect",{image:e,options:t,workerOptions:this.workerOptions})})}terminate(){this.worker&&o.terminateWorker(this),this.worker=null,this._currentJob=null,this._queue=[]}_delay(e){r.null(this.worker)&&(this.worker=o.spawnWorker(this,this.workerOptions));const t=new i(this);return this._queue.push(()=>{this._queue.shift(),this._currentJob=t,e(t)}),r.null(this._currentJob)&&this._dequeue(),t}_dequeue(){this._currentJob=null,this._queue.length&&this._queue[0]()}_recv(e){this._currentJob.id===e.jobId?this._currentJob._handle({...e,data:"resolve"===e.status&&"recognize"===e.action?s(e.data):e.data}):console.warn(`Job ID ${e.jobId} not known.`)}}}},function(e,t,n){var r;!function(o){"use strict";var s,i,u,a,c,f,l,p,h,b,d,y,g;function m(e){return null!=e}function v(e){return"number"==typeof e&&e>b&&et}function _(e,t){return v(e)&&e=t}function O(e,t){return v(e)&&e<=t}function E(e){return"string"==typeof e}function x(e){return E(e)&&""!==e}function P(e){return"[object Object]"===Object.prototype.toString.call(e)}function S(e,t){try{return e instanceof t}catch(e){return!1}}function I(e,t){var n;for(n in t)if(t.hasOwnProperty(n)){if(!1===e.hasOwnProperty(n)||typeof e[n]!=typeof t[n])return!1;if(P(e[n])&&!1===I(e[n],t[n]))return!1}return!0}function T(e){return y(e)}function q(e){return m(e)&&k(e.length,0)}function A(e){return"function"==typeof e}function J(e,t){var n;for(n=0;nn}},{n:"greaterOrEqual",f:k},{n:"lessOrEqual",f:O},{n:"inRange",f:function(e,t,n){if(t=n}},{n:"positive",f:function(e){return j(e,0)}},{n:"negative",f:function(e){return _(e,0)}},{n:"string",f:E,s:"s"},{n:"emptyString",f:function(e){return""===e},s:"s"},{n:"nonEmptyString",f:x,s:"s"},{n:"contains",f:function(e,t){return E(e)&&-1!==e.indexOf(t)},s:"s"},{n:"match",f:function(e,t){return E(e)&&!!e.match(t)},s:"s"},{n:"boolean",f:function(e){return!1===e||!0===e},s:"b"},{n:"object",f:P,s:"o"},{n:"emptyObject",f:function(e){return P(e)&&0===Object.keys(e).length},s:"o"},{n:"nonEmptyObject",f:function(e){return P(e)&&Object.keys(e).length>0},s:"o"},{n:"instanceStrict",f:S,s:"t"},{n:"instance",f:function(e,t){try{return S(e,t)||e.constructor.name===t.name||Object.prototype.toString.call(e)==="[object "+t.name+"]"}catch(e){return!1}},s:"t"},{n:"like",f:I,s:"t"},{n:"array",f:T,s:"a"},{n:"emptyArray",f:function(e){return T(e)&&0===e.length},s:"a"},{n:"nonEmptyArray",f:function(e){return T(e)&&j(e.length,0)},s:"a"},{n:"arrayLike",f:q,s:"al"},{n:"iterable",f:function(e){if(!g)return q(e);return m(e)&&A(e[Symbol.iterator])},s:"i"},{n:"date",f:function(e){return S(e,Date)&&w(e.getTime())},s:"d"},{n:"function",f:A,s:"f"},{n:"hasLength",f:function(e,t){return m(e)&&e.length===t},s:"l"}].map(function(e){var t=e.n;i[t]="Invalid "+s[e.s||"n"],u[t]=e.f}),a={apply:function(e,t){if(c.array(e),A(t))return e.map(function(e){return t(e)});return c.array(t),c.hasLength(e,t.length),e.map(function(e,n){return t[n](e)})},map:function(e,t){if(c.object(e),A(t))return function(e,t){var n={};return Object.keys(e).forEach(function(r){n[r]=t(e[r])}),n}(e,t);return c.object(t),function e(t,n){var r={};return Object.keys(n).forEach(function(o){var s=n[o];A(s)?f.assigned(t)?r[o]=!!s.m:r[o]=s(t[o]):P(s)&&(r[o]=e(t[o],s))}),r}(e,t)},all:function(e){if(T(e))return J(e,!1);return c.object(e),N(e,!1)},any:function(e){if(T(e))return J(e,!0);return c.object(e),N(e,!0)}},p=["array","arrayLike","iterable","object"],h=Array.prototype.slice,b=Number.NEGATIVE_INFINITY,d=Number.POSITIVE_INFINITY,y=Array.isArray,g="function"==typeof Symbol,a=M(a,u),c=z(W,L),f=z($,D),l=z(function(e){var t=function(){return!!f.assigned(arguments[0])||e.apply(null,arguments)};return t.l=e.length,t.m=!0,t},function(e){if(!1===m(e))return!0;return e}),c.not=V(W,f),c.maybe=V(W,l),p.forEach(function(e){u[e].of=U([R.bind(null,null),u[e],u,null])}),B(c,W),B(f,$),p.forEach(function(e){l[e].of=U([R.bind(null,"maybe"),u[e],u,null]),c.maybe[e].of=V(W,l[e].of),c.not[e].of=V(W,f[e].of)}),function(o){void 0===(r=function(){return o}.call(t,n,t,e))||(e.exports=r)}(M(a,{assert:c,not:f,maybe:l}))}()},function(e,t){e.exports=function(e){return n.test(e)};var n=/^(?:\w+:)?\/\/([^\s\.]+\.\S{2}|localhost[\:?\d]*)\S*$/},function(e){e.exports={name:"tesseract.js",version:"1.0.13",description:"Pure Javascript Multilingual OCR",main:"src/index.js",scripts:{start:'concurrently --kill-others "watchify src/index.js -t [ envify --NODE_ENV development ] -t [ babelify --presets [ es2015 ] ] -o dist/tesseract.dev.js --standalone Tesseract" "watchify src/browser/worker.js -t [ envify --NODE_ENV development ] -t [ babelify --presets [ es2015 ] ] -o dist/worker.dev.js" "http-server -p 7355"',build:"webpack --config webpack.config.js",prepublishOnly:"npm run build",lint:"eslint src"},browser:{"./src/node/index.js":"./src/browser/index.js"},author:"",contributors:["jeromewu"],license:"Apache-2.0",devDependencies:{eslint:"^5.9.0","eslint-config-airbnb":"^17.1.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-react":"^7.11.1",webpack:"^4.26.0","webpack-cli":"^3.1.2"},dependencies:{"check-types":"^7.4.0","is-url":"1.2.2","node-fetch":"^1.7.3","tesseract.js-core":"^2.0.0-beta.4","tesseract.js-utils":"^1.0.0-beta.1"},repository:{type:"git",url:"https://github.com/naptha/tesseract.js.git"},bugs:{url:"https://github.com/naptha/tesseract.js/issues"},homepage:"https://github.com/naptha/tesseract.js"}},function(e,t){e.exports=(e=>{const t={...e,paragraphs:[],lines:[],words:[],symbols:[]};return t.blocks.forEach(e=>{const n={...e,page:t,lines:[],words:[],symbols:[]};n.paragraphs.forEach(e=>{const r={...e,block:n,page:t,words:[],symbols:[]};r.lines.forEach(e=>{const o={...e,paragraph:r,block:n,page:t,symbols:[]};o.words.forEach(e=>{const s={...e,line:o,paragraph:r,block:n,page:t};s.symbols.forEach(e=>{const i={...e,word:s,line:o,paragraph:r,block:n,page:t};i.line.symbols.push(i),i.paragraph.symbols.push(i),i.block.symbols.push(i),i.page.symbols.push(i)}),s.paragraph.words.push(s),s.block.words.push(s),s.page.words.push(s)}),o.block.lines.push(o),o.page.lines.push(o)}),r.page.paragraphs.push(r)})}),t})},function(e,t,n){const r=n(0);let o=0;e.exports=class{constructor(e){o+=1,this.id=`Job-${o}-${Math.random().toString(16).slice(3,8)}`,this._instance=e,this._resolve=[],this._reject=[],this._progress=[],this._finally=[]}then(e,t){return this._resolve.push?this._resolve.push(e):e(this._resolve),t&&this.catch(t),this}catch(e){return this._reject.push?this._reject.push(e):e(this._reject),this}progress(e){return this._progress.push(e),this}finally(e){return this._finally.push(e),this}_send(e,t){r.sendPacket(this._instance,{jobId:this.id,action:e,payload:t})}_handle(e){const{data:t}=e;let n=!1;"resolve"===e.status?(0===this._resolve.length&&console.log(t),this._resolve.forEach(e=>{const n=e(t);n&&"function"==typeof n.then&&console.warn("TesseractJob instances do not chain like ES6 Promises. To convert it into a real promise, use Promise.resolve.")}),this._resolve=t,this._instance._dequeue(),n=!0):"reject"===e.status?(0===this._reject.length&&console.error(t),this._reject.forEach(e=>e(t)),this._reject=t,this._instance._dequeue(),n=!0):"progress"===e.status?this._progress.forEach(e=>e(t)):console.warn("Message type unknown",e.status),n&&this._finally.forEach(e=>e(t))}}}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.Tesseract=n():e.Tesseract=n()}(window,function(){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)t.d(r,o,function(n){return e[n]}.bind(null,o));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=2)}([function(e,n,t){var r;!function(o){"use strict";var s,i,u,a,c,f,l,p,h,d,b,y,g;function m(e){return null!=e}function v(e){return"number"==typeof e&&e>d&&en}function _(e,n){return v(e)&&e=n}function O(e,n){return v(e)&&e<=n}function E(e){return"string"==typeof e}function x(e){return E(e)&&""!==e}function P(e){return"[object Object]"===Object.prototype.toString.call(e)}function S(e,n){try{return e instanceof n}catch(e){return!1}}function q(e,n){var t;for(t in n)if(n.hasOwnProperty(t)){if(!1===e.hasOwnProperty(t)||typeof e[t]!=typeof n[t])return!1;if(P(e[t])&&!1===q(e[t],n[t]))return!1}return!0}function I(e){return y(e)}function T(e){return m(e)&&k(e.length,0)}function A(e){return"function"==typeof e}function J(e,n){var t;for(t=0;tt}},{n:"greaterOrEqual",f:k},{n:"lessOrEqual",f:O},{n:"inRange",f:function(e,n,t){if(n=t}},{n:"positive",f:function(e){return j(e,0)}},{n:"negative",f:function(e){return _(e,0)}},{n:"string",f:E,s:"s"},{n:"emptyString",f:function(e){return""===e},s:"s"},{n:"nonEmptyString",f:x,s:"s"},{n:"contains",f:function(e,n){return E(e)&&-1!==e.indexOf(n)},s:"s"},{n:"match",f:function(e,n){return E(e)&&!!e.match(n)},s:"s"},{n:"boolean",f:function(e){return!1===e||!0===e},s:"b"},{n:"object",f:P,s:"o"},{n:"emptyObject",f:function(e){return P(e)&&0===Object.keys(e).length},s:"o"},{n:"nonEmptyObject",f:function(e){return P(e)&&Object.keys(e).length>0},s:"o"},{n:"instanceStrict",f:S,s:"t"},{n:"instance",f:function(e,n){try{return S(e,n)||e.constructor.name===n.name||Object.prototype.toString.call(e)==="[object "+n.name+"]"}catch(e){return!1}},s:"t"},{n:"like",f:q,s:"t"},{n:"array",f:I,s:"a"},{n:"emptyArray",f:function(e){return I(e)&&0===e.length},s:"a"},{n:"nonEmptyArray",f:function(e){return I(e)&&j(e.length,0)},s:"a"},{n:"arrayLike",f:T,s:"al"},{n:"iterable",f:function(e){if(!g)return T(e);return m(e)&&A(e[Symbol.iterator])},s:"i"},{n:"date",f:function(e){return S(e,Date)&&w(e.getTime())},s:"d"},{n:"function",f:A,s:"f"},{n:"hasLength",f:function(e,n){return m(e)&&e.length===n},s:"l"}].map(function(e){var n=e.n;i[n]="Invalid "+s[e.s||"n"],u[n]=e.f}),a={apply:function(e,n){if(c.array(e),A(n))return e.map(function(e){return n(e)});return c.array(n),c.hasLength(e,n.length),e.map(function(e,t){return n[t](e)})},map:function(e,n){if(c.object(e),A(n))return function(e,n){var t={};return Object.keys(e).forEach(function(r){t[r]=n(e[r])}),t}(e,n);return c.object(n),function e(n,t){var r={};return Object.keys(t).forEach(function(o){var s=t[o];A(s)?f.assigned(n)?r[o]=!!s.m:r[o]=s(n[o]):P(s)&&(r[o]=e(n[o],s))}),r}(e,n)},all:function(e){if(I(e))return J(e,!1);return c.object(e),M(e,!1)},any:function(e){if(I(e))return J(e,!0);return c.object(e),M(e,!0)}},p=["array","arrayLike","iterable","object"],h=Array.prototype.slice,d=Number.NEGATIVE_INFINITY,b=Number.POSITIVE_INFINITY,y=Array.isArray,g="function"==typeof Symbol,a=N(a,u),c=U(W,L),f=U(B,R),l=U(function(e){var n=function(){return!!f.assigned(arguments[0])||e.apply(null,arguments)};return n.l=e.length,n.m=!0,n},function(e){if(!1===m(e))return!0;return e}),c.not=F(W,f),c.maybe=F(W,l),p.forEach(function(e){u[e].of=z([$.bind(null,null),u[e],u,null])}),C(c,W),C(f,B),p.forEach(function(e){l[e].of=z([$.bind(null,"maybe"),u[e],u,null]),c.maybe[e].of=F(W,l[e].of),c.not[e].of=F(W,f[e].of)}),function(o){void 0===(r=function(){return o}.call(n,t,n,e))||(e.exports=r)}(N(a,{assert:c,not:f,maybe:l}))}()},function(e,n,t){const r=t(0),o=t(3),{defaultOptions:s}=t(4),{version:i}=t(5);n.defaultOptions={...s,workerPath:`https://cdn.jsdelivr.net/gh/naptha/tesseract.js@v${i}/dist/worker.min.js`,corePath:`https://cdn.jsdelivr.net/gh/naptha/tesseract.js-core@v2.0.0-beta.5/tesseract-core${"object"==typeof WebAssembly?"":".asm"}.js`},n.spawnWorker=((e,n)=>{let t;if(window.Blob&&window.URL){const e=new Blob([`importScripts("${n.workerPath}");`]);t=new Worker(window.URL.createObjectURL(e))}else t=new Worker(n.workerPath);return t.onmessage=(({data:n})=>{e._recv(n)}),t}),n.terminateWorker=(e=>{e.worker.terminate()}),n.sendPacket=((e,n)=>{(e=>r.string(e)?fetch(o(e)).then(e=>e.arrayBuffer()):r.instance(e,File)?new Promise(n=>{const t=new FileReader;t.onload=(()=>{n(t.result)}),t.readAsArrayBuffer(e)}):Promise.reject())(n.payload.image).then(e=>new Uint8Array(e)).then(t=>{e.worker.postMessage({...n,payload:{...n.payload,image:Array.from(t)}})})})},function(e,n,t){const r=t(0),o=t(1),s=t(6),i=t(7);e.exports={TesseractWorker:class{constructor(e={}){this.worker=null,this.workerOptions=Object.assign({},o.defaultOptions,e),this._currentJob=null,this._queue=[]}recognize(e,n={lang:"eng"}){return this._delay(t=>{t._send("recognize",{image:e,options:r.string(n)?{lang:n||"eng"}:n,workerOptions:this.workerOptions})})}detect(e,n={}){return this._delay(t=>{t._send("detect",{image:e,options:n,workerOptions:this.workerOptions})})}terminate(){this.worker&&o.terminateWorker(this),this.worker=null,this._currentJob=null,this._queue=[]}_delay(e){r.null(this.worker)&&(this.worker=o.spawnWorker(this,this.workerOptions));const n=new i(this);return this._queue.push(()=>{this._queue.shift(),this._currentJob=n,e(n)}),r.null(this._currentJob)&&this._dequeue(),n}_dequeue(){this._currentJob=null,this._queue.length&&this._queue[0]()}_recv(e){this._currentJob.id===e.jobId?this._currentJob._handle({...e,data:"resolve"===e.status&&"recognize"===e.action?s(e.data):e.data}):console.warn(`Job ID ${e.jobId} not known.`)}}}},function(e,n,t){var r,o;void 0===(o="function"==typeof(r=function(){return function(){var e=arguments.length;if(0===e)throw new Error("resolveUrl requires at least one argument; got none.");var n=document.createElement("base");if(n.href=arguments[0],1===e)return n.href;var t=document.getElementsByTagName("head")[0];t.insertBefore(n,t.firstChild);for(var r,o=document.createElement("a"),s=1;s{const n={...e,paragraphs:[],lines:[],words:[],symbols:[]};return n.blocks.forEach(e=>{const t={...e,page:n,lines:[],words:[],symbols:[]};t.paragraphs.forEach(e=>{const r={...e,block:t,page:n,words:[],symbols:[]};r.lines.forEach(e=>{const o={...e,paragraph:r,block:t,page:n,symbols:[]};o.words.forEach(e=>{const s={...e,line:o,paragraph:r,block:t,page:n};s.symbols.forEach(e=>{const i={...e,word:s,line:o,paragraph:r,block:t,page:n};i.line.symbols.push(i),i.paragraph.symbols.push(i),i.block.symbols.push(i),i.page.symbols.push(i)}),s.paragraph.words.push(s),s.block.words.push(s),s.page.words.push(s)}),o.block.lines.push(o),o.page.lines.push(o)}),r.page.paragraphs.push(r)})}),n})},function(e,n,t){const r=t(1);let o=0;e.exports=class{constructor(e){o+=1,this.id=`Job-${o}-${Math.random().toString(16).slice(3,8)}`,this._instance=e,this._resolve=[],this._reject=[],this._progress=[],this._finally=[]}then(e,n){return this._resolve.push?this._resolve.push(e):e(this._resolve),n&&this.catch(n),this}catch(e){return this._reject.push?this._reject.push(e):e(this._reject),this}progress(e){return this._progress.push(e),this}finally(e){return this._finally.push(e),this}_send(e,n){r.sendPacket(this._instance,{jobId:this.id,action:e,payload:n})}_handle(e){const{data:n}=e;let t=!1;"resolve"===e.status?(0===this._resolve.length&&console.log(n),this._resolve.forEach(e=>{const t=e(n);t&&"function"==typeof t.then&&console.warn("TesseractJob instances do not chain like ES6 Promises. To convert it into a real promise, use Promise.resolve.")}),this._resolve=n,this._instance._dequeue(),t=!0):"reject"===e.status?(0===this._reject.length&&console.error(n),this._reject.forEach(e=>e(n)),this._reject=n,this._instance._dequeue(),t=!0):"progress"===e.status?this._progress.forEach(e=>e(n)):console.warn("Message type unknown",e.status),t&&this._finally.forEach(e=>e(n))}}}])}); //# sourceMappingURL=tesseract.min.js.map \ No newline at end of file diff --git a/dist/tesseract.min.js.map b/dist/tesseract.min.js.map index e4a83a8..1faa7fe 100644 --- a/dist/tesseract.min.js.map +++ b/dist/tesseract.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://Tesseract/webpack/universalModuleDefinition","webpack://Tesseract/webpack/bootstrap","webpack://Tesseract/./src/browser/index.js","webpack://Tesseract/./src/index.js","webpack://Tesseract/./node_modules/check-types/src/check-types.js","webpack://Tesseract/./node_modules/is-url/index.js","webpack://Tesseract/./src/common/circularize.js","webpack://Tesseract/./src/common/job.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isURL","defaultOptions","corePath","WebAssembly","langPath","version","workerPath","spawnWorker","instance","workerOptions","worker","Blob","URL","blob","Worker","createObjectURL","onmessage","data","_recv","terminateWorker","terminate","sendPacket","packet","imageURI","fetch","then","resp","buffer","Promise","loadImage","payload","image","buf","Uint8Array","img","postMessage","Array","from","check","adapter","circularize","TesseractJob","TesseractWorker","[object Object]","this","assign","_currentJob","_queue","options","lang","_delay","job","_send","string","fn","null","push","shift","_dequeue","length","id","jobId","_handle","status","action","console","warn","__WEBPACK_AMD_DEFINE_RESULT__","globals","strings","messages","predicates","functions","assert","not","maybe","collections","slice","neginf","posinf","isArray","haveSymbols","assigned","number","integer","greater","lhs","rhs","less","greaterOrEqual","lessOrEqual","nonEmptyString","toString","instanceStrict","error","like","archetype","array","arrayLike","isFunction","testArray","result","testObject","mixin","target","source","keys","forEach","assertModifier","predicate","defaultMessage","args","argCount","message","ErrorType","assertImpl","apply","TypeError","assertPredicate","arguments","Error","notModifier","modifiedPredicate","notImpl","ofModifier","type","collection","map","coerceCollection","item","concat","ignore","createModifiedPredicates","modifier","createModifiedFunctions","pop","configurable","writable","createModifiedModifier","modified","createOfModifiers","base","of","v","b","a","al","f","undefined","iterator","iteration","values","next","done","x","y","substring","indexOf","regex","match","constructor","Date","getTime","hasLength","index","mapSimple","mapComplex","all","any","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","exportFunctions","matcher","test","iPage","page","paragraphs","lines","words","symbols","blocks","iBlock","block","iPara","para","iLine","line","paragraph","iWord","word","iSym","sym","jobCounter","Math","random","_instance","_resolve","_reject","_progress","_finally","resolve","reject","catch","runFinallyCbs","log","ret"],"mappings":"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","file":"tesseract.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Tesseract\"] = factory();\n\telse\n\t\troot[\"Tesseract\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","const isURL = require('is-url');\n\nconst defaultOptions = {\n // workerPath: 'https://cdn.jsdelivr.net/gh/naptha/tesseract.js@0.2.0/dist/worker.js',\n corePath: `https://cdn.jsdelivr.net/gh/naptha/tesseract.js-core@2.0.0-beta.4/tesseract${typeof WebAssembly === 'object' ? '' : 'asm'}.js`,\n langPath: 'https://cdn.jsdelivr.net/gh/naptha/tessdata@gh-pages/3.02/',\n};\n\nif (process.env.NODE_ENV === 'development') {\n console.debug('Using Development Configuration');\n // eslint-disable-next-line\n const { protocol, host } = location;\n defaultOptions.workerPath = `${protocol}://${host}/dist/worker.dev.js?nocache=${Math.random().toString(36).slice(3)}`;\n} else {\n const { version } = require('../../package.json');\n defaultOptions.workerPath = `https://cdn.jsdelivr.net/gh/naptha/tesseract.js@${version}/dist/worker.js`;\n}\n\nconst loadImage = (imageURI) => {\n if (isURL(imageURI)) {\n return fetch(imageURI)\n .then(resp => resp.buffer());\n }\n return new Promise();\n};\n\nexports.defaultOptions = defaultOptions;\n\nexports.spawnWorker = (instance, workerOptions) => {\n let worker;\n if (window.Blob && window.URL) {\n const blob = new Blob([`importScripts(\"${workerOptions.workerPath}\");`]);\n worker = new Worker(window.URL.createObjectURL(blob));\n } else {\n worker = new Worker(workerOptions.workerPath);\n }\n\n worker.onmessage = ({ data }) => {\n instance._recv(data);\n };\n\n return worker;\n};\n\nexports.terminateWorker = (instance) => {\n instance.worker.terminate();\n};\n\nexports.sendPacket = (instance, packet) => {\n loadImage(packet.payload.image)\n .then(buf => new Uint8Array(buf))\n .then((img) => {\n instance.worker.postMessage({\n ...packet,\n payload: {\n ...packet.payload,\n image: Array.from(img),\n },\n });\n });\n};\n","const check = require('check-types');\nconst adapter = require('./node');\nconst circularize = require('./common/circularize');\nconst TesseractJob = require('./common/job');\n\nclass TesseractWorker {\n constructor(workerOptions = {}) {\n this.worker = null;\n this.workerOptions = Object.assign({}, adapter.defaultOptions, workerOptions);\n this._currentJob = null;\n this._queue = [];\n }\n\n recognize(image, options = { lang: 'eng' }) {\n return this._delay((job) => {\n job._send(\n 'recognize',\n {\n image,\n options: check.string(options)\n ? { lang: options || 'eng' }\n : options,\n workerOptions: this.workerOptions,\n },\n );\n });\n }\n\n detect(image, options = {}) {\n return this._delay((job) => {\n job._send(\n 'detect',\n {\n image,\n options,\n workerOptions: this.workerOptions,\n },\n );\n });\n }\n\n terminate() {\n if (this.worker) {\n adapter.terminateWorker(this);\n }\n this.worker = null;\n this._currentJob = null;\n this._queue = [];\n }\n\n _delay(fn) {\n if (check.null(this.worker)) {\n this.worker = adapter.spawnWorker(this, this.workerOptions);\n }\n\n const job = new TesseractJob(this);\n this._queue.push(() => {\n this._queue.shift();\n this._currentJob = job;\n fn(job);\n });\n if (check.null(this._currentJob)) {\n this._dequeue();\n }\n return job;\n }\n\n _dequeue() {\n this._currentJob = null;\n if (this._queue.length) {\n this._queue[0]();\n }\n }\n\n _recv(packet) {\n if (this._currentJob.id === packet.jobId) {\n this._currentJob._handle({\n ...packet,\n data: packet.status === 'resolve' && packet.action === 'recognize'\n ? circularize(packet.data)\n : packet.data,\n });\n } else {\n console.warn(`Job ID ${packet.jobId} not known.`);\n }\n }\n}\n\nmodule.exports = {\n TesseractWorker,\n};\n","/*globals define, module, Symbol */\n/*jshint -W056 */\n\n(function (globals) {\n 'use strict';\n\n var strings, messages, predicates, functions, assert, not, maybe,\n collections, slice, neginf, posinf, isArray, haveSymbols;\n\n strings = {\n v: 'value',\n n: 'number',\n s: 'string',\n b: 'boolean',\n o: 'object',\n t: 'type',\n a: 'array',\n al: 'array-like',\n i: 'iterable',\n d: 'date',\n f: 'function',\n l: 'length'\n };\n\n messages = {};\n predicates = {};\n\n [\n { n: 'equal', f: equal, s: 'v' },\n { n: 'undefined', f: isUndefined, s: 'v' },\n { n: 'null', f: isNull, s: 'v' },\n { n: 'assigned', f: assigned, s: 'v' },\n { n: 'primitive', f: primitive, s: 'v' },\n { n: 'includes', f: includes, s: 'v' },\n { n: 'zero', f: zero },\n { n: 'infinity', f: infinity },\n { n: 'number', f: number },\n { n: 'integer', f: integer },\n { n: 'even', f: even },\n { n: 'odd', f: odd },\n { n: 'greater', f: greater },\n { n: 'less', f: less },\n { n: 'between', f: between },\n { n: 'greaterOrEqual', f: greaterOrEqual },\n { n: 'lessOrEqual', f: lessOrEqual },\n { n: 'inRange', f: inRange },\n { n: 'positive', f: positive },\n { n: 'negative', f: negative },\n { n: 'string', f: string, s: 's' },\n { n: 'emptyString', f: emptyString, s: 's' },\n { n: 'nonEmptyString', f: nonEmptyString, s: 's' },\n { n: 'contains', f: contains, s: 's' },\n { n: 'match', f: match, s: 's' },\n { n: 'boolean', f: boolean, s: 'b' },\n { n: 'object', f: object, s: 'o' },\n { n: 'emptyObject', f: emptyObject, s: 'o' },\n { n: 'nonEmptyObject', f: nonEmptyObject, s: 'o' },\n { n: 'instanceStrict', f: instanceStrict, s: 't' },\n { n: 'instance', f: instance, s: 't' },\n { n: 'like', f: like, s: 't' },\n { n: 'array', f: array, s: 'a' },\n { n: 'emptyArray', f: emptyArray, s: 'a' },\n { n: 'nonEmptyArray', f: nonEmptyArray, s: 'a' },\n { n: 'arrayLike', f: arrayLike, s: 'al' },\n { n: 'iterable', f: iterable, s: 'i' },\n { n: 'date', f: date, s: 'd' },\n { n: 'function', f: isFunction, s: 'f' },\n { n: 'hasLength', f: hasLength, s: 'l' },\n ].map(function (data) {\n var n = data.n;\n messages[n] = 'Invalid ' + strings[data.s || 'n'];\n predicates[n] = data.f;\n });\n\n functions = {\n apply: apply,\n map: map,\n all: all,\n any: any\n };\n\n collections = [ 'array', 'arrayLike', 'iterable', 'object' ];\n slice = Array.prototype.slice;\n neginf = Number.NEGATIVE_INFINITY;\n posinf = Number.POSITIVE_INFINITY;\n isArray = Array.isArray;\n haveSymbols = typeof Symbol === 'function';\n\n functions = mixin(functions, predicates);\n assert = createModifiedPredicates(assertModifier, assertImpl);\n not = createModifiedPredicates(notModifier, notImpl);\n maybe = createModifiedPredicates(maybeModifier, maybeImpl);\n assert.not = createModifiedModifier(assertModifier, not);\n assert.maybe = createModifiedModifier(assertModifier, maybe);\n\n collections.forEach(createOfPredicates);\n createOfModifiers(assert, assertModifier);\n createOfModifiers(not, notModifier);\n collections.forEach(createMaybeOfModifiers);\n\n exportFunctions(mixin(functions, {\n assert: assert,\n not: not,\n maybe: maybe\n }));\n\n /**\n * Public function `equal`.\n *\n * Returns true if `lhs` and `rhs` are strictly equal, without coercion.\n * Returns false otherwise.\n */\n function equal (lhs, rhs) {\n return lhs === rhs;\n }\n\n /**\n * Public function `undefined`.\n *\n * Returns true if `data` is undefined, false otherwise.\n */\n function isUndefined (data) {\n return data === undefined;\n }\n\n /**\n * Public function `null`.\n *\n * Returns true if `data` is null, false otherwise.\n */\n function isNull (data) {\n return data === null;\n }\n\n /**\n * Public function `assigned`.\n *\n * Returns true if `data` is not null or undefined, false otherwise.\n */\n function assigned (data) {\n return data !== undefined && data !== null;\n }\n\n /**\n * Public function `primitive`.\n *\n * Returns true if `data` is a primitive type, false otherwise.\n */\n function primitive (data) {\n var type;\n\n switch (data) {\n case null:\n case undefined:\n case false:\n case true:\n return true;\n }\n\n type = typeof data;\n return type === 'string' || type === 'number' || (haveSymbols && type === 'symbol');\n }\n\n /**\n * Public function `zero`.\n *\n * Returns true if `data` is zero, false otherwise.\n */\n function zero (data) {\n return data === 0;\n }\n\n /**\n * Public function `infinity`.\n *\n * Returns true if `data` is positive or negative infinity, false otherwise.\n */\n function infinity (data) {\n return data === neginf || data === posinf;\n }\n\n /**\n * Public function `number`.\n *\n * Returns true if `data` is a number, false otherwise.\n */\n function number (data) {\n return typeof data === 'number' && data > neginf && data < posinf;\n }\n\n /**\n * Public function `integer`.\n *\n * Returns true if `data` is an integer, false otherwise.\n */\n function integer (data) {\n return typeof data === 'number' && data % 1 === 0;\n }\n\n /**\n * Public function `even`.\n *\n * Returns true if `data` is an even number, false otherwise.\n */\n function even (data) {\n return typeof data === 'number' && data % 2 === 0;\n }\n\n /**\n * Public function `odd`.\n *\n * Returns true if `data` is an odd number, false otherwise.\n */\n function odd (data) {\n return integer(data) && data % 2 !== 0;\n }\n\n /**\n * Public function `greater`.\n *\n * Returns true if `lhs` is a number greater than `rhs`, false otherwise.\n */\n function greater (lhs, rhs) {\n return number(lhs) && lhs > rhs;\n }\n\n /**\n * Public function `less`.\n *\n * Returns true if `lhs` is a number less than `rhs`, false otherwise.\n */\n function less (lhs, rhs) {\n return number(lhs) && lhs < rhs;\n }\n\n /**\n * Public function `between`.\n *\n * Returns true if `data` is a number between `x` and `y`, false otherwise.\n */\n function between (data, x, y) {\n if (x < y) {\n return greater(data, x) && data < y;\n }\n\n return less(data, x) && data > y;\n }\n\n /**\n * Public function `greaterOrEqual`.\n *\n * Returns true if `lhs` is a number greater than or equal to `rhs`, false\n * otherwise.\n */\n function greaterOrEqual (lhs, rhs) {\n return number(lhs) && lhs >= rhs;\n }\n\n /**\n * Public function `lessOrEqual`.\n *\n * Returns true if `lhs` is a number less than or equal to `rhs`, false\n * otherwise.\n */\n function lessOrEqual (lhs, rhs) {\n return number(lhs) && lhs <= rhs;\n }\n\n /**\n * Public function `inRange`.\n *\n * Returns true if `data` is a number in the range `x..y`, false otherwise.\n */\n function inRange (data, x, y) {\n if (x < y) {\n return greaterOrEqual(data, x) && data <= y;\n }\n\n return lessOrEqual(data, x) && data >= y;\n }\n\n /**\n * Public function `positive`.\n *\n * Returns true if `data` is a positive number, false otherwise.\n */\n function positive (data) {\n return greater(data, 0);\n }\n\n /**\n * Public function `negative`.\n *\n * Returns true if `data` is a negative number, false otherwise.\n */\n function negative (data) {\n return less(data, 0);\n }\n\n /**\n * Public function `string`.\n *\n * Returns true if `data` is a string, false otherwise.\n */\n function string (data) {\n return typeof data === 'string';\n }\n\n /**\n * Public function `emptyString`.\n *\n * Returns true if `data` is the empty string, false otherwise.\n */\n function emptyString (data) {\n return data === '';\n }\n\n /**\n * Public function `nonEmptyString`.\n *\n * Returns true if `data` is a non-empty string, false otherwise.\n */\n function nonEmptyString (data) {\n return string(data) && data !== '';\n }\n\n /**\n * Public function `contains`.\n *\n * Returns true if `data` is a string that contains `substring`, false\n * otherwise.\n */\n function contains (data, substring) {\n return string(data) && data.indexOf(substring) !== -1;\n }\n\n /**\n * Public function `match`.\n *\n * Returns true if `data` is a string that matches `regex`, false otherwise.\n */\n function match (data, regex) {\n return string(data) && !! data.match(regex);\n }\n\n /**\n * Public function `boolean`.\n *\n * Returns true if `data` is a boolean value, false otherwise.\n */\n function boolean (data) {\n return data === false || data === true;\n }\n\n /**\n * Public function `object`.\n *\n * Returns true if `data` is a plain-old JS object, false otherwise.\n */\n function object (data) {\n return Object.prototype.toString.call(data) === '[object Object]';\n }\n\n /**\n * Public function `emptyObject`.\n *\n * Returns true if `data` is an empty object, false otherwise.\n */\n function emptyObject (data) {\n return object(data) && Object.keys(data).length === 0;\n }\n\n /**\n * Public function `nonEmptyObject`.\n *\n * Returns true if `data` is a non-empty object, false otherwise.\n */\n function nonEmptyObject (data) {\n return object(data) && Object.keys(data).length > 0;\n }\n\n /**\n * Public function `instanceStrict`.\n *\n * Returns true if `data` is an instance of `prototype`, false otherwise.\n */\n function instanceStrict (data, prototype) {\n try {\n return data instanceof prototype;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Public function `instance`.\n *\n * Returns true if `data` is an instance of `prototype`, false otherwise.\n * Falls back to testing constructor.name and Object.prototype.toString\n * if the initial instanceof test fails.\n */\n function instance (data, prototype) {\n try {\n return instanceStrict(data, prototype) ||\n data.constructor.name === prototype.name ||\n Object.prototype.toString.call(data) === '[object ' + prototype.name + ']';\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Public function `like`.\n *\n * Tests whether `data` 'quacks like a duck'. Returns true if `data` has all\n * of the properties of `archetype` (the 'duck'), false otherwise.\n */\n function like (data, archetype) {\n var name;\n\n for (name in archetype) {\n if (archetype.hasOwnProperty(name)) {\n if (data.hasOwnProperty(name) === false || typeof data[name] !== typeof archetype[name]) {\n return false;\n }\n\n if (object(data[name]) && like(data[name], archetype[name]) === false) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Public function `array`.\n *\n * Returns true if `data` is an array, false otherwise.\n */\n function array (data) {\n return isArray(data);\n }\n\n /**\n * Public function `emptyArray`.\n *\n * Returns true if `data` is an empty array, false otherwise.\n */\n function emptyArray (data) {\n return array(data) && data.length === 0;\n }\n\n /**\n * Public function `nonEmptyArray`.\n *\n * Returns true if `data` is a non-empty array, false otherwise.\n */\n function nonEmptyArray (data) {\n return array(data) && greater(data.length, 0);\n }\n\n /**\n * Public function `arrayLike`.\n *\n * Returns true if `data` is an array-like object, false otherwise.\n */\n function arrayLike (data) {\n return assigned(data) && greaterOrEqual(data.length, 0);\n }\n\n /**\n * Public function `iterable`.\n *\n * Returns true if `data` is an iterable, false otherwise.\n */\n function iterable (data) {\n if (! haveSymbols) {\n // Fall back to `arrayLike` predicate in pre-ES6 environments.\n return arrayLike(data);\n }\n\n return assigned(data) && isFunction(data[Symbol.iterator]);\n }\n\n /**\n * Public function `includes`.\n *\n * Returns true if `data` contains `value`, false otherwise.\n */\n function includes (data, value) {\n var iterator, iteration, keys, length, i;\n\n if (! assigned(data)) {\n return false;\n }\n\n if (haveSymbols && data[Symbol.iterator] && isFunction(data.values)) {\n iterator = data.values();\n\n do {\n iteration = iterator.next();\n\n if (iteration.value === value) {\n return true;\n }\n } while (! iteration.done);\n\n return false;\n }\n\n keys = Object.keys(data);\n length = keys.length;\n for (i = 0; i < length; ++i) {\n if (data[keys[i]] === value) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Public function `hasLength`.\n *\n * Returns true if `data` has a length property that equals `length`, false\n * otherwise.\n */\n function hasLength (data, length) {\n return assigned(data) && data.length === length;\n }\n\n /**\n * Public function `date`.\n *\n * Returns true if `data` is a valid date, false otherwise.\n */\n function date (data) {\n return instanceStrict(data, Date) && integer(data.getTime());\n }\n\n /**\n * Public function `function`.\n *\n * Returns true if `data` is a function, false otherwise.\n */\n function isFunction (data) {\n return typeof data === 'function';\n }\n\n /**\n * Public function `apply`.\n *\n * Maps each value from the `data` to the corresponding predicate and returns\n * the result array. If the same function is to be applied across all of the\n * data, a single predicate function may be passed in.\n *\n */\n function apply (data, predicates) {\n assert.array(data);\n\n if (isFunction(predicates)) {\n return data.map(function (value) {\n return predicates(value);\n });\n }\n\n assert.array(predicates);\n assert.hasLength(data, predicates.length);\n\n return data.map(function (value, index) {\n return predicates[index](value);\n });\n }\n\n /**\n * Public function `map`.\n *\n * Maps each value from the `data` to the corresponding predicate and returns\n * the result object. Supports nested objects. If the `data` is not nested and\n * the same function is to be applied across all of it, a single predicate\n * function may be passed in.\n *\n */\n function map (data, predicates) {\n assert.object(data);\n\n if (isFunction(predicates)) {\n return mapSimple(data, predicates);\n }\n\n assert.object(predicates);\n\n return mapComplex(data, predicates);\n }\n\n function mapSimple (data, predicate) {\n var result = {};\n\n Object.keys(data).forEach(function (key) {\n result[key] = predicate(data[key]);\n });\n\n return result;\n }\n\n function mapComplex (data, predicates) {\n var result = {};\n\n Object.keys(predicates).forEach(function (key) {\n var predicate = predicates[key];\n\n if (isFunction(predicate)) {\n if (not.assigned(data)) {\n result[key] = !!predicate.m;\n } else {\n result[key] = predicate(data[key]);\n }\n } else if (object(predicate)) {\n result[key] = mapComplex(data[key], predicate);\n }\n });\n\n return result;\n }\n\n /**\n * Public function `all`\n *\n * Check that all boolean values are true\n * in an array (returned from `apply`)\n * or object (returned from `map`).\n *\n */\n function all (data) {\n if (array(data)) {\n return testArray(data, false);\n }\n\n assert.object(data);\n\n return testObject(data, false);\n }\n\n function testArray (data, result) {\n var i;\n\n for (i = 0; i < data.length; i += 1) {\n if (data[i] === result) {\n return result;\n }\n }\n\n return !result;\n }\n\n function testObject (data, result) {\n var key, value;\n\n for (key in data) {\n if (data.hasOwnProperty(key)) {\n value = data[key];\n\n if (object(value) && testObject(value, result) === result) {\n return result;\n }\n\n if (value === result) {\n return result;\n }\n }\n }\n\n return !result;\n }\n\n /**\n * Public function `any`\n *\n * Check that at least one boolean value is true\n * in an array (returned from `apply`)\n * or object (returned from `map`).\n *\n */\n function any (data) {\n if (array(data)) {\n return testArray(data, true);\n }\n\n assert.object(data);\n\n return testObject(data, true);\n }\n\n function mixin (target, source) {\n Object.keys(source).forEach(function (key) {\n target[key] = source[key];\n });\n\n return target;\n }\n\n /**\n * Public modifier `assert`.\n *\n * Throws if `predicate` returns false.\n */\n function assertModifier (predicate, defaultMessage) {\n return function () {\n return assertPredicate(predicate, arguments, defaultMessage);\n };\n }\n\n function assertPredicate (predicate, args, defaultMessage) {\n var argCount = predicate.l || predicate.length;\n var message = args[argCount];\n var ErrorType = args[argCount + 1];\n assertImpl(\n predicate.apply(null, args),\n nonEmptyString(message) ? message : defaultMessage,\n isFunction(ErrorType) ? ErrorType : TypeError\n );\n return args[0];\n }\n\n function assertImpl (value, message, ErrorType) {\n if (value) {\n return value;\n }\n throw new (ErrorType || Error)(message || 'Assertion failed');\n }\n\n /**\n * Public modifier `not`.\n *\n * Negates `predicate`.\n */\n function notModifier (predicate) {\n var modifiedPredicate = function () {\n return notImpl(predicate.apply(null, arguments));\n };\n modifiedPredicate.l = predicate.length;\n return modifiedPredicate;\n }\n\n function notImpl (value) {\n return !value;\n }\n\n /**\n * Public modifier `maybe`.\n *\n * Returns true if predicate argument is null or undefined,\n * otherwise propagates the return value from `predicate`.\n */\n function maybeModifier (predicate) {\n var modifiedPredicate = function () {\n if (not.assigned(arguments[0])) {\n return true;\n }\n\n return predicate.apply(null, arguments);\n };\n modifiedPredicate.l = predicate.length;\n\n // Hackishly indicate that this is a maybe.xxx predicate.\n // Without this flag, the alternative would be to iterate\n // through the maybe predicates or use indexOf to check,\n // which would be time-consuming.\n modifiedPredicate.m = true;\n\n return modifiedPredicate;\n }\n\n function maybeImpl (value) {\n if (assigned(value) === false) {\n return true;\n }\n\n return value;\n }\n\n /**\n * Public modifier `of`.\n *\n * Applies the chained predicate to members of the collection.\n */\n function ofModifier (target, type, predicate) {\n var modifiedPredicate = function () {\n var collection, args;\n\n collection = arguments[0];\n\n if (target === 'maybe' && not.assigned(collection)) {\n return true;\n }\n\n if (!type(collection)) {\n return false;\n }\n\n collection = coerceCollection(type, collection);\n args = slice.call(arguments, 1);\n\n try {\n collection.forEach(function (item) {\n if (\n (target !== 'maybe' || assigned(item)) &&\n !predicate.apply(null, [ item ].concat(args))\n ) {\n // TODO: Replace with for...of when ES6 is required.\n throw 0;\n }\n });\n } catch (ignore) {\n return false;\n }\n\n return true;\n };\n modifiedPredicate.l = predicate.length;\n return modifiedPredicate;\n }\n\n function coerceCollection (type, collection) {\n switch (type) {\n case arrayLike:\n return slice.call(collection);\n case object:\n return Object.keys(collection).map(function (key) {\n return collection[key];\n });\n default:\n return collection;\n }\n }\n\n function createModifiedPredicates (modifier, object) {\n return createModifiedFunctions([ modifier, predicates, object ]);\n }\n\n function createModifiedFunctions (args) {\n var modifier, object, functions, result;\n\n modifier = args.shift();\n object = args.pop();\n functions = args.pop();\n\n result = object || {};\n\n Object.keys(functions).forEach(function (key) {\n Object.defineProperty(result, key, {\n configurable: false,\n enumerable: true,\n writable: false,\n value: modifier.apply(null, args.concat(functions[key], messages[key]))\n });\n });\n\n return result;\n }\n\n function createModifiedModifier (modifier, modified) {\n return createModifiedFunctions([ modifier, modified, null ]);\n }\n\n function createOfPredicates (key) {\n predicates[key].of = createModifiedFunctions(\n [ ofModifier.bind(null, null), predicates[key], predicates, null ]\n );\n }\n\n function createOfModifiers (base, modifier) {\n collections.forEach(function (key) {\n base[key].of = createModifiedModifier(modifier, predicates[key].of);\n });\n }\n\n function createMaybeOfModifiers (key) {\n maybe[key].of = createModifiedFunctions(\n [ ofModifier.bind(null, 'maybe'), predicates[key], predicates, null ]\n );\n assert.maybe[key].of = createModifiedModifier(assertModifier, maybe[key].of);\n assert.not[key].of = createModifiedModifier(assertModifier, not[key].of);\n }\n\n function exportFunctions (functions) {\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return functions;\n });\n } else if (typeof module !== 'undefined' && module !== null && module.exports) {\n module.exports = functions;\n } else {\n globals.check = functions;\n }\n }\n}(this));\n","\n/**\n * Expose `isUrl`.\n */\n\nmodule.exports = isUrl;\n\n/**\n * Matcher.\n */\n\nvar matcher = /^(?:\\w+:)?\\/\\/([^\\s\\.]+\\.\\S{2}|localhost[\\:?\\d]*)\\S*$/;\n\n/**\n * Loosely validate a URL `string`.\n *\n * @param {String} string\n * @return {Boolean}\n */\n\nfunction isUrl(string){\n return matcher.test(string);\n}\n","// The result of dump.js is a big JSON tree\n// which can be easily serialized (for instance\n// to be sent from a webworker to the main app\n// or through Node's IPC), but we want\n// a (circular) DOM-like interface for walking\n// through the data.\n\nmodule.exports = (iPage) => {\n const page = {\n ...iPage,\n paragraphs: [],\n lines: [],\n words: [],\n symbols: [],\n };\n\n page.blocks.forEach((iBlock) => {\n const block = {\n ...iBlock,\n page,\n lines: [],\n words: [],\n symbols: [],\n };\n\n block.paragraphs.forEach((iPara) => {\n const para = {\n ...iPara,\n block,\n page,\n words: [],\n symbols: [],\n };\n\n para.lines.forEach((iLine) => {\n const line = {\n ...iLine,\n paragraph: para,\n block,\n page,\n symbols: [],\n };\n\n line.words.forEach((iWord) => {\n const word = {\n ...iWord,\n line,\n paragraph: para,\n block,\n page,\n };\n\n word.symbols.forEach((iSym) => {\n const sym = {\n ...iSym,\n word,\n line,\n paragraph: para,\n block,\n page,\n };\n\n sym.line.symbols.push(sym);\n sym.paragraph.symbols.push(sym);\n sym.block.symbols.push(sym);\n sym.page.symbols.push(sym);\n });\n word.paragraph.words.push(word);\n word.block.words.push(word);\n word.page.words.push(word);\n });\n line.block.lines.push(line);\n line.page.lines.push(line);\n });\n para.page.paragraphs.push(para);\n });\n });\n return page;\n};\n","const adapter = require('../node/');\n\nlet jobCounter = 0;\n\nmodule.exports = class TesseractJob {\n constructor(instance) {\n jobCounter += 1;\n this.id = `Job-${jobCounter}-${Math.random().toString(16).slice(3, 8)}`;\n\n this._instance = instance;\n this._resolve = [];\n this._reject = [];\n this._progress = [];\n this._finally = [];\n }\n\n then(resolve, reject) {\n if (this._resolve.push) {\n this._resolve.push(resolve);\n } else {\n resolve(this._resolve);\n }\n\n if (reject) this.catch(reject);\n return this;\n }\n\n catch(reject) {\n if (this._reject.push) {\n this._reject.push(reject);\n } else {\n reject(this._reject);\n }\n return this;\n }\n\n progress(fn) {\n this._progress.push(fn);\n return this;\n }\n\n finally(fn) {\n this._finally.push(fn);\n return this;\n }\n\n _send(action, payload) {\n adapter.sendPacket(this._instance, {\n jobId: this.id,\n action,\n payload,\n });\n }\n\n _handle(packet) {\n const { data } = packet;\n let runFinallyCbs = false;\n\n if (packet.status === 'resolve') {\n if (this._resolve.length === 0) console.log(data);\n this._resolve.forEach((fn) => {\n const ret = fn(data);\n if (ret && typeof ret.then === 'function') {\n console.warn('TesseractJob instances do not chain like ES6 Promises. To convert it into a real promise, use Promise.resolve.');\n }\n });\n this._resolve = data;\n this._instance._dequeue();\n runFinallyCbs = true;\n } else if (packet.status === 'reject') {\n if (this._reject.length === 0) console.error(data);\n this._reject.forEach(fn => fn(data));\n this._reject = data;\n this._instance._dequeue();\n runFinallyCbs = true;\n } else if (packet.status === 'progress') {\n this._progress.forEach(fn => fn(data));\n } else {\n console.warn('Message type unknown', packet.status);\n }\n\n if (runFinallyCbs) {\n this._finally.forEach(fn => fn(data));\n }\n }\n};\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://Tesseract/webpack/universalModuleDefinition","webpack://Tesseract/webpack/bootstrap","webpack://Tesseract/./node_modules/check-types/src/check-types.js","webpack://Tesseract/./src/browser/index.js","webpack://Tesseract/./src/index.js","webpack://Tesseract/./node_modules/resolve-url/resolve-url.js","webpack://Tesseract/./src/common/options.js","webpack://Tesseract/./src/common/circularize.js","webpack://Tesseract/./src/common/job.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_AMD_DEFINE_RESULT__","globals","strings","messages","predicates","functions","assert","not","maybe","collections","slice","neginf","posinf","isArray","haveSymbols","assigned","data","number","integer","greater","lhs","rhs","less","greaterOrEqual","lessOrEqual","string","nonEmptyString","toString","instanceStrict","error","like","archetype","array","arrayLike","length","isFunction","testArray","result","testObject","mixin","target","source","keys","forEach","assertModifier","predicate","defaultMessage","args","argCount","message","ErrorType","assertImpl","apply","TypeError","assertPredicate","arguments","Error","notModifier","modifiedPredicate","notImpl","ofModifier","type","collection","map","coerceCollection","item","concat","ignore","createModifiedPredicates","modifier","createModifiedFunctions","shift","pop","configurable","writable","createModifiedModifier","modified","createOfModifiers","base","of","v","b","a","al","f","undefined","iterator","iteration","values","next","done","x","y","substring","indexOf","regex","match","constructor","Date","getTime","hasLength","index","mapSimple","mapComplex","all","any","Array","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","exportFunctions","check","resolveURL","defaultOptions","version","workerPath","corePath","WebAssembly","spawnWorker","instance","workerOptions","worker","Blob","URL","blob","Worker","createObjectURL","onmessage","_recv","terminateWorker","terminate","sendPacket","packet","image","fetch","then","resp","arrayBuffer","File","Promise","res","fileReader","FileReader","onload","readAsArrayBuffer","reject","loadImage","payload","buf","Uint8Array","img","postMessage","from","adapter","circularize","TesseractJob","TesseractWorker","[object Object]","this","assign","_currentJob","_queue","options","lang","_delay","job","_send","fn","null","push","_dequeue","id","jobId","_handle","status","action","console","warn","__WEBPACK_AMD_DEFINE_FACTORY__","numUrls","document","createElement","href","head","getElementsByTagName","insertBefore","firstChild","resolved","removeChild","langPath","iPage","page","paragraphs","lines","words","symbols","blocks","iBlock","block","iPara","para","iLine","line","paragraph","iWord","word","iSym","sym","jobCounter","Math","random","_instance","_resolve","_reject","_progress","_finally","resolve","catch","runFinallyCbs","log","ret"],"mappings":"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","file":"tesseract.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Tesseract\"] = factory();\n\telse\n\t\troot[\"Tesseract\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","/*globals define, module, Symbol */\n/*jshint -W056 */\n\n(function (globals) {\n 'use strict';\n\n var strings, messages, predicates, functions, assert, not, maybe,\n collections, slice, neginf, posinf, isArray, haveSymbols;\n\n strings = {\n v: 'value',\n n: 'number',\n s: 'string',\n b: 'boolean',\n o: 'object',\n t: 'type',\n a: 'array',\n al: 'array-like',\n i: 'iterable',\n d: 'date',\n f: 'function',\n l: 'length'\n };\n\n messages = {};\n predicates = {};\n\n [\n { n: 'equal', f: equal, s: 'v' },\n { n: 'undefined', f: isUndefined, s: 'v' },\n { n: 'null', f: isNull, s: 'v' },\n { n: 'assigned', f: assigned, s: 'v' },\n { n: 'primitive', f: primitive, s: 'v' },\n { n: 'includes', f: includes, s: 'v' },\n { n: 'zero', f: zero },\n { n: 'infinity', f: infinity },\n { n: 'number', f: number },\n { n: 'integer', f: integer },\n { n: 'even', f: even },\n { n: 'odd', f: odd },\n { n: 'greater', f: greater },\n { n: 'less', f: less },\n { n: 'between', f: between },\n { n: 'greaterOrEqual', f: greaterOrEqual },\n { n: 'lessOrEqual', f: lessOrEqual },\n { n: 'inRange', f: inRange },\n { n: 'positive', f: positive },\n { n: 'negative', f: negative },\n { n: 'string', f: string, s: 's' },\n { n: 'emptyString', f: emptyString, s: 's' },\n { n: 'nonEmptyString', f: nonEmptyString, s: 's' },\n { n: 'contains', f: contains, s: 's' },\n { n: 'match', f: match, s: 's' },\n { n: 'boolean', f: boolean, s: 'b' },\n { n: 'object', f: object, s: 'o' },\n { n: 'emptyObject', f: emptyObject, s: 'o' },\n { n: 'nonEmptyObject', f: nonEmptyObject, s: 'o' },\n { n: 'instanceStrict', f: instanceStrict, s: 't' },\n { n: 'instance', f: instance, s: 't' },\n { n: 'like', f: like, s: 't' },\n { n: 'array', f: array, s: 'a' },\n { n: 'emptyArray', f: emptyArray, s: 'a' },\n { n: 'nonEmptyArray', f: nonEmptyArray, s: 'a' },\n { n: 'arrayLike', f: arrayLike, s: 'al' },\n { n: 'iterable', f: iterable, s: 'i' },\n { n: 'date', f: date, s: 'd' },\n { n: 'function', f: isFunction, s: 'f' },\n { n: 'hasLength', f: hasLength, s: 'l' },\n ].map(function (data) {\n var n = data.n;\n messages[n] = 'Invalid ' + strings[data.s || 'n'];\n predicates[n] = data.f;\n });\n\n functions = {\n apply: apply,\n map: map,\n all: all,\n any: any\n };\n\n collections = [ 'array', 'arrayLike', 'iterable', 'object' ];\n slice = Array.prototype.slice;\n neginf = Number.NEGATIVE_INFINITY;\n posinf = Number.POSITIVE_INFINITY;\n isArray = Array.isArray;\n haveSymbols = typeof Symbol === 'function';\n\n functions = mixin(functions, predicates);\n assert = createModifiedPredicates(assertModifier, assertImpl);\n not = createModifiedPredicates(notModifier, notImpl);\n maybe = createModifiedPredicates(maybeModifier, maybeImpl);\n assert.not = createModifiedModifier(assertModifier, not);\n assert.maybe = createModifiedModifier(assertModifier, maybe);\n\n collections.forEach(createOfPredicates);\n createOfModifiers(assert, assertModifier);\n createOfModifiers(not, notModifier);\n collections.forEach(createMaybeOfModifiers);\n\n exportFunctions(mixin(functions, {\n assert: assert,\n not: not,\n maybe: maybe\n }));\n\n /**\n * Public function `equal`.\n *\n * Returns true if `lhs` and `rhs` are strictly equal, without coercion.\n * Returns false otherwise.\n */\n function equal (lhs, rhs) {\n return lhs === rhs;\n }\n\n /**\n * Public function `undefined`.\n *\n * Returns true if `data` is undefined, false otherwise.\n */\n function isUndefined (data) {\n return data === undefined;\n }\n\n /**\n * Public function `null`.\n *\n * Returns true if `data` is null, false otherwise.\n */\n function isNull (data) {\n return data === null;\n }\n\n /**\n * Public function `assigned`.\n *\n * Returns true if `data` is not null or undefined, false otherwise.\n */\n function assigned (data) {\n return data !== undefined && data !== null;\n }\n\n /**\n * Public function `primitive`.\n *\n * Returns true if `data` is a primitive type, false otherwise.\n */\n function primitive (data) {\n var type;\n\n switch (data) {\n case null:\n case undefined:\n case false:\n case true:\n return true;\n }\n\n type = typeof data;\n return type === 'string' || type === 'number' || (haveSymbols && type === 'symbol');\n }\n\n /**\n * Public function `zero`.\n *\n * Returns true if `data` is zero, false otherwise.\n */\n function zero (data) {\n return data === 0;\n }\n\n /**\n * Public function `infinity`.\n *\n * Returns true if `data` is positive or negative infinity, false otherwise.\n */\n function infinity (data) {\n return data === neginf || data === posinf;\n }\n\n /**\n * Public function `number`.\n *\n * Returns true if `data` is a number, false otherwise.\n */\n function number (data) {\n return typeof data === 'number' && data > neginf && data < posinf;\n }\n\n /**\n * Public function `integer`.\n *\n * Returns true if `data` is an integer, false otherwise.\n */\n function integer (data) {\n return typeof data === 'number' && data % 1 === 0;\n }\n\n /**\n * Public function `even`.\n *\n * Returns true if `data` is an even number, false otherwise.\n */\n function even (data) {\n return typeof data === 'number' && data % 2 === 0;\n }\n\n /**\n * Public function `odd`.\n *\n * Returns true if `data` is an odd number, false otherwise.\n */\n function odd (data) {\n return integer(data) && data % 2 !== 0;\n }\n\n /**\n * Public function `greater`.\n *\n * Returns true if `lhs` is a number greater than `rhs`, false otherwise.\n */\n function greater (lhs, rhs) {\n return number(lhs) && lhs > rhs;\n }\n\n /**\n * Public function `less`.\n *\n * Returns true if `lhs` is a number less than `rhs`, false otherwise.\n */\n function less (lhs, rhs) {\n return number(lhs) && lhs < rhs;\n }\n\n /**\n * Public function `between`.\n *\n * Returns true if `data` is a number between `x` and `y`, false otherwise.\n */\n function between (data, x, y) {\n if (x < y) {\n return greater(data, x) && data < y;\n }\n\n return less(data, x) && data > y;\n }\n\n /**\n * Public function `greaterOrEqual`.\n *\n * Returns true if `lhs` is a number greater than or equal to `rhs`, false\n * otherwise.\n */\n function greaterOrEqual (lhs, rhs) {\n return number(lhs) && lhs >= rhs;\n }\n\n /**\n * Public function `lessOrEqual`.\n *\n * Returns true if `lhs` is a number less than or equal to `rhs`, false\n * otherwise.\n */\n function lessOrEqual (lhs, rhs) {\n return number(lhs) && lhs <= rhs;\n }\n\n /**\n * Public function `inRange`.\n *\n * Returns true if `data` is a number in the range `x..y`, false otherwise.\n */\n function inRange (data, x, y) {\n if (x < y) {\n return greaterOrEqual(data, x) && data <= y;\n }\n\n return lessOrEqual(data, x) && data >= y;\n }\n\n /**\n * Public function `positive`.\n *\n * Returns true if `data` is a positive number, false otherwise.\n */\n function positive (data) {\n return greater(data, 0);\n }\n\n /**\n * Public function `negative`.\n *\n * Returns true if `data` is a negative number, false otherwise.\n */\n function negative (data) {\n return less(data, 0);\n }\n\n /**\n * Public function `string`.\n *\n * Returns true if `data` is a string, false otherwise.\n */\n function string (data) {\n return typeof data === 'string';\n }\n\n /**\n * Public function `emptyString`.\n *\n * Returns true if `data` is the empty string, false otherwise.\n */\n function emptyString (data) {\n return data === '';\n }\n\n /**\n * Public function `nonEmptyString`.\n *\n * Returns true if `data` is a non-empty string, false otherwise.\n */\n function nonEmptyString (data) {\n return string(data) && data !== '';\n }\n\n /**\n * Public function `contains`.\n *\n * Returns true if `data` is a string that contains `substring`, false\n * otherwise.\n */\n function contains (data, substring) {\n return string(data) && data.indexOf(substring) !== -1;\n }\n\n /**\n * Public function `match`.\n *\n * Returns true if `data` is a string that matches `regex`, false otherwise.\n */\n function match (data, regex) {\n return string(data) && !! data.match(regex);\n }\n\n /**\n * Public function `boolean`.\n *\n * Returns true if `data` is a boolean value, false otherwise.\n */\n function boolean (data) {\n return data === false || data === true;\n }\n\n /**\n * Public function `object`.\n *\n * Returns true if `data` is a plain-old JS object, false otherwise.\n */\n function object (data) {\n return Object.prototype.toString.call(data) === '[object Object]';\n }\n\n /**\n * Public function `emptyObject`.\n *\n * Returns true if `data` is an empty object, false otherwise.\n */\n function emptyObject (data) {\n return object(data) && Object.keys(data).length === 0;\n }\n\n /**\n * Public function `nonEmptyObject`.\n *\n * Returns true if `data` is a non-empty object, false otherwise.\n */\n function nonEmptyObject (data) {\n return object(data) && Object.keys(data).length > 0;\n }\n\n /**\n * Public function `instanceStrict`.\n *\n * Returns true if `data` is an instance of `prototype`, false otherwise.\n */\n function instanceStrict (data, prototype) {\n try {\n return data instanceof prototype;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Public function `instance`.\n *\n * Returns true if `data` is an instance of `prototype`, false otherwise.\n * Falls back to testing constructor.name and Object.prototype.toString\n * if the initial instanceof test fails.\n */\n function instance (data, prototype) {\n try {\n return instanceStrict(data, prototype) ||\n data.constructor.name === prototype.name ||\n Object.prototype.toString.call(data) === '[object ' + prototype.name + ']';\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Public function `like`.\n *\n * Tests whether `data` 'quacks like a duck'. Returns true if `data` has all\n * of the properties of `archetype` (the 'duck'), false otherwise.\n */\n function like (data, archetype) {\n var name;\n\n for (name in archetype) {\n if (archetype.hasOwnProperty(name)) {\n if (data.hasOwnProperty(name) === false || typeof data[name] !== typeof archetype[name]) {\n return false;\n }\n\n if (object(data[name]) && like(data[name], archetype[name]) === false) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Public function `array`.\n *\n * Returns true if `data` is an array, false otherwise.\n */\n function array (data) {\n return isArray(data);\n }\n\n /**\n * Public function `emptyArray`.\n *\n * Returns true if `data` is an empty array, false otherwise.\n */\n function emptyArray (data) {\n return array(data) && data.length === 0;\n }\n\n /**\n * Public function `nonEmptyArray`.\n *\n * Returns true if `data` is a non-empty array, false otherwise.\n */\n function nonEmptyArray (data) {\n return array(data) && greater(data.length, 0);\n }\n\n /**\n * Public function `arrayLike`.\n *\n * Returns true if `data` is an array-like object, false otherwise.\n */\n function arrayLike (data) {\n return assigned(data) && greaterOrEqual(data.length, 0);\n }\n\n /**\n * Public function `iterable`.\n *\n * Returns true if `data` is an iterable, false otherwise.\n */\n function iterable (data) {\n if (! haveSymbols) {\n // Fall back to `arrayLike` predicate in pre-ES6 environments.\n return arrayLike(data);\n }\n\n return assigned(data) && isFunction(data[Symbol.iterator]);\n }\n\n /**\n * Public function `includes`.\n *\n * Returns true if `data` contains `value`, false otherwise.\n */\n function includes (data, value) {\n var iterator, iteration, keys, length, i;\n\n if (! assigned(data)) {\n return false;\n }\n\n if (haveSymbols && data[Symbol.iterator] && isFunction(data.values)) {\n iterator = data.values();\n\n do {\n iteration = iterator.next();\n\n if (iteration.value === value) {\n return true;\n }\n } while (! iteration.done);\n\n return false;\n }\n\n keys = Object.keys(data);\n length = keys.length;\n for (i = 0; i < length; ++i) {\n if (data[keys[i]] === value) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Public function `hasLength`.\n *\n * Returns true if `data` has a length property that equals `length`, false\n * otherwise.\n */\n function hasLength (data, length) {\n return assigned(data) && data.length === length;\n }\n\n /**\n * Public function `date`.\n *\n * Returns true if `data` is a valid date, false otherwise.\n */\n function date (data) {\n return instanceStrict(data, Date) && integer(data.getTime());\n }\n\n /**\n * Public function `function`.\n *\n * Returns true if `data` is a function, false otherwise.\n */\n function isFunction (data) {\n return typeof data === 'function';\n }\n\n /**\n * Public function `apply`.\n *\n * Maps each value from the `data` to the corresponding predicate and returns\n * the result array. If the same function is to be applied across all of the\n * data, a single predicate function may be passed in.\n *\n */\n function apply (data, predicates) {\n assert.array(data);\n\n if (isFunction(predicates)) {\n return data.map(function (value) {\n return predicates(value);\n });\n }\n\n assert.array(predicates);\n assert.hasLength(data, predicates.length);\n\n return data.map(function (value, index) {\n return predicates[index](value);\n });\n }\n\n /**\n * Public function `map`.\n *\n * Maps each value from the `data` to the corresponding predicate and returns\n * the result object. Supports nested objects. If the `data` is not nested and\n * the same function is to be applied across all of it, a single predicate\n * function may be passed in.\n *\n */\n function map (data, predicates) {\n assert.object(data);\n\n if (isFunction(predicates)) {\n return mapSimple(data, predicates);\n }\n\n assert.object(predicates);\n\n return mapComplex(data, predicates);\n }\n\n function mapSimple (data, predicate) {\n var result = {};\n\n Object.keys(data).forEach(function (key) {\n result[key] = predicate(data[key]);\n });\n\n return result;\n }\n\n function mapComplex (data, predicates) {\n var result = {};\n\n Object.keys(predicates).forEach(function (key) {\n var predicate = predicates[key];\n\n if (isFunction(predicate)) {\n if (not.assigned(data)) {\n result[key] = !!predicate.m;\n } else {\n result[key] = predicate(data[key]);\n }\n } else if (object(predicate)) {\n result[key] = mapComplex(data[key], predicate);\n }\n });\n\n return result;\n }\n\n /**\n * Public function `all`\n *\n * Check that all boolean values are true\n * in an array (returned from `apply`)\n * or object (returned from `map`).\n *\n */\n function all (data) {\n if (array(data)) {\n return testArray(data, false);\n }\n\n assert.object(data);\n\n return testObject(data, false);\n }\n\n function testArray (data, result) {\n var i;\n\n for (i = 0; i < data.length; i += 1) {\n if (data[i] === result) {\n return result;\n }\n }\n\n return !result;\n }\n\n function testObject (data, result) {\n var key, value;\n\n for (key in data) {\n if (data.hasOwnProperty(key)) {\n value = data[key];\n\n if (object(value) && testObject(value, result) === result) {\n return result;\n }\n\n if (value === result) {\n return result;\n }\n }\n }\n\n return !result;\n }\n\n /**\n * Public function `any`\n *\n * Check that at least one boolean value is true\n * in an array (returned from `apply`)\n * or object (returned from `map`).\n *\n */\n function any (data) {\n if (array(data)) {\n return testArray(data, true);\n }\n\n assert.object(data);\n\n return testObject(data, true);\n }\n\n function mixin (target, source) {\n Object.keys(source).forEach(function (key) {\n target[key] = source[key];\n });\n\n return target;\n }\n\n /**\n * Public modifier `assert`.\n *\n * Throws if `predicate` returns false.\n */\n function assertModifier (predicate, defaultMessage) {\n return function () {\n return assertPredicate(predicate, arguments, defaultMessage);\n };\n }\n\n function assertPredicate (predicate, args, defaultMessage) {\n var argCount = predicate.l || predicate.length;\n var message = args[argCount];\n var ErrorType = args[argCount + 1];\n assertImpl(\n predicate.apply(null, args),\n nonEmptyString(message) ? message : defaultMessage,\n isFunction(ErrorType) ? ErrorType : TypeError\n );\n return args[0];\n }\n\n function assertImpl (value, message, ErrorType) {\n if (value) {\n return value;\n }\n throw new (ErrorType || Error)(message || 'Assertion failed');\n }\n\n /**\n * Public modifier `not`.\n *\n * Negates `predicate`.\n */\n function notModifier (predicate) {\n var modifiedPredicate = function () {\n return notImpl(predicate.apply(null, arguments));\n };\n modifiedPredicate.l = predicate.length;\n return modifiedPredicate;\n }\n\n function notImpl (value) {\n return !value;\n }\n\n /**\n * Public modifier `maybe`.\n *\n * Returns true if predicate argument is null or undefined,\n * otherwise propagates the return value from `predicate`.\n */\n function maybeModifier (predicate) {\n var modifiedPredicate = function () {\n if (not.assigned(arguments[0])) {\n return true;\n }\n\n return predicate.apply(null, arguments);\n };\n modifiedPredicate.l = predicate.length;\n\n // Hackishly indicate that this is a maybe.xxx predicate.\n // Without this flag, the alternative would be to iterate\n // through the maybe predicates or use indexOf to check,\n // which would be time-consuming.\n modifiedPredicate.m = true;\n\n return modifiedPredicate;\n }\n\n function maybeImpl (value) {\n if (assigned(value) === false) {\n return true;\n }\n\n return value;\n }\n\n /**\n * Public modifier `of`.\n *\n * Applies the chained predicate to members of the collection.\n */\n function ofModifier (target, type, predicate) {\n var modifiedPredicate = function () {\n var collection, args;\n\n collection = arguments[0];\n\n if (target === 'maybe' && not.assigned(collection)) {\n return true;\n }\n\n if (!type(collection)) {\n return false;\n }\n\n collection = coerceCollection(type, collection);\n args = slice.call(arguments, 1);\n\n try {\n collection.forEach(function (item) {\n if (\n (target !== 'maybe' || assigned(item)) &&\n !predicate.apply(null, [ item ].concat(args))\n ) {\n // TODO: Replace with for...of when ES6 is required.\n throw 0;\n }\n });\n } catch (ignore) {\n return false;\n }\n\n return true;\n };\n modifiedPredicate.l = predicate.length;\n return modifiedPredicate;\n }\n\n function coerceCollection (type, collection) {\n switch (type) {\n case arrayLike:\n return slice.call(collection);\n case object:\n return Object.keys(collection).map(function (key) {\n return collection[key];\n });\n default:\n return collection;\n }\n }\n\n function createModifiedPredicates (modifier, object) {\n return createModifiedFunctions([ modifier, predicates, object ]);\n }\n\n function createModifiedFunctions (args) {\n var modifier, object, functions, result;\n\n modifier = args.shift();\n object = args.pop();\n functions = args.pop();\n\n result = object || {};\n\n Object.keys(functions).forEach(function (key) {\n Object.defineProperty(result, key, {\n configurable: false,\n enumerable: true,\n writable: false,\n value: modifier.apply(null, args.concat(functions[key], messages[key]))\n });\n });\n\n return result;\n }\n\n function createModifiedModifier (modifier, modified) {\n return createModifiedFunctions([ modifier, modified, null ]);\n }\n\n function createOfPredicates (key) {\n predicates[key].of = createModifiedFunctions(\n [ ofModifier.bind(null, null), predicates[key], predicates, null ]\n );\n }\n\n function createOfModifiers (base, modifier) {\n collections.forEach(function (key) {\n base[key].of = createModifiedModifier(modifier, predicates[key].of);\n });\n }\n\n function createMaybeOfModifiers (key) {\n maybe[key].of = createModifiedFunctions(\n [ ofModifier.bind(null, 'maybe'), predicates[key], predicates, null ]\n );\n assert.maybe[key].of = createModifiedModifier(assertModifier, maybe[key].of);\n assert.not[key].of = createModifiedModifier(assertModifier, not[key].of);\n }\n\n function exportFunctions (functions) {\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return functions;\n });\n } else if (typeof module !== 'undefined' && module !== null && module.exports) {\n module.exports = functions;\n } else {\n globals.check = functions;\n }\n }\n}(this));\n","const check = require('check-types');\nconst resolveURL = require('resolve-url');\nconst { defaultOptions } = require('../common/options');\nconst { version } = require('../../package.json');\n\nconst loadImage = (image) => {\n if (check.string(image)) {\n return fetch(resolveURL(image))\n .then(resp => resp.arrayBuffer());\n }\n if (check.instance(image, File)) {\n return new Promise((res) => {\n const fileReader = new FileReader();\n fileReader.onload = () => {\n res(fileReader.result);\n };\n fileReader.readAsArrayBuffer(image);\n });\n }\n return Promise.reject();\n};\n\nexports.defaultOptions = {\n ...defaultOptions,\n workerPath: process.env.NODE_ENV === 'development'\n ? resolveURL(`/dist/worker.dev.js?nocache=${Math.random().toString(36).slice(3)}`)\n : `https://cdn.jsdelivr.net/gh/naptha/tesseract.js@v${version}/dist/worker.min.js`,\n corePath: `https://cdn.jsdelivr.net/gh/naptha/tesseract.js-core@v2.0.0-beta.5/tesseract-core${typeof WebAssembly === 'object' ? '' : '.asm'}.js`,\n};\n\nexports.spawnWorker = (instance, workerOptions) => {\n let worker;\n if (window.Blob && window.URL) {\n const blob = new Blob([`importScripts(\"${workerOptions.workerPath}\");`]);\n worker = new Worker(window.URL.createObjectURL(blob));\n } else {\n worker = new Worker(workerOptions.workerPath);\n }\n\n worker.onmessage = ({ data }) => {\n instance._recv(data);\n };\n\n return worker;\n};\n\nexports.terminateWorker = (instance) => {\n instance.worker.terminate();\n};\n\nexports.sendPacket = (instance, packet) => {\n loadImage(packet.payload.image)\n .then(buf => new Uint8Array(buf))\n .then((img) => {\n instance.worker.postMessage({\n ...packet,\n payload: {\n ...packet.payload,\n image: Array.from(img),\n },\n });\n });\n};\n","const check = require('check-types');\nconst adapter = require('./node');\nconst circularize = require('./common/circularize');\nconst TesseractJob = require('./common/job');\n\nclass TesseractWorker {\n constructor(workerOptions = {}) {\n this.worker = null;\n this.workerOptions = Object.assign({}, adapter.defaultOptions, workerOptions);\n this._currentJob = null;\n this._queue = [];\n }\n\n recognize(image, options = { lang: 'eng' }) {\n return this._delay((job) => {\n job._send(\n 'recognize',\n {\n image,\n options: check.string(options)\n ? { lang: options || 'eng' }\n : options,\n workerOptions: this.workerOptions,\n },\n );\n });\n }\n\n detect(image, options = {}) {\n return this._delay((job) => {\n job._send(\n 'detect',\n {\n image,\n options,\n workerOptions: this.workerOptions,\n },\n );\n });\n }\n\n terminate() {\n if (this.worker) {\n adapter.terminateWorker(this);\n }\n this.worker = null;\n this._currentJob = null;\n this._queue = [];\n }\n\n _delay(fn) {\n if (check.null(this.worker)) {\n this.worker = adapter.spawnWorker(this, this.workerOptions);\n }\n\n const job = new TesseractJob(this);\n this._queue.push(() => {\n this._queue.shift();\n this._currentJob = job;\n fn(job);\n });\n if (check.null(this._currentJob)) {\n this._dequeue();\n }\n return job;\n }\n\n _dequeue() {\n this._currentJob = null;\n if (this._queue.length) {\n this._queue[0]();\n }\n }\n\n _recv(packet) {\n if (this._currentJob.id === packet.jobId) {\n this._currentJob._handle({\n ...packet,\n data: packet.status === 'resolve' && packet.action === 'recognize'\n ? circularize(packet.data)\n : packet.data,\n });\n } else {\n console.warn(`Job ID ${packet.jobId} not known.`);\n }\n }\n}\n\nmodule.exports = {\n TesseractWorker,\n};\n","// Copyright 2014 Simon Lydell\r\n// X11 (“MIT”) Licensed. (See LICENSE.)\r\n\r\nvoid (function(root, factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define(factory)\r\n } else if (typeof exports === \"object\") {\r\n module.exports = factory()\r\n } else {\r\n root.resolveUrl = factory()\r\n }\r\n}(this, function() {\r\n\r\n function resolveUrl(/* ...urls */) {\r\n var numUrls = arguments.length\r\n\r\n if (numUrls === 0) {\r\n throw new Error(\"resolveUrl requires at least one argument; got none.\")\r\n }\r\n\r\n var base = document.createElement(\"base\")\r\n base.href = arguments[0]\r\n\r\n if (numUrls === 1) {\r\n return base.href\r\n }\r\n\r\n var head = document.getElementsByTagName(\"head\")[0]\r\n head.insertBefore(base, head.firstChild)\r\n\r\n var a = document.createElement(\"a\")\r\n var resolved\r\n\r\n for (var index = 1; index < numUrls; index++) {\r\n a.href = arguments[index]\r\n resolved = a.href\r\n base.href = resolved\r\n }\r\n\r\n head.removeChild(base)\r\n\r\n return resolved\r\n }\r\n\r\n return resolveUrl\r\n\r\n}));\r\n","module.exports = {\n defaultOptions: {\n langPath: 'https://tessdata.projectnaptha.com/4.0.0',\n },\n};\n","// The result of dump.js is a big JSON tree\n// which can be easily serialized (for instance\n// to be sent from a webworker to the main app\n// or through Node's IPC), but we want\n// a (circular) DOM-like interface for walking\n// through the data.\n\nmodule.exports = (iPage) => {\n const page = {\n ...iPage,\n paragraphs: [],\n lines: [],\n words: [],\n symbols: [],\n };\n\n page.blocks.forEach((iBlock) => {\n const block = {\n ...iBlock,\n page,\n lines: [],\n words: [],\n symbols: [],\n };\n\n block.paragraphs.forEach((iPara) => {\n const para = {\n ...iPara,\n block,\n page,\n words: [],\n symbols: [],\n };\n\n para.lines.forEach((iLine) => {\n const line = {\n ...iLine,\n paragraph: para,\n block,\n page,\n symbols: [],\n };\n\n line.words.forEach((iWord) => {\n const word = {\n ...iWord,\n line,\n paragraph: para,\n block,\n page,\n };\n\n word.symbols.forEach((iSym) => {\n const sym = {\n ...iSym,\n word,\n line,\n paragraph: para,\n block,\n page,\n };\n\n sym.line.symbols.push(sym);\n sym.paragraph.symbols.push(sym);\n sym.block.symbols.push(sym);\n sym.page.symbols.push(sym);\n });\n word.paragraph.words.push(word);\n word.block.words.push(word);\n word.page.words.push(word);\n });\n line.block.lines.push(line);\n line.page.lines.push(line);\n });\n para.page.paragraphs.push(para);\n });\n });\n return page;\n};\n","const adapter = require('../node/');\n\nlet jobCounter = 0;\n\nmodule.exports = class TesseractJob {\n constructor(instance) {\n jobCounter += 1;\n this.id = `Job-${jobCounter}-${Math.random().toString(16).slice(3, 8)}`;\n\n this._instance = instance;\n this._resolve = [];\n this._reject = [];\n this._progress = [];\n this._finally = [];\n }\n\n then(resolve, reject) {\n if (this._resolve.push) {\n this._resolve.push(resolve);\n } else {\n resolve(this._resolve);\n }\n\n if (reject) this.catch(reject);\n return this;\n }\n\n catch(reject) {\n if (this._reject.push) {\n this._reject.push(reject);\n } else {\n reject(this._reject);\n }\n return this;\n }\n\n progress(fn) {\n this._progress.push(fn);\n return this;\n }\n\n finally(fn) {\n this._finally.push(fn);\n return this;\n }\n\n _send(action, payload) {\n adapter.sendPacket(this._instance, {\n jobId: this.id,\n action,\n payload,\n });\n }\n\n _handle(packet) {\n const { data } = packet;\n let runFinallyCbs = false;\n\n if (packet.status === 'resolve') {\n if (this._resolve.length === 0) console.log(data);\n this._resolve.forEach((fn) => {\n const ret = fn(data);\n if (ret && typeof ret.then === 'function') {\n console.warn('TesseractJob instances do not chain like ES6 Promises. To convert it into a real promise, use Promise.resolve.');\n }\n });\n this._resolve = data;\n this._instance._dequeue();\n runFinallyCbs = true;\n } else if (packet.status === 'reject') {\n if (this._reject.length === 0) console.error(data);\n this._reject.forEach(fn => fn(data));\n this._reject = data;\n this._instance._dequeue();\n runFinallyCbs = true;\n } else if (packet.status === 'progress') {\n this._progress.forEach(fn => fn(data));\n } else {\n console.warn('Message type unknown', packet.status);\n }\n\n if (runFinallyCbs) {\n this._finally.forEach(fn => fn(data));\n }\n }\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/worker.min.js b/dist/worker.min.js index e8f906c..b718e7a 100644 --- a/dist/worker.min.js +++ b/dist/worker.min.js @@ -1,9 +1,9 @@ -!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r=e();for(var n in r)("object"==typeof exports?exports:t)[n]=r[n]}}(window,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=1)}([function(t,e){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e,r){(function(t){const e=r(2);t.addEventListener("message",({data:t})=>{e.dispatchHandlers(t,t=>postMessage(t))}),e.setAdapter({getCore:(e,r)=>(t.TesseractCore||(r.progress({status:"loading tesseract core",progress:0}),t.importScripts(e.workerOptions.corePath),t.TesseractCore="object"==typeof WebAssembly?t.TesseractCoreWASM:t.TesseractCoreASM,r.progress({status:"loading tesseract core",progress:1})),t.TesseractCore)})}).call(this,r(0))},function(t,e,r){const{readImage:n,loadLang:i}=r(3),o=r(17);let s,a,h,f={};const u=(t,e)=>{let r=100663296;if(["chi_sim","chi_tra","jpn"].includes(t.options.lang)&&(r=167772160),!s||s.TOTAL_MEMORY{a=new(s=t).TessBaseAPI,e.progress({status:"initialized tesseract",progress:1})})}return new Promise},c=t=>{const{w:e,h:r,data:i}=n(s,Array.from(t));return a.SetImage(i),a.SetRectangle(0,0,e,r),i},l=(t,e,r)=>{const{options:{lang:n},workerOptions:{langPath:o}}=t;return i({langs:n,tessModule:s,langURI:o,cache:!0}).then(r)};e.dispatchHandlers=((t,e)=>{const r=(r,n)=>{e({jobId:t.jobId,status:r,action:t.action,data:n})};r.resolve=r.bind(this,"resolve"),r.reject=r.bind(this,"reject"),r.progress=r.bind(this,"progress"),h=r;try{"recognize"===t.action?((t,e)=>{u(t,e).then(()=>{l(t,0,()=>{const{options:r}=t,n=t=>{e.progress({status:"initializing api",progress:t})};n(0),a.Init(null,r.lang),n(.3),Object.keys(r).forEach(t=>{a.SetVariable(t,r[t])}),n(.6);const i=c(t.image);n(1),a.Recognize(null);const h=o(s,a);a.End(),s._free(i),e.resolve(h)})})})(t.payload,r):"detect"===t.action&&((t,e)=>{u(t,e).then(()=>{t.options.lang="osd",l(t,0,()=>{a.Init(null,"osd"),a.SetPageSegMode(s.PSM_OSD_ONLY);const r=c(t.image),n=new s.OSResults;if(a.DetectOS(n)){const t=n.get_best_result(),i=t.get_orientation_id(),o=t.get_script_id();a.End(),s._free(r),e.resolve({tesseract_script_id:o,script:n.get_unicharset().get_script_from_script_id(o),script_confidence:t.get_sconfidence(),orientation_degrees:[0,270,180,90][i],orientation_confidence:t.get_oconfidence()})}else a.End(),s._free(r),e.reject("Failed to detect OS")})})})(t.payload,r)}catch(t){r.reject(t.toString())}}),e.setAdapter=(t=>{f=t})},function(t,e,r){t.exports={loadLang:r(4)({fetch:r(5),gunzip:r(7),...r(14)}),readImage:r(16)}},function(t,e){const r=t=>({tessModule:e,dataPath:r,cachePath:n,cache:i,lang:o})=>s=>{if(e){if(r)try{e.FS.mkdir(r)}catch(t){}e.FS.writeFile(`${r||"."}/${o}.traineddata`,s)}return i&&t.writeCache(`${n||"."}/${o}.traineddata`,s),s};t.exports=(t=>({langs:e,...n})=>Promise.all(e.split("+").map((t=>({langURI:e,cachePath:n,...i})=>o=>t.readCache(`${n||"."}/${o}.traineddata`).then(e=>void 0===e?Promise.reject():r(t)({cachePath:n,lang:o,...i})(e)).catch(()=>t.fetch(`${e}/${o}.traineddata.gz`).then(t=>t.arrayBuffer()).then(e=>t.gunzip(new Uint8Array(e))).then(r(t)({cachePath:n,lang:o,...i}))))(t)(n))))},function(t,e,r){const{fetch:n}=r(6);t.exports=n},function(t,e,r){"use strict";r.r(e),r.d(e,"Headers",function(){return f}),r.d(e,"Request",function(){return g}),r.d(e,"Response",function(){return w}),r.d(e,"DOMException",function(){return m}),r.d(e,"fetch",function(){return A});var n={searchParams:"URLSearchParams"in self,iterable:"Symbol"in self&&"iterator"in Symbol,blob:"FileReader"in self&&"Blob"in self&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in self,arrayBuffer:"ArrayBuffer"in self};if(n.arrayBuffer)var i=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],o=ArrayBuffer.isView||function(t){return t&&i.indexOf(Object.prototype.toString.call(t))>-1};function s(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function a(t){return"string"!=typeof t&&(t=String(t)),t}function h(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return n.iterable&&(e[Symbol.iterator]=function(){return e}),e}function f(t){this.map={},t instanceof f?t.forEach(function(t,e){this.append(e,t)},this):Array.isArray(t)?t.forEach(function(t){this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function u(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function c(t){return new Promise(function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}})}function l(t){var e=new FileReader,r=c(e);return e.readAsArrayBuffer(t),r}function p(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function y(){return this.bodyUsed=!1,this._initBody=function(t){var e;this._bodyInit=t,t?"string"==typeof t?this._bodyText=t:n.blob&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:n.formData&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:n.searchParams&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():n.arrayBuffer&&n.blob&&((e=t)&&DataView.prototype.isPrototypeOf(e))?(this._bodyArrayBuffer=p(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):n.arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(t)||o(t))?this._bodyArrayBuffer=p(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText="",this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n.searchParams&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},n.blob&&(this.blob=function(){var t=u(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?u(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(l)}),this.text=function(){var t,e,r,n=u(this);if(n)return n;if(this._bodyBlob)return t=this._bodyBlob,e=new FileReader,r=c(e),e.readAsText(t),r;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),n=0;n-1?n:r),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(i)}function b(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var r=t.split("="),n=r.shift().replace(/\+/g," "),i=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(n),decodeURIComponent(i))}}),e}function w(t,e){e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new f(e.headers),this.url=e.url||"",this._initBody(t)}g.prototype.clone=function(){return new g(this,{body:this._bodyInit})},y.call(g.prototype),y.call(w.prototype),w.prototype.clone=function(){return new w(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new f(this.headers),url:this.url})},w.error=function(){var t=new w(null,{status:0,statusText:""});return t.type="error",t};var v=[301,302,303,307,308];w.redirect=function(t,e){if(-1===v.indexOf(e))throw new RangeError("Invalid status code");return new w(null,{status:e,headers:{location:t}})};var m=self.DOMException;try{new m}catch(t){(m=function(t,e){this.message=t,this.name=e;var r=Error(t);this.stack=r.stack}).prototype=Object.create(Error.prototype),m.prototype.constructor=m}function A(t,e){return new Promise(function(r,i){var o=new g(t,e);if(o.signal&&o.signal.aborted)return i(new m("Aborted","AbortError"));var s=new XMLHttpRequest;function a(){s.abort()}s.onload=function(){var t,e,n={status:s.status,statusText:s.statusText,headers:(t=s.getAllResponseHeaders()||"",e=new f,t.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach(function(t){var r=t.split(":"),n=r.shift().trim();if(n){var i=r.join(":").trim();e.append(n,i)}}),e)};n.url="responseURL"in s?s.responseURL:n.headers.get("X-Request-URL");var i="response"in s?s.response:s.responseText;r(new w(i,n))},s.onerror=function(){i(new TypeError("Network request failed"))},s.ontimeout=function(){i(new TypeError("Network request failed"))},s.onabort=function(){i(new m("Aborted","AbortError"))},s.open(o.method,o.url,!0),"include"===o.credentials?s.withCredentials=!0:"omit"===o.credentials&&(s.withCredentials=!1),"responseType"in s&&n.blob&&(s.responseType="blob"),o.headers.forEach(function(t,e){s.setRequestHeader(e,t)}),o.signal&&(o.signal.addEventListener("abort",a),s.onreadystatechange=function(){4===s.readyState&&o.signal.removeEventListener("abort",a)}),s.send(void 0===o._bodyInit?null:o._bodyInit)})}A.polyfill=!0,self.fetch||(self.fetch=A,self.Headers=f,self.Request=g,self.Response=w)},function(t,e,r){t.exports=r(8).gunzipSync},function(t,e,r){(function(t,r){/** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */(function(){"use strict";function n(t){throw t}var i=void 0,o=!0,s="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array&&"undefined"!=typeof DataView;function a(t,e){this.index="number"==typeof e?e:0,this.m=0,this.buffer=t instanceof(s?Uint8Array:Array)?t:new(s?Uint8Array:Array)(32768),2*this.buffer.length<=this.index&&n(Error("invalid index")),this.buffer.length<=this.index&&this.f()}a.prototype.f=function(){var t,e=this.buffer,r=e.length,n=new(s?Uint8Array:Array)(r<<1);if(s)n.set(e);else for(t=0;t>>8&255]<<16|p[t>>>16&255]<<8|p[t>>>24&255])>>32-e:p[t]>>8-e),8>e+s)a=a<>e-n-1&1,8==++s&&(s=0,i[o++]=p[a],a=0,o===i.length&&(i=this.f()));i[o]=a,this.buffer=i,this.m=s,this.index=o},a.prototype.finish=function(){var t,e=this.buffer,r=this.index;return 0h;++h){for(var u=l=h,c=7,l=l>>>1;l;l>>>=1)u<<=1,u|=1&l,--c;f[h]=(u<>>0}var p=f;function y(t,e,r){var n,i="number"==typeof e?e:e=0,o="number"==typeof r?r:t.length;for(n=-1,i=7&o;i--;++e)n=n>>>8^g[255&(n^t[e])];for(i=o>>3;i--;e+=8)n=(n=(n=(n=(n=(n=(n=(n=n>>>8^g[255&(n^t[e])])>>>8^g[255&(n^t[e+1])])>>>8^g[255&(n^t[e+2])])>>>8^g[255&(n^t[e+3])])>>>8^g[255&(n^t[e+4])])>>>8^g[255&(n^t[e+5])])>>>8^g[255&(n^t[e+6])])>>>8^g[255&(n^t[e+7])];return(4294967295^n)>>>0}var d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],g=s?new Uint32Array(d):d;function b(){}function w(t){this.buffer=new(s?Uint16Array:Array)(2*t),this.length=0}function v(t){var e,r,n,i,o,a,h,f,u,c,l=t.length,p=0,y=Number.POSITIVE_INFINITY;for(f=0;fp&&(p=t[f]),t[f]>=1;for(c=n<<16|f,u=a;uo[n]);)i=o[r],o[r]=o[n],o[n]=i,i=o[r+1],o[r+1]=o[n+1],o[n+1]=i,r=n;return this.length},w.prototype.pop=function(){var t,e,r,n,i,o=this.buffer;for(e=o[0],t=o[1],this.length-=2,o[0]=o[this.length],o[1]=o[this.length+1],i=0;!((n=2*i+2)>=this.length)&&(n+2o[n]&&(n+=2),o[n]>o[i]);)r=o[i],o[i]=o[n],o[n]=r,r=o[i+1],o[i+1]=o[n+1],o[n+1]=r,i=n;return{index:t,value:e,length:this.length}};var A,_=2,E={NONE:0,L:1,t:_,X:3},T=[];for(A=0;288>A;A++)switch(o){case 143>=A:T.push([A+48,8]);break;case 255>=A:T.push([A-144+400,9]);break;case 279>=A:T.push([A-256+0,7]);break;case 287>=A:T.push([A-280+192,8]);break;default:n("invalid literal: "+A)}function B(t,e){this.length=t,this.N=e}m.prototype.h=function(){var t,e,r,h,f=this.input;switch(this.k){case 0:for(r=0,h=f.length;r>>8&255,b[w++]=255&l,b[w++]=l>>>8&255,s)b.set(p,w),w+=p.length,b=b.subarray(0,w);else{for(d=0,g=p.length;dK)for(;0K?K:138)>K-3&&Q=Q?(rt[J++]=17,rt[J++]=Q-3,nt[17]++):(rt[J++]=18,rt[J++]=Q-11,nt[18]++),K-=Q;else if(rt[J++]=et[q],nt[et[q]]++,3>--K)for(;0K?K:6)>K-3&&Qz;z++)W[z]=Y[V[z]];for(O=19;4=t:return[265,t-11,1];case 14>=t:return[266,t-13,1];case 16>=t:return[267,t-15,1];case 18>=t:return[268,t-17,1];case 22>=t:return[269,t-19,2];case 26>=t:return[270,t-23,2];case 30>=t:return[271,t-27,2];case 34>=t:return[272,t-31,2];case 42>=t:return[273,t-35,3];case 50>=t:return[274,t-43,3];case 58>=t:return[275,t-51,3];case 66>=t:return[276,t-59,3];case 82>=t:return[277,t-67,4];case 98>=t:return[278,t-83,4];case 114>=t:return[279,t-99,4];case 130>=t:return[280,t-115,4];case 162>=t:return[281,t-131,5];case 194>=t:return[282,t-163,5];case 226>=t:return[283,t-195,5];case 257>=t:return[284,t-227,5];case 258===t:return[285,t-258,0];default:n("invalid length: "+t)}}var e,r,i=[];for(e=3;258>=e;e++)r=t(e),i[e]=r[2]<<24|r[1]<<16|r[0];return i}(),U=s?new Uint32Array(R):R;function P(t,e){function r(t,e){var r,i,s,a,h=t.N,f=[],u=0;switch(r=U[t.length],f[u++]=65535&r,f[u++]=r>>16&255,f[u++]=r>>24,o){case 1===h:i=[0,h-1,0];break;case 2===h:i=[1,h-2,0];break;case 3===h:i=[2,h-3,0];break;case 4===h:i=[3,h-4,0];break;case 6>=h:i=[4,h-5,1];break;case 8>=h:i=[5,h-7,1];break;case 12>=h:i=[6,h-9,2];break;case 16>=h:i=[7,h-13,2];break;case 24>=h:i=[8,h-17,3];break;case 32>=h:i=[9,h-25,3];break;case 48>=h:i=[10,h-33,4];break;case 64>=h:i=[11,h-49,4];break;case 96>=h:i=[12,h-65,5];break;case 128>=h:i=[13,h-97,5];break;case 192>=h:i=[14,h-129,6];break;case 256>=h:i=[15,h-193,6];break;case 384>=h:i=[16,h-257,7];break;case 512>=h:i=[17,h-385,7];break;case 768>=h:i=[18,h-513,8];break;case 1024>=h:i=[19,h-769,8];break;case 1536>=h:i=[20,h-1025,9];break;case 2048>=h:i=[21,h-1537,9];break;case 3072>=h:i=[22,h-2049,10];break;case 4096>=h:i=[23,h-3073,10];break;case 6144>=h:i=[24,h-4097,11];break;case 8192>=h:i=[25,h-6145,11];break;case 12288>=h:i=[26,h-8193,12];break;case 16384>=h:i=[27,h-12289,12];break;case 24576>=h:i=[28,h-16385,13];break;case 32768>=h:i=[29,h-24577,13];break;default:n("invalid distance")}for(r=i,f[u++]=r[0],f[u++]=r[1],f[u++]=r[2],s=0,a=f.length;s=f;)m[f++]=0;for(f=0;29>=f;)A[f++]=0}for(m[256]=1,a=0,h=e.length;a=h){for(y&&r(y,-1),f=0,u=h-a;fo&&e+of&&(i=n,f=o),258===o)break}return new B(f,e-i)}function S(t,e){var r,n,i,o,a,h=t.length,f=new w(572),u=new(s?Uint8Array:Array)(h);if(!s)for(o=0;o2*u[o-1]+c[o]&&(u[o]=2*u[o-1]+c[o]),p[o]=Array(u[o]),y[o]=Array(u[o]);for(i=0;it[i]?(p[o][a]=h,y[o][a]=e,f+=2):(p[o][a]=t[i],y[o][a]=i,++i);d[o]=0,1===c[o]&&n(o)}return l}(n,n.length,e),o=0,a=r.length;o>>=1;return o}function k(t,e){this.input=t,this.b=this.c=0,this.g={},e&&(e.flags&&(this.g=e.flags),"string"==typeof e.filename&&(this.filename=e.filename),"string"==typeof e.comment&&(this.w=e.comment),e.deflateOptions&&(this.l=e.deflateOptions)),this.l||(this.l={})}k.prototype.h=function(){var t,e,r,n,o,a,h,f,u=new(s?Uint8Array:Array)(32768),c=0,l=this.input,p=this.c,d=this.filename,g=this.w;if(u[c++]=31,u[c++]=139,u[c++]=8,t=0,this.g.fname&&(t|=C),this.g.fcomment&&(t|=D),this.g.fhcrc&&(t|=L),u[c++]=t,e=(Date.now?Date.now():+new Date)/1e3|0,u[c++]=255&e,u[c++]=e>>>8&255,u[c++]=e>>>16&255,u[c++]=e>>>24&255,u[c++]=0,u[c++]=O,this.g.fname!==i){for(h=0,f=d.length;h>>8&255),u[c++]=255&a;u[c++]=0}if(this.g.comment){for(h=0,f=g.length;h>>8&255),u[c++]=255&a;u[c++]=0}return this.g.fhcrc&&(r=65535&y(u,0,c),u[c++]=255&r,u[c++]=r>>>8&255),this.l.outputBuffer=u,this.l.outputIndex=c,u=(o=new m(l,this.l)).h(),c=o.b,s&&(c+8>u.buffer.byteLength?(this.a=new Uint8Array(c+8),this.a.set(new Uint8Array(u.buffer)),u=this.a):u=new Uint8Array(u.buffer)),n=y(l,i,i),u[c++]=255&n,u[c++]=n>>>8&255,u[c++]=n>>>16&255,u[c++]=n>>>24&255,f=l.length,u[c++]=255&f,u[c++]=f>>>8&255,u[c++]=f>>>16&255,u[c++]=f>>>24&255,this.c=p,s&&c>>=1){case 0:var e=this.input,r=this.c,a=this.a,h=this.b,f=e.length,u=i,c=a.length,l=i;switch(this.e=this.j=0,r+1>=f&&n(Error("invalid uncompressed block header: LEN")),u=e[r++]|e[r++]<<8,r+1>=f&&n(Error("invalid uncompressed block header: NLEN")),u===~(e[r++]|e[r++]<<8)&&n(Error("invalid uncompressed block header: length verify")),r+u>e.length&&n(Error("input buffer is broken")),this.q){case Y:for(;h+u>a.length;){if(u-=l=c-h,s)a.set(e.subarray(r,r+l),h),h+=l,r+=l;else for(;l--;)a[h++]=e[r++];this.b=h,a=this.f(),h=this.b}break;case j:for(;h+u>a.length;)a=this.f({B:2});break;default:n(Error("invalid inflate mode"))}if(s)a.set(e.subarray(r,r+u),h),h+=u,r+=u;else for(;u--;)a[h++]=e[r++];this.c=r,this.b=h,this.a=a;break;case 1:this.r(et,nt);break;case 2:var p,y,d,g,b=it(this,5)+257,w=it(this,5)+1,m=it(this,4)+4,A=new(s?Uint8Array:Array)(G.length),_=i,E=i,T=i,B=i,R=i;for(R=0;R=N?8:255>=N?9:279>=N?7:8;var Z,tt,et=v(Q),rt=new(s?Uint8Array:Array)(30);for(Z=0,tt=rt.length;Z=h&&n(Error("input buffer is broken")),i|=s[a++]<>>e,t.e=o-e,t.c=a,r}function ot(t,e){for(var r,i,o=t.j,s=t.e,a=t.input,h=t.c,f=a.length,u=e[0],c=e[1];s=f);)o|=a[h++]<>>16)>s&&n(Error("invalid code length: "+i)),t.j=o>>i,t.e=s-i,t.c=h,65535&r}function st(t){this.input=t,this.c=0,this.G=[],this.R=!1}function at(t){if("string"==typeof t){var e,r,n=t.split("");for(e=0,r=n.length;e>>0;t=n}for(var i,o=1,s=0,a=t.length,h=0;0>>0}function ht(t,e){var r,i;switch(this.input=t,this.c=0,!e&&(e={})||(e.index&&(this.c=e.index),e.verify&&(this.V=e.verify)),r=t[this.c++],i=t[this.c++],15&r){case ft:this.method=ft;break;default:n(Error("unsupported compression method"))}0!=((r<<8)+i)%31&&n(Error("invalid fcheck flag:"+((r<<8)+i)%31)),32&i&&n(Error("fdict flag is not supported")),this.J=new M(t,{index:this.c,bufferSize:e.bufferSize,bufferType:e.bufferType,resize:e.resize})}M.prototype.r=function(t,e){var r=this.a,n=this.b;this.A=t;for(var i,o,s,a,h=r.length-258;256!==(i=ot(this,t));)if(256>i)n>=h&&(this.b=n,r=this.f(),n=this.b),r[n++]=i;else for(a=V[o=i-257],0=h&&(this.b=n,r=this.f(),n=this.b);a--;)r[n]=r[n++-s];for(;8<=this.e;)this.e-=8,this.c--;this.b=n},M.prototype.Q=function(t,e){var r=this.a,n=this.b;this.A=t;for(var i,o,s,a,h=r.length;256!==(i=ot(this,t));)if(256>i)n>=h&&(h=(r=this.f()).length),r[n++]=i;else for(a=V[o=i-257],0h&&(h=(r=this.f()).length);a--;)r[n]=r[n++-s];for(;8<=this.e;)this.e-=8,this.c--;this.b=n},M.prototype.f=function(){var t,e,r=new(s?Uint8Array:Array)(this.b-32768),n=this.b-32768,i=this.a;if(s)r.set(i.subarray(32768,r.length));else for(t=0,e=r.length;tt;++t)i[t]=i[n+t];return this.b=32768,i},M.prototype.S=function(t){var e,r,n,i=this.input.length/this.c+1|0,o=this.input,a=this.a;return t&&("number"==typeof t.B&&(i=t.B),"number"==typeof t.M&&(i+=t.M)),2>i?r=(n=(o.length-this.c)/this.A[2]/2*258|0)e&&(this.a.length=e),t=this.a),this.buffer=t},st.prototype.i=function(){for(var t=this.input.length;this.c>>0,y(e,i,i)!==d&&n(Error("invalid CRC-32 checksum: 0x"+y(e,i,i).toString(16)+" / 0x"+d.toString(16))),a.Z=h=(g[w++]|g[w++]<<8|g[w++]<<16|g[w++]<<24)>>>0,(4294967295&e.length)!==h&&n(Error("invalid input size: "+(4294967295&e.length)+" / "+h)),this.G.push(a),this.c=w}this.R=o;var v,m,A,_=this.G,E=0,T=0;for(v=0,m=_.length;v>>0!==at(t)&&n(Error("invalid adler-32 checksum"))),t};var ft=8;function ut(t,e){this.input=t,this.a=new(s?Uint8Array:Array)(32768),this.k=ct.t;var r,n={};for(r in!e&&(e={})||"number"!=typeof e.compressionType||(this.k=e.compressionType),e)n[r]=e[r];n.outputBuffer=this.a,this.I=new m(this.input,n)}var ct=E;function lt(t,e){var r;return r=new ut(t).h(),e||(e={}),e.H?r:gt(r)}function pt(t,e){var r;return t.subarray=t.slice,r=new ht(t).i(),e||(e={}),e.noBuffer?r:gt(r)}function yt(t,e){var r;return t.subarray=t.slice,r=new k(t).h(),e||(e={}),e.H?r:gt(r)}function dt(t,e){var r;return t.subarray=t.slice,r=new st(t).i(),e||(e={}),e.H?r:gt(r)}function gt(t){var e,n,i=new r(t.length);for(e=0,n=t.length;e>24&255,h[f++]=a>>16&255,h[f++]=a>>8&255,h[f++]=255&a,h},e.deflate=function(e,r,n){t.nextTick(function(){var t,i;try{i=lt(e,n)}catch(e){t=e}r(t,i)})},e.deflateSync=lt,e.inflate=function(e,r,n){t.nextTick(function(){var t,i;try{i=pt(e,n)}catch(e){t=e}r(t,i)})},e.inflateSync=pt,e.gzip=function(e,r,n){t.nextTick(function(){var t,i;try{i=yt(e,n)}catch(e){t=e}r(t,i)})},e.gzipSync=yt,e.gunzip=function(e,r,n){t.nextTick(function(){var t,i;try{i=dt(e,n)}catch(e){t=e}r(t,i)})},e.gunzipSync=dt}).call(this)}).call(this,r(9),r(10).Buffer)},function(t,e){var r,n,i=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function a(t){if(r===setTimeout)return setTimeout(t,0);if((r===o||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:o}catch(t){r=o}try{n="function"==typeof clearTimeout?clearTimeout:s}catch(t){n=s}}();var h,f=[],u=!1,c=-1;function l(){u&&h&&(u=!1,h.length?f=h.concat(f):c=-1,f.length&&p())}function p(){if(!u){var t=a(l);u=!0;for(var e=f.length;e;){for(h=f,f=[];++c1)for(var r=1;r * @license MIT */ -var n=r(11),i=r(12),o=r(13);function s(){return h.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,e){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|t}function y(t,e){if(h.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return N(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return F(t).length;default:if(n)return N(t).length;e=(""+e).toLowerCase(),n=!0}}function d(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function g(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=h.from(e,n)),h.isBuffer(e))return 0===e.length?-1:b(t,e,r,n,i);if("number"==typeof e)return e&=255,h.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):b(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function b(t,e,r,n,i){var o,s=1,a=t.length,h=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,h/=2,r/=2}function f(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var u=-1;for(o=r;oa&&(r=a-h),o=r;o>=0;o--){for(var c=!0,l=0;li&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var s=0;s>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function T(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function B(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:f>223?3:f>191?2:1;if(i+c<=r)switch(c){case 1:f<128&&(u=f);break;case 2:128==(192&(o=t[i+1]))&&(h=(31&f)<<6|63&o)>127&&(u=h);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&(h=(15&f)<<12|(63&o)<<6|63&s)>2047&&(h<55296||h>57343)&&(u=h);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(h=(15&f)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&h<1114112&&(u=h)}null===u?(u=65533,c=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=c}return function(t){var e=t.length;if(e<=R)return String.fromCharCode.apply(String,t);var r="",n=0;for(;nthis.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return I(this,e,r);case"utf8":case"utf-8":return B(this,e,r);case"ascii":return U(this,e,r);case"latin1":case"binary":return P(this,e,r);case"base64":return T(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}.apply(this,arguments)},h.prototype.equals=function(t){if(!h.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===h.compare(this,t)},h.prototype.inspect=function(){var t="",r=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},h.prototype.compare=function(t,e,r,n,i){if(!h.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),a=Math.min(o,s),f=this.slice(n,i),u=t.slice(e,r),c=0;ci)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return w(this,t,e,r);case"utf8":case"utf-8":return v(this,t,e,r);case"ascii":return m(this,t,e,r);case"latin1":case"binary":return A(this,t,e,r);case"base64":return _(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var R=4096;function U(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function k(t,e,r,n,i,o){if(!h.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function O(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function L(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function C(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function D(t,e,r,n,o){return o||C(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function M(t,e,r,n,o){return o||C(t,0,r,8),i.write(t,e,r,n,52,8),r+8}h.prototype.slice=function(t,e){var r,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(e=void 0===e?n:~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),e0&&(i*=256);)n+=this[t+--e]*i;return n},h.prototype.readUInt8=function(t,e){return e||x(t,1,this.length),this[t]},h.prototype.readUInt16LE=function(t,e){return e||x(t,2,this.length),this[t]|this[t+1]<<8},h.prototype.readUInt16BE=function(t,e){return e||x(t,2,this.length),this[t]<<8|this[t+1]},h.prototype.readUInt32LE=function(t,e){return e||x(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},h.prototype.readUInt32BE=function(t,e){return e||x(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},h.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||x(t,e,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*e)),n},h.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||x(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},h.prototype.readInt8=function(t,e){return e||x(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},h.prototype.readInt16LE=function(t,e){e||x(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt16BE=function(t,e){e||x(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt32LE=function(t,e){return e||x(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},h.prototype.readInt32BE=function(t,e){return e||x(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},h.prototype.readFloatLE=function(t,e){return e||x(t,4,this.length),i.read(this,t,!0,23,4)},h.prototype.readFloatBE=function(t,e){return e||x(t,4,this.length),i.read(this,t,!1,23,4)},h.prototype.readDoubleLE=function(t,e){return e||x(t,8,this.length),i.read(this,t,!0,52,8)},h.prototype.readDoubleBE=function(t,e){return e||x(t,8,this.length),i.read(this,t,!1,52,8)},h.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e|=0,r|=0,n)||k(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o=0&&(o*=256);)this[e+i]=t/o&255;return e+r},h.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,1,255,0),h.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},h.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,2,65535,0),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):O(this,t,e,!0),e+2},h.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,2,65535,0),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):O(this,t,e,!1),e+2},h.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,4,4294967295,0),h.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):L(this,t,e,!0),e+4},h.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,4,4294967295,0),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):L(this,t,e,!1),e+4},h.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);k(this,t,e,r,i-1,-i)}var o=0,s=1,a=0;for(this[e]=255&t;++o>0)-a&255;return e+r},h.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);k(this,t,e,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+r},h.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,1,127,-128),h.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},h.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,2,32767,-32768),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):O(this,t,e,!0),e+2},h.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,2,32767,-32768),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):O(this,t,e,!1),e+2},h.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,4,2147483647,-2147483648),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):L(this,t,e,!0),e+4},h.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):L(this,t,e,!1),e+4},h.prototype.writeFloatLE=function(t,e,r){return D(this,t,e,!0,r)},h.prototype.writeFloatBE=function(t,e,r){return D(this,t,e,!1,r)},h.prototype.writeDoubleLE=function(t,e,r){return M(this,t,e,!0,r)},h.prototype.writeDoubleBE=function(t,e,r){return M(this,t,e,!1,r)},h.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e=0;--i)t[i+e]=this[i+r];else if(o<1e3||!h.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function F(t){return n.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(Y,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function z(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(0))},function(t,e,r){"use strict";e.byteLength=function(t){return 3*t.length/4-f(t)},e.toByteArray=function(t){var e,r,n,s,a,h=t.length;s=f(t),a=new o(3*h/4-s),r=s>0?h-4:h;var u=0;for(e=0;e>16&255,a[u++]=n>>8&255,a[u++]=255&n;2===s?(n=i[t.charCodeAt(e)]<<2|i[t.charCodeAt(e+1)]>>4,a[u++]=255&n):1===s&&(n=i[t.charCodeAt(e)]<<10|i[t.charCodeAt(e+1)]<<4|i[t.charCodeAt(e+2)]>>2,a[u++]=n>>8&255,a[u++]=255&n);return a},e.fromByteArray=function(t){for(var e,r=t.length,i=r%3,o="",s=[],a=0,h=r-i;ah?h:a+16383));1===i?(e=t[r-1],o+=n[e>>2],o+=n[e<<4&63],o+="=="):2===i&&(e=(t[r-2]<<8)+t[r-1],o+=n[e>>10],o+=n[e>>4&63],o+=n[e<<2&63],o+="=");return s.push(o),s.join("")};for(var n=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,h=s.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function u(t,e,r){for(var i,o,s=[],a=e;a>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return s.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,r,n,i){var o,s,a=8*i-n-1,h=(1<>1,u=-7,c=r?i-1:0,l=r?-1:1,p=t[e+c];for(c+=l,o=p&(1<<-u)-1,p>>=-u,u+=a;u>0;o=256*o+t[e+c],c+=l,u-=8);for(s=o&(1<<-u)-1,o>>=-u,u+=n;u>0;s=256*s+t[e+c],c+=l,u-=8);if(0===o)o=1-f;else{if(o===h)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,n),o-=f}return(p?-1:1)*s*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var s,a,h,f=8*o-i-1,u=(1<>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,y=n?1:-1,d=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=u):(s=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-s))<1&&(s--,h*=2),(e+=s+c>=1?l/h:l*Math.pow(2,1-c))*h>=2&&(s++,h/=2),s+c>=u?(a=0,s=u):s+c>=1?(a=(e*h-1)*Math.pow(2,i),s+=c):(a=e*Math.pow(2,c-1)*Math.pow(2,i),s=0));i>=8;t[r+p]=255&a,p+=y,a/=256,i-=8);for(s=s<0;t[r+p]=255&s,p+=y,s/=256,f-=8);t[r+p-y]|=128*d}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e,r){const{set:n,get:i}=r(15);t.exports={readCache:i,writeCache:n}},function(t,e,r){"use strict";r.r(e),r.d(e,"Store",function(){return n}),r.d(e,"get",function(){return s}),r.d(e,"set",function(){return a}),r.d(e,"del",function(){return h}),r.d(e,"clear",function(){return f}),r.d(e,"keys",function(){return u});class n{constructor(t="keyval-store",e="keyval"){this.storeName=e,this._dbp=new Promise((r,n)=>{const i=indexedDB.open(t,1);i.onerror=(()=>n(i.error)),i.onsuccess=(()=>r(i.result)),i.onupgradeneeded=(()=>{i.result.createObjectStore(e)})})}_withIDBStore(t,e){return this._dbp.then(r=>new Promise((n,i)=>{const o=r.transaction(this.storeName,t);o.oncomplete=(()=>n()),o.onabort=o.onerror=(()=>i(o.error)),e(o.objectStore(this.storeName))}))}}let i;function o(){return i||(i=new n),i}function s(t,e=o()){let r;return e._withIDBStore("readonly",e=>{r=e.get(t)}).then(()=>r.result)}function a(t,e,r=o()){return r._withIDBStore("readwrite",r=>{r.put(e,t)})}function h(t,e=o()){return e._withIDBStore("readwrite",e=>{e.delete(t)})}function f(t=o()){return t._withIDBStore("readwrite",t=>{t.clear()})}function u(t=o()){const e=[];return t._withIDBStore("readonly",t=>{(t.openKeyCursor||t.openCursor).call(t).onsuccess=function(){this.result&&(e.push(this.result.key),this.result.continue())}}).then(()=>e)}},function(t,e){t.exports=((t,e)=>{const r=t._malloc(e.length*Uint8Array.BYTES_PER_ELEMENT);t.HEAPU8.set(e,r);const n=t._pixReadMem(r,e.length);0===t.getValue(n+28,"i32")&&t.setValue(n+28,70,"i32");const[i,o,s,a,h,f,u,c,l,p]=Array(10).fill(0).map((e,r)=>t.getValue(n+4*r,"i32"));return{w:i,h:o,d:s,spp:a,wpl:h,refcount:f,xres:u,yres:c,informat:l,special:p,data:n}})},function(t,e){t.exports=((t,e)=>{const r=e.GetIterator(),n=[];let i,o,s,a,h;const f=(e,r)=>Object.keys(t).filter(t=>t.substr(0,r.length+1)===`${r}_`).filter(r=>t[r]===e).map(t=>t.slice(r.length+1))[0];r.Begin();do{if(r.IsAtBeginningOf(t.RIL_BLOCK)){const e=r.BlockPolygon();let o=null;if(t.getPointer(e)>0){const r=e.get_n(),n=e.get_x(),i=e.get_y();o=[];for(let t=0;t{const e=t.split("\n");if(" "===e[0].substring(0,2))for(let t=0;t=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|t}function d(t,e){if(h.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return Y(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return N(t).length;default:if(i)return Y(t).length;e=(""+e).toLowerCase(),i=!0}}function g(t,e,r){var i=t[e];t[e]=t[r],t[r]=i}function m(t,e,r,i,n){if(0===t.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof e&&(e=h.from(e,i)),h.isBuffer(e))return 0===e.length?-1:y(t,e,r,i,n);if("number"==typeof e)return e&=255,h.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):y(t,[e],r,i,n);throw new TypeError("val must be string, number or Buffer")}function y(t,e,r,i,n){var s,o=1,a=t.length,h=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;o=2,a/=2,h/=2,r/=2}function f(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(n){var u=-1;for(s=r;sa&&(r=a-h),s=r;s>=0;s--){for(var c=!0,p=0;pn&&(i=n):i=n;var s=e.length;if(s%2!=0)throw new TypeError("Invalid hex string");i>s/2&&(i=s/2);for(var o=0;o>8,n=r%256,s.push(n),s.push(i);return s}(e,t.length-r),t,r,i)}function E(t,e,r){return 0===e&&r===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,r))}function U(t,e,r){r=Math.min(t.length,r);for(var i=[],n=e;n239?4:f>223?3:f>191?2:1;if(n+c<=r)switch(c){case 1:f<128&&(u=f);break;case 2:128==(192&(s=t[n+1]))&&(h=(31&f)<<6|63&s)>127&&(u=h);break;case 3:s=t[n+1],o=t[n+2],128==(192&s)&&128==(192&o)&&(h=(15&f)<<12|(63&s)<<6|63&o)>2047&&(h<55296||h>57343)&&(u=h);break;case 4:s=t[n+1],o=t[n+2],a=t[n+3],128==(192&s)&&128==(192&o)&&128==(192&a)&&(h=(15&f)<<18|(63&s)<<12|(63&o)<<6|63&a)>65535&&h<1114112&&(u=h)}null===u?(u=65533,c=1):u>65535&&(u-=65536,i.push(u>>>10&1023|55296),u=56320|1023&u),i.push(u),n+=c}return function(t){var e=t.length;if(e<=I)return String.fromCharCode.apply(String,t);var r="",i=0;for(;ithis.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return R(this,e,r);case"utf8":case"utf-8":return U(this,e,r);case"ascii":return T(this,e,r);case"latin1":case"binary":return B(this,e,r);case"base64":return E(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,e,r);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}.apply(this,arguments)},h.prototype.equals=function(t){if(!h.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===h.compare(this,t)},h.prototype.inspect=function(){var t="",r=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},h.prototype.compare=function(t,e,r,i,n){if(!h.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),e<0||r>t.length||i<0||n>this.length)throw new RangeError("out of range index");if(i>=n&&e>=r)return 0;if(i>=n)return-1;if(e>=r)return 1;if(this===t)return 0;for(var s=(n>>>=0)-(i>>>=0),o=(r>>>=0)-(e>>>=0),a=Math.min(s,o),f=this.slice(i,n),u=t.slice(e,r),c=0;cn)&&(r=n),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var s=!1;;)switch(i){case"hex":return b(this,t,e,r);case"utf8":case"utf-8":return w(this,t,e,r);case"ascii":return v(this,t,e,r);case"latin1":case"binary":return x(this,t,e,r);case"base64":return A(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,t,e,r);default:if(s)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),s=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var I=4096;function T(t,e,r){var i="";r=Math.min(t.length,r);for(var n=e;ni)&&(r=i);for(var n="",s=e;sr)throw new RangeError("Trying to access beyond buffer length")}function S(t,e,r,i,n,s){if(!h.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||et.length)throw new RangeError("Index out of range")}function L(t,e,r,i){e<0&&(e=65535+e+1);for(var n=0,s=Math.min(t.length-r,2);n>>8*(i?n:1-n)}function O(t,e,r,i){e<0&&(e=4294967295+e+1);for(var n=0,s=Math.min(t.length-r,4);n>>8*(i?n:3-n)&255}function C(t,e,r,i,n,s){if(r+i>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function M(t,e,r,i,s){return s||C(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function D(t,e,r,i,s){return s||C(t,0,r,8),n.write(t,e,r,i,52,8),r+8}h.prototype.slice=function(t,e){var r,i=this.length;if((t=~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),(e=void 0===e?i:~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),e0&&(n*=256);)i+=this[t+--e]*n;return i},h.prototype.readUInt8=function(t,e){return e||k(t,1,this.length),this[t]},h.prototype.readUInt16LE=function(t,e){return e||k(t,2,this.length),this[t]|this[t+1]<<8},h.prototype.readUInt16BE=function(t,e){return e||k(t,2,this.length),this[t]<<8|this[t+1]},h.prototype.readUInt32LE=function(t,e){return e||k(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},h.prototype.readUInt32BE=function(t,e){return e||k(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},h.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||k(t,e,this.length);for(var i=this[t],n=1,s=0;++s=(n*=128)&&(i-=Math.pow(2,8*e)),i},h.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||k(t,e,this.length);for(var i=e,n=1,s=this[t+--i];i>0&&(n*=256);)s+=this[t+--i]*n;return s>=(n*=128)&&(s-=Math.pow(2,8*e)),s},h.prototype.readInt8=function(t,e){return e||k(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},h.prototype.readInt16LE=function(t,e){e||k(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt16BE=function(t,e){e||k(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt32LE=function(t,e){return e||k(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},h.prototype.readInt32BE=function(t,e){return e||k(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},h.prototype.readFloatLE=function(t,e){return e||k(t,4,this.length),n.read(this,t,!0,23,4)},h.prototype.readFloatBE=function(t,e){return e||k(t,4,this.length),n.read(this,t,!1,23,4)},h.prototype.readDoubleLE=function(t,e){return e||k(t,8,this.length),n.read(this,t,!0,52,8)},h.prototype.readDoubleBE=function(t,e){return e||k(t,8,this.length),n.read(this,t,!1,52,8)},h.prototype.writeUIntLE=function(t,e,r,i){(t=+t,e|=0,r|=0,i)||S(this,t,e,r,Math.pow(2,8*r)-1,0);var n=1,s=0;for(this[e]=255&t;++s=0&&(s*=256);)this[e+n]=t/s&255;return e+r},h.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||S(this,t,e,1,255,0),h.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},h.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||S(this,t,e,2,65535,0),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):L(this,t,e,!0),e+2},h.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||S(this,t,e,2,65535,0),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):L(this,t,e,!1),e+2},h.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||S(this,t,e,4,4294967295,0),h.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):O(this,t,e,!0),e+4},h.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||S(this,t,e,4,4294967295,0),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):O(this,t,e,!1),e+4},h.prototype.writeIntLE=function(t,e,r,i){if(t=+t,e|=0,!i){var n=Math.pow(2,8*r-1);S(this,t,e,r,n-1,-n)}var s=0,o=1,a=0;for(this[e]=255&t;++s>0)-a&255;return e+r},h.prototype.writeIntBE=function(t,e,r,i){if(t=+t,e|=0,!i){var n=Math.pow(2,8*r-1);S(this,t,e,r,n-1,-n)}var s=r-1,o=1,a=0;for(this[e+s]=255&t;--s>=0&&(o*=256);)t<0&&0===a&&0!==this[e+s+1]&&(a=1),this[e+s]=(t/o>>0)-a&255;return e+r},h.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||S(this,t,e,1,127,-128),h.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},h.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||S(this,t,e,2,32767,-32768),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):L(this,t,e,!0),e+2},h.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||S(this,t,e,2,32767,-32768),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):L(this,t,e,!1),e+2},h.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||S(this,t,e,4,2147483647,-2147483648),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):O(this,t,e,!0),e+4},h.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||S(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):O(this,t,e,!1),e+4},h.prototype.writeFloatLE=function(t,e,r){return M(this,t,e,!0,r)},h.prototype.writeFloatBE=function(t,e,r){return M(this,t,e,!1,r)},h.prototype.writeDoubleLE=function(t,e,r){return D(this,t,e,!0,r)},h.prototype.writeDoubleBE=function(t,e,r){return D(this,t,e,!1,r)},h.prototype.copy=function(t,e,r,i){if(r||(r=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e=0;--n)t[n+e]=this[n+r];else if(s<1e3||!h.TYPED_ARRAY_SUPPORT)for(n=0;n>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(s=e;s55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&s.push(239,191,189);continue}if(o+1===i){(e-=3)>-1&&s.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&s.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(e-=3)>-1&&s.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;s.push(r)}else if(r<2048){if((e-=2)<0)break;s.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;s.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;s.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return s}function N(t){return i.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(j,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function F(t,e,r,i){for(var n=0;n=e.length||n>=t.length);++n)e[n+r]=t[n];return n}}).call(this,r(1))},function(t,e){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e,r){(function(t){const e=r(3);t.addEventListener("message",({data:t})=>{e.dispatchHandlers(t,t=>postMessage(t))}),e.setAdapter({getCore:(e,r)=>(t.TesseractCore||(r.progress({status:"loading tesseract core",progress:0}),t.importScripts(e.workerOptions.corePath),t.TesseractCore="object"==typeof WebAssembly?t.TesseractCoreWASM:t.TesseractCoreASM,r.progress({status:"loading tesseract core",progress:1})),t.TesseractCore)})}).call(this,r(1))},function(t,e,r){const{readImage:i,loadLang:n}=r(4),s=r(21);let o,a,h,f={};const u=t=>{const{w:e,h:r,bytesPerPixel:n,data:s,pix:h}=i(o,Array.from(t));return null===s?a.SetImage(h):a.SetImage(s,e,r,n,e*n),a.SetRectangle(0,0,e,r),s},c=(t,e)=>{let r=100663296;if(["chi_sim","chi_tra","jpn"].includes(t.options.lang)&&(r=167772160),!o||o.TOTAL_MEMORY{a=new(o=t).TessBaseAPI,e.progress({status:"initialized tesseract",progress:1})})}return Promise.resolve()},p=t=>{const{options:{lang:e},workerOptions:{langPath:r}}=t;return n({langs:e,tessModule:o,langURI:r})};e.dispatchHandlers=((t,e)=>{const r=(r,i)=>{e({jobId:t.jobId,status:r,action:t.action,data:i})};r.resolve=r.bind(this,"resolve"),r.reject=r.bind(this,"reject"),r.progress=r.bind(this,"progress"),h=r;try{"recognize"===t.action?((t,e)=>c(t,e).then(()=>p(t).then(()=>{const{options:r}=t,i=t=>{e.progress({status:"initializing api",progress:t})};i(0),a.Init(null,r.lang),i(.3),Object.keys(r).forEach(t=>{a.SetVariable(t,r[t])}),i(.6);const n=u(t.image);i(1),a.Recognize(null);const h=s(o,a);a.End(),o._free(n),e.resolve(h)})))(t.payload,r):"detect"===t.action&&((t,e)=>c(t,e).then(()=>p({...t,options:{...t.options,lang:"osd"}}).then(()=>{a.Init(null,"osd"),a.SetPageSegMode(o.PSM_OSD_ONLY);const r=u(t.image),i=new o.OSResults;if(a.DetectOS(i)){const t=i.get_best_result(),n=t.get_orientation_id(),s=t.get_script_id();a.End(),o._free(r),e.resolve({tesseract_script_id:s,script:i.get_unicharset().get_script_from_script_id(s),script_confidence:t.get_sconfidence(),orientation_degrees:[0,270,180,90][n],orientation_confidence:t.get_oconfidence()})}else a.End(),o._free(r),e.reject("Failed to detect OS")})))(t.payload,r)}catch(t){r.reject(t.toString())}}),e.setAdapter=(t=>{f=t})},function(t,e,r){const i=r(5);t.exports={loadLang:r(7)({fetch:r(8),gunzip:r(10),...i}),readImage:r(16),cache:i}},function(t,e,r){const{set:i,get:n,del:s}=r(6);t.exports={readCache:n,writeCache:i,deleteCache:s,checkCache:t=>n(t).then(t=>void 0!==t)}},function(t,e,r){"use strict";r.r(e),r.d(e,"Store",function(){return i}),r.d(e,"get",function(){return o}),r.d(e,"set",function(){return a}),r.d(e,"del",function(){return h}),r.d(e,"clear",function(){return f}),r.d(e,"keys",function(){return u});class i{constructor(t="keyval-store",e="keyval"){this.storeName=e,this._dbp=new Promise((r,i)=>{const n=indexedDB.open(t,1);n.onerror=(()=>i(n.error)),n.onsuccess=(()=>r(n.result)),n.onupgradeneeded=(()=>{n.result.createObjectStore(e)})})}_withIDBStore(t,e){return this._dbp.then(r=>new Promise((i,n)=>{const s=r.transaction(this.storeName,t);s.oncomplete=(()=>i()),s.onabort=s.onerror=(()=>n(s.error)),e(s.objectStore(this.storeName))}))}}let n;function s(){return n||(n=new i),n}function o(t,e=s()){let r;return e._withIDBStore("readonly",e=>{r=e.get(t)}).then(()=>r.result)}function a(t,e,r=s()){return r._withIDBStore("readwrite",r=>{r.put(e,t)})}function h(t,e=s()){return e._withIDBStore("readwrite",e=>{e.delete(t)})}function f(t=s()){return t._withIDBStore("readwrite",t=>{t.clear()})}function u(t=s()){const e=[];return t._withIDBStore("readonly",t=>{(t.openKeyCursor||t.openCursor).call(t).onsuccess=function(){this.result&&(e.push(this.result.key),this.result.continue())}}).then(()=>e)}},function(t,e){const r=t=>({tessModule:e,dataPath:r,cachePath:i,cacheMethod:n,lang:s})=>o=>{if(e){if(r)try{e.FS.mkdir(r)}catch(t){}e.FS.writeFile(`${r||"."}/${s}.traineddata`,o)}return["write","refresh",void 0].includes(n)?t.writeCache(`${i||"."}/${s}.traineddata`,o).then(()=>o):o};t.exports=(t=>({langs:e,...i})=>Promise.all(e.split("+").map((t=>({langURI:e,cachePath:i,cacheMethod:n,...s})=>o=>{let{readCache:a}=t;return["refresh","none"].includes(n)&&(a=(()=>Promise.resolve())),a(`${i||"."}/${o}.traineddata`).then(e=>void 0===e?Promise.reject():r(t)({cachePath:i,cacheMethod:n,lang:o,...s})(e)).catch(()=>t.fetch(`${e}/${o}.traineddata.gz`).then(t=>t.arrayBuffer()).then(e=>t.gunzip(new Uint8Array(e))).then(r(t)({cachePath:i,cacheMethod:n,lang:o,...s})))})(t)(i))))},function(t,e,r){const{fetch:i}=r(9);t.exports=i},function(t,e,r){"use strict";r.r(e),r.d(e,"Headers",function(){return f}),r.d(e,"Request",function(){return m}),r.d(e,"Response",function(){return b}),r.d(e,"DOMException",function(){return v}),r.d(e,"fetch",function(){return x});var i={searchParams:"URLSearchParams"in self,iterable:"Symbol"in self&&"iterator"in Symbol,blob:"FileReader"in self&&"Blob"in self&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in self,arrayBuffer:"ArrayBuffer"in self};if(i.arrayBuffer)var n=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],s=ArrayBuffer.isView||function(t){return t&&n.indexOf(Object.prototype.toString.call(t))>-1};function o(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function a(t){return"string"!=typeof t&&(t=String(t)),t}function h(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return i.iterable&&(e[Symbol.iterator]=function(){return e}),e}function f(t){this.map={},t instanceof f?t.forEach(function(t,e){this.append(e,t)},this):Array.isArray(t)?t.forEach(function(t){this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function u(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function c(t){return new Promise(function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}})}function p(t){var e=new FileReader,r=c(e);return e.readAsArrayBuffer(t),r}function l(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function d(){return this.bodyUsed=!1,this._initBody=function(t){var e;this._bodyInit=t,t?"string"==typeof t?this._bodyText=t:i.blob&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:i.formData&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:i.searchParams&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():i.arrayBuffer&&i.blob&&((e=t)&&DataView.prototype.isPrototypeOf(e))?(this._bodyArrayBuffer=l(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):i.arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(t)||s(t))?this._bodyArrayBuffer=l(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText="",this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):i.searchParams&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},i.blob&&(this.blob=function(){var t=u(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?u(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(p)}),this.text=function(){var t,e,r,i=u(this);if(i)return i;if(this._bodyBlob)return t=this._bodyBlob,e=new FileReader,r=c(e),e.readAsText(t),r;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),i=0;i-1?i:r),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(n)}function y(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var r=t.split("="),i=r.shift().replace(/\+/g," "),n=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(i),decodeURIComponent(n))}}),e}function b(t,e){e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new f(e.headers),this.url=e.url||"",this._initBody(t)}m.prototype.clone=function(){return new m(this,{body:this._bodyInit})},d.call(m.prototype),d.call(b.prototype),b.prototype.clone=function(){return new b(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new f(this.headers),url:this.url})},b.error=function(){var t=new b(null,{status:0,statusText:""});return t.type="error",t};var w=[301,302,303,307,308];b.redirect=function(t,e){if(-1===w.indexOf(e))throw new RangeError("Invalid status code");return new b(null,{status:e,headers:{location:t}})};var v=self.DOMException;try{new v}catch(t){(v=function(t,e){this.message=t,this.name=e;var r=Error(t);this.stack=r.stack}).prototype=Object.create(Error.prototype),v.prototype.constructor=v}function x(t,e){return new Promise(function(r,n){var s=new m(t,e);if(s.signal&&s.signal.aborted)return n(new v("Aborted","AbortError"));var o=new XMLHttpRequest;function a(){o.abort()}o.onload=function(){var t,e,i={status:o.status,statusText:o.statusText,headers:(t=o.getAllResponseHeaders()||"",e=new f,t.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach(function(t){var r=t.split(":"),i=r.shift().trim();if(i){var n=r.join(":").trim();e.append(i,n)}}),e)};i.url="responseURL"in o?o.responseURL:i.headers.get("X-Request-URL");var n="response"in o?o.response:o.responseText;r(new b(n,i))},o.onerror=function(){n(new TypeError("Network request failed"))},o.ontimeout=function(){n(new TypeError("Network request failed"))},o.onabort=function(){n(new v("Aborted","AbortError"))},o.open(s.method,s.url,!0),"include"===s.credentials?o.withCredentials=!0:"omit"===s.credentials&&(o.withCredentials=!1),"responseType"in o&&i.blob&&(o.responseType="blob"),s.headers.forEach(function(t,e){o.setRequestHeader(e,t)}),s.signal&&(s.signal.addEventListener("abort",a),o.onreadystatechange=function(){4===o.readyState&&s.signal.removeEventListener("abort",a)}),o.send(void 0===s._bodyInit?null:s._bodyInit)})}x.polyfill=!0,self.fetch||(self.fetch=x,self.Headers=f,self.Request=m,self.Response=b)},function(t,e,r){t.exports=r(11).gunzipSync},function(t,e,r){(function(t,r){/** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */(function(){"use strict";function i(t){throw t}var n=void 0,s=!0,o="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array&&"undefined"!=typeof DataView;function a(t,e){this.index="number"==typeof e?e:0,this.m=0,this.buffer=t instanceof(o?Uint8Array:Array)?t:new(o?Uint8Array:Array)(32768),2*this.buffer.length<=this.index&&i(Error("invalid index")),this.buffer.length<=this.index&&this.f()}a.prototype.f=function(){var t,e=this.buffer,r=e.length,i=new(o?Uint8Array:Array)(r<<1);if(o)i.set(e);else for(t=0;t>>8&255]<<16|l[t>>>16&255]<<8|l[t>>>24&255])>>32-e:l[t]>>8-e),8>e+o)a=a<>e-i-1&1,8==++o&&(o=0,n[s++]=l[a],a=0,s===n.length&&(n=this.f()));n[s]=a,this.buffer=n,this.m=o,this.index=s},a.prototype.finish=function(){var t,e=this.buffer,r=this.index;return 0h;++h){for(var u=p=h,c=7,p=p>>>1;p;p>>>=1)u<<=1,u|=1&p,--c;f[h]=(u<>>0}var l=f;function d(t,e,r){var i,n="number"==typeof e?e:e=0,s="number"==typeof r?r:t.length;for(i=-1,n=7&s;n--;++e)i=i>>>8^m[255&(i^t[e])];for(n=s>>3;n--;e+=8)i=(i=(i=(i=(i=(i=(i=(i=i>>>8^m[255&(i^t[e])])>>>8^m[255&(i^t[e+1])])>>>8^m[255&(i^t[e+2])])>>>8^m[255&(i^t[e+3])])>>>8^m[255&(i^t[e+4])])>>>8^m[255&(i^t[e+5])])>>>8^m[255&(i^t[e+6])])>>>8^m[255&(i^t[e+7])];return(4294967295^i)>>>0}var g=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],m=o?new Uint32Array(g):g;function y(){}function b(t){this.buffer=new(o?Uint16Array:Array)(2*t),this.length=0}function w(t){var e,r,i,n,s,a,h,f,u,c,p=t.length,l=0,d=Number.POSITIVE_INFINITY;for(f=0;fl&&(l=t[f]),t[f]>=1;for(c=i<<16|f,u=a;us[i]);)n=s[r],s[r]=s[i],s[i]=n,n=s[r+1],s[r+1]=s[i+1],s[i+1]=n,r=i;return this.length},b.prototype.pop=function(){var t,e,r,i,n,s=this.buffer;for(e=s[0],t=s[1],this.length-=2,s[0]=s[this.length],s[1]=s[this.length+1],n=0;!((i=2*n+2)>=this.length)&&(i+2s[i]&&(i+=2),s[i]>s[n]);)r=s[n],s[n]=s[i],s[i]=r,r=s[n+1],s[n+1]=s[i+1],s[i+1]=r,n=i;return{index:t,value:e,length:this.length}};var x,A=2,_={NONE:0,L:1,t:A,X:3},E=[];for(x=0;288>x;x++)switch(s){case 143>=x:E.push([x+48,8]);break;case 255>=x:E.push([x-144+400,9]);break;case 279>=x:E.push([x-256+0,7]);break;case 287>=x:E.push([x-280+192,8]);break;default:i("invalid literal: "+x)}function U(t,e){this.length=t,this.N=e}v.prototype.h=function(){var t,e,r,h,f=this.input;switch(this.k){case 0:for(r=0,h=f.length;r>>8&255,y[b++]=255&p,y[b++]=p>>>8&255,o)y.set(l,b),b+=l.length,y=y.subarray(0,b);else{for(g=0,m=l.length;gK)for(;0K?K:138)>K-3&&Z=Z?(rt[J++]=17,rt[J++]=Z-3,it[17]++):(rt[J++]=18,rt[J++]=Z-11,it[18]++),K-=Z;else if(rt[J++]=et[W],it[et[W]]++,3>--K)for(;0K?K:6)>K-3&&ZF;F++)V[F]=j[H[F]];for(L=19;4=t:return[265,t-11,1];case 14>=t:return[266,t-13,1];case 16>=t:return[267,t-15,1];case 18>=t:return[268,t-17,1];case 22>=t:return[269,t-19,2];case 26>=t:return[270,t-23,2];case 30>=t:return[271,t-27,2];case 34>=t:return[272,t-31,2];case 42>=t:return[273,t-35,3];case 50>=t:return[274,t-43,3];case 58>=t:return[275,t-51,3];case 66>=t:return[276,t-59,3];case 82>=t:return[277,t-67,4];case 98>=t:return[278,t-83,4];case 114>=t:return[279,t-99,4];case 130>=t:return[280,t-115,4];case 162>=t:return[281,t-131,5];case 194>=t:return[282,t-163,5];case 226>=t:return[283,t-195,5];case 257>=t:return[284,t-227,5];case 258===t:return[285,t-258,0];default:i("invalid length: "+t)}}var e,r,n=[];for(e=3;258>=e;e++)r=t(e),n[e]=r[2]<<24|r[1]<<16|r[0];return n}(),T=o?new Uint32Array(I):I;function B(t,e){function r(t,e){var r,n,o,a,h=t.N,f=[],u=0;switch(r=T[t.length],f[u++]=65535&r,f[u++]=r>>16&255,f[u++]=r>>24,s){case 1===h:n=[0,h-1,0];break;case 2===h:n=[1,h-2,0];break;case 3===h:n=[2,h-3,0];break;case 4===h:n=[3,h-4,0];break;case 6>=h:n=[4,h-5,1];break;case 8>=h:n=[5,h-7,1];break;case 12>=h:n=[6,h-9,2];break;case 16>=h:n=[7,h-13,2];break;case 24>=h:n=[8,h-17,3];break;case 32>=h:n=[9,h-25,3];break;case 48>=h:n=[10,h-33,4];break;case 64>=h:n=[11,h-49,4];break;case 96>=h:n=[12,h-65,5];break;case 128>=h:n=[13,h-97,5];break;case 192>=h:n=[14,h-129,6];break;case 256>=h:n=[15,h-193,6];break;case 384>=h:n=[16,h-257,7];break;case 512>=h:n=[17,h-385,7];break;case 768>=h:n=[18,h-513,8];break;case 1024>=h:n=[19,h-769,8];break;case 1536>=h:n=[20,h-1025,9];break;case 2048>=h:n=[21,h-1537,9];break;case 3072>=h:n=[22,h-2049,10];break;case 4096>=h:n=[23,h-3073,10];break;case 6144>=h:n=[24,h-4097,11];break;case 8192>=h:n=[25,h-6145,11];break;case 12288>=h:n=[26,h-8193,12];break;case 16384>=h:n=[27,h-12289,12];break;case 24576>=h:n=[28,h-16385,13];break;case 32768>=h:n=[29,h-24577,13];break;default:i("invalid distance")}for(r=n,f[u++]=r[0],f[u++]=r[1],f[u++]=r[2],o=0,a=f.length;o=f;)v[f++]=0;for(f=0;29>=f;)x[f++]=0}for(v[256]=1,a=0,h=e.length;a=h){for(d&&r(d,-1),f=0,u=h-a;fs&&e+sf&&(n=i,f=s),258===s)break}return new U(f,e-n)}function P(t,e){var r,i,n,s,a,h=t.length,f=new b(572),u=new(o?Uint8Array:Array)(h);if(!o)for(s=0;s2*u[s-1]+c[s]&&(u[s]=2*u[s-1]+c[s]),l[s]=Array(u[s]),d[s]=Array(u[s]);for(n=0;nt[n]?(l[s][a]=h,d[s][a]=e,f+=2):(l[s][a]=t[n],d[s][a]=n,++n);g[s]=0,1===c[s]&&i(s)}return p}(i,i.length,e),s=0,a=r.length;s>>=1;return s}function S(t,e){this.input=t,this.b=this.c=0,this.g={},e&&(e.flags&&(this.g=e.flags),"string"==typeof e.filename&&(this.filename=e.filename),"string"==typeof e.comment&&(this.w=e.comment),e.deflateOptions&&(this.l=e.deflateOptions)),this.l||(this.l={})}S.prototype.h=function(){var t,e,r,i,s,a,h,f,u=new(o?Uint8Array:Array)(32768),c=0,p=this.input,l=this.c,g=this.filename,m=this.w;if(u[c++]=31,u[c++]=139,u[c++]=8,t=0,this.g.fname&&(t|=C),this.g.fcomment&&(t|=M),this.g.fhcrc&&(t|=O),u[c++]=t,e=(Date.now?Date.now():+new Date)/1e3|0,u[c++]=255&e,u[c++]=e>>>8&255,u[c++]=e>>>16&255,u[c++]=e>>>24&255,u[c++]=0,u[c++]=L,this.g.fname!==n){for(h=0,f=g.length;h>>8&255),u[c++]=255&a;u[c++]=0}if(this.g.comment){for(h=0,f=m.length;h>>8&255),u[c++]=255&a;u[c++]=0}return this.g.fhcrc&&(r=65535&d(u,0,c),u[c++]=255&r,u[c++]=r>>>8&255),this.l.outputBuffer=u,this.l.outputIndex=c,u=(s=new v(p,this.l)).h(),c=s.b,o&&(c+8>u.buffer.byteLength?(this.a=new Uint8Array(c+8),this.a.set(new Uint8Array(u.buffer)),u=this.a):u=new Uint8Array(u.buffer)),i=d(p,n,n),u[c++]=255&i,u[c++]=i>>>8&255,u[c++]=i>>>16&255,u[c++]=i>>>24&255,f=p.length,u[c++]=255&f,u[c++]=f>>>8&255,u[c++]=f>>>16&255,u[c++]=f>>>24&255,this.c=l,o&&c>>=1){case 0:var e=this.input,r=this.c,a=this.a,h=this.b,f=e.length,u=n,c=a.length,p=n;switch(this.e=this.j=0,r+1>=f&&i(Error("invalid uncompressed block header: LEN")),u=e[r++]|e[r++]<<8,r+1>=f&&i(Error("invalid uncompressed block header: NLEN")),u===~(e[r++]|e[r++]<<8)&&i(Error("invalid uncompressed block header: length verify")),r+u>e.length&&i(Error("input buffer is broken")),this.q){case j:for(;h+u>a.length;){if(u-=p=c-h,o)a.set(e.subarray(r,r+p),h),h+=p,r+=p;else for(;p--;)a[h++]=e[r++];this.b=h,a=this.f(),h=this.b}break;case z:for(;h+u>a.length;)a=this.f({B:2});break;default:i(Error("invalid inflate mode"))}if(o)a.set(e.subarray(r,r+u),h),h+=u,r+=u;else for(;u--;)a[h++]=e[r++];this.c=r,this.b=h,this.a=a;break;case 1:this.r(et,it);break;case 2:var l,d,g,m,y=nt(this,5)+257,b=nt(this,5)+1,v=nt(this,4)+4,x=new(o?Uint8Array:Array)(G.length),A=n,_=n,E=n,U=n,I=n;for(I=0;I=Y?8:255>=Y?9:279>=Y?7:8;var Q,tt,et=w(Z),rt=new(o?Uint8Array:Array)(30);for(Q=0,tt=rt.length;Q=h&&i(Error("input buffer is broken")),n|=o[a++]<>>e,t.e=s-e,t.c=a,r}function st(t,e){for(var r,n,s=t.j,o=t.e,a=t.input,h=t.c,f=a.length,u=e[0],c=e[1];o=f);)s|=a[h++]<>>16)>o&&i(Error("invalid code length: "+n)),t.j=s>>n,t.e=o-n,t.c=h,65535&r}function ot(t){this.input=t,this.c=0,this.G=[],this.R=!1}function at(t){if("string"==typeof t){var e,r,i=t.split("");for(e=0,r=i.length;e>>0;t=i}for(var n,s=1,o=0,a=t.length,h=0;0>>0}function ht(t,e){var r,n;switch(this.input=t,this.c=0,!e&&(e={})||(e.index&&(this.c=e.index),e.verify&&(this.V=e.verify)),r=t[this.c++],n=t[this.c++],15&r){case ft:this.method=ft;break;default:i(Error("unsupported compression method"))}0!=((r<<8)+n)%31&&i(Error("invalid fcheck flag:"+((r<<8)+n)%31)),32&n&&i(Error("fdict flag is not supported")),this.J=new D(t,{index:this.c,bufferSize:e.bufferSize,bufferType:e.bufferType,resize:e.resize})}D.prototype.r=function(t,e){var r=this.a,i=this.b;this.A=t;for(var n,s,o,a,h=r.length-258;256!==(n=st(this,t));)if(256>n)i>=h&&(this.b=i,r=this.f(),i=this.b),r[i++]=n;else for(a=H[s=n-257],0=h&&(this.b=i,r=this.f(),i=this.b);a--;)r[i]=r[i++-o];for(;8<=this.e;)this.e-=8,this.c--;this.b=i},D.prototype.Q=function(t,e){var r=this.a,i=this.b;this.A=t;for(var n,s,o,a,h=r.length;256!==(n=st(this,t));)if(256>n)i>=h&&(h=(r=this.f()).length),r[i++]=n;else for(a=H[s=n-257],0h&&(h=(r=this.f()).length);a--;)r[i]=r[i++-o];for(;8<=this.e;)this.e-=8,this.c--;this.b=i},D.prototype.f=function(){var t,e,r=new(o?Uint8Array:Array)(this.b-32768),i=this.b-32768,n=this.a;if(o)r.set(n.subarray(32768,r.length));else for(t=0,e=r.length;tt;++t)n[t]=n[i+t];return this.b=32768,n},D.prototype.S=function(t){var e,r,i,n=this.input.length/this.c+1|0,s=this.input,a=this.a;return t&&("number"==typeof t.B&&(n=t.B),"number"==typeof t.M&&(n+=t.M)),2>n?r=(i=(s.length-this.c)/this.A[2]/2*258|0)e&&(this.a.length=e),t=this.a),this.buffer=t},ot.prototype.i=function(){for(var t=this.input.length;this.c>>0,d(e,n,n)!==g&&i(Error("invalid CRC-32 checksum: 0x"+d(e,n,n).toString(16)+" / 0x"+g.toString(16))),a.Z=h=(m[b++]|m[b++]<<8|m[b++]<<16|m[b++]<<24)>>>0,(4294967295&e.length)!==h&&i(Error("invalid input size: "+(4294967295&e.length)+" / "+h)),this.G.push(a),this.c=b}this.R=s;var w,v,x,A=this.G,_=0,E=0;for(w=0,v=A.length;w>>0!==at(t)&&i(Error("invalid adler-32 checksum"))),t};var ft=8;function ut(t,e){this.input=t,this.a=new(o?Uint8Array:Array)(32768),this.k=ct.t;var r,i={};for(r in!e&&(e={})||"number"!=typeof e.compressionType||(this.k=e.compressionType),e)i[r]=e[r];i.outputBuffer=this.a,this.I=new v(this.input,i)}var ct=_;function pt(t,e){var r;return r=new ut(t).h(),e||(e={}),e.H?r:mt(r)}function lt(t,e){var r;return t.subarray=t.slice,r=new ht(t).i(),e||(e={}),e.noBuffer?r:mt(r)}function dt(t,e){var r;return t.subarray=t.slice,r=new S(t).h(),e||(e={}),e.H?r:mt(r)}function gt(t,e){var r;return t.subarray=t.slice,r=new ot(t).i(),e||(e={}),e.H?r:mt(r)}function mt(t){var e,i,n=new r(t.length);for(e=0,i=t.length;e>24&255,h[f++]=a>>16&255,h[f++]=a>>8&255,h[f++]=255&a,h},e.deflate=function(e,r,i){t.nextTick(function(){var t,n;try{n=pt(e,i)}catch(e){t=e}r(t,n)})},e.deflateSync=pt,e.inflate=function(e,r,i){t.nextTick(function(){var t,n;try{n=lt(e,i)}catch(e){t=e}r(t,n)})},e.inflateSync=lt,e.gzip=function(e,r,i){t.nextTick(function(){var t,n;try{n=dt(e,i)}catch(e){t=e}r(t,n)})},e.gzipSync=dt,e.gunzip=function(e,r,i){t.nextTick(function(){var t,n;try{n=gt(e,i)}catch(e){t=e}r(t,n)})},e.gunzipSync=gt}).call(this)}).call(this,r(12),r(0).Buffer)},function(t,e){var r,i,n=t.exports={};function s(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function a(t){if(r===setTimeout)return setTimeout(t,0);if((r===s||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:s}catch(t){r=s}try{i="function"==typeof clearTimeout?clearTimeout:o}catch(t){i=o}}();var h,f=[],u=!1,c=-1;function p(){u&&h&&(u=!1,h.length?f=h.concat(f):c=-1,f.length&&l())}function l(){if(!u){var t=a(p);u=!0;for(var e=f.length;e;){for(h=f,f=[];++c1)for(var r=1;r0?h-4:h;var u=0;for(e=0;e>16&255,a[u++]=i>>8&255,a[u++]=255&i;2===o?(i=n[t.charCodeAt(e)]<<2|n[t.charCodeAt(e+1)]>>4,a[u++]=255&i):1===o&&(i=n[t.charCodeAt(e)]<<10|n[t.charCodeAt(e+1)]<<4|n[t.charCodeAt(e+2)]>>2,a[u++]=i>>8&255,a[u++]=255&i);return a},e.fromByteArray=function(t){for(var e,r=t.length,n=r%3,s="",o=[],a=0,h=r-n;ah?h:a+16383));1===n?(e=t[r-1],s+=i[e>>2],s+=i[e<<4&63],s+="=="):2===n&&(e=(t[r-2]<<8)+t[r-1],s+=i[e>>10],s+=i[e>>4&63],s+=i[e<<2&63],s+="=");return o.push(s),o.join("")};for(var i=[],n=[],s="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,h=o.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function u(t,e,r){for(var n,s,o=[],a=e;a>18&63]+i[s>>12&63]+i[s>>6&63]+i[63&s]);return o.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,r,i,n){var s,o,a=8*n-i-1,h=(1<>1,u=-7,c=r?n-1:0,p=r?-1:1,l=t[e+c];for(c+=p,s=l&(1<<-u)-1,l>>=-u,u+=a;u>0;s=256*s+t[e+c],c+=p,u-=8);for(o=s&(1<<-u)-1,s>>=-u,u+=i;u>0;o=256*o+t[e+c],c+=p,u-=8);if(0===s)s=1-f;else{if(s===h)return o?NaN:1/0*(l?-1:1);o+=Math.pow(2,i),s-=f}return(l?-1:1)*o*Math.pow(2,s-i)},e.write=function(t,e,r,i,n,s){var o,a,h,f=8*s-n-1,u=(1<>1,p=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,l=i?0:s-1,d=i?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-o))<1&&(o--,h*=2),(e+=o+c>=1?p/h:p*Math.pow(2,1-c))*h>=2&&(o++,h/=2),o+c>=u?(a=0,o=u):o+c>=1?(a=(e*h-1)*Math.pow(2,n),o+=c):(a=e*Math.pow(2,c-1)*Math.pow(2,n),o=0));n>=8;t[r+l]=255&a,l+=d,a/=256,n-=8);for(o=o<0;t[r+l]=255&o,l+=d,o/=256,f-=8);t[r+l-d]|=128*g}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e,r){(function(e){const i=r(17),n=r(20);t.exports=((t,r)=>{const s=e.from(r),o=n(s);let a=0,h=null,f=null,u=0,c=0;if(o&&"image/bmp"===o.mime){const e=i.decode(s);h=t._malloc(e.data.length*Uint8Array.BYTES_PER_ELEMENT),t.HEAPU8.set(e.data,h),u=e.width,c=e.height,a=4}else{const e=t._malloc(s.length*Uint8Array.BYTES_PER_ELEMENT);t.HEAPU8.set(s,e),f=t._pixReadMem(e,s.length),0===t.getValue(f+28,"i32")&&t.setValue(f+28,70,"i32"),[u,c]=Array(2).fill(0).map((e,r)=>t.getValue(f+4*r,"i32"))}return{w:u,h:c,bytesPerPixel:a,data:h,pix:f}})}).call(this,r(0).Buffer)},function(t,e,r){var i=r(18),n=r(19);t.exports={encode:i,decode:n}},function(t,e,r){(function(e){function r(t){this.buffer=t.data,this.width=t.width,this.height=t.height,this.extraBytes=this.width%4,this.rgbSize=this.height*(3*this.width+this.extraBytes),this.headerInfoSize=40,this.data=[],this.flag="BM",this.reserved=0,this.offset=54,this.fileSize=this.rgbSize+this.offset,this.planes=1,this.bitPP=24,this.compress=0,this.hr=0,this.vr=0,this.colors=0,this.importantColors=0}r.prototype.encode=function(){var t=new e(this.offset+this.rgbSize);this.pos=0,t.write(this.flag,this.pos,2),this.pos+=2,t.writeUInt32LE(this.fileSize,this.pos),this.pos+=4,t.writeUInt32LE(this.reserved,this.pos),this.pos+=4,t.writeUInt32LE(this.offset,this.pos),this.pos+=4,t.writeUInt32LE(this.headerInfoSize,this.pos),this.pos+=4,t.writeUInt32LE(this.width,this.pos),this.pos+=4,t.writeInt32LE(-this.height,this.pos),this.pos+=4,t.writeUInt16LE(this.planes,this.pos),this.pos+=2,t.writeUInt16LE(this.bitPP,this.pos),this.pos+=2,t.writeUInt32LE(this.compress,this.pos),this.pos+=4,t.writeUInt32LE(this.rgbSize,this.pos),this.pos+=4,t.writeUInt32LE(this.hr,this.pos),this.pos+=4,t.writeUInt32LE(this.vr,this.pos),this.pos+=4,t.writeUInt32LE(this.colors,this.pos),this.pos+=4,t.writeUInt32LE(this.importantColors,this.pos),this.pos+=4;for(var r=0,i=3*this.width+this.extraBytes,n=0;n0){var a=this.pos+n*i+3*this.width;t.fill(0,a,a+this.extraBytes)}}return t},t.exports=function(t,e){return void 0===e&&(e=100),{data:new r(t).encode(),width:t.width,height:t.height}}}).call(this,r(0).Buffer)},function(t,e,r){(function(e){function r(t,e){if(this.pos=0,this.buffer=t,this.is_with_alpha=!!e,this.bottom_up=!0,this.flag=this.buffer.toString("utf-8",0,this.pos+=2),"BM"!=this.flag)throw new Error("Invalid BMP File");this.parseHeader(),this.parseRGBA()}r.prototype.parseHeader=function(){if(this.fileSize=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.reserved=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.offset=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.headerSize=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.width=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.height=this.buffer.readInt32LE(this.pos),this.pos+=4,this.planes=this.buffer.readUInt16LE(this.pos),this.pos+=2,this.bitPP=this.buffer.readUInt16LE(this.pos),this.pos+=2,this.compress=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.rawSize=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.hr=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.vr=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.colors=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.importantColors=this.buffer.readUInt32LE(this.pos),this.pos+=4,16===this.bitPP&&this.is_with_alpha&&(this.bitPP=15),this.bitPP<15){var t=0===this.colors?1<=0?this.height-1:-this.height;for(r=this.height-1;r>=0;r--){for(var i=this.bottom_up?r:this.height-1-r,n=0;n>7-a&1];this.data[o+4*a]=0,this.data[o+4*a+1]=h.blue,this.data[o+4*a+2]=h.green,this.data[o+4*a+3]=h.red}0!=e&&(this.pos+=4-e)}},r.prototype.bit4=function(){if(2==this.compress){this.data.fill(255);for(var t=0,e=this.bottom_up?this.height-1:0,r=!1;t>4),1&h&&h+1>1&1)&&this.pos++}}else for(h=0;h>4),r=!r}function f(e){var r=this.palette[e];this.data[t]=0,this.data[t+1]=r.blue,this.data[t+2]=r.green,this.data[t+3]=r.red,t+=4}}else{var u=Math.ceil(this.width/2),c=u%4;for(o=this.height-1;o>=0;o--){var p=this.bottom_up?o:this.height-1-o;for(s=0;s>4,d=15&n,g=this.palette[l];if(this.data[t]=0,this.data[t+1]=g.blue,this.data[t+2]=g.green,this.data[t+3]=g.red,2*s+1>=this.width)break;g=this.palette[d],this.data[t+4]=0,this.data[t+4+1]=g.blue,this.data[t+4+2]=g.green,this.data[t+4+3]=g.red}0!=c&&(this.pos+=4-c)}}},r.prototype.bit8=function(){if(1==this.compress){this.data.fill(255);for(var t=0,e=this.bottom_up?this.height-1:0;t=0;s--){var u=this.bottom_up?s:this.height-1-s;for(n=0;n=0;r--){for(var i=this.bottom_up?r:this.height-1-r,n=0;n>5&e)/e*255|0,h=(s>>10&e)/e*255|0,f=s>>15?255:0,u=i*this.width*4+4*n;this.data[u]=f,this.data[u+1]=o,this.data[u+2]=a,this.data[u+3]=h}this.pos+=t}},r.prototype.bit16=function(){var t=this.width%2*2;this.maskRed=31744,this.maskGreen=992,this.maskBlue=31,this.mask0=0,3==this.compress&&(this.maskRed=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.maskGreen=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.maskBlue=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.mask0=this.buffer.readUInt32LE(this.pos),this.pos+=4);for(var e=[0,0,0],r=0;r<16;r++)this.maskRed>>r&1&&e[0]++,this.maskGreen>>r&1&&e[1]++,this.maskBlue>>r&1&&e[2]++;e[1]+=e[0],e[2]+=e[1],e[0]=8-e[0],e[1]-=8,e[2]-=8;for(var i=this.height-1;i>=0;i--){for(var n=this.bottom_up?i:this.height-1-i,s=0;s>e[1],f=(o&this.maskRed)>>e[2],u=n*this.width*4+4*s;this.data[u]=0,this.data[u+1]=a,this.data[u+2]=h,this.data[u+3]=f}this.pos+=t}},r.prototype.bit24=function(){for(var t=this.height-1;t>=0;t--){for(var e=this.bottom_up?t:this.height-1-t,r=0;r=0;t--)for(var e=this.bottom_up?t:this.height-1-t,r=0;r=0;t--)for(e=this.bottom_up?t:this.height-1-t,r=0;r[...t].map(t=>t.charCodeAt(0)),i=r("META-INF/mozilla.rsa"),n=r("[Content_Types].xml"),s=r("_rels/.rels");function o(t,e=0){let r=t[e],i=1,n=0;for(;++n<8;)i*=256,r+=t[e+n]*i;return r}t.exports=(t=>{if(!(t instanceof Uint8Array||e.isBuffer(t)))throw new TypeError(`Expected the \`input\` argument to be of type \`Uint8Array\` or \`Buffer\`, got \`${typeof t}\``);const a=t instanceof Uint8Array?t:new Uint8Array(t);if(!(a&&a.length>1))return null;const h=(t,e)=>{e=Object.assign({offset:0},e);for(let r=0;rh(r(t),e);if(h([255,216,255]))return{ext:"jpg",mime:"image/jpeg"};if(h([137,80,78,71,13,10,26,10]))return{ext:"png",mime:"image/png"};if(h([71,73,70]))return{ext:"gif",mime:"image/gif"};if(h([87,69,66,80],{offset:8}))return{ext:"webp",mime:"image/webp"};if(h([70,76,73,70]))return{ext:"flif",mime:"image/flif"};if((h([73,73,42,0])||h([77,77,0,42]))&&h([67,82],{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(h([73,73,42,0])||h([77,77,0,42]))return{ext:"tif",mime:"image/tiff"};if(h([66,77]))return{ext:"bmp",mime:"image/bmp"};if(h([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(h([56,66,80,83]))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(h([80,75,3,4])){if(h([109,105,109,101,116,121,112,101,97,112,112,108,105,99,97,116,105,111,110,47,101,112,117,98,43,122,105,112],{offset:30}))return{ext:"epub",mime:"application/epub+zip"};if(h(i,{offset:30}))return{ext:"xpi",mime:"application/x-xpinstall"};if(f("mimetypeapplication/vnd.oasis.opendocument.text",{offset:30}))return{ext:"odt",mime:"application/vnd.oasis.opendocument.text"};if(f("mimetypeapplication/vnd.oasis.opendocument.spreadsheet",{offset:30}))return{ext:"ods",mime:"application/vnd.oasis.opendocument.spreadsheet"};if(f("mimetypeapplication/vnd.oasis.opendocument.presentation",{offset:30}))return{ext:"odp",mime:"application/vnd.oasis.opendocument.presentation"};const t=(t,e=0)=>t.findIndex((t,r,i)=>r>=e&&80===i[r]&&75===i[r+1]&&3===i[r+2]&&4===i[r+3]);let e=0,r=!1,o=null;do{const i=e+30;if(r||(r=h(n,{offset:i})||h(s,{offset:i})),o||(f("word/",{offset:i})?o={ext:"docx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"}:f("ppt/",{offset:i})?o={ext:"pptx",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"}:f("xl/",{offset:i})&&(o={ext:"xlsx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})),r&&o)return o;e=t(a,i)}while(e>=0);if(o)return o}if(h([80,75])&&(3===a[2]||5===a[2]||7===a[2])&&(4===a[3]||6===a[3]||8===a[3]))return{ext:"zip",mime:"application/zip"};if(h([117,115,116,97,114],{offset:257}))return{ext:"tar",mime:"application/x-tar"};if(h([82,97,114,33,26,7])&&(0===a[6]||1===a[6]))return{ext:"rar",mime:"application/x-rar-compressed"};if(h([31,139,8]))return{ext:"gz",mime:"application/gzip"};if(h([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(h([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(h([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(h([51,103,112,53])||h([0,0,0])&&h([102,116,121,112],{offset:4})&&(h([109,112,52,49],{offset:8})||h([109,112,52,50],{offset:8})||h([105,115,111,109],{offset:8})||h([105,115,111,50],{offset:8})||h([109,109,112,52],{offset:8})||h([77,52,86],{offset:8})||h([100,97,115,104],{offset:8})))return{ext:"mp4",mime:"video/mp4"};if(h([77,84,104,100]))return{ext:"mid",mime:"audio/midi"};if(h([26,69,223,163])){const t=a.subarray(4,4100),e=t.findIndex((t,e,r)=>66===r[e]&&130===r[e+1]);if(-1!==e){const r=e+3,i=e=>[...e].every((e,i)=>t[r+i]===e.charCodeAt(0));if(i("matroska"))return{ext:"mkv",mime:"video/x-matroska"};if(i("webm"))return{ext:"webm",mime:"video/webm"}}}if(h([0,0,0,20,102,116,121,112,113,116,32,32])||h([102,114,101,101],{offset:4})||h([102,116,121,112,113,116,32,32],{offset:4})||h([109,100,97,116],{offset:4})||h([109,111,111,118],{offset:4})||h([119,105,100,101],{offset:4}))return{ext:"mov",mime:"video/quicktime"};if(h([82,73,70,70])){if(h([65,86,73],{offset:8}))return{ext:"avi",mime:"video/vnd.avi"};if(h([87,65,86,69],{offset:8}))return{ext:"wav",mime:"audio/vnd.wave"};if(h([81,76,67,77],{offset:8}))return{ext:"qcp",mime:"audio/qcelp"}}if(h([48,38,178,117,142,102,207,17,166,217])){let t=30;do{const e=o(a,t+16);if(h([145,7,220,183,183,169,207,17,142,230,0,192,12,32,83,101],{offset:t})){if(h([64,158,105,248,77,91,207,17,168,253,0,128,95,92,68,43],{offset:t+24}))return{ext:"wma",mime:"audio/x-ms-wma"};if(h([192,239,25,188,77,91,207,17,168,253,0,128,95,92,68,43],{offset:t+24}))return{ext:"wmv",mime:"video/x-ms-asf"};break}t+=e}while(t+24<=a.length);return{ext:"asf",mime:"application/vnd.ms-asf"}}if(h([0,0,1,186])||h([0,0,1,179]))return{ext:"mpg",mime:"video/mpeg"};if(h([102,116,121,112,51,103],{offset:4}))return{ext:"3gp",mime:"video/3gpp"};for(let t=0;t<2&&t{const r=e.GetIterator(),i=[];let n,s,o,a,h;const f=(e,r)=>Object.keys(t).filter(t=>t.substr(0,r.length+1)===`${r}_`).filter(r=>t[r]===e).map(t=>t.slice(r.length+1))[0];r.Begin();do{if(r.IsAtBeginningOf(t.RIL_BLOCK)){const e=r.BlockPolygon();let s=null;if(t.getPointer(e)>0){const r=e.get_n(),i=e.get_x(),n=e.get_y();s=[];for(let t=0;t{const e=t.split("\n");if(" "===e[0].substring(0,2))for(let t=0;t {\n workerUtils.dispatchHandlers(data, obj => postMessage(obj));\n});\n\nworkerUtils.setAdapter({\n getCore: (req, res) => {\n if (!global.TesseractCore) {\n res.progress({ status: 'loading tesseract core', progress: 0 });\n global.importScripts(req.workerOptions.corePath);\n global.TesseractCore = typeof WebAssembly === 'object' ? global.TesseractCoreWASM : global.TesseractCoreASM;\n res.progress({ status: 'loading tesseract core', progress: 1 });\n }\n return global.TesseractCore;\n },\n});\n","const { readImage, loadLang } = require('tesseract.js-utils');\nconst dump = require('./dump');\n\nlet Module;\nlet base;\nlet latestJob;\nlet adapter = {};\n\nconst handleInit = (req, res) => {\n let MIN_MEMORY = 100663296;\n\n if (['chi_sim', 'chi_tra', 'jpn'].includes(req.options.lang)) {\n MIN_MEMORY = 167772160;\n }\n\n if (!Module || Module.TOTAL_MEMORY < MIN_MEMORY) {\n const Core = adapter.getCore(req, res);\n\n res.progress({ status: 'initializing tesseract', progress: 0 });\n\n return Core({\n // TOTAL_MEMORY: MIN_MEMORY,\n TesseractProgress(percent) {\n latestJob.progress({ status: 'recognizing text', progress: Math.max(0, (percent - 30) / 70) });\n },\n })\n .then((TessModule) => {\n Module = TessModule;\n base = new Module.TessBaseAPI();\n res.progress({ status: 'initialized tesseract', progress: 1 });\n });\n }\n\n return new Promise();\n};\n\nconst setImage = (image) => {\n const { w, h, data } = readImage(Module, Array.from(image));\n\n base.SetImage(data);\n base.SetRectangle(0, 0, w, h);\n return data;\n};\n\nconst loadLanguage = (req, res, cb) => {\n const { options: { lang }, workerOptions: { langPath } } = req;\n return loadLang({\n langs: lang,\n tessModule: Module,\n langURI: langPath,\n cache: true,\n }).then(cb);\n};\n\nconst handleRecognize = (req, res) => {\n handleInit(req, res)\n .then(() => {\n loadLanguage(req, res, () => {\n const { options } = req;\n\n const progressUpdate = (progress) => {\n res.progress({ status: 'initializing api', progress });\n };\n\n progressUpdate(0);\n base.Init(null, options.lang);\n progressUpdate(0.3);\n\n Object.keys(options).forEach((key) => {\n base.SetVariable(key, options[key]);\n });\n\n progressUpdate(0.6);\n const ptr = setImage(req.image);\n progressUpdate(1);\n\n base.Recognize(null);\n\n const result = dump(Module, base);\n\n base.End();\n Module._free(ptr);\n\n res.resolve(result);\n });\n });\n};\n\n\nconst handleDetect = (req, res) => {\n handleInit(req, res)\n .then(() => {\n req.options.lang = 'osd';\n loadLanguage(req, res, () => {\n base.Init(null, 'osd');\n base.SetPageSegMode(Module.PSM_OSD_ONLY);\n\n const ptr = setImage(req.image);\n const results = new Module.OSResults();\n\n if (!base.DetectOS(results)) {\n base.End();\n Module._free(ptr);\n res.reject('Failed to detect OS');\n } else {\n const best = results.get_best_result();\n const oid = best.get_orientation_id();\n const sid = best.get_script_id();\n\n base.End();\n Module._free(ptr);\n\n res.resolve({\n tesseract_script_id: sid,\n script: results.get_unicharset().get_script_from_script_id(sid),\n script_confidence: best.get_sconfidence(),\n orientation_degrees: [0, 270, 180, 90][oid],\n orientation_confidence: best.get_oconfidence(),\n });\n }\n });\n });\n};\n\nexports.dispatchHandlers = (packet, send) => {\n const respond = (status, data) => {\n send({\n jobId: packet.jobId,\n status,\n action: packet.action,\n data,\n });\n };\n respond.resolve = respond.bind(this, 'resolve');\n respond.reject = respond.bind(this, 'reject');\n respond.progress = respond.bind(this, 'progress');\n\n latestJob = respond;\n\n try {\n if (packet.action === 'recognize') {\n handleRecognize(packet.payload, respond);\n } else if (packet.action === 'detect') {\n handleDetect(packet.payload, respond);\n }\n } catch (err) {\n // Prepare exception to travel through postMessage\n respond.reject(err.toString());\n }\n};\n\nexports.setAdapter = (impl) => {\n adapter = impl;\n};\n","module.exports = {\n loadLang: require('./loadLang')({\n fetch: require('./common/browser/fetch'),\n gunzip: require('./common/browser/gunzip'),\n ...require('./common/browser/cache'),\n }),\n readImage: require('./readImage'),\n};\n","const handleLang = modules => ({\n tessModule,\n dataPath,\n cachePath,\n cache,\n lang,\n}) => (data) => {\n if (tessModule) {\n if (dataPath) {\n try {\n tessModule.FS.mkdir(dataPath);\n } catch (err) {\n // Do nothing\n }\n }\n tessModule.FS.writeFile(`${dataPath || '.'}/${lang}.traineddata`, data);\n }\n if (cache) {\n modules.writeCache(`${cachePath || '.'}/${lang}.traineddata`, data);\n }\n return data;\n};\n\nconst loadAndGunzipFile = modules => ({\n langURI,\n cachePath,\n ...options\n}) => lang => (\n modules.readCache(`${cachePath || '.'}/${lang}.traineddata`)\n .then((data) => {\n if (typeof data === 'undefined') {\n return Promise.reject();\n }\n return handleLang(modules)({ cachePath, lang, ...options })(data);\n })\n .catch(() => (\n // console.log(`Download ${lang}.traineddata.gz from ${langURI}/${lang}.traineddata.gz...`);\n modules.fetch(`${langURI}/${lang}.traineddata.gz`)\n .then(resp => resp.arrayBuffer())\n .then(buf => modules.gunzip(new Uint8Array(buf)))\n .then(handleLang(modules)({ cachePath, lang, ...options }))\n ))\n);\n\n/**\n * Load language(s) from local cache, download from remote if not in cache.\n *\n * All params below actually store in a object.\n *\n * ex:\n * loadLang({ langs, tesssModule, ... });\n *\n * @name loadLang\n * @function\n * @param {string} langs - langs to load, use '+' for multiple languages, ex: eng+chi_tra\n * @param {object} tessModule - TesseractModule\n * @param {string} langURI - prefix URI for downloading lang file\n * @param {string} cachePath - path to find cache\n * @param {string} dataPath - path to store data in mem\n * @param {boolean} cache - true for caching\n *\n */\nmodule.exports = modules => ({\n langs,\n ...options\n}) => (\n Promise\n .all(langs.split('+').map(loadAndGunzipFile(modules)(options)))\n);\n","const { fetch } = require('whatwg-fetch');\n\nmodule.exports = fetch;\n","var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = self.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.onabort = function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!self.fetch) {\n self.fetch = fetch\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n}\n","module.exports = require('zlibjs').gunzipSync;\n","/** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */(function() {'use strict';function q(b){throw b;}var t=void 0,v=!0;var B=\"undefined\"!==typeof Uint8Array&&\"undefined\"!==typeof Uint16Array&&\"undefined\"!==typeof Uint32Array&&\"undefined\"!==typeof DataView;function G(b,a){this.index=\"number\"===typeof a?a:0;this.m=0;this.buffer=b instanceof(B?Uint8Array:Array)?b:new (B?Uint8Array:Array)(32768);2*this.buffer.length<=this.index&&q(Error(\"invalid index\"));this.buffer.length<=this.index&&this.f()}G.prototype.f=function(){var b=this.buffer,a,c=b.length,d=new (B?Uint8Array:Array)(c<<1);if(B)d.set(b);else for(a=0;a>>8&255]<<16|I[b>>>16&255]<<8|I[b>>>24&255])>>32-a:I[b]>>8-a);if(8>a+f)g=g<>a-k-1&1,8===++f&&(f=0,d[e++]=I[g],g=0,e===d.length&&(d=this.f()));d[e]=g;this.buffer=d;this.m=f;this.index=e};G.prototype.finish=function(){var b=this.buffer,a=this.index,c;0L;++L){for(var R=L,ba=R,ca=7,R=R>>>1;R;R>>>=1)ba<<=1,ba|=R&1,--ca;aa[L]=(ba<>>0}var I=aa;function ha(b,a,c){var d,e=\"number\"===typeof a?a:a=0,f=\"number\"===typeof c?c:b.length;d=-1;for(e=f&7;e--;++a)d=d>>>8^S[(d^b[a])&255];for(e=f>>3;e--;a+=8)d=d>>>8^S[(d^b[a])&255],d=d>>>8^S[(d^b[a+1])&255],d=d>>>8^S[(d^b[a+2])&255],d=d>>>8^S[(d^b[a+3])&255],d=d>>>8^S[(d^b[a+4])&255],d=d>>>8^S[(d^b[a+5])&255],d=d>>>8^S[(d^b[a+6])&255],d=d>>>8^S[(d^b[a+7])&255];return(d^4294967295)>>>0}\nvar ia=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,\n2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,\n2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,\n2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,\n3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,\n936918E3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],S=B?new Uint32Array(ia):ia;function ja(){};function ka(b){this.buffer=new (B?Uint16Array:Array)(2*b);this.length=0}ka.prototype.getParent=function(b){return 2*((b-2)/4|0)};ka.prototype.push=function(b,a){var c,d,e=this.buffer,f;c=this.length;e[this.length++]=a;for(e[this.length++]=b;0e[d])f=e[c],e[c]=e[d],e[d]=f,f=e[c+1],e[c+1]=e[d+1],e[d+1]=f,c=d;else break;return this.length};\nka.prototype.pop=function(){var b,a,c=this.buffer,d,e,f;a=c[0];b=c[1];this.length-=2;c[0]=c[this.length];c[1]=c[this.length+1];for(f=0;;){e=2*f+2;if(e>=this.length)break;e+2c[e]&&(e+=2);if(c[e]>c[f])d=c[f],c[f]=c[e],c[e]=d,d=c[f+1],c[f+1]=c[e+1],c[e+1]=d;else break;f=e}return{index:b,value:a,length:this.length}};function T(b){var a=b.length,c=0,d=Number.POSITIVE_INFINITY,e,f,g,k,h,m,r,p,l,n;for(p=0;pc&&(c=b[p]),b[p]>=1;n=g<<16|p;for(l=m;lU;U++)switch(v){case 143>=U:qa.push([U+48,8]);break;case 255>=U:qa.push([U-144+400,9]);break;case 279>=U:qa.push([U-256+0,7]);break;case 287>=U:qa.push([U-280+192,8]);break;default:q(\"invalid literal: \"+U)}\nna.prototype.h=function(){var b,a,c,d,e=this.input;switch(this.k){case 0:c=0;for(d=e.length;c>>8&255;l[n++]=m&255;l[n++]=m>>>8&255;if(B)l.set(f,n),n+=f.length,l=l.subarray(0,n);else{r=0;for(p=f.length;rA)for(;0A?A:138,F>A-3&&F=F?(J[H++]=17,J[H++]=F-3,P[17]++):(J[H++]=18,J[H++]=F-11,P[18]++),A-=F;else if(J[H++]=K[y],P[K[y]]++,A--,3>A)for(;0A?A:6,F>A-3&&FE;E++)ta[E]=la[qb[E]];for(Y=19;4=a:return[265,a-11,1];case 14>=a:return[266,a-13,1];case 16>=a:return[267,a-15,1];case 18>=a:return[268,a-17,1];case 22>=a:return[269,a-19,2];case 26>=a:return[270,a-23,2];case 30>=a:return[271,a-27,2];case 34>=a:return[272,\na-31,2];case 42>=a:return[273,a-35,3];case 50>=a:return[274,a-43,3];case 58>=a:return[275,a-51,3];case 66>=a:return[276,a-59,3];case 82>=a:return[277,a-67,4];case 98>=a:return[278,a-83,4];case 114>=a:return[279,a-99,4];case 130>=a:return[280,a-115,4];case 162>=a:return[281,a-131,5];case 194>=a:return[282,a-163,5];case 226>=a:return[283,a-195,5];case 257>=a:return[284,a-227,5];case 258===a:return[285,a-258,0];default:q(\"invalid length: \"+a)}}var a=[],c,d;for(c=3;258>=c;c++)d=b(c),a[c]=d[2]<<24|d[1]<<\n16|d[0];return a}(),ya=B?new Uint32Array(xa):xa;\nfunction ra(b,a){function c(a,c){var b=a.N,d=[],f=0,e;e=ya[a.length];d[f++]=e&65535;d[f++]=e>>16&255;d[f++]=e>>24;var g;switch(v){case 1===b:g=[0,b-1,0];break;case 2===b:g=[1,b-2,0];break;case 3===b:g=[2,b-3,0];break;case 4===b:g=[3,b-4,0];break;case 6>=b:g=[4,b-5,1];break;case 8>=b:g=[5,b-7,1];break;case 12>=b:g=[6,b-9,2];break;case 16>=b:g=[7,b-13,2];break;case 24>=b:g=[8,b-17,3];break;case 32>=b:g=[9,b-25,3];break;case 48>=b:g=[10,b-33,4];break;case 64>=b:g=[11,b-49,4];break;case 96>=b:g=[12,b-\n65,5];break;case 128>=b:g=[13,b-97,5];break;case 192>=b:g=[14,b-129,6];break;case 256>=b:g=[15,b-193,6];break;case 384>=b:g=[16,b-257,7];break;case 512>=b:g=[17,b-385,7];break;case 768>=b:g=[18,b-513,8];break;case 1024>=b:g=[19,b-769,8];break;case 1536>=b:g=[20,b-1025,9];break;case 2048>=b:g=[21,b-1537,9];break;case 3072>=b:g=[22,b-2049,10];break;case 4096>=b:g=[23,b-3073,10];break;case 6144>=b:g=[24,b-4097,11];break;case 8192>=b:g=[25,b-6145,11];break;case 12288>=b:g=[26,b-8193,12];break;case 16384>=\nb:g=[27,b-12289,12];break;case 24576>=b:g=[28,b-16385,13];break;case 32768>=b:g=[29,b-24577,13];break;default:q(\"invalid distance\")}e=g;d[f++]=e[0];d[f++]=e[1];d[f++]=e[2];var h,k;h=0;for(k=d.length;h=f;)u[f++]=0;for(f=0;29>=f;)w[f++]=0}u[256]=1;d=0;for(e=a.length;d=e){p&&c(p,-1);f=0;for(g=e-d;fg&&a+gf&&(e=d,f=g);if(258===g)break}return new va(f,a-e)}\nfunction sa(b,a){var c=b.length,d=new ka(572),e=new (B?Uint8Array:Array)(c),f,g,k,h,m;if(!B)for(h=0;h2*e[n-1]+f[n]&&(e[n]=2*e[n-1]+f[n]),k[n]=Array(e[n]),h[n]=Array(e[n]);for(l=0;lb[l]?(k[n][s]=u,h[n][s]=a,w+=2):(k[n][s]=b[l],h[n][s]=l,++l);m[n]=0;1===f[n]&&d(n)}return g}\nfunction ua(b){var a=new (B?Uint16Array:Array)(b.length),c=[],d=[],e=0,f,g,k,h;f=0;for(g=b.length;f>>=1}return a};function Ba(b,a){this.input=b;this.b=this.c=0;this.g={};a&&(a.flags&&(this.g=a.flags),\"string\"===typeof a.filename&&(this.filename=a.filename),\"string\"===typeof a.comment&&(this.w=a.comment),a.deflateOptions&&(this.l=a.deflateOptions));this.l||(this.l={})}\nBa.prototype.h=function(){var b,a,c,d,e,f,g,k,h=new (B?Uint8Array:Array)(32768),m=0,r=this.input,p=this.c,l=this.filename,n=this.w;h[m++]=31;h[m++]=139;h[m++]=8;b=0;this.g.fname&&(b|=Ca);this.g.fcomment&&(b|=Da);this.g.fhcrc&&(b|=Ea);h[m++]=b;a=(Date.now?Date.now():+new Date)/1E3|0;h[m++]=a&255;h[m++]=a>>>8&255;h[m++]=a>>>16&255;h[m++]=a>>>24&255;h[m++]=0;h[m++]=Sa;if(this.g.fname!==t){g=0;for(k=l.length;g>>8&255),h[m++]=f&255;h[m++]=0}if(this.g.comment){g=\n0;for(k=n.length;g>>8&255),h[m++]=f&255;h[m++]=0}this.g.fhcrc&&(c=ha(h,0,m)&65535,h[m++]=c&255,h[m++]=c>>>8&255);this.l.outputBuffer=h;this.l.outputIndex=m;e=new na(r,this.l);h=e.h();m=e.b;B&&(m+8>h.buffer.byteLength?(this.a=new Uint8Array(m+8),this.a.set(new Uint8Array(h.buffer)),h=this.a):h=new Uint8Array(h.buffer));d=ha(r,t,t);h[m++]=d&255;h[m++]=d>>>8&255;h[m++]=d>>>16&255;h[m++]=d>>>24&255;k=r.length;h[m++]=k&255;h[m++]=k>>>8&255;h[m++]=k>>>16&255;h[m++]=\nk>>>24&255;this.c=p;B&&m>>=1;switch(b){case 0:var a=this.input,c=this.c,d=this.a,e=this.b,f=a.length,g=t,k=t,h=d.length,m=t;this.e=this.j=0;c+1>=f&&q(Error(\"invalid uncompressed block header: LEN\"));g=a[c++]|a[c++]<<8;c+1>=f&&q(Error(\"invalid uncompressed block header: NLEN\"));k=a[c++]|a[c++]<<8;g===~k&&q(Error(\"invalid uncompressed block header: length verify\"));c+g>a.length&&q(Error(\"input buffer is broken\"));switch(this.q){case Ua:for(;e+g>d.length;){m=\nh-e;g-=m;if(B)d.set(a.subarray(c,c+m),e),e+=m,c+=m;else for(;m--;)d[e++]=a[c++];this.b=e;d=this.f();e=this.b}break;case Ta:for(;e+g>d.length;)d=this.f({B:2});break;default:q(Error(\"invalid inflate mode\"))}if(B)d.set(a.subarray(c,c+g),e),e+=g,c+=g;else for(;g--;)d[e++]=a[c++];this.c=c;this.b=e;this.a=d;break;case 1:this.r(Va,Wa);break;case 2:for(var r=W(this,5)+257,p=W(this,5)+1,l=W(this,4)+4,n=new (B?Uint8Array:Array)(Xa.length),s=t,u=t,w=t,C=t,x=t,D=t,M=t,z=t,N=t,z=0;z=$?8:255>=$?9:279>=$?7:8;var Va=T(hb),jb=new (B?Uint8Array:Array)(30),kb,lb;kb=0;for(lb=jb.length;kb=g&&q(Error(\"input buffer is broken\")),c|=e[f++]<>>a;b.e=d-a;b.c=f;return k}\nfunction Ya(b,a){for(var c=b.j,d=b.e,e=b.input,f=b.c,g=e.length,k=a[0],h=a[1],m,r;d=g);)c|=e[f++]<>>16;r>d&&q(Error(\"invalid code length: \"+r));b.j=c>>r;b.e=d-r;b.c=f;return m&65535}\nV.prototype.r=function(b,a){var c=this.a,d=this.b;this.A=b;for(var e=c.length-258,f,g,k,h;256!==(f=Ya(this,b));)if(256>f)d>=e&&(this.b=d,c=this.f(),d=this.b),c[d++]=f;else{g=f-257;h=ab[g];0=e&&(this.b=d,c=this.f(),d=this.b);for(;h--;)c[d]=c[d++-k]}for(;8<=this.e;)this.e-=8,this.c--;this.b=d};\nV.prototype.Q=function(b,a){var c=this.a,d=this.b;this.A=b;for(var e=c.length,f,g,k,h;256!==(f=Ya(this,b));)if(256>f)d>=e&&(c=this.f(),e=c.length),c[d++]=f;else{g=f-257;h=ab[g];0e&&(c=this.f(),e=c.length);for(;h--;)c[d]=c[d++-k]}for(;8<=this.e;)this.e-=8,this.c--;this.b=d};\nV.prototype.f=function(){var b=new (B?Uint8Array:Array)(this.b-32768),a=this.b-32768,c,d,e=this.a;if(B)b.set(e.subarray(32768,b.length));else{c=0;for(d=b.length;cc;++c)e[c]=e[a+c];this.b=32768;return e};\nV.prototype.S=function(b){var a,c=this.input.length/this.c+1|0,d,e,f,g=this.input,k=this.a;b&&(\"number\"===typeof b.B&&(c=b.B),\"number\"===typeof b.M&&(c+=b.M));2>c?(d=(g.length-this.c)/this.A[2],f=258*(d/2)|0,e=fa&&(this.a.length=a),b=this.a);return this.buffer=b};function mb(b){this.input=b;this.c=0;this.G=[];this.R=!1}\nmb.prototype.i=function(){for(var b=this.input.length;this.c>>0;ha(e,t,t)!==r&&q(Error(\"invalid CRC-32 checksum: 0x\"+ha(e,t,t).toString(16)+\" / 0x\"+\nr.toString(16)));a.Z=c=(p[l++]|p[l++]<<8|p[l++]<<16|p[l++]<<24)>>>0;(e.length&4294967295)!==c&&q(Error(\"invalid input size: \"+(e.length&4294967295)+\" / \"+c));this.G.push(a);this.c=l}this.R=v;var n=this.G,s,u,w=0,C=0,x;s=0;for(u=n.length;s>>0;b=a}for(var e=1,f=0,g=b.length,k,h=0;0>>0};function ob(b,a){var c,d;this.input=b;this.c=0;if(a||!(a={}))a.index&&(this.c=a.index),a.verify&&(this.V=a.verify);c=b[this.c++];d=b[this.c++];switch(c&15){case pb:this.method=pb;break;default:q(Error(\"unsupported compression method\"))}0!==((c<<8)+d)%31&&q(Error(\"invalid fcheck flag:\"+((c<<8)+d)%31));d&32&&q(Error(\"fdict flag is not supported\"));this.J=new V(b,{index:this.c,bufferSize:a.bufferSize,bufferType:a.bufferType,resize:a.resize})}\nob.prototype.i=function(){var b=this.input,a,c;a=this.J.i();this.c=this.J.c;this.V&&(c=(b[this.c++]<<24|b[this.c++]<<16|b[this.c++]<<8|b[this.c++])>>>0,c!==nb(a)&&q(Error(\"invalid adler-32 checksum\")));return a};var pb=8;function rb(b,a){this.input=b;this.a=new (B?Uint8Array:Array)(32768);this.k=sb.t;var c={},d;if((a||!(a={}))&&\"number\"===typeof a.compressionType)this.k=a.compressionType;for(d in a)c[d]=a[d];c.outputBuffer=this.a;this.I=new na(this.input,c)}var sb=pa;\nrb.prototype.h=function(){var b,a,c,d,e,f,g,k=0;g=this.a;b=pb;switch(b){case pb:a=Math.LOG2E*Math.log(32768)-8;break;default:q(Error(\"invalid compression method\"))}c=a<<4|b;g[k++]=c;switch(b){case pb:switch(this.k){case sb.NONE:e=0;break;case sb.L:e=1;break;case sb.t:e=2;break;default:q(Error(\"unsupported compression type\"))}break;default:q(Error(\"invalid compression method\"))}d=e<<6|0;g[k++]=d|31-(256*c+d)%31;f=nb(this.input);this.I.b=k;g=this.I.h();k=g.length;B&&(g=new Uint8Array(g.buffer),g.length<=\nk+4&&(this.a=new Uint8Array(g.length+4),this.a.set(g),g=this.a),g=g.subarray(0,k+4));g[k++]=f>>24&255;g[k++]=f>>16&255;g[k++]=f>>8&255;g[k++]=f&255;return g};exports.deflate=tb;exports.deflateSync=ub;exports.inflate=vb;exports.inflateSync=wb;exports.gzip=xb;exports.gzipSync=yb;exports.gunzip=zb;exports.gunzipSync=Ab;function tb(b,a,c){process.nextTick(function(){var d,e;try{e=ub(b,c)}catch(f){d=f}a(d,e)})}function ub(b,a){var c;c=(new rb(b)).h();a||(a={});return a.H?c:Bb(c)}function vb(b,a,c){process.nextTick(function(){var d,e;try{e=wb(b,c)}catch(f){d=f}a(d,e)})}\nfunction wb(b,a){var c;b.subarray=b.slice;c=(new ob(b)).i();a||(a={});return a.noBuffer?c:Bb(c)}function xb(b,a,c){process.nextTick(function(){var d,e;try{e=yb(b,c)}catch(f){d=f}a(d,e)})}function yb(b,a){var c;b.subarray=b.slice;c=(new Ba(b)).h();a||(a={});return a.H?c:Bb(c)}function zb(b,a,c){process.nextTick(function(){var d,e;try{e=Ab(b,c)}catch(f){d=f}a(d,e)})}function Ab(b,a){var c;b.subarray=b.slice;c=(new mb(b)).i();a||(a={});return a.H?c:Bb(c)}\nfunction Bb(b){var a=new Buffer(b.length),c,d;c=0;for(d=b.length;c 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return (b64.length * 3 / 4) - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr((len * 3 / 4) - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0; i < l; i += 4) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","const { set, get } = require('idb-keyval');\n\nmodule.exports = {\n readCache: get,\n writeCache: set,\n};\n","class Store {\r\n constructor(dbName = 'keyval-store', storeName = 'keyval') {\r\n this.storeName = storeName;\r\n this._dbp = new Promise((resolve, reject) => {\r\n const openreq = indexedDB.open(dbName, 1);\r\n openreq.onerror = () => reject(openreq.error);\r\n openreq.onsuccess = () => resolve(openreq.result);\r\n // First time setup: create an empty object store\r\n openreq.onupgradeneeded = () => {\r\n openreq.result.createObjectStore(storeName);\r\n };\r\n });\r\n }\r\n _withIDBStore(type, callback) {\r\n return this._dbp.then(db => new Promise((resolve, reject) => {\r\n const transaction = db.transaction(this.storeName, type);\r\n transaction.oncomplete = () => resolve();\r\n transaction.onabort = transaction.onerror = () => reject(transaction.error);\r\n callback(transaction.objectStore(this.storeName));\r\n }));\r\n }\r\n}\r\nlet store;\r\nfunction getDefaultStore() {\r\n if (!store)\r\n store = new Store();\r\n return store;\r\n}\r\nfunction get(key, store = getDefaultStore()) {\r\n let req;\r\n return store._withIDBStore('readonly', store => {\r\n req = store.get(key);\r\n }).then(() => req.result);\r\n}\r\nfunction set(key, value, store = getDefaultStore()) {\r\n return store._withIDBStore('readwrite', store => {\r\n store.put(value, key);\r\n });\r\n}\r\nfunction del(key, store = getDefaultStore()) {\r\n return store._withIDBStore('readwrite', store => {\r\n store.delete(key);\r\n });\r\n}\r\nfunction clear(store = getDefaultStore()) {\r\n return store._withIDBStore('readwrite', store => {\r\n store.clear();\r\n });\r\n}\r\nfunction keys(store = getDefaultStore()) {\r\n const keys = [];\r\n return store._withIDBStore('readonly', store => {\r\n // This would be store.getAllKeys(), but it isn't supported by Edge or Safari.\r\n // And openKeyCursor isn't supported by Safari.\r\n (store.openKeyCursor || store.openCursor).call(store).onsuccess = function () {\r\n if (!this.result)\r\n return;\r\n keys.push(this.result.key);\r\n this.result.continue();\r\n };\r\n }).then(() => keys);\r\n}\n\nexport { Store, get, set, del, clear, keys };\n","module.exports = (TessModule, buf) => {\n const ptr = TessModule._malloc(buf.length * Uint8Array.BYTES_PER_ELEMENT);\n TessModule.HEAPU8.set(buf, ptr);\n const pix = TessModule._pixReadMem(ptr, buf.length);\n if (TessModule.getValue(pix + (7 * 4), 'i32') === 0) {\n /*\n * Set a yres default value to prevent warning from tesseract\n * See kMinCredibleResolution in tesseract/src/ccstruct/publictypes.h\n */\n TessModule.setValue(pix + (7 * 4), 70, 'i32');\n }\n const [w, h, d, spp, wpl, refcount, xres, yres, informat, special] = Array(10).fill(0)\n .map((v, idx) => (\n TessModule.getValue(pix + (idx * 4), 'i32')\n ));\n return {\n w,\n h,\n d,\n spp,\n wpl,\n refcount,\n xres,\n yres,\n informat,\n special,\n data: pix,\n };\n};\n","// the generated HOCR is excessively indented, so\n// we get rid of that indentation\n\nconst deindent = (html) => {\n const lines = html.split('\\n');\n if (lines[0].substring(0, 2) === ' ') {\n for (let i = 0; i < lines.length; i += 1) {\n if (lines[i].substring(0, 2) === ' ') {\n lines[i] = lines[i].slice(2);\n }\n }\n }\n return lines.join('\\n');\n};\n\nmodule.exports = (Module, base) => {\n const ri = base.GetIterator();\n const blocks = [];\n let block;\n let para;\n let textline;\n let word;\n let symbol;\n\n const enumToString = (value, prefix) => (\n Object.keys(Module)\n .filter(e => (e.substr(0, prefix.length + 1) === `${prefix}_`))\n .filter(e => Module[e] === value)\n .map(e => e.slice(prefix.length + 1))[0]\n );\n\n ri.Begin();\n do {\n if (ri.IsAtBeginningOf(Module.RIL_BLOCK)) {\n const poly = ri.BlockPolygon();\n let polygon = null;\n // BlockPolygon() returns null when automatic page segmentation is off\n if (Module.getPointer(poly) > 0) {\n const n = poly.get_n();\n const px = poly.get_x();\n const py = poly.get_y();\n polygon = [];\n for (let i = 0; i < n; i += 1) {\n polygon.push([px.getValue(i), py.getValue(i)]);\n }\n Module._ptaDestroy(Module.getPointer(poly));\n }\n\n block = {\n paragraphs: [],\n text: ri.GetUTF8Text(Module.RIL_BLOCK),\n confidence: ri.Confidence(Module.RIL_BLOCK),\n baseline: ri.getBaseline(Module.RIL_BLOCK),\n bbox: ri.getBoundingBox(Module.RIL_BLOCK),\n blocktype: enumToString(ri.BlockType(), 'PT'),\n polygon,\n };\n blocks.push(block);\n }\n if (ri.IsAtBeginningOf(Module.RIL_PARA)) {\n para = {\n lines: [],\n text: ri.GetUTF8Text(Module.RIL_PARA),\n confidence: ri.Confidence(Module.RIL_PARA),\n baseline: ri.getBaseline(Module.RIL_PARA),\n bbox: ri.getBoundingBox(Module.RIL_PARA),\n is_ltr: !!ri.ParagraphIsLtr(),\n };\n block.paragraphs.push(para);\n }\n if (ri.IsAtBeginningOf(Module.RIL_TEXTLINE)) {\n textline = {\n words: [],\n text: ri.GetUTF8Text(Module.RIL_TEXTLINE),\n confidence: ri.Confidence(Module.RIL_TEXTLINE),\n baseline: ri.getBaseline(Module.RIL_TEXTLINE),\n bbox: ri.getBoundingBox(Module.RIL_TEXTLINE),\n };\n para.lines.push(textline);\n }\n if (ri.IsAtBeginningOf(Module.RIL_WORD)) {\n const fontInfo = ri.getWordFontAttributes();\n const wordDir = ri.WordDirection();\n word = {\n symbols: [],\n choices: [],\n\n text: ri.GetUTF8Text(Module.RIL_WORD),\n confidence: ri.Confidence(Module.RIL_WORD),\n baseline: ri.getBaseline(Module.RIL_WORD),\n bbox: ri.getBoundingBox(Module.RIL_WORD),\n\n is_numeric: !!ri.WordIsNumeric(),\n in_dictionary: !!ri.WordIsFromDictionary(),\n direction: enumToString(wordDir, 'DIR'),\n language: ri.WordRecognitionLanguage(),\n\n is_bold: fontInfo.is_bold,\n is_italic: fontInfo.is_italic,\n is_underlined: fontInfo.is_underlined,\n is_monospace: fontInfo.is_monospace,\n is_serif: fontInfo.is_serif,\n is_smallcaps: fontInfo.is_smallcaps,\n font_size: fontInfo.pointsize,\n font_id: fontInfo.font_id,\n font_name: fontInfo.font_name,\n };\n const wc = new Module.WordChoiceIterator(ri);\n do {\n word.choices.push({\n text: wc.GetUTF8Text(),\n confidence: wc.Confidence(),\n });\n } while (wc.Next());\n Module.destroy(wc);\n textline.words.push(word);\n }\n\n // let image = null;\n // var pix = ri.GetBinaryImage(Module.RIL_SYMBOL)\n // var image = pix2array(pix);\n // // for some reason it seems that things stop working if you destroy pics\n // Module._pixDestroy(Module.getPointer(pix));\n if (ri.IsAtBeginningOf(Module.RIL_SYMBOL)) {\n symbol = {\n choices: [],\n image: null,\n text: ri.GetUTF8Text(Module.RIL_SYMBOL),\n confidence: ri.Confidence(Module.RIL_SYMBOL),\n baseline: ri.getBaseline(Module.RIL_SYMBOL),\n bbox: ri.getBoundingBox(Module.RIL_SYMBOL),\n is_superscript: !!ri.SymbolIsSuperscript(),\n is_subscript: !!ri.SymbolIsSubscript(),\n is_dropcap: !!ri.SymbolIsDropcap(),\n };\n word.symbols.push(symbol);\n const ci = new Module.ChoiceIterator(ri);\n do {\n symbol.choices.push({\n text: ci.GetUTF8Text(),\n confidence: ci.Confidence(),\n });\n } while (ci.Next());\n // Module.destroy(i);\n }\n } while (ri.Next(Module.RIL_SYMBOL));\n Module.destroy(ri);\n\n return {\n text: base.GetUTF8Text(),\n html: deindent(base.GetHOCRText()),\n confidence: base.MeanTextConf(),\n blocks,\n psm: enumToString(base.GetPageSegMode(), 'PSM'),\n oem: enumToString(base.oem(), 'OEM'),\n version: base.Version(),\n };\n};\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/buffer/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/browser/worker.js","webpack:///./src/common/worker.js","webpack:///./node_modules/tesseract.js-utils/src/index.browser.js","webpack:///./node_modules/tesseract.js-utils/src/common/browser/cache.js","webpack:///./node_modules/idb-keyval/dist/idb-keyval.mjs","webpack:///./node_modules/tesseract.js-utils/src/loadLang.js","webpack:///./node_modules/tesseract.js-utils/src/common/browser/fetch.js","webpack:///./node_modules/whatwg-fetch/fetch.js","webpack:///./node_modules/tesseract.js-utils/src/common/browser/gunzip.js","webpack:///./node_modules/zlibjs/bin/node-zlib.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/tesseract.js-utils/src/readImage.js","webpack:///./node_modules/bmp-js/index.js","webpack:///./node_modules/bmp-js/lib/encoder.js","webpack:///./node_modules/bmp-js/lib/decoder.js","webpack:///./node_modules/file-type/index.js","webpack:///./src/common/dump.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","global","base64","ieee754","isArray","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","length","RangeError","Uint8Array","__proto__","arg","encodingOrOffset","this","Error","allocUnsafe","from","TypeError","ArrayBuffer","array","byteOffset","byteLength","undefined","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","write","slice","fromString","obj","isBuffer","len","checked","copy","buffer","val","type","data","fromObject","assertSize","size","toString","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","swap","b","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","indexOf","lastIndexOf","arr","indexSize","arrLength","valLength","String","read","buf","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","push","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","base64Slice","start","end","fromByteArray","utf8Slice","Math","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","e","typedArraySupport","poolSize","_augment","species","configurable","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","swap16","swap32","swap64","arguments","hexSlice","asciiSlice","latin1Slice","utf16leSlice","equals","inspect","max","match","join","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","Array","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","trim","replace","stringtrim","base64clean","src","dst","g","Function","eval","window","workerUtils","addEventListener","dispatchHandlers","postMessage","setAdapter","getCore","req","TesseractCore","progress","status","importScripts","workerOptions","corePath","WebAssembly","TesseractCoreWASM","TesseractCoreASM","readImage","loadLang","dump","Module","base","latestJob","adapter","setImage","image","w","h","bytesPerPixel","pix","SetImage","SetRectangle","handleInit","MIN_MEMORY","options","lang","TOTAL_MEMORY","Core","[object Object]","percent","then","TessModule","TessBaseAPI","Promise","resolve","loadLanguage","langPath","langs","tessModule","langURI","packet","send","respond","jobId","action","reject","progressUpdate","Init","keys","forEach","SetVariable","ptr","Recognize","result","End","_free","handleRecognize","payload","SetPageSegMode","PSM_OSD_ONLY","results","OSResults","DetectOS","best","get_best_result","oid","get_orientation_id","sid","get_script_id","tesseract_script_id","script","get_unicharset","get_script_from_script_id","script_confidence","get_sconfidence","orientation_degrees","orientation_confidence","get_oconfidence","handleDetect","err","impl","cache","fetch","gunzip","del","readCache","writeCache","deleteCache","checkCache","path","v","__webpack_exports__","Store","clear","dbName","storeName","_dbp","openreq","indexedDB","open","onerror","error","onsuccess","onupgradeneeded","createObjectStore","callback","db","transaction","oncomplete","onabort","objectStore","store","getDefaultStore","_withIDBStore","put","delete","openKeyCursor","openCursor","continue","handleLang","dataPath","cachePath","cacheMethod","FS","mkdir","writeFile","all","split","map","catch","resp","arrayBuffer","loadAndGunzipFile","Headers","Request","Response","DOMException","support","searchParams","self","iterable","blob","Blob","formData","viewClasses","isArrayBufferView","normalizeName","test","normalizeValue","iteratorFor","items","iterator","next","shift","done","headers","append","header","getOwnPropertyNames","consumed","body","bodyUsed","fileReaderReady","reader","onload","readBlobAsArrayBuffer","FileReader","promise","readAsArrayBuffer","bufferClone","view","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","rejected","text","readAsText","chars","readArrayBufferAsText","decode","json","JSON","parse","oldValue","has","thisArg","values","entries","methods","input","method","upcased","url","credentials","signal","toUpperCase","referrer","form","decodeURIComponent","bodyInit","ok","statusText","clone","response","redirectStatuses","redirect","location","message","stack","constructor","init","request","aborted","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","line","parts","responseURL","responseText","ontimeout","withCredentials","responseType","setRequestHeader","onreadystatechange","readyState","removeEventListener","polyfill","gunzipSync","process","q","B","Uint16Array","Uint32Array","G","index","f","k","I","finish","L","aa","ba","R","ca","ha","S","ia","ja","ka","T","POSITIVE_INFINITY","na","oa","F","lazy","compressionType","outputBuffer","outputIndex","getParent","pop","U","pa","NONE","X","qa","va","N","C","u","ra","M","z","Y","da","Fa","ea","Ga","la","Ha","Z","ma","E","Ia","D","qb","ta","ua","sa","O","A","fa","H","Ja","Ka","K","J","P","Q","Na","ga","wa","Oa","Pa","Qa","Ra","La","Ma","xa","ya","za","Aa","Ba","flags","filename","comment","deflateOptions","fname","Ca","fcomment","Da","fhcrc","Ea","Date","now","Sa","V","Ta","bufferSize","bufferType","resize","Ua","W","Va","Wa","Xa","Ya","$","ib","Za","$a","ab","bb","cb","eb","fb","gb","hb","kb","lb","jb","mb","nb","ob","verify","pb","rb","sb","ub","Bb","wb","noBuffer","yb","Ab","LOG2E","log","deflate","nextTick","deflateSync","inflate","inflateSync","gzip","gzipSync","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","args","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","b64","placeHoldersCount","tmp","placeHolders","Arr","revLookup","uint8","extraBytes","output","len2","encodeChunk","lookup","num","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","abs","LN2","bmp","fileType","iBuf","mime","bmpBuf","_malloc","BYTES_PER_ELEMENT","HEAPU8","width","height","_pixReadMem","getValue","setValue","idx","encode","BmpEncoder","imgData","rgbSize","headerInfoSize","flag","reserved","fileSize","planes","bitPP","compress","hr","vr","colors","importantColors","tempBuffer","rowBytes","fillOffset","quality","BmpDecoder","is_with_alpha","bottom_up","parseHeader","parseRGBA","headerSize","rawSize","palette","blue","green","red","quad","bitn","bit1","xlen","ceil","rgb","bit4","lines","low_nibble","setPixelData","rgbIndex","before","after","bit8","bit15","dif_w","_1_5","alpha","bit16","maskRed","maskGreen","maskBlue","mask0","bit24","bit32","getData","bmpData","toBytes","xpiZipFilename","oxmlContentTypes","oxmlRels","readUInt64LE","check","assign","mask","checkString","findNextZipHeaderIndex","startAt","findIndex","el","zipHeaderIndex","oxmlFound","sliced","idPos","docTypePos","findDocType","every","objectSize","ri","GetIterator","blocks","block","para","textline","word","symbol","enumToString","prefix","filter","Begin","IsAtBeginningOf","RIL_BLOCK","poly","BlockPolygon","polygon","getPointer","get_n","px","get_x","py","get_y","_ptaDestroy","paragraphs","GetUTF8Text","confidence","Confidence","baseline","getBaseline","bbox","getBoundingBox","blocktype","BlockType","RIL_PARA","is_ltr","ParagraphIsLtr","RIL_TEXTLINE","words","RIL_WORD","fontInfo","getWordFontAttributes","wordDir","WordDirection","symbols","choices","is_numeric","WordIsNumeric","in_dictionary","WordIsFromDictionary","direction","language","WordRecognitionLanguage","is_bold","is_italic","is_underlined","is_monospace","is_serif","is_smallcaps","font_size","pointsize","font_id","font_name","wc","WordChoiceIterator","Next","destroy","RIL_SYMBOL","is_superscript","SymbolIsSuperscript","is_subscript","SymbolIsSubscript","is_dropcap","SymbolIsDropcap","ci","ChoiceIterator","html","substring","deindent","GetHOCRText","MeanTextConf","psm","GetPageSegMode","oem","Version"],"mappings":"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","file":"worker.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","const workerUtils = require('../common/worker');\n\nglobal.addEventListener('message', ({ data }) => {\n workerUtils.dispatchHandlers(data, obj => postMessage(obj));\n});\n\nworkerUtils.setAdapter({\n getCore: (req, res) => {\n if (!global.TesseractCore) {\n res.progress({ status: 'loading tesseract core', progress: 0 });\n global.importScripts(req.workerOptions.corePath);\n global.TesseractCore = typeof WebAssembly === 'object' ? global.TesseractCoreWASM : global.TesseractCoreASM;\n res.progress({ status: 'loading tesseract core', progress: 1 });\n }\n return global.TesseractCore;\n },\n});\n","const { readImage, loadLang } = require('tesseract.js-utils');\nconst dump = require('./dump');\n\nlet Module;\nlet base;\nlet latestJob;\nlet adapter = {};\n\nconst setImage = (image) => {\n const {\n w, h, bytesPerPixel, data, pix,\n } = readImage(Module, Array.from(image));\n\n if (data === null) {\n base.SetImage(pix);\n } else {\n base.SetImage(data, w, h, bytesPerPixel, w * bytesPerPixel);\n }\n base.SetRectangle(0, 0, w, h);\n return data;\n};\n\nconst handleInit = (req, res) => {\n let MIN_MEMORY = 100663296;\n\n if (['chi_sim', 'chi_tra', 'jpn'].includes(req.options.lang)) {\n MIN_MEMORY = 167772160;\n }\n\n if (!Module || Module.TOTAL_MEMORY < MIN_MEMORY) {\n const Core = adapter.getCore(req, res);\n\n res.progress({ status: 'initializing tesseract', progress: 0 });\n\n return Core({\n // TOTAL_MEMORY: MIN_MEMORY,\n TesseractProgress(percent) {\n latestJob.progress({ status: 'recognizing text', progress: Math.max(0, (percent - 30) / 70) });\n },\n })\n .then((TessModule) => {\n Module = TessModule;\n base = new Module.TessBaseAPI();\n res.progress({ status: 'initialized tesseract', progress: 1 });\n });\n }\n\n return Promise.resolve();\n};\n\nconst loadLanguage = (req) => {\n const { options: { lang }, workerOptions: { langPath } } = req;\n return loadLang({\n langs: lang,\n tessModule: Module,\n langURI: langPath,\n });\n};\n\nconst handleRecognize = (req, res) => (\n handleInit(req, res)\n .then(() => (\n loadLanguage(req)\n .then(() => {\n const { options } = req;\n const progressUpdate = (progress) => {\n res.progress({ status: 'initializing api', progress });\n };\n progressUpdate(0);\n base.Init(null, options.lang);\n progressUpdate(0.3);\n Object.keys(options).forEach((key) => {\n base.SetVariable(key, options[key]);\n });\n progressUpdate(0.6);\n const ptr = setImage(req.image);\n progressUpdate(1);\n base.Recognize(null);\n const result = dump(Module, base);\n base.End();\n Module._free(ptr);\n res.resolve(result);\n })\n ))\n);\n\n\nconst handleDetect = (req, res) => (\n handleInit(req, res)\n .then(() => (\n loadLanguage({ ...req, options: { ...req.options, lang: 'osd' } })\n .then(() => {\n base.Init(null, 'osd');\n base.SetPageSegMode(Module.PSM_OSD_ONLY);\n\n const ptr = setImage(req.image);\n const results = new Module.OSResults();\n\n if (!base.DetectOS(results)) {\n base.End();\n Module._free(ptr);\n res.reject('Failed to detect OS');\n } else {\n const best = results.get_best_result();\n const oid = best.get_orientation_id();\n const sid = best.get_script_id();\n\n base.End();\n Module._free(ptr);\n\n res.resolve({\n tesseract_script_id: sid,\n script: results.get_unicharset().get_script_from_script_id(sid),\n script_confidence: best.get_sconfidence(),\n orientation_degrees: [0, 270, 180, 90][oid],\n orientation_confidence: best.get_oconfidence(),\n });\n }\n })\n ))\n);\n\nexports.dispatchHandlers = (packet, send) => {\n const respond = (status, data) => {\n send({\n jobId: packet.jobId,\n status,\n action: packet.action,\n data,\n });\n };\n respond.resolve = respond.bind(this, 'resolve');\n respond.reject = respond.bind(this, 'reject');\n respond.progress = respond.bind(this, 'progress');\n\n latestJob = respond;\n\n try {\n if (packet.action === 'recognize') {\n handleRecognize(packet.payload, respond);\n } else if (packet.action === 'detect') {\n handleDetect(packet.payload, respond);\n }\n } catch (err) {\n // Prepare exception to travel through postMessage\n respond.reject(err.toString());\n }\n};\n\nexports.setAdapter = (impl) => {\n adapter = impl;\n};\n","const cache = require('./common/browser/cache');\n\nmodule.exports = {\n loadLang: require('./loadLang')({\n fetch: require('./common/browser/fetch'),\n gunzip: require('./common/browser/gunzip'),\n ...cache,\n }),\n readImage: require('./readImage'),\n cache,\n};\n","const { set, get, del } = require('idb-keyval');\n\nmodule.exports = {\n readCache: get,\n writeCache: set,\n deleteCache: del,\n checkCache: path => (\n get(path)\n .then(v => typeof v !== 'undefined')\n ),\n};\n","class Store {\r\n constructor(dbName = 'keyval-store', storeName = 'keyval') {\r\n this.storeName = storeName;\r\n this._dbp = new Promise((resolve, reject) => {\r\n const openreq = indexedDB.open(dbName, 1);\r\n openreq.onerror = () => reject(openreq.error);\r\n openreq.onsuccess = () => resolve(openreq.result);\r\n // First time setup: create an empty object store\r\n openreq.onupgradeneeded = () => {\r\n openreq.result.createObjectStore(storeName);\r\n };\r\n });\r\n }\r\n _withIDBStore(type, callback) {\r\n return this._dbp.then(db => new Promise((resolve, reject) => {\r\n const transaction = db.transaction(this.storeName, type);\r\n transaction.oncomplete = () => resolve();\r\n transaction.onabort = transaction.onerror = () => reject(transaction.error);\r\n callback(transaction.objectStore(this.storeName));\r\n }));\r\n }\r\n}\r\nlet store;\r\nfunction getDefaultStore() {\r\n if (!store)\r\n store = new Store();\r\n return store;\r\n}\r\nfunction get(key, store = getDefaultStore()) {\r\n let req;\r\n return store._withIDBStore('readonly', store => {\r\n req = store.get(key);\r\n }).then(() => req.result);\r\n}\r\nfunction set(key, value, store = getDefaultStore()) {\r\n return store._withIDBStore('readwrite', store => {\r\n store.put(value, key);\r\n });\r\n}\r\nfunction del(key, store = getDefaultStore()) {\r\n return store._withIDBStore('readwrite', store => {\r\n store.delete(key);\r\n });\r\n}\r\nfunction clear(store = getDefaultStore()) {\r\n return store._withIDBStore('readwrite', store => {\r\n store.clear();\r\n });\r\n}\r\nfunction keys(store = getDefaultStore()) {\r\n const keys = [];\r\n return store._withIDBStore('readonly', store => {\r\n // This would be store.getAllKeys(), but it isn't supported by Edge or Safari.\r\n // And openKeyCursor isn't supported by Safari.\r\n (store.openKeyCursor || store.openCursor).call(store).onsuccess = function () {\r\n if (!this.result)\r\n return;\r\n keys.push(this.result.key);\r\n this.result.continue();\r\n };\r\n }).then(() => keys);\r\n}\n\nexport { Store, get, set, del, clear, keys };\n","const handleLang = modules => ({\n tessModule,\n dataPath,\n cachePath,\n cacheMethod,\n lang,\n}) => (data) => {\n if (tessModule) {\n if (dataPath) {\n try {\n tessModule.FS.mkdir(dataPath);\n } catch (err) {\n // TODO: Do some error handling here.\n }\n }\n tessModule.FS.writeFile(`${dataPath || '.'}/${lang}.traineddata`, data);\n }\n if (['write', 'refresh', undefined].includes(cacheMethod)) {\n return modules.writeCache(`${cachePath || '.'}/${lang}.traineddata`, data)\n .then(() => data);\n }\n\n return data;\n};\n\nconst loadAndGunzipFile = modules => ({\n langURI,\n cachePath,\n cacheMethod,\n ...options\n}) => (lang) => {\n let { readCache } = modules;\n if (['refresh', 'none'].includes(cacheMethod)) {\n readCache = () => Promise.resolve();\n }\n\n return readCache(`${cachePath || '.'}/${lang}.traineddata`)\n .then((data) => {\n if (typeof data === 'undefined') {\n return Promise.reject();\n }\n return handleLang(modules)({\n cachePath, cacheMethod, lang, ...options,\n })(data);\n })\n .catch(() => (\n // console.log(`Download ${lang}.traineddata.gz from ${langURI}/${lang}.traineddata.gz...`);\n modules.fetch(`${langURI}/${lang}.traineddata.gz`)\n .then(resp => resp.arrayBuffer())\n .then(buf => modules.gunzip(new Uint8Array(buf)))\n .then(handleLang(modules)({\n cachePath, cacheMethod, lang, ...options,\n }))\n ));\n};\n\n/**\n * Load language(s) from local cache, download from remote if not in cache.\n *\n * All params below actually store in a object.\n *\n * ex:\n * loadLang({ langs, tesssModule, ... });\n *\n * @name loadLang\n * @function\n * @param {string} langs - langs to load, use '+' for multiple languages, ex: eng+chi_tra\n * @param {object} tessModule - TesseractModule\n * @param {string} langURI - prefix URI for downloading lang file\n * @param {string} cachePath - path to find cache\n * @param {string} dataPath - path to store data in mem\n * @param {string} cacheMethod - method of cache invaliation, should one of following options:\n * write: read cache and write back (default option)\n * readOnly: read cache and not to write back (if cache does not exist, it is the same as none)\n * refresh: not to read cache and write back\n * none: not to read cache and not to write back\n *\n */\nmodule.exports = modules => ({\n langs,\n ...options\n}) => (\n Promise\n .all(langs.split('+').map(loadAndGunzipFile(modules)(options)))\n);\n","const { fetch } = require('whatwg-fetch');\n\nmodule.exports = fetch;\n","var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = self.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.onabort = function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!self.fetch) {\n self.fetch = fetch\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n}\n","module.exports = require('zlibjs').gunzipSync;\n","/** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */(function() {'use strict';function q(b){throw b;}var t=void 0,v=!0;var B=\"undefined\"!==typeof Uint8Array&&\"undefined\"!==typeof Uint16Array&&\"undefined\"!==typeof Uint32Array&&\"undefined\"!==typeof DataView;function G(b,a){this.index=\"number\"===typeof a?a:0;this.m=0;this.buffer=b instanceof(B?Uint8Array:Array)?b:new (B?Uint8Array:Array)(32768);2*this.buffer.length<=this.index&&q(Error(\"invalid index\"));this.buffer.length<=this.index&&this.f()}G.prototype.f=function(){var b=this.buffer,a,c=b.length,d=new (B?Uint8Array:Array)(c<<1);if(B)d.set(b);else for(a=0;a>>8&255]<<16|I[b>>>16&255]<<8|I[b>>>24&255])>>32-a:I[b]>>8-a);if(8>a+f)g=g<>a-k-1&1,8===++f&&(f=0,d[e++]=I[g],g=0,e===d.length&&(d=this.f()));d[e]=g;this.buffer=d;this.m=f;this.index=e};G.prototype.finish=function(){var b=this.buffer,a=this.index,c;0L;++L){for(var R=L,ba=R,ca=7,R=R>>>1;R;R>>>=1)ba<<=1,ba|=R&1,--ca;aa[L]=(ba<>>0}var I=aa;function ha(b,a,c){var d,e=\"number\"===typeof a?a:a=0,f=\"number\"===typeof c?c:b.length;d=-1;for(e=f&7;e--;++a)d=d>>>8^S[(d^b[a])&255];for(e=f>>3;e--;a+=8)d=d>>>8^S[(d^b[a])&255],d=d>>>8^S[(d^b[a+1])&255],d=d>>>8^S[(d^b[a+2])&255],d=d>>>8^S[(d^b[a+3])&255],d=d>>>8^S[(d^b[a+4])&255],d=d>>>8^S[(d^b[a+5])&255],d=d>>>8^S[(d^b[a+6])&255],d=d>>>8^S[(d^b[a+7])&255];return(d^4294967295)>>>0}\nvar ia=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,\n2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,\n2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,\n2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,\n3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,\n936918E3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],S=B?new Uint32Array(ia):ia;function ja(){};function ka(b){this.buffer=new (B?Uint16Array:Array)(2*b);this.length=0}ka.prototype.getParent=function(b){return 2*((b-2)/4|0)};ka.prototype.push=function(b,a){var c,d,e=this.buffer,f;c=this.length;e[this.length++]=a;for(e[this.length++]=b;0e[d])f=e[c],e[c]=e[d],e[d]=f,f=e[c+1],e[c+1]=e[d+1],e[d+1]=f,c=d;else break;return this.length};\nka.prototype.pop=function(){var b,a,c=this.buffer,d,e,f;a=c[0];b=c[1];this.length-=2;c[0]=c[this.length];c[1]=c[this.length+1];for(f=0;;){e=2*f+2;if(e>=this.length)break;e+2c[e]&&(e+=2);if(c[e]>c[f])d=c[f],c[f]=c[e],c[e]=d,d=c[f+1],c[f+1]=c[e+1],c[e+1]=d;else break;f=e}return{index:b,value:a,length:this.length}};function T(b){var a=b.length,c=0,d=Number.POSITIVE_INFINITY,e,f,g,k,h,m,r,p,l,n;for(p=0;pc&&(c=b[p]),b[p]>=1;n=g<<16|p;for(l=m;lU;U++)switch(v){case 143>=U:qa.push([U+48,8]);break;case 255>=U:qa.push([U-144+400,9]);break;case 279>=U:qa.push([U-256+0,7]);break;case 287>=U:qa.push([U-280+192,8]);break;default:q(\"invalid literal: \"+U)}\nna.prototype.h=function(){var b,a,c,d,e=this.input;switch(this.k){case 0:c=0;for(d=e.length;c>>8&255;l[n++]=m&255;l[n++]=m>>>8&255;if(B)l.set(f,n),n+=f.length,l=l.subarray(0,n);else{r=0;for(p=f.length;rA)for(;0A?A:138,F>A-3&&F=F?(J[H++]=17,J[H++]=F-3,P[17]++):(J[H++]=18,J[H++]=F-11,P[18]++),A-=F;else if(J[H++]=K[y],P[K[y]]++,A--,3>A)for(;0A?A:6,F>A-3&&FE;E++)ta[E]=la[qb[E]];for(Y=19;4=a:return[265,a-11,1];case 14>=a:return[266,a-13,1];case 16>=a:return[267,a-15,1];case 18>=a:return[268,a-17,1];case 22>=a:return[269,a-19,2];case 26>=a:return[270,a-23,2];case 30>=a:return[271,a-27,2];case 34>=a:return[272,\na-31,2];case 42>=a:return[273,a-35,3];case 50>=a:return[274,a-43,3];case 58>=a:return[275,a-51,3];case 66>=a:return[276,a-59,3];case 82>=a:return[277,a-67,4];case 98>=a:return[278,a-83,4];case 114>=a:return[279,a-99,4];case 130>=a:return[280,a-115,4];case 162>=a:return[281,a-131,5];case 194>=a:return[282,a-163,5];case 226>=a:return[283,a-195,5];case 257>=a:return[284,a-227,5];case 258===a:return[285,a-258,0];default:q(\"invalid length: \"+a)}}var a=[],c,d;for(c=3;258>=c;c++)d=b(c),a[c]=d[2]<<24|d[1]<<\n16|d[0];return a}(),ya=B?new Uint32Array(xa):xa;\nfunction ra(b,a){function c(a,c){var b=a.N,d=[],f=0,e;e=ya[a.length];d[f++]=e&65535;d[f++]=e>>16&255;d[f++]=e>>24;var g;switch(v){case 1===b:g=[0,b-1,0];break;case 2===b:g=[1,b-2,0];break;case 3===b:g=[2,b-3,0];break;case 4===b:g=[3,b-4,0];break;case 6>=b:g=[4,b-5,1];break;case 8>=b:g=[5,b-7,1];break;case 12>=b:g=[6,b-9,2];break;case 16>=b:g=[7,b-13,2];break;case 24>=b:g=[8,b-17,3];break;case 32>=b:g=[9,b-25,3];break;case 48>=b:g=[10,b-33,4];break;case 64>=b:g=[11,b-49,4];break;case 96>=b:g=[12,b-\n65,5];break;case 128>=b:g=[13,b-97,5];break;case 192>=b:g=[14,b-129,6];break;case 256>=b:g=[15,b-193,6];break;case 384>=b:g=[16,b-257,7];break;case 512>=b:g=[17,b-385,7];break;case 768>=b:g=[18,b-513,8];break;case 1024>=b:g=[19,b-769,8];break;case 1536>=b:g=[20,b-1025,9];break;case 2048>=b:g=[21,b-1537,9];break;case 3072>=b:g=[22,b-2049,10];break;case 4096>=b:g=[23,b-3073,10];break;case 6144>=b:g=[24,b-4097,11];break;case 8192>=b:g=[25,b-6145,11];break;case 12288>=b:g=[26,b-8193,12];break;case 16384>=\nb:g=[27,b-12289,12];break;case 24576>=b:g=[28,b-16385,13];break;case 32768>=b:g=[29,b-24577,13];break;default:q(\"invalid distance\")}e=g;d[f++]=e[0];d[f++]=e[1];d[f++]=e[2];var h,k;h=0;for(k=d.length;h=f;)u[f++]=0;for(f=0;29>=f;)w[f++]=0}u[256]=1;d=0;for(e=a.length;d=e){p&&c(p,-1);f=0;for(g=e-d;fg&&a+gf&&(e=d,f=g);if(258===g)break}return new va(f,a-e)}\nfunction sa(b,a){var c=b.length,d=new ka(572),e=new (B?Uint8Array:Array)(c),f,g,k,h,m;if(!B)for(h=0;h2*e[n-1]+f[n]&&(e[n]=2*e[n-1]+f[n]),k[n]=Array(e[n]),h[n]=Array(e[n]);for(l=0;lb[l]?(k[n][s]=u,h[n][s]=a,w+=2):(k[n][s]=b[l],h[n][s]=l,++l);m[n]=0;1===f[n]&&d(n)}return g}\nfunction ua(b){var a=new (B?Uint16Array:Array)(b.length),c=[],d=[],e=0,f,g,k,h;f=0;for(g=b.length;f>>=1}return a};function Ba(b,a){this.input=b;this.b=this.c=0;this.g={};a&&(a.flags&&(this.g=a.flags),\"string\"===typeof a.filename&&(this.filename=a.filename),\"string\"===typeof a.comment&&(this.w=a.comment),a.deflateOptions&&(this.l=a.deflateOptions));this.l||(this.l={})}\nBa.prototype.h=function(){var b,a,c,d,e,f,g,k,h=new (B?Uint8Array:Array)(32768),m=0,r=this.input,p=this.c,l=this.filename,n=this.w;h[m++]=31;h[m++]=139;h[m++]=8;b=0;this.g.fname&&(b|=Ca);this.g.fcomment&&(b|=Da);this.g.fhcrc&&(b|=Ea);h[m++]=b;a=(Date.now?Date.now():+new Date)/1E3|0;h[m++]=a&255;h[m++]=a>>>8&255;h[m++]=a>>>16&255;h[m++]=a>>>24&255;h[m++]=0;h[m++]=Sa;if(this.g.fname!==t){g=0;for(k=l.length;g>>8&255),h[m++]=f&255;h[m++]=0}if(this.g.comment){g=\n0;for(k=n.length;g>>8&255),h[m++]=f&255;h[m++]=0}this.g.fhcrc&&(c=ha(h,0,m)&65535,h[m++]=c&255,h[m++]=c>>>8&255);this.l.outputBuffer=h;this.l.outputIndex=m;e=new na(r,this.l);h=e.h();m=e.b;B&&(m+8>h.buffer.byteLength?(this.a=new Uint8Array(m+8),this.a.set(new Uint8Array(h.buffer)),h=this.a):h=new Uint8Array(h.buffer));d=ha(r,t,t);h[m++]=d&255;h[m++]=d>>>8&255;h[m++]=d>>>16&255;h[m++]=d>>>24&255;k=r.length;h[m++]=k&255;h[m++]=k>>>8&255;h[m++]=k>>>16&255;h[m++]=\nk>>>24&255;this.c=p;B&&m>>=1;switch(b){case 0:var a=this.input,c=this.c,d=this.a,e=this.b,f=a.length,g=t,k=t,h=d.length,m=t;this.e=this.j=0;c+1>=f&&q(Error(\"invalid uncompressed block header: LEN\"));g=a[c++]|a[c++]<<8;c+1>=f&&q(Error(\"invalid uncompressed block header: NLEN\"));k=a[c++]|a[c++]<<8;g===~k&&q(Error(\"invalid uncompressed block header: length verify\"));c+g>a.length&&q(Error(\"input buffer is broken\"));switch(this.q){case Ua:for(;e+g>d.length;){m=\nh-e;g-=m;if(B)d.set(a.subarray(c,c+m),e),e+=m,c+=m;else for(;m--;)d[e++]=a[c++];this.b=e;d=this.f();e=this.b}break;case Ta:for(;e+g>d.length;)d=this.f({B:2});break;default:q(Error(\"invalid inflate mode\"))}if(B)d.set(a.subarray(c,c+g),e),e+=g,c+=g;else for(;g--;)d[e++]=a[c++];this.c=c;this.b=e;this.a=d;break;case 1:this.r(Va,Wa);break;case 2:for(var r=W(this,5)+257,p=W(this,5)+1,l=W(this,4)+4,n=new (B?Uint8Array:Array)(Xa.length),s=t,u=t,w=t,C=t,x=t,D=t,M=t,z=t,N=t,z=0;z=$?8:255>=$?9:279>=$?7:8;var Va=T(hb),jb=new (B?Uint8Array:Array)(30),kb,lb;kb=0;for(lb=jb.length;kb=g&&q(Error(\"input buffer is broken\")),c|=e[f++]<>>a;b.e=d-a;b.c=f;return k}\nfunction Ya(b,a){for(var c=b.j,d=b.e,e=b.input,f=b.c,g=e.length,k=a[0],h=a[1],m,r;d=g);)c|=e[f++]<>>16;r>d&&q(Error(\"invalid code length: \"+r));b.j=c>>r;b.e=d-r;b.c=f;return m&65535}\nV.prototype.r=function(b,a){var c=this.a,d=this.b;this.A=b;for(var e=c.length-258,f,g,k,h;256!==(f=Ya(this,b));)if(256>f)d>=e&&(this.b=d,c=this.f(),d=this.b),c[d++]=f;else{g=f-257;h=ab[g];0=e&&(this.b=d,c=this.f(),d=this.b);for(;h--;)c[d]=c[d++-k]}for(;8<=this.e;)this.e-=8,this.c--;this.b=d};\nV.prototype.Q=function(b,a){var c=this.a,d=this.b;this.A=b;for(var e=c.length,f,g,k,h;256!==(f=Ya(this,b));)if(256>f)d>=e&&(c=this.f(),e=c.length),c[d++]=f;else{g=f-257;h=ab[g];0e&&(c=this.f(),e=c.length);for(;h--;)c[d]=c[d++-k]}for(;8<=this.e;)this.e-=8,this.c--;this.b=d};\nV.prototype.f=function(){var b=new (B?Uint8Array:Array)(this.b-32768),a=this.b-32768,c,d,e=this.a;if(B)b.set(e.subarray(32768,b.length));else{c=0;for(d=b.length;cc;++c)e[c]=e[a+c];this.b=32768;return e};\nV.prototype.S=function(b){var a,c=this.input.length/this.c+1|0,d,e,f,g=this.input,k=this.a;b&&(\"number\"===typeof b.B&&(c=b.B),\"number\"===typeof b.M&&(c+=b.M));2>c?(d=(g.length-this.c)/this.A[2],f=258*(d/2)|0,e=fa&&(this.a.length=a),b=this.a);return this.buffer=b};function mb(b){this.input=b;this.c=0;this.G=[];this.R=!1}\nmb.prototype.i=function(){for(var b=this.input.length;this.c>>0;ha(e,t,t)!==r&&q(Error(\"invalid CRC-32 checksum: 0x\"+ha(e,t,t).toString(16)+\" / 0x\"+\nr.toString(16)));a.Z=c=(p[l++]|p[l++]<<8|p[l++]<<16|p[l++]<<24)>>>0;(e.length&4294967295)!==c&&q(Error(\"invalid input size: \"+(e.length&4294967295)+\" / \"+c));this.G.push(a);this.c=l}this.R=v;var n=this.G,s,u,w=0,C=0,x;s=0;for(u=n.length;s>>0;b=a}for(var e=1,f=0,g=b.length,k,h=0;0>>0};function ob(b,a){var c,d;this.input=b;this.c=0;if(a||!(a={}))a.index&&(this.c=a.index),a.verify&&(this.V=a.verify);c=b[this.c++];d=b[this.c++];switch(c&15){case pb:this.method=pb;break;default:q(Error(\"unsupported compression method\"))}0!==((c<<8)+d)%31&&q(Error(\"invalid fcheck flag:\"+((c<<8)+d)%31));d&32&&q(Error(\"fdict flag is not supported\"));this.J=new V(b,{index:this.c,bufferSize:a.bufferSize,bufferType:a.bufferType,resize:a.resize})}\nob.prototype.i=function(){var b=this.input,a,c;a=this.J.i();this.c=this.J.c;this.V&&(c=(b[this.c++]<<24|b[this.c++]<<16|b[this.c++]<<8|b[this.c++])>>>0,c!==nb(a)&&q(Error(\"invalid adler-32 checksum\")));return a};var pb=8;function rb(b,a){this.input=b;this.a=new (B?Uint8Array:Array)(32768);this.k=sb.t;var c={},d;if((a||!(a={}))&&\"number\"===typeof a.compressionType)this.k=a.compressionType;for(d in a)c[d]=a[d];c.outputBuffer=this.a;this.I=new na(this.input,c)}var sb=pa;\nrb.prototype.h=function(){var b,a,c,d,e,f,g,k=0;g=this.a;b=pb;switch(b){case pb:a=Math.LOG2E*Math.log(32768)-8;break;default:q(Error(\"invalid compression method\"))}c=a<<4|b;g[k++]=c;switch(b){case pb:switch(this.k){case sb.NONE:e=0;break;case sb.L:e=1;break;case sb.t:e=2;break;default:q(Error(\"unsupported compression type\"))}break;default:q(Error(\"invalid compression method\"))}d=e<<6|0;g[k++]=d|31-(256*c+d)%31;f=nb(this.input);this.I.b=k;g=this.I.h();k=g.length;B&&(g=new Uint8Array(g.buffer),g.length<=\nk+4&&(this.a=new Uint8Array(g.length+4),this.a.set(g),g=this.a),g=g.subarray(0,k+4));g[k++]=f>>24&255;g[k++]=f>>16&255;g[k++]=f>>8&255;g[k++]=f&255;return g};exports.deflate=tb;exports.deflateSync=ub;exports.inflate=vb;exports.inflateSync=wb;exports.gzip=xb;exports.gzipSync=yb;exports.gunzip=zb;exports.gunzipSync=Ab;function tb(b,a,c){process.nextTick(function(){var d,e;try{e=ub(b,c)}catch(f){d=f}a(d,e)})}function ub(b,a){var c;c=(new rb(b)).h();a||(a={});return a.H?c:Bb(c)}function vb(b,a,c){process.nextTick(function(){var d,e;try{e=wb(b,c)}catch(f){d=f}a(d,e)})}\nfunction wb(b,a){var c;b.subarray=b.slice;c=(new ob(b)).i();a||(a={});return a.noBuffer?c:Bb(c)}function xb(b,a,c){process.nextTick(function(){var d,e;try{e=yb(b,c)}catch(f){d=f}a(d,e)})}function yb(b,a){var c;b.subarray=b.slice;c=(new Ba(b)).h();a||(a={});return a.H?c:Bb(c)}function zb(b,a,c){process.nextTick(function(){var d,e;try{e=Ab(b,c)}catch(f){d=f}a(d,e)})}function Ab(b,a){var c;b.subarray=b.slice;c=(new mb(b)).i();a||(a={});return a.H?c:Bb(c)}\nfunction Bb(b){var a=new Buffer(b.length),c,d;c=0;for(d=b.length;c 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return (b64.length * 3 / 4) - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr((len * 3 / 4) - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0; i < l; i += 4) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","const bmp = require('bmp-js');\nconst fileType = require('file-type');\n\nmodule.exports = (TessModule, iBuf) => {\n const buf = Buffer.from(iBuf);\n const type = fileType(buf);\n let bytesPerPixel = 0;\n let data = null;\n let pix = null;\n let w = 0;\n let h = 0;\n\n /*\n * Although leptonica should support reading bmp, there is a bug of \"compressed BMP files\".\n * As there is no solution, we need to use bmp-js for now.\n * @see https://groups.google.com/forum/#!topic/tesseract-ocr/4mPD9zTxdxE\n */\n if (type && type.mime === 'image/bmp') {\n const bmpBuf = bmp.decode(buf);\n data = TessModule._malloc(bmpBuf.data.length * Uint8Array.BYTES_PER_ELEMENT);\n TessModule.HEAPU8.set(bmpBuf.data, data);\n w = bmpBuf.width;\n h = bmpBuf.height;\n bytesPerPixel = 4;\n } else {\n const ptr = TessModule._malloc(buf.length * Uint8Array.BYTES_PER_ELEMENT);\n TessModule.HEAPU8.set(buf, ptr);\n pix = TessModule._pixReadMem(ptr, buf.length);\n if (TessModule.getValue(pix + (7 * 4), 'i32') === 0) {\n /*\n * Set a yres default value to prevent warning from tesseract\n * See kMinCredibleResolution in tesseract/src/ccstruct/publictypes.h\n */\n TessModule.setValue(pix + (7 * 4), 70, 'i32');\n }\n [w, h] = Array(2).fill(0)\n .map((v, idx) => (\n TessModule.getValue(pix + (idx * 4), 'i32')\n ));\n }\n\n return {\n w,\n h,\n bytesPerPixel,\n data,\n pix,\n };\n};\n","/**\n * @author shaozilee\n *\n * support 1bit 4bit 8bit 24bit decode\n * encode with 24bit\n * \n */\n\nvar encode = require('./lib/encoder'),\n decode = require('./lib/decoder');\n\nmodule.exports = {\n encode: encode,\n decode: decode\n};\n","/**\n * @author shaozilee\n *\n * BMP format encoder,encode 24bit BMP\n * Not support quality compression\n *\n */\n\nfunction BmpEncoder(imgData){\n\tthis.buffer = imgData.data;\n\tthis.width = imgData.width;\n\tthis.height = imgData.height;\n\tthis.extraBytes = this.width%4;\n\tthis.rgbSize = this.height*(3*this.width+this.extraBytes);\n\tthis.headerInfoSize = 40;\n\n\tthis.data = [];\n\t/******************header***********************/\n\tthis.flag = \"BM\";\n\tthis.reserved = 0;\n\tthis.offset = 54;\n\tthis.fileSize = this.rgbSize+this.offset;\n\tthis.planes = 1;\n\tthis.bitPP = 24;\n\tthis.compress = 0;\n\tthis.hr = 0;\n\tthis.vr = 0;\n\tthis.colors = 0;\n\tthis.importantColors = 0;\n}\n\nBmpEncoder.prototype.encode = function() {\n\tvar tempBuffer = new Buffer(this.offset+this.rgbSize);\n\tthis.pos = 0;\n\ttempBuffer.write(this.flag,this.pos,2);this.pos+=2;\n\ttempBuffer.writeUInt32LE(this.fileSize,this.pos);this.pos+=4;\n\ttempBuffer.writeUInt32LE(this.reserved,this.pos);this.pos+=4;\n\ttempBuffer.writeUInt32LE(this.offset,this.pos);this.pos+=4;\n\n\ttempBuffer.writeUInt32LE(this.headerInfoSize,this.pos);this.pos+=4;\n\ttempBuffer.writeUInt32LE(this.width,this.pos);this.pos+=4;\n\ttempBuffer.writeInt32LE(-this.height,this.pos);this.pos+=4;\n\ttempBuffer.writeUInt16LE(this.planes,this.pos);this.pos+=2;\n\ttempBuffer.writeUInt16LE(this.bitPP,this.pos);this.pos+=2;\n\ttempBuffer.writeUInt32LE(this.compress,this.pos);this.pos+=4;\n\ttempBuffer.writeUInt32LE(this.rgbSize,this.pos);this.pos+=4;\n\ttempBuffer.writeUInt32LE(this.hr,this.pos);this.pos+=4;\n\ttempBuffer.writeUInt32LE(this.vr,this.pos);this.pos+=4;\n\ttempBuffer.writeUInt32LE(this.colors,this.pos);this.pos+=4;\n\ttempBuffer.writeUInt32LE(this.importantColors,this.pos);this.pos+=4;\n\n\tvar i=0;\n\tvar rowBytes = 3*this.width+this.extraBytes;\n\n\tfor (var y = 0; y 0){\n\t\t\tvar fillOffset = this.pos+y*rowBytes+this.width*3;\n\t\t\ttempBuffer.fill(0,fillOffset,fillOffset+this.extraBytes);\n\t\t}\n\t}\n\n\treturn tempBuffer;\n};\n\nmodule.exports = function(imgData, quality) {\n if (typeof quality === 'undefined') quality = 100;\n \tvar encoder = new BmpEncoder(imgData);\n\tvar data = encoder.encode();\n return {\n data: data,\n width: imgData.width,\n height: imgData.height\n };\n};\n","/**\n * @author shaozilee\n *\n * Bmp format decoder,support 1bit 4bit 8bit 24bit bmp\n *\n */\n\nfunction BmpDecoder(buffer,is_with_alpha) {\n this.pos = 0;\n this.buffer = buffer;\n this.is_with_alpha = !!is_with_alpha;\n this.bottom_up = true;\n this.flag = this.buffer.toString(\"utf-8\", 0, this.pos += 2);\n if (this.flag != \"BM\") throw new Error(\"Invalid BMP File\");\n this.parseHeader();\n this.parseRGBA();\n}\n\nBmpDecoder.prototype.parseHeader = function() {\n this.fileSize = this.buffer.readUInt32LE(this.pos);\n this.pos += 4;\n this.reserved = this.buffer.readUInt32LE(this.pos);\n this.pos += 4;\n this.offset = this.buffer.readUInt32LE(this.pos);\n this.pos += 4;\n this.headerSize = this.buffer.readUInt32LE(this.pos);\n this.pos += 4;\n this.width = this.buffer.readUInt32LE(this.pos);\n this.pos += 4;\n this.height = this.buffer.readInt32LE(this.pos);\n this.pos += 4;\n this.planes = this.buffer.readUInt16LE(this.pos);\n this.pos += 2;\n this.bitPP = this.buffer.readUInt16LE(this.pos);\n this.pos += 2;\n this.compress = this.buffer.readUInt32LE(this.pos);\n this.pos += 4;\n this.rawSize = this.buffer.readUInt32LE(this.pos);\n this.pos += 4;\n this.hr = this.buffer.readUInt32LE(this.pos);\n this.pos += 4;\n this.vr = this.buffer.readUInt32LE(this.pos);\n this.pos += 4;\n this.colors = this.buffer.readUInt32LE(this.pos);\n this.pos += 4;\n this.importantColors = this.buffer.readUInt32LE(this.pos);\n this.pos += 4;\n\n if(this.bitPP === 16 && this.is_with_alpha){\n this.bitPP = 15\n }\n if (this.bitPP < 15) {\n var len = this.colors === 0 ? 1 << this.bitPP : this.colors;\n this.palette = new Array(len);\n for (var i = 0; i < len; i++) {\n var blue = this.buffer.readUInt8(this.pos++);\n var green = this.buffer.readUInt8(this.pos++);\n var red = this.buffer.readUInt8(this.pos++);\n var quad = this.buffer.readUInt8(this.pos++);\n this.palette[i] = {\n red: red,\n green: green,\n blue: blue,\n quad: quad\n };\n }\n }\n if(this.height < 0) {\n this.height *= -1;\n this.bottom_up = false;\n }\n\n}\n\nBmpDecoder.prototype.parseRGBA = function() {\n var bitn = \"bit\" + this.bitPP;\n var len = this.width * this.height * 4;\n this.data = new Buffer(len);\n this[bitn]();\n};\n\nBmpDecoder.prototype.bit1 = function() {\n var xlen = Math.ceil(this.width / 8);\n var mode = xlen%4;\n var y = this.height >= 0 ? this.height - 1 : -this.height\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y\n for (var x = 0; x < xlen; x++) {\n var b = this.buffer.readUInt8(this.pos++);\n var location = line * this.width * 4 + x*8*4;\n for (var i = 0; i < 8; i++) {\n if(x*8+i>(7-i))&0x1)];\n\n this.data[location+i*4] = 0;\n this.data[location+i*4 + 1] = rgb.blue;\n this.data[location+i*4 + 2] = rgb.green;\n this.data[location+i*4 + 3] = rgb.red;\n\n }else{\n break;\n }\n }\n }\n\n if (mode != 0){\n this.pos+=(4 - mode);\n }\n }\n};\n\nBmpDecoder.prototype.bit4 = function() {\n //RLE-4\n if(this.compress == 2){\n this.data.fill(0xff);\n\n var location = 0;\n var lines = this.bottom_up?this.height-1:0;\n var low_nibble = false;//for all count of pixel\n\n while(location>4);\n }\n\n if ((i & 1) && (i+1 < b)){\n c = this.buffer.readUInt8(this.pos++);\n }\n\n low_nibble = !low_nibble;\n }\n\n if ((((b+1) >> 1) & 1 ) == 1){\n this.pos++\n }\n }\n\n }else{//encoded mode\n for (var i = 0; i < a; i++) {\n if (low_nibble) {\n setPixelData.call(this, (b & 0x0f));\n } else {\n setPixelData.call(this, (b & 0xf0)>>4);\n }\n low_nibble = !low_nibble;\n }\n }\n\n }\n\n\n\n\n function setPixelData(rgbIndex){\n var rgb = this.palette[rgbIndex];\n this.data[location] = 0;\n this.data[location + 1] = rgb.blue;\n this.data[location + 2] = rgb.green;\n this.data[location + 3] = rgb.red;\n location+=4;\n }\n }else{\n\n var xlen = Math.ceil(this.width/2);\n var mode = xlen%4;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y\n for (var x = 0; x < xlen; x++) {\n var b = this.buffer.readUInt8(this.pos++);\n var location = line * this.width * 4 + x*2*4;\n\n var before = b>>4;\n var after = b&0x0F;\n\n var rgb = this.palette[before];\n this.data[location] = 0;\n this.data[location + 1] = rgb.blue;\n this.data[location + 2] = rgb.green;\n this.data[location + 3] = rgb.red;\n\n\n if(x*2+1>=this.width)break;\n\n rgb = this.palette[after];\n\n this.data[location+4] = 0;\n this.data[location+4 + 1] = rgb.blue;\n this.data[location+4 + 2] = rgb.green;\n this.data[location+4 + 3] = rgb.red;\n\n }\n\n if (mode != 0){\n this.pos+=(4 - mode);\n }\n }\n\n }\n\n};\n\nBmpDecoder.prototype.bit8 = function() {\n //RLE-8\n if(this.compress == 1){\n this.data.fill(0xff);\n\n var location = 0;\n var lines = this.bottom_up?this.height-1:0;\n\n while(location= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y\n for (var x = 0; x < this.width; x++) {\n var b = this.buffer.readUInt8(this.pos++);\n var location = line * this.width * 4 + x * 4;\n if (b < this.palette.length) {\n var rgb = this.palette[b];\n\n this.data[location] = 0;\n this.data[location + 1] = rgb.blue;\n this.data[location + 2] = rgb.green;\n this.data[location + 3] = rgb.red;\n\n } else {\n this.data[location] = 0;\n this.data[location + 1] = 0xFF;\n this.data[location + 2] = 0xFF;\n this.data[location + 3] = 0xFF;\n }\n }\n if (mode != 0) {\n this.pos += (4 - mode);\n }\n }\n }\n};\n\nBmpDecoder.prototype.bit15 = function() {\n var dif_w =this.width % 3;\n var _11111 = parseInt(\"11111\", 2),_1_5 = _11111;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y\n for (var x = 0; x < this.width; x++) {\n\n var B = this.buffer.readUInt16LE(this.pos);\n this.pos+=2;\n var blue = (B & _1_5) / _1_5 * 255 | 0;\n var green = (B >> 5 & _1_5 ) / _1_5 * 255 | 0;\n var red = (B >> 10 & _1_5) / _1_5 * 255 | 0;\n var alpha = (B>>15)?0xFF:0x00;\n\n var location = line * this.width * 4 + x * 4;\n\n this.data[location] = alpha;\n this.data[location + 1] = blue;\n this.data[location + 2] = green;\n this.data[location + 3] = red;\n }\n //skip extra bytes\n this.pos += dif_w;\n }\n};\n\nBmpDecoder.prototype.bit16 = function() {\n var dif_w =(this.width % 2)*2;\n //default xrgb555\n this.maskRed = 0x7C00;\n this.maskGreen = 0x3E0;\n this.maskBlue =0x1F;\n this.mask0 = 0;\n\n if(this.compress == 3){\n this.maskRed = this.buffer.readUInt32LE(this.pos);\n this.pos+=4;\n this.maskGreen = this.buffer.readUInt32LE(this.pos);\n this.pos+=4;\n this.maskBlue = this.buffer.readUInt32LE(this.pos);\n this.pos+=4;\n this.mask0 = this.buffer.readUInt32LE(this.pos);\n this.pos+=4;\n }\n\n\n var ns=[0,0,0];\n for (var i=0;i<16;i++){\n if ((this.maskRed>>i)&0x01) ns[0]++;\n if ((this.maskGreen>>i)&0x01) ns[1]++;\n if ((this.maskBlue>>i)&0x01) ns[2]++;\n }\n ns[1]+=ns[0]; ns[2]+=ns[1];\tns[0]=8-ns[0]; ns[1]-=8; ns[2]-=8;\n\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n\n var B = this.buffer.readUInt16LE(this.pos);\n this.pos+=2;\n\n var blue = (B&this.maskBlue)<>ns[1];\n var red = (B&this.maskRed)>>ns[2];\n\n var location = line * this.width * 4 + x * 4;\n\n this.data[location] = 0;\n this.data[location + 1] = blue;\n this.data[location + 2] = green;\n this.data[location + 3] = red;\n }\n //skip extra bytes\n this.pos += dif_w;\n }\n};\n\nBmpDecoder.prototype.bit24 = function() {\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y\n for (var x = 0; x < this.width; x++) {\n //Little Endian rgb\n var blue = this.buffer.readUInt8(this.pos++);\n var green = this.buffer.readUInt8(this.pos++);\n var red = this.buffer.readUInt8(this.pos++);\n var location = line * this.width * 4 + x * 4;\n this.data[location] = 0;\n this.data[location + 1] = blue;\n this.data[location + 2] = green;\n this.data[location + 3] = red;\n }\n //skip extra bytes\n this.pos += (this.width % 4);\n }\n\n};\n\n/**\n * add 32bit decode func\n * @author soubok\n */\nBmpDecoder.prototype.bit32 = function() {\n //BI_BITFIELDS\n if(this.compress == 3){\n this.maskRed = this.buffer.readUInt32LE(this.pos);\n this.pos+=4;\n this.maskGreen = this.buffer.readUInt32LE(this.pos);\n this.pos+=4;\n this.maskBlue = this.buffer.readUInt32LE(this.pos);\n this.pos+=4;\n this.mask0 = this.buffer.readUInt32LE(this.pos);\n this.pos+=4;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n //Little Endian rgba\n var alpha = this.buffer.readUInt8(this.pos++);\n var blue = this.buffer.readUInt8(this.pos++);\n var green = this.buffer.readUInt8(this.pos++);\n var red = this.buffer.readUInt8(this.pos++);\n var location = line * this.width * 4 + x * 4;\n this.data[location] = alpha;\n this.data[location + 1] = blue;\n this.data[location + 2] = green;\n this.data[location + 3] = red;\n }\n }\n\n }else{\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n //Little Endian argb\n var blue = this.buffer.readUInt8(this.pos++);\n var green = this.buffer.readUInt8(this.pos++);\n var red = this.buffer.readUInt8(this.pos++);\n var alpha = this.buffer.readUInt8(this.pos++);\n var location = line * this.width * 4 + x * 4;\n this.data[location] = alpha;\n this.data[location + 1] = blue;\n this.data[location + 2] = green;\n this.data[location + 3] = red;\n }\n }\n\n }\n\n\n\n\n};\n\nBmpDecoder.prototype.getData = function() {\n return this.data;\n};\n\nmodule.exports = function(bmpData) {\n var decoder = new BmpDecoder(bmpData);\n return decoder;\n};\n","'use strict';\nconst toBytes = s => [...s].map(c => c.charCodeAt(0));\nconst xpiZipFilename = toBytes('META-INF/mozilla.rsa');\nconst oxmlContentTypes = toBytes('[Content_Types].xml');\nconst oxmlRels = toBytes('_rels/.rels');\n\nfunction readUInt64LE(buf, offset = 0) {\n\tlet n = buf[offset];\n\tlet mul = 1;\n\tlet i = 0;\n\twhile (++i < 8) {\n\t\tmul *= 0x100;\n\t\tn += buf[offset + i] * mul;\n\t}\n\treturn n;\n}\n\nmodule.exports = input => {\n\tif (!(input instanceof Uint8Array || Buffer.isBuffer(input))) {\n\t\tthrow new TypeError(`Expected the \\`input\\` argument to be of type \\`Uint8Array\\` or \\`Buffer\\`, got \\`${typeof input}\\``);\n\t}\n\n\tconst buf = input instanceof Uint8Array ? input : new Uint8Array(input);\n\n\tif (!(buf && buf.length > 1)) {\n\t\treturn null;\n\t}\n\n\tconst check = (header, options) => {\n\t\toptions = Object.assign({\n\t\t\toffset: 0\n\t\t}, options);\n\n\t\tfor (let i = 0; i < header.length; i++) {\n\t\t\t// If a bitmask is set\n\t\t\tif (options.mask) {\n\t\t\t\t// If header doesn't equal `buf` with bits masked off\n\t\t\t\tif (header[i] !== (options.mask[i] & buf[i + options.offset])) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (header[i] !== buf[i + options.offset]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst checkString = (header, options) => check(toBytes(header), options);\n\n\tif (check([0xFF, 0xD8, 0xFF])) {\n\t\treturn {\n\t\t\text: 'jpg',\n\t\t\tmime: 'image/jpeg'\n\t\t};\n\t}\n\n\tif (check([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\treturn {\n\t\t\text: 'png',\n\t\t\tmime: 'image/png'\n\t\t};\n\t}\n\n\tif (check([0x47, 0x49, 0x46])) {\n\t\treturn {\n\t\t\text: 'gif',\n\t\t\tmime: 'image/gif'\n\t\t};\n\t}\n\n\tif (check([0x57, 0x45, 0x42, 0x50], {offset: 8})) {\n\t\treturn {\n\t\t\text: 'webp',\n\t\t\tmime: 'image/webp'\n\t\t};\n\t}\n\n\tif (check([0x46, 0x4C, 0x49, 0x46])) {\n\t\treturn {\n\t\t\text: 'flif',\n\t\t\tmime: 'image/flif'\n\t\t};\n\t}\n\n\t// Needs to be before `tif` check\n\tif (\n\t\t(check([0x49, 0x49, 0x2A, 0x0]) || check([0x4D, 0x4D, 0x0, 0x2A])) &&\n\t\tcheck([0x43, 0x52], {offset: 8})\n\t) {\n\t\treturn {\n\t\t\text: 'cr2',\n\t\t\tmime: 'image/x-canon-cr2'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x49, 0x49, 0x2A, 0x0]) ||\n\t\tcheck([0x4D, 0x4D, 0x0, 0x2A])\n\t) {\n\t\treturn {\n\t\t\text: 'tif',\n\t\t\tmime: 'image/tiff'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x4D])) {\n\t\treturn {\n\t\t\text: 'bmp',\n\t\t\tmime: 'image/bmp'\n\t\t};\n\t}\n\n\tif (check([0x49, 0x49, 0xBC])) {\n\t\treturn {\n\t\t\text: 'jxr',\n\t\t\tmime: 'image/vnd.ms-photo'\n\t\t};\n\t}\n\n\tif (check([0x38, 0x42, 0x50, 0x53])) {\n\t\treturn {\n\t\t\text: 'psd',\n\t\t\tmime: 'image/vnd.adobe.photoshop'\n\t\t};\n\t}\n\n\t// Zip-based file formats\n\t// Need to be before the `zip` check\n\tif (check([0x50, 0x4B, 0x3, 0x4])) {\n\t\tif (\n\t\t\tcheck([0x6D, 0x69, 0x6D, 0x65, 0x74, 0x79, 0x70, 0x65, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x65, 0x70, 0x75, 0x62, 0x2B, 0x7A, 0x69, 0x70], {offset: 30})\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'epub',\n\t\t\t\tmime: 'application/epub+zip'\n\t\t\t};\n\t\t}\n\n\t\t// Assumes signed `.xpi` from addons.mozilla.org\n\t\tif (check(xpiZipFilename, {offset: 30})) {\n\t\t\treturn {\n\t\t\t\text: 'xpi',\n\t\t\t\tmime: 'application/x-xpinstall'\n\t\t\t};\n\t\t}\n\n\t\tif (checkString('mimetypeapplication/vnd.oasis.opendocument.text', {offset: 30})) {\n\t\t\treturn {\n\t\t\t\text: 'odt',\n\t\t\t\tmime: 'application/vnd.oasis.opendocument.text'\n\t\t\t};\n\t\t}\n\n\t\tif (checkString('mimetypeapplication/vnd.oasis.opendocument.spreadsheet', {offset: 30})) {\n\t\t\treturn {\n\t\t\t\text: 'ods',\n\t\t\t\tmime: 'application/vnd.oasis.opendocument.spreadsheet'\n\t\t\t};\n\t\t}\n\n\t\tif (checkString('mimetypeapplication/vnd.oasis.opendocument.presentation', {offset: 30})) {\n\t\t\treturn {\n\t\t\t\text: 'odp',\n\t\t\t\tmime: 'application/vnd.oasis.opendocument.presentation'\n\t\t\t};\n\t\t}\n\n\t\t// The docx, xlsx and pptx file types extend the Office Open XML file format:\n\t\t// https://en.wikipedia.org/wiki/Office_Open_XML_file_formats\n\t\t// We look for:\n\t\t// - one entry named '[Content_Types].xml' or '_rels/.rels',\n\t\t// - one entry indicating specific type of file.\n\t\t// MS Office, OpenOffice and LibreOffice may put the parts in different order, so the check should not rely on it.\n\t\tconst findNextZipHeaderIndex = (arr, startAt = 0) => arr.findIndex((el, i, arr) => i >= startAt && arr[i] === 0x50 && arr[i + 1] === 0x4B && arr[i + 2] === 0x3 && arr[i + 3] === 0x4);\n\n\t\tlet zipHeaderIndex = 0; // The first zip header was already found at index 0\n\t\tlet oxmlFound = false;\n\t\tlet type = null;\n\n\t\tdo {\n\t\t\tconst offset = zipHeaderIndex + 30;\n\n\t\t\tif (!oxmlFound) {\n\t\t\t\toxmlFound = (check(oxmlContentTypes, {offset}) || check(oxmlRels, {offset}));\n\t\t\t}\n\n\t\t\tif (!type) {\n\t\t\t\tif (checkString('word/', {offset})) {\n\t\t\t\t\ttype = {\n\t\t\t\t\t\text: 'docx',\n\t\t\t\t\t\tmime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n\t\t\t\t\t};\n\t\t\t\t} else if (checkString('ppt/', {offset})) {\n\t\t\t\t\ttype = {\n\t\t\t\t\t\text: 'pptx',\n\t\t\t\t\t\tmime: 'application/vnd.openxmlformats-officedocument.presentationml.presentation'\n\t\t\t\t\t};\n\t\t\t\t} else if (checkString('xl/', {offset})) {\n\t\t\t\t\ttype = {\n\t\t\t\t\t\text: 'xlsx',\n\t\t\t\t\t\tmime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (oxmlFound && type) {\n\t\t\t\treturn type;\n\t\t\t}\n\n\t\t\tzipHeaderIndex = findNextZipHeaderIndex(buf, offset);\n\t\t} while (zipHeaderIndex >= 0);\n\n\t\t// No more zip parts available in the buffer, but maybe we are almost certain about the type?\n\t\tif (type) {\n\t\t\treturn type;\n\t\t}\n\t}\n\n\tif (\n\t\tcheck([0x50, 0x4B]) &&\n\t\t(buf[2] === 0x3 || buf[2] === 0x5 || buf[2] === 0x7) &&\n\t\t(buf[3] === 0x4 || buf[3] === 0x6 || buf[3] === 0x8)\n\t) {\n\t\treturn {\n\t\t\text: 'zip',\n\t\t\tmime: 'application/zip'\n\t\t};\n\t}\n\n\tif (check([0x75, 0x73, 0x74, 0x61, 0x72], {offset: 257})) {\n\t\treturn {\n\t\t\text: 'tar',\n\t\t\tmime: 'application/x-tar'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x52, 0x61, 0x72, 0x21, 0x1A, 0x7]) &&\n\t\t(buf[6] === 0x0 || buf[6] === 0x1)\n\t) {\n\t\treturn {\n\t\t\text: 'rar',\n\t\t\tmime: 'application/x-rar-compressed'\n\t\t};\n\t}\n\n\tif (check([0x1F, 0x8B, 0x8])) {\n\t\treturn {\n\t\t\text: 'gz',\n\t\t\tmime: 'application/gzip'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x5A, 0x68])) {\n\t\treturn {\n\t\t\text: 'bz2',\n\t\t\tmime: 'application/x-bzip2'\n\t\t};\n\t}\n\n\tif (check([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) {\n\t\treturn {\n\t\t\text: '7z',\n\t\t\tmime: 'application/x-7z-compressed'\n\t\t};\n\t}\n\n\tif (check([0x78, 0x01])) {\n\t\treturn {\n\t\t\text: 'dmg',\n\t\t\tmime: 'application/x-apple-diskimage'\n\t\t};\n\t}\n\n\tif (check([0x33, 0x67, 0x70, 0x35]) || // 3gp5\n\t\t(\n\t\t\tcheck([0x0, 0x0, 0x0]) && check([0x66, 0x74, 0x79, 0x70], {offset: 4}) &&\n\t\t\t\t(\n\t\t\t\t\tcheck([0x6D, 0x70, 0x34, 0x31], {offset: 8}) || // MP41\n\t\t\t\t\tcheck([0x6D, 0x70, 0x34, 0x32], {offset: 8}) || // MP42\n\t\t\t\t\tcheck([0x69, 0x73, 0x6F, 0x6D], {offset: 8}) || // ISOM\n\t\t\t\t\tcheck([0x69, 0x73, 0x6F, 0x32], {offset: 8}) || // ISO2\n\t\t\t\t\tcheck([0x6D, 0x6D, 0x70, 0x34], {offset: 8}) || // MMP4\n\t\t\t\t\tcheck([0x4D, 0x34, 0x56], {offset: 8}) || // M4V\n\t\t\t\t\tcheck([0x64, 0x61, 0x73, 0x68], {offset: 8}) // DASH\n\t\t\t\t)\n\t\t)) {\n\t\treturn {\n\t\t\text: 'mp4',\n\t\t\tmime: 'video/mp4'\n\t\t};\n\t}\n\n\tif (check([0x4D, 0x54, 0x68, 0x64])) {\n\t\treturn {\n\t\t\text: 'mid',\n\t\t\tmime: 'audio/midi'\n\t\t};\n\t}\n\n\t// https://github.com/threatstack/libmagic/blob/master/magic/Magdir/matroska\n\tif (check([0x1A, 0x45, 0xDF, 0xA3])) {\n\t\tconst sliced = buf.subarray(4, 4 + 4096);\n\t\tconst idPos = sliced.findIndex((el, i, arr) => arr[i] === 0x42 && arr[i + 1] === 0x82);\n\n\t\tif (idPos !== -1) {\n\t\t\tconst docTypePos = idPos + 3;\n\t\t\tconst findDocType = type => [...type].every((c, i) => sliced[docTypePos + i] === c.charCodeAt(0));\n\n\t\t\tif (findDocType('matroska')) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mkv',\n\t\t\t\t\tmime: 'video/x-matroska'\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (findDocType('webm')) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'webm',\n\t\t\t\t\tmime: 'video/webm'\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\tif (check([0x0, 0x0, 0x0, 0x14, 0x66, 0x74, 0x79, 0x70, 0x71, 0x74, 0x20, 0x20]) ||\n\t\tcheck([0x66, 0x72, 0x65, 0x65], {offset: 4}) || // Type: `free`\n\t\tcheck([0x66, 0x74, 0x79, 0x70, 0x71, 0x74, 0x20, 0x20], {offset: 4}) ||\n\t\tcheck([0x6D, 0x64, 0x61, 0x74], {offset: 4}) || // MJPEG\n\t\tcheck([0x6D, 0x6F, 0x6F, 0x76], {offset: 4}) || // Type: `moov`\n\t\tcheck([0x77, 0x69, 0x64, 0x65], {offset: 4})) {\n\t\treturn {\n\t\t\text: 'mov',\n\t\t\tmime: 'video/quicktime'\n\t\t};\n\t}\n\n\t// RIFF file format which might be AVI, WAV, QCP, etc\n\tif (check([0x52, 0x49, 0x46, 0x46])) {\n\t\tif (check([0x41, 0x56, 0x49], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'avi',\n\t\t\t\tmime: 'video/vnd.avi'\n\t\t\t};\n\t\t}\n\t\tif (check([0x57, 0x41, 0x56, 0x45], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'wav',\n\t\t\t\tmime: 'audio/vnd.wave'\n\t\t\t};\n\t\t}\n\t\t// QLCM, QCP file\n\t\tif (check([0x51, 0x4C, 0x43, 0x4D], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'qcp',\n\t\t\t\tmime: 'audio/qcelp'\n\t\t\t};\n\t\t}\n\t}\n\n\t// ASF_Header_Object first 80 bytes\n\tif (check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) {\n\t\t// Search for header should be in first 1KB of file.\n\n\t\tlet offset = 30;\n\t\tdo {\n\t\t\tconst objectSize = readUInt64LE(buf, offset + 16);\n\t\t\tif (check([0x91, 0x07, 0xDC, 0xB7, 0xB7, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65], {offset})) {\n\t\t\t\t// Sync on Stream-Properties-Object (B7DC0791-A9B7-11CF-8EE6-00C00C205365)\n\t\t\t\tif (check([0x40, 0x9E, 0x69, 0xF8, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B], {offset: offset + 24})) {\n\t\t\t\t\t// Found audio:\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'wma',\n\t\t\t\t\t\tmime: 'audio/x-ms-wma'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (check([0xC0, 0xEF, 0x19, 0xBC, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B], {offset: offset + 24})) {\n\t\t\t\t\t// Found video:\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'wmv',\n\t\t\t\t\t\tmime: 'video/x-ms-asf'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\toffset += objectSize;\n\t\t} while (offset + 24 <= buf.length);\n\n\t\t// Default to ASF generic extension\n\t\treturn {\n\t\t\text: 'asf',\n\t\t\tmime: 'application/vnd.ms-asf'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x0, 0x0, 0x1, 0xBA]) ||\n\t\tcheck([0x0, 0x0, 0x1, 0xB3])\n\t) {\n\t\treturn {\n\t\t\text: 'mpg',\n\t\t\tmime: 'video/mpeg'\n\t\t};\n\t}\n\n\tif (check([0x66, 0x74, 0x79, 0x70, 0x33, 0x67], {offset: 4})) {\n\t\treturn {\n\t\t\text: '3gp',\n\t\t\tmime: 'video/3gpp'\n\t\t};\n\t}\n\n\t// Check for MPEG header at different starting offsets\n\tfor (let start = 0; start < 2 && start < (buf.length - 16); start++) {\n\t\tif (\n\t\t\tcheck([0x49, 0x44, 0x33], {offset: start}) || // ID3 header\n\t\t\tcheck([0xFF, 0xE2], {offset: start, mask: [0xFF, 0xE2]}) // MPEG 1 or 2 Layer 3 header\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mp3',\n\t\t\t\tmime: 'audio/mpeg'\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tcheck([0xFF, 0xE4], {offset: start, mask: [0xFF, 0xE4]}) // MPEG 1 or 2 Layer 2 header\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mp2',\n\t\t\t\tmime: 'audio/mpeg'\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tcheck([0xFF, 0xF8], {offset: start, mask: [0xFF, 0xFC]}) // MPEG 2 layer 0 using ADTS\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mp2',\n\t\t\t\tmime: 'audio/mpeg'\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tcheck([0xFF, 0xF0], {offset: start, mask: [0xFF, 0xFC]}) // MPEG 4 layer 0 using ADTS\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mp4',\n\t\t\t\tmime: 'audio/mpeg'\n\t\t\t};\n\t\t}\n\t}\n\n\tif (\n\t\tcheck([0x66, 0x74, 0x79, 0x70, 0x4D, 0x34, 0x41], {offset: 4}) ||\n\t\tcheck([0x4D, 0x34, 0x41, 0x20])\n\t) {\n\t\treturn { // MPEG-4 layer 3 (audio)\n\t\t\text: 'm4a',\n\t\t\tmime: 'audio/mp4' // RFC 4337\n\t\t};\n\t}\n\n\t// Needs to be before `ogg` check\n\tif (check([0x4F, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64], {offset: 28})) {\n\t\treturn {\n\t\t\text: 'opus',\n\t\t\tmime: 'audio/opus'\n\t\t};\n\t}\n\n\t// If 'OggS' in first bytes, then OGG container\n\tif (check([0x4F, 0x67, 0x67, 0x53])) {\n\t\t// This is a OGG container\n\n\t\t// If ' theora' in header.\n\t\tif (check([0x80, 0x74, 0x68, 0x65, 0x6F, 0x72, 0x61], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'ogv',\n\t\t\t\tmime: 'video/ogg'\n\t\t\t};\n\t\t}\n\t\t// If '\\x01video' in header.\n\t\tif (check([0x01, 0x76, 0x69, 0x64, 0x65, 0x6F, 0x00], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'ogm',\n\t\t\t\tmime: 'video/ogg'\n\t\t\t};\n\t\t}\n\t\t// If ' FLAC' in header https://xiph.org/flac/faq.html\n\t\tif (check([0x7F, 0x46, 0x4C, 0x41, 0x43], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'oga',\n\t\t\t\tmime: 'audio/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// 'Speex ' in header https://en.wikipedia.org/wiki/Speex\n\t\tif (check([0x53, 0x70, 0x65, 0x65, 0x78, 0x20, 0x20], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'spx',\n\t\t\t\tmime: 'audio/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// If '\\x01vorbis' in header\n\t\tif (check([0x01, 0x76, 0x6F, 0x72, 0x62, 0x69, 0x73], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'ogg',\n\t\t\t\tmime: 'audio/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// Default OGG container https://www.iana.org/assignments/media-types/application/ogg\n\t\treturn {\n\t\t\text: 'ogx',\n\t\t\tmime: 'application/ogg'\n\t\t};\n\t}\n\n\tif (check([0x66, 0x4C, 0x61, 0x43])) {\n\t\treturn {\n\t\t\text: 'flac',\n\t\t\tmime: 'audio/x-flac'\n\t\t};\n\t}\n\n\tif (check([0x4D, 0x41, 0x43, 0x20])) { // 'MAC '\n\t\treturn {\n\t\t\text: 'ape',\n\t\t\tmime: 'audio/ape'\n\t\t};\n\t}\n\n\tif (check([0x77, 0x76, 0x70, 0x6B])) { // 'wvpk'\n\t\treturn {\n\t\t\text: 'wv',\n\t\t\tmime: 'audio/wavpack'\n\t\t};\n\t}\n\n\tif (check([0x23, 0x21, 0x41, 0x4D, 0x52, 0x0A])) {\n\t\treturn {\n\t\t\text: 'amr',\n\t\t\tmime: 'audio/amr'\n\t\t};\n\t}\n\n\tif (check([0x25, 0x50, 0x44, 0x46])) {\n\t\treturn {\n\t\t\text: 'pdf',\n\t\t\tmime: 'application/pdf'\n\t\t};\n\t}\n\n\tif (check([0x4D, 0x5A])) {\n\t\treturn {\n\t\t\text: 'exe',\n\t\t\tmime: 'application/x-msdownload'\n\t\t};\n\t}\n\n\tif (\n\t\t(buf[0] === 0x43 || buf[0] === 0x46) &&\n\t\tcheck([0x57, 0x53], {offset: 1})\n\t) {\n\t\treturn {\n\t\t\text: 'swf',\n\t\t\tmime: 'application/x-shockwave-flash'\n\t\t};\n\t}\n\n\tif (check([0x7B, 0x5C, 0x72, 0x74, 0x66])) {\n\t\treturn {\n\t\t\text: 'rtf',\n\t\t\tmime: 'application/rtf'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x61, 0x73, 0x6D])) {\n\t\treturn {\n\t\t\text: 'wasm',\n\t\t\tmime: 'application/wasm'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x77, 0x4F, 0x46, 0x46]) &&\n\t\t(\n\t\t\tcheck([0x00, 0x01, 0x00, 0x00], {offset: 4}) ||\n\t\t\tcheck([0x4F, 0x54, 0x54, 0x4F], {offset: 4})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'woff',\n\t\t\tmime: 'font/woff'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x77, 0x4F, 0x46, 0x32]) &&\n\t\t(\n\t\t\tcheck([0x00, 0x01, 0x00, 0x00], {offset: 4}) ||\n\t\t\tcheck([0x4F, 0x54, 0x54, 0x4F], {offset: 4})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'woff2',\n\t\t\tmime: 'font/woff2'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x4C, 0x50], {offset: 34}) &&\n\t\t(\n\t\t\tcheck([0x00, 0x00, 0x01], {offset: 8}) ||\n\t\t\tcheck([0x01, 0x00, 0x02], {offset: 8}) ||\n\t\t\tcheck([0x02, 0x00, 0x02], {offset: 8})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'eot',\n\t\t\tmime: 'application/vnd.ms-fontobject'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x01, 0x00, 0x00, 0x00])) {\n\t\treturn {\n\t\t\text: 'ttf',\n\t\t\tmime: 'font/ttf'\n\t\t};\n\t}\n\n\tif (check([0x4F, 0x54, 0x54, 0x4F, 0x00])) {\n\t\treturn {\n\t\t\text: 'otf',\n\t\t\tmime: 'font/otf'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x00, 0x01, 0x00])) {\n\t\treturn {\n\t\t\text: 'ico',\n\t\t\tmime: 'image/x-icon'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x00, 0x02, 0x00])) {\n\t\treturn {\n\t\t\text: 'cur',\n\t\t\tmime: 'image/x-icon'\n\t\t};\n\t}\n\n\tif (check([0x46, 0x4C, 0x56, 0x01])) {\n\t\treturn {\n\t\t\text: 'flv',\n\t\t\tmime: 'video/x-flv'\n\t\t};\n\t}\n\n\tif (check([0x25, 0x21])) {\n\t\treturn {\n\t\t\text: 'ps',\n\t\t\tmime: 'application/postscript'\n\t\t};\n\t}\n\n\tif (check([0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00])) {\n\t\treturn {\n\t\t\text: 'xz',\n\t\t\tmime: 'application/x-xz'\n\t\t};\n\t}\n\n\tif (check([0x53, 0x51, 0x4C, 0x69])) {\n\t\treturn {\n\t\t\text: 'sqlite',\n\t\t\tmime: 'application/x-sqlite3'\n\t\t};\n\t}\n\n\tif (check([0x4E, 0x45, 0x53, 0x1A])) {\n\t\treturn {\n\t\t\text: 'nes',\n\t\t\tmime: 'application/x-nintendo-nes-rom'\n\t\t};\n\t}\n\n\tif (check([0x43, 0x72, 0x32, 0x34])) {\n\t\treturn {\n\t\t\text: 'crx',\n\t\t\tmime: 'application/x-google-chrome-extension'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x4D, 0x53, 0x43, 0x46]) ||\n\t\tcheck([0x49, 0x53, 0x63, 0x28])\n\t) {\n\t\treturn {\n\t\t\text: 'cab',\n\t\t\tmime: 'application/vnd.ms-cab-compressed'\n\t\t};\n\t}\n\n\t// Needs to be before `ar` check\n\tif (check([0x21, 0x3C, 0x61, 0x72, 0x63, 0x68, 0x3E, 0x0A, 0x64, 0x65, 0x62, 0x69, 0x61, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x61, 0x72, 0x79])) {\n\t\treturn {\n\t\t\text: 'deb',\n\t\t\tmime: 'application/x-deb'\n\t\t};\n\t}\n\n\tif (check([0x21, 0x3C, 0x61, 0x72, 0x63, 0x68, 0x3E])) {\n\t\treturn {\n\t\t\text: 'ar',\n\t\t\tmime: 'application/x-unix-archive'\n\t\t};\n\t}\n\n\tif (check([0xED, 0xAB, 0xEE, 0xDB])) {\n\t\treturn {\n\t\t\text: 'rpm',\n\t\t\tmime: 'application/x-rpm'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x1F, 0xA0]) ||\n\t\tcheck([0x1F, 0x9D])\n\t) {\n\t\treturn {\n\t\t\text: 'Z',\n\t\t\tmime: 'application/x-compress'\n\t\t};\n\t}\n\n\tif (check([0x4C, 0x5A, 0x49, 0x50])) {\n\t\treturn {\n\t\t\text: 'lz',\n\t\t\tmime: 'application/x-lzip'\n\t\t};\n\t}\n\n\tif (check([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) {\n\t\treturn {\n\t\t\text: 'msi',\n\t\t\tmime: 'application/x-msi'\n\t\t};\n\t}\n\n\tif (check([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x05, 0x01, 0x01, 0x0D, 0x01, 0x02, 0x01, 0x01, 0x02])) {\n\t\treturn {\n\t\t\text: 'mxf',\n\t\t\tmime: 'application/mxf'\n\t\t};\n\t}\n\n\tif (check([0x47], {offset: 4}) && (check([0x47], {offset: 192}) || check([0x47], {offset: 196}))) {\n\t\treturn {\n\t\t\text: 'mts',\n\t\t\tmime: 'video/mp2t'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x4C, 0x45, 0x4E, 0x44, 0x45, 0x52])) {\n\t\treturn {\n\t\t\text: 'blend',\n\t\t\tmime: 'application/x-blender'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x50, 0x47, 0xFB])) {\n\t\treturn {\n\t\t\text: 'bpg',\n\t\t\tmime: 'image/bpg'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x00, 0x00, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) {\n\t\t// JPEG-2000 family\n\n\t\tif (check([0x6A, 0x70, 0x32, 0x20], {offset: 20})) {\n\t\t\treturn {\n\t\t\t\text: 'jp2',\n\t\t\t\tmime: 'image/jp2'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x6A, 0x70, 0x78, 0x20], {offset: 20})) {\n\t\t\treturn {\n\t\t\t\text: 'jpx',\n\t\t\t\tmime: 'image/jpx'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x6A, 0x70, 0x6D, 0x20], {offset: 20})) {\n\t\t\treturn {\n\t\t\t\text: 'jpm',\n\t\t\t\tmime: 'image/jpm'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x6D, 0x6A, 0x70, 0x32], {offset: 20})) {\n\t\t\treturn {\n\t\t\t\text: 'mj2',\n\t\t\t\tmime: 'image/mj2'\n\t\t\t};\n\t\t}\n\t}\n\n\tif (check([0x46, 0x4F, 0x52, 0x4D, 0x00])) {\n\t\treturn {\n\t\t\text: 'aif',\n\t\t\tmime: 'audio/aiff'\n\t\t};\n\t}\n\n\tif (checkString(' {\n const lines = html.split('\\n');\n if (lines[0].substring(0, 2) === ' ') {\n for (let i = 0; i < lines.length; i += 1) {\n if (lines[i].substring(0, 2) === ' ') {\n lines[i] = lines[i].slice(2);\n }\n }\n }\n return lines.join('\\n');\n};\n\nmodule.exports = (Module, base) => {\n const ri = base.GetIterator();\n const blocks = [];\n let block;\n let para;\n let textline;\n let word;\n let symbol;\n\n const enumToString = (value, prefix) => (\n Object.keys(Module)\n .filter(e => (e.substr(0, prefix.length + 1) === `${prefix}_`))\n .filter(e => Module[e] === value)\n .map(e => e.slice(prefix.length + 1))[0]\n );\n\n ri.Begin();\n do {\n if (ri.IsAtBeginningOf(Module.RIL_BLOCK)) {\n const poly = ri.BlockPolygon();\n let polygon = null;\n // BlockPolygon() returns null when automatic page segmentation is off\n if (Module.getPointer(poly) > 0) {\n const n = poly.get_n();\n const px = poly.get_x();\n const py = poly.get_y();\n polygon = [];\n for (let i = 0; i < n; i += 1) {\n polygon.push([px.getValue(i), py.getValue(i)]);\n }\n Module._ptaDestroy(Module.getPointer(poly));\n }\n\n block = {\n paragraphs: [],\n text: ri.GetUTF8Text(Module.RIL_BLOCK),\n confidence: ri.Confidence(Module.RIL_BLOCK),\n baseline: ri.getBaseline(Module.RIL_BLOCK),\n bbox: ri.getBoundingBox(Module.RIL_BLOCK),\n blocktype: enumToString(ri.BlockType(), 'PT'),\n polygon,\n };\n blocks.push(block);\n }\n if (ri.IsAtBeginningOf(Module.RIL_PARA)) {\n para = {\n lines: [],\n text: ri.GetUTF8Text(Module.RIL_PARA),\n confidence: ri.Confidence(Module.RIL_PARA),\n baseline: ri.getBaseline(Module.RIL_PARA),\n bbox: ri.getBoundingBox(Module.RIL_PARA),\n is_ltr: !!ri.ParagraphIsLtr(),\n };\n block.paragraphs.push(para);\n }\n if (ri.IsAtBeginningOf(Module.RIL_TEXTLINE)) {\n textline = {\n words: [],\n text: ri.GetUTF8Text(Module.RIL_TEXTLINE),\n confidence: ri.Confidence(Module.RIL_TEXTLINE),\n baseline: ri.getBaseline(Module.RIL_TEXTLINE),\n bbox: ri.getBoundingBox(Module.RIL_TEXTLINE),\n };\n para.lines.push(textline);\n }\n if (ri.IsAtBeginningOf(Module.RIL_WORD)) {\n const fontInfo = ri.getWordFontAttributes();\n const wordDir = ri.WordDirection();\n word = {\n symbols: [],\n choices: [],\n\n text: ri.GetUTF8Text(Module.RIL_WORD),\n confidence: ri.Confidence(Module.RIL_WORD),\n baseline: ri.getBaseline(Module.RIL_WORD),\n bbox: ri.getBoundingBox(Module.RIL_WORD),\n\n is_numeric: !!ri.WordIsNumeric(),\n in_dictionary: !!ri.WordIsFromDictionary(),\n direction: enumToString(wordDir, 'DIR'),\n language: ri.WordRecognitionLanguage(),\n\n is_bold: fontInfo.is_bold,\n is_italic: fontInfo.is_italic,\n is_underlined: fontInfo.is_underlined,\n is_monospace: fontInfo.is_monospace,\n is_serif: fontInfo.is_serif,\n is_smallcaps: fontInfo.is_smallcaps,\n font_size: fontInfo.pointsize,\n font_id: fontInfo.font_id,\n font_name: fontInfo.font_name,\n };\n const wc = new Module.WordChoiceIterator(ri);\n do {\n word.choices.push({\n text: wc.GetUTF8Text(),\n confidence: wc.Confidence(),\n });\n } while (wc.Next());\n Module.destroy(wc);\n textline.words.push(word);\n }\n\n // let image = null;\n // var pix = ri.GetBinaryImage(Module.RIL_SYMBOL)\n // var image = pix2array(pix);\n // // for some reason it seems that things stop working if you destroy pics\n // Module._pixDestroy(Module.getPointer(pix));\n if (ri.IsAtBeginningOf(Module.RIL_SYMBOL)) {\n symbol = {\n choices: [],\n image: null,\n text: ri.GetUTF8Text(Module.RIL_SYMBOL),\n confidence: ri.Confidence(Module.RIL_SYMBOL),\n baseline: ri.getBaseline(Module.RIL_SYMBOL),\n bbox: ri.getBoundingBox(Module.RIL_SYMBOL),\n is_superscript: !!ri.SymbolIsSuperscript(),\n is_subscript: !!ri.SymbolIsSubscript(),\n is_dropcap: !!ri.SymbolIsDropcap(),\n };\n word.symbols.push(symbol);\n const ci = new Module.ChoiceIterator(ri);\n do {\n symbol.choices.push({\n text: ci.GetUTF8Text(),\n confidence: ci.Confidence(),\n });\n } while (ci.Next());\n // Module.destroy(i);\n }\n } while (ri.Next(Module.RIL_SYMBOL));\n Module.destroy(ri);\n\n return {\n text: base.GetUTF8Text(),\n html: deindent(base.GetHOCRText()),\n confidence: base.MeanTextConf(),\n blocks,\n psm: enumToString(base.GetPageSegMode(), 'PSM'),\n oem: enumToString(base.oem(), 'OEM'),\n version: base.Version(),\n };\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9a2b64c..2875c49 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,56 @@ "@babel/highlight": "^7.0.0" } }, + "@babel/generator": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.6.tgz", + "integrity": "sha512-brwPBtVvdYdGxtenbQgfCdDPmtkmUBZPjUoK5SXJEBuHaA5BCubh9ly65fzXz7R6o5rA76Rs22ES8Z+HCc0YIQ==", + "dev": true, + "requires": { + "@babel/types": "^7.1.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, "@babel/highlight": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", @@ -61,6 +111,82 @@ } } }, + "@babel/parser": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.6.tgz", + "integrity": "sha512-dWP6LJm9nKT6ALaa+bnL247GHHMWir3vSlZ2+IHgHgktZQx0L3Uvq2uAWcuzIe+fujRsYWBW2q622C5UvGK9iQ==", + "dev": true + }, + "@babel/template": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.2.tgz", + "integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.1.2", + "@babel/types": "^7.1.2" + } + }, + "@babel/traverse": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.6.tgz", + "integrity": "sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.1.6", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.1.6", + "@babel/types": "^7.1.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + }, + "dependencies": { + "debug": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", + "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.6.tgz", + "integrity": "sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, "@webassemblyjs/ast": { "version": "1.7.11", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", @@ -588,6 +714,12 @@ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, "browserify-aes": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", @@ -1228,6 +1360,12 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, "diffie-hellman": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", @@ -1305,14 +1443,6 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "~0.4.13" - } - }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", @@ -1791,6 +1921,12 @@ "strip-eof": "^1.0.0" } }, + "expect.js": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/expect.js/-/expect.js-0.3.1.tgz", + "integrity": "sha1-sKWaDS7/VDdUTr8M6qYBWEHQm1s=", + "dev": true + }, "express": { "version": "4.16.4", "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", @@ -2162,14 +2298,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2184,20 +2318,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -2314,8 +2445,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -2327,7 +2457,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2342,7 +2471,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2350,14 +2478,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -2376,7 +2502,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -2457,8 +2582,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -2470,7 +2594,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -2592,7 +2715,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2714,12 +2836,24 @@ "integrity": "sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag==", "dev": true }, + "globals": { + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", + "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", + "dev": true + }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, "has": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", @@ -2820,6 +2954,12 @@ "minimalistic-assert": "^1.0.0" } }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -2849,11 +2989,6 @@ "statuses": ">= 1.4.0 < 2" } }, - "iconv-lite": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", - "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==" - }, "idb-keyval": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-3.1.0.tgz", @@ -3198,7 +3333,8 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-symbol": { "version": "1.0.2", @@ -3232,6 +3368,27 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.0.0.tgz", + "integrity": "sha512-eQY9vN9elYjdgN9Iv6NS/00bptm02EBBk70lRMaVjeA6QYocQgenVrSgC28TJurdnZa80AGO3ASdFN+w/njGiQ==", + "dev": true, + "requires": { + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "istanbul-lib-coverage": "^2.0.1", + "semver": "^5.5.0" + } + }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -3256,6 +3413,12 @@ } } }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -3567,6 +3730,42 @@ "minimist": "0.0.8" } }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + }, + "dependencies": { + "commander": { + "version": "2.15.1", + "resolved": "http://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -3664,13 +3863,9 @@ "dev": true }, "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", + "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==" }, "node-libs-browser": { "version": "2.1.0", @@ -3780,98 +3975,1237 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "nyc": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.1.0.tgz", + "integrity": "sha512-3GyY6TpQ58z9Frpv4GMExE1SV2tAgYqC7HSy2omEhNiCT3mhT9NyiOvIE8zkbuJVFzmvvNTnE4h/7/wQae7xLg==", "dev": true, "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "archy": "^1.0.0", + "arrify": "^1.0.1", + "caching-transform": "^2.0.0", + "convert-source-map": "^1.6.0", + "debug-log": "^1.0.1", + "find-cache-dir": "^2.0.0", + "find-up": "^3.0.0", + "foreground-child": "^1.5.6", + "glob": "^7.1.3", + "istanbul-lib-coverage": "^2.0.1", + "istanbul-lib-hook": "^2.0.1", + "istanbul-lib-instrument": "^3.0.0", + "istanbul-lib-report": "^2.0.2", + "istanbul-lib-source-maps": "^2.0.1", + "istanbul-reports": "^2.0.1", + "make-dir": "^1.3.0", + "merge-source-map": "^1.1.0", + "resolve-from": "^4.0.0", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "spawn-wrap": "^1.4.2", + "test-exclude": "^5.0.0", + "uuid": "^3.3.2", + "yargs": "11.1.0", + "yargs-parser": "^9.0.2" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "align-text": { + "version": "0.1.4", + "bundled": true, "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } - } - } - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + }, + "amdefine": { + "version": "1.0.1", + "bundled": true, "dev": true - } - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, - "dependencies": { - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + }, + "ansi-regex": { + "version": "3.0.0", + "bundled": true, "dev": true }, - "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "append-transform": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "archy": { + "version": "1.0.0", + "bundled": true, "dev": true - } - } - }, - "object.entries": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", - "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.6.1", - "function-bind": "^1.1.0", - "has": "^1.0.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { + }, + "arrify": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "async": { + "version": "1.5.2", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "caching-transform": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "make-dir": "^1.0.0", + "md5-hex": "^2.0.0", + "package-hash": "^2.0.0", + "write-file-atomic": "^2.0.0" + } + }, + "camelcase": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "default-require-extensions": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + } + }, + "error-ex": { + "version": "1.3.2", + "bundled": true, + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es6-error": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "find-cache-dir": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^4", + "signal-exit": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "bundled": true, + "dev": true, + "requires": { + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "bundled": true, + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "has-flag": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "hosted-git-info": { + "version": "2.7.1", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "istanbul-lib-coverage": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-report": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.1", + "make-dir": "^1.3.0", + "supports-color": "^5.4.0" + } + }, + "istanbul-lib-source-maps": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^2.0.1", + "make-dir": "^1.3.0", + "rimraf": "^2.6.2", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "handlebars": "^4.0.11" + } + }, + "json-parse-better-errors": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "load-json-file": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash.flattendeep": { + "version": "4.4.0", + "bundled": true, + "dev": true + }, + "longest": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "bundled": true, + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "md5-hex": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "md5-o-matic": "^0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "merge-source-map": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true + } + } + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.10", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + } + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-limit": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "package-hash": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "lodash.flattendeep": "^4.4.0", + "md5-hex": "^2.0.0", + "release-zalgo": "^1.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "path-type": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, + "release-zalgo": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true, + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "source-map": { + "version": "0.5.7", + "bundled": true, + "dev": true, + "optional": true + }, + "spawn-wrap": { + "version": "1.4.2", + "bundled": true, + "dev": true, + "requires": { + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" + } + }, + "spdx-correct": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "test-exclude": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "arrify": "^1.0.1", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^1.0.1" + } + }, + "uglify-js": { + "version": "2.8.29", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "uuid": { + "version": "3.3.2", + "bundled": true, + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "window-size": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true, + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "y18n": { + "version": "3.2.1", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "11.1.0", + "bundled": true, + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + }, + "dependencies": { + "cliui": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true, + "dev": true + } + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + } + } + } + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + }, + "dependencies": { + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "dev": true + } + } + }, + "object.entries": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", + "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.6.1", + "function-bind": "^1.1.0", + "has": "^1.0.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", @@ -5060,6 +6394,15 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, "table": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/table/-/table-5.1.0.tgz", @@ -5226,6 +6569,12 @@ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -5268,6 +6617,12 @@ } } }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", diff --git a/package.json b/package.json index 5e4fb5a..251bce8 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "start": "node scripts/server.js", "build": "webpack --config scripts/webpack.config.prod.js", "prepublishOnly": "npm run build", + "test:node": "nyc mocha --exit --require ./scripts/test-helper.js ./tests/*.test.js", "lint": "eslint src" }, "browser": { @@ -23,7 +24,10 @@ "eslint-plugin-import": "^2.14.0", "eslint-plugin-jsx-a11y": "^6.1.2", "eslint-plugin-react": "^7.11.1", + "expect.js": "^0.3.1", "express": "^4.16.4", + "mocha": "^5.2.0", + "nyc": "^13.1.0", "webpack": "^4.26.0", "webpack-cli": "^3.1.2", "webpack-dev-middleware": "^3.4.0" @@ -31,7 +35,7 @@ "dependencies": { "check-types": "^7.4.0", "is-url": "1.2.2", - "node-fetch": "^1.7.3", + "node-fetch": "^2.3.0", "resolve-url": "^0.2.1", "tesseract.js-core": "^2.0.0-beta.5", "tesseract.js-utils": "^1.0.0-beta.2" diff --git a/scripts/dist/tesseract.min.js b/scripts/dist/tesseract.min.js deleted file mode 100644 index f8ffa79..0000000 --- a/scripts/dist/tesseract.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Tesseract=t():e.Tesseract=t()}(window,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){const r=n(3),o={corePath:`https://cdn.jsdelivr.net/gh/naptha/tesseract.js-core@v2.0.0-beta.5/tesseract-core${"object"==typeof WebAssembly?"":".asm"}.js`,langPath:"https://cdn.jsdelivr.net/gh/naptha/tessdata@gh-pages/4.0.0/"};{const{version:e}=n(4);o.workerPath=`https://cdn.jsdelivr.net/gh/naptha/tesseract.js@${e}/dist/worker.js`}t.defaultOptions=o,t.spawnWorker=((e,t)=>{let n;if(window.Blob&&window.URL){const e=new Blob([`importScripts("${t.workerPath}");`]);n=new Worker(window.URL.createObjectURL(e))}else n=new Worker(t.workerPath);return n.onmessage=(({data:t})=>{e._recv(t)}),n}),t.terminateWorker=(e=>{e.worker.terminate()}),t.sendPacket=((e,t)=>{(e=>r(e)?fetch(e).then(e=>e.arrayBuffer()):new Promise)(t.payload.image).then(e=>new Uint8Array(e)).then(n=>{e.worker.postMessage({...t,payload:{...t.payload,image:Array.from(n)}})})})},function(e,t,n){const r=n(2),o=n(0),s=n(5),i=n(6);e.exports={TesseractWorker:class{constructor(e={}){this.worker=null,this.workerOptions=Object.assign({},o.defaultOptions,e),this._currentJob=null,this._queue=[]}recognize(e,t={lang:"eng"}){return this._delay(n=>{n._send("recognize",{image:e,options:r.string(t)?{lang:t||"eng"}:t,workerOptions:this.workerOptions})})}detect(e,t={}){return this._delay(n=>{n._send("detect",{image:e,options:t,workerOptions:this.workerOptions})})}terminate(){this.worker&&o.terminateWorker(this),this.worker=null,this._currentJob=null,this._queue=[]}_delay(e){r.null(this.worker)&&(this.worker=o.spawnWorker(this,this.workerOptions));const t=new i(this);return this._queue.push(()=>{this._queue.shift(),this._currentJob=t,e(t)}),r.null(this._currentJob)&&this._dequeue(),t}_dequeue(){this._currentJob=null,this._queue.length&&this._queue[0]()}_recv(e){this._currentJob.id===e.jobId?this._currentJob._handle({...e,data:"resolve"===e.status&&"recognize"===e.action?s(e.data):e.data}):console.warn(`Job ID ${e.jobId} not known.`)}}}},function(e,t,n){var r;!function(o){"use strict";var s,i,u,a,c,f,l,p,h,b,d,y,g;function m(e){return null!=e}function v(e){return"number"==typeof e&&e>b&&et}function _(e,t){return v(e)&&e=t}function O(e,t){return v(e)&&e<=t}function E(e){return"string"==typeof e}function x(e){return E(e)&&""!==e}function P(e){return"[object Object]"===Object.prototype.toString.call(e)}function S(e,t){try{return e instanceof t}catch(e){return!1}}function I(e,t){var n;for(n in t)if(t.hasOwnProperty(n)){if(!1===e.hasOwnProperty(n)||typeof e[n]!=typeof t[n])return!1;if(P(e[n])&&!1===I(e[n],t[n]))return!1}return!0}function T(e){return y(e)}function q(e){return m(e)&&k(e.length,0)}function A(e){return"function"==typeof e}function J(e,t){var n;for(n=0;nn}},{n:"greaterOrEqual",f:k},{n:"lessOrEqual",f:O},{n:"inRange",f:function(e,t,n){if(t=n}},{n:"positive",f:function(e){return j(e,0)}},{n:"negative",f:function(e){return _(e,0)}},{n:"string",f:E,s:"s"},{n:"emptyString",f:function(e){return""===e},s:"s"},{n:"nonEmptyString",f:x,s:"s"},{n:"contains",f:function(e,t){return E(e)&&-1!==e.indexOf(t)},s:"s"},{n:"match",f:function(e,t){return E(e)&&!!e.match(t)},s:"s"},{n:"boolean",f:function(e){return!1===e||!0===e},s:"b"},{n:"object",f:P,s:"o"},{n:"emptyObject",f:function(e){return P(e)&&0===Object.keys(e).length},s:"o"},{n:"nonEmptyObject",f:function(e){return P(e)&&Object.keys(e).length>0},s:"o"},{n:"instanceStrict",f:S,s:"t"},{n:"instance",f:function(e,t){try{return S(e,t)||e.constructor.name===t.name||Object.prototype.toString.call(e)==="[object "+t.name+"]"}catch(e){return!1}},s:"t"},{n:"like",f:I,s:"t"},{n:"array",f:T,s:"a"},{n:"emptyArray",f:function(e){return T(e)&&0===e.length},s:"a"},{n:"nonEmptyArray",f:function(e){return T(e)&&j(e.length,0)},s:"a"},{n:"arrayLike",f:q,s:"al"},{n:"iterable",f:function(e){if(!g)return q(e);return m(e)&&A(e[Symbol.iterator])},s:"i"},{n:"date",f:function(e){return S(e,Date)&&w(e.getTime())},s:"d"},{n:"function",f:A,s:"f"},{n:"hasLength",f:function(e,t){return m(e)&&e.length===t},s:"l"}].map(function(e){var t=e.n;i[t]="Invalid "+s[e.s||"n"],u[t]=e.f}),a={apply:function(e,t){if(c.array(e),A(t))return e.map(function(e){return t(e)});return c.array(t),c.hasLength(e,t.length),e.map(function(e,n){return t[n](e)})},map:function(e,t){if(c.object(e),A(t))return function(e,t){var n={};return Object.keys(e).forEach(function(r){n[r]=t(e[r])}),n}(e,t);return c.object(t),function e(t,n){var r={};return Object.keys(n).forEach(function(o){var s=n[o];A(s)?f.assigned(t)?r[o]=!!s.m:r[o]=s(t[o]):P(s)&&(r[o]=e(t[o],s))}),r}(e,t)},all:function(e){if(T(e))return J(e,!1);return c.object(e),N(e,!1)},any:function(e){if(T(e))return J(e,!0);return c.object(e),N(e,!0)}},p=["array","arrayLike","iterable","object"],h=Array.prototype.slice,b=Number.NEGATIVE_INFINITY,d=Number.POSITIVE_INFINITY,y=Array.isArray,g="function"==typeof Symbol,a=M(a,u),c=z(W,L),f=z($,D),l=z(function(e){var t=function(){return!!f.assigned(arguments[0])||e.apply(null,arguments)};return t.l=e.length,t.m=!0,t},function(e){if(!1===m(e))return!0;return e}),c.not=V(W,f),c.maybe=V(W,l),p.forEach(function(e){u[e].of=U([R.bind(null,null),u[e],u,null])}),B(c,W),B(f,$),p.forEach(function(e){l[e].of=U([R.bind(null,"maybe"),u[e],u,null]),c.maybe[e].of=V(W,l[e].of),c.not[e].of=V(W,f[e].of)}),function(o){void 0===(r=function(){return o}.call(t,n,t,e))||(e.exports=r)}(M(a,{assert:c,not:f,maybe:l}))}()},function(e,t){e.exports=function(e){return n.test(e)};var n=/^(?:\w+:)?\/\/([^\s\.]+\.\S{2}|localhost[\:?\d]*)\S*$/},function(e){e.exports={name:"tesseract.js",version:"1.0.13",description:"Pure Javascript Multilingual OCR",main:"src/index.js",scripts:{start:'concurrently --kill-others "watchify src/index.js -t [ envify --NODE_ENV development ] -t [ babelify --presets [ es2015 ] ] -o dist/tesseract.dev.js --standalone Tesseract" "watchify src/browser/worker.js -t [ envify --NODE_ENV development ] -t [ babelify --presets [ es2015 ] ] -o dist/worker.dev.js" "http-server -p 7355"',build:"webpack --config scripts/webpack.config.prod.js",prepublishOnly:"npm run build",lint:"eslint src"},browser:{"./src/node/index.js":"./src/browser/index.js"},author:"",contributors:["jeromewu"],license:"Apache-2.0",devDependencies:{eslint:"^5.9.0","eslint-config-airbnb":"^17.1.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-react":"^7.11.1",express:"^4.16.4",webpack:"^4.26.0","webpack-cli":"^3.1.2","webpack-dev-middleware":"^3.4.0"},dependencies:{"check-types":"^7.4.0","is-url":"1.2.2","node-fetch":"^1.7.3","tesseract.js-core":"^2.0.0-beta.4","tesseract.js-utils":"^1.0.0-beta.1"},repository:{type:"git",url:"https://github.com/naptha/tesseract.js.git"},bugs:{url:"https://github.com/naptha/tesseract.js/issues"},homepage:"https://github.com/naptha/tesseract.js"}},function(e,t){e.exports=(e=>{const t={...e,paragraphs:[],lines:[],words:[],symbols:[]};return t.blocks.forEach(e=>{const n={...e,page:t,lines:[],words:[],symbols:[]};n.paragraphs.forEach(e=>{const r={...e,block:n,page:t,words:[],symbols:[]};r.lines.forEach(e=>{const o={...e,paragraph:r,block:n,page:t,symbols:[]};o.words.forEach(e=>{const s={...e,line:o,paragraph:r,block:n,page:t};s.symbols.forEach(e=>{const i={...e,word:s,line:o,paragraph:r,block:n,page:t};i.line.symbols.push(i),i.paragraph.symbols.push(i),i.block.symbols.push(i),i.page.symbols.push(i)}),s.paragraph.words.push(s),s.block.words.push(s),s.page.words.push(s)}),o.block.lines.push(o),o.page.lines.push(o)}),r.page.paragraphs.push(r)})}),t})},function(e,t,n){const r=n(0);let o=0;e.exports=class{constructor(e){o+=1,this.id=`Job-${o}-${Math.random().toString(16).slice(3,8)}`,this._instance=e,this._resolve=[],this._reject=[],this._progress=[],this._finally=[]}then(e,t){return this._resolve.push?this._resolve.push(e):e(this._resolve),t&&this.catch(t),this}catch(e){return this._reject.push?this._reject.push(e):e(this._reject),this}progress(e){return this._progress.push(e),this}finally(e){return this._finally.push(e),this}_send(e,t){r.sendPacket(this._instance,{jobId:this.id,action:e,payload:t})}_handle(e){const{data:t}=e;let n=!1;"resolve"===e.status?(0===this._resolve.length&&console.log(t),this._resolve.forEach(e=>{const n=e(t);n&&"function"==typeof n.then&&console.warn("TesseractJob instances do not chain like ES6 Promises. To convert it into a real promise, use Promise.resolve.")}),this._resolve=t,this._instance._dequeue(),n=!0):"reject"===e.status?(0===this._reject.length&&console.error(t),this._reject.forEach(e=>e(t)),this._reject=t,this._instance._dequeue(),n=!0):"progress"===e.status?this._progress.forEach(e=>e(t)):console.warn("Message type unknown",e.status),n&&this._finally.forEach(e=>e(t))}}}])}); -//# sourceMappingURL=tesseract.min.js.map \ No newline at end of file diff --git a/scripts/dist/tesseract.min.js.map b/scripts/dist/tesseract.min.js.map deleted file mode 100644 index a183153..0000000 --- a/scripts/dist/tesseract.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://Tesseract/webpack/universalModuleDefinition","webpack://Tesseract/webpack/bootstrap","webpack://Tesseract/./src/browser/index.js","webpack://Tesseract/./src/index.js","webpack://Tesseract/./node_modules/check-types/src/check-types.js","webpack://Tesseract/./node_modules/is-url/index.js","webpack://Tesseract/./src/common/circularize.js","webpack://Tesseract/./src/common/job.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isURL","defaultOptions","corePath","WebAssembly","langPath","version","workerPath","spawnWorker","instance","workerOptions","worker","Blob","URL","blob","Worker","createObjectURL","onmessage","data","_recv","terminateWorker","terminate","sendPacket","packet","imageURI","fetch","then","resp","arrayBuffer","Promise","loadImage","payload","image","buf","Uint8Array","img","postMessage","Array","from","check","adapter","circularize","TesseractJob","TesseractWorker","[object Object]","this","assign","_currentJob","_queue","options","lang","_delay","job","_send","string","fn","null","push","shift","_dequeue","length","id","jobId","_handle","status","action","console","warn","__WEBPACK_AMD_DEFINE_RESULT__","globals","strings","messages","predicates","functions","assert","not","maybe","collections","slice","neginf","posinf","isArray","haveSymbols","assigned","number","integer","greater","lhs","rhs","less","greaterOrEqual","lessOrEqual","nonEmptyString","toString","instanceStrict","error","like","archetype","array","arrayLike","isFunction","testArray","result","testObject","mixin","target","source","keys","forEach","assertModifier","predicate","defaultMessage","args","argCount","message","ErrorType","assertImpl","apply","TypeError","assertPredicate","arguments","Error","notModifier","modifiedPredicate","notImpl","ofModifier","type","collection","map","coerceCollection","item","concat","ignore","createModifiedPredicates","modifier","createModifiedFunctions","pop","configurable","writable","createModifiedModifier","modified","createOfModifiers","base","of","v","b","a","al","f","undefined","iterator","iteration","values","next","done","x","y","substring","indexOf","regex","match","constructor","Date","getTime","hasLength","index","mapSimple","mapComplex","all","any","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","exportFunctions","matcher","test","iPage","page","paragraphs","lines","words","symbols","blocks","iBlock","block","iPara","para","iLine","line","paragraph","iWord","word","iSym","sym","jobCounter","Math","random","_instance","_resolve","_reject","_progress","_finally","resolve","reject","catch","runFinallyCbs","log","ret"],"mappings":"CAAA,SAAAA,EAAAC,GACA,iBAAAC,SAAA,iBAAAC,OACAA,OAAAD,QAAAD,IACA,mBAAAG,eAAAC,IACAD,OAAA,GAAAH,GACA,iBAAAC,QACAA,QAAA,UAAAD,IAEAD,EAAA,UAAAC,IARA,CASCK,OAAA,WACD,mBCTA,IAAAC,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAP,QAGA,IAAAC,EAAAI,EAAAE,GAAA,CACAC,EAAAD,EACAE,GAAA,EACAT,QAAA,IAUA,OANAU,EAAAH,GAAAI,KAAAV,EAAAD,QAAAC,IAAAD,QAAAM,GAGAL,EAAAQ,GAAA,EAGAR,EAAAD,QA0DA,OArDAM,EAAAM,EAAAF,EAGAJ,EAAAO,EAAAR,EAGAC,EAAAQ,EAAA,SAAAd,EAAAe,EAAAC,GACAV,EAAAW,EAAAjB,EAAAe,IACAG,OAAAC,eAAAnB,EAAAe,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CV,EAAAgB,EAAA,SAAAtB,GACA,oBAAAuB,eAAAC,aACAN,OAAAC,eAAAnB,EAAAuB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAnB,EAAA,cAAiDyB,OAAA,KAQjDnB,EAAAoB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAAnB,EAAAmB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFAxB,EAAAgB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAAnB,EAAAQ,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAvB,EAAA2B,EAAA,SAAAhC,GACA,IAAAe,EAAAf,KAAA2B,WACA,WAA2B,OAAA3B,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAK,EAAAQ,EAAAE,EAAA,IAAAA,GACAA,GAIAV,EAAAW,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD7B,EAAAgC,EAAA,GAIAhC,IAAAiC,EAAA,qBClFA,MAAAC,EAAclC,EAAQ,GAEtBmC,EAAA,CAEAC,6FAAgG,iBAAAC,YAAA,eAChGC,SAAA,+DAQC,CACD,MAAAC,QAASA,GAAavC,EAAQ,GAC9BmC,EAAAK,8DAAiFD,mBAWjF7C,EAAAyC,iBAEAzC,EAAA+C,YAAA,EAAAC,EAAAC,KACA,IAAAC,EACA,GAAA9C,OAAA+C,MAAA/C,OAAAgD,IAAA,CACA,MAAAC,EAAA,IAAAF,KAAA,mBAA6CF,EAAAH,kBAC7CI,EAAA,IAAAI,OAAAlD,OAAAgD,IAAAG,gBAAAF,SAEAH,EAAA,IAAAI,OAAAL,EAAAH,YAOA,OAJAI,EAAAM,UAAA,GAAuBC,WACvBT,EAAAU,MAAAD,KAGAP,IAGAlD,EAAA2D,gBAAA,CAAAX,IACAA,EAAAE,OAAAU,cAGA5D,EAAA6D,WAAA,EAAAb,EAAAc,KA9BA,CAAAC,GACAvB,EAAAuB,GACAC,MAAAD,GACAE,KAAAC,KAAAC,eAEA,IAAAC,QA0BAC,CAAAP,EAAAQ,QAAAC,OACAN,KAAAO,GAAA,IAAAC,WAAAD,IACAP,KAAAS,IACA1B,EAAAE,OAAAyB,YAAA,IACAb,EACAQ,QAAA,IACAR,EAAAQ,QACAC,MAAAK,MAAAC,KAAAH,2BCxDA,MAAAI,EAAcxE,EAAQ,GACtByE,EAAgBzE,EAAQ,GACxB0E,EAAoB1E,EAAQ,GAC5B2E,EAAqB3E,EAAQ,GAqF7BL,EAAAD,QAAA,CACAkF,gBApFA,MACAC,YAAAlC,EAAA,IACAmC,KAAAlC,OAAA,KACAkC,KAAAnC,cAAA/B,OAAAmE,OAAA,GAAyCN,EAAAtC,eAAAQ,GACzCmC,KAAAE,YAAA,KACAF,KAAAG,OAAA,GAGAJ,UAAAZ,EAAAiB,EAAA,CAA8BC,KAAA,QAC9B,OAAAL,KAAAM,OAAAC,IACAA,EAAAC,MACA,YACA,CACArB,QACAiB,QAAAV,EAAAe,OAAAL,GACA,CAAeC,KAAAD,GAAA,OACfA,EACAvC,cAAAmC,KAAAnC,kBAMAkC,OAAAZ,EAAAiB,EAAA,IACA,OAAAJ,KAAAM,OAAAC,IACAA,EAAAC,MACA,SACA,CACArB,QACAiB,UACAvC,cAAAmC,KAAAnC,kBAMAkC,YACAC,KAAAlC,QACA6B,EAAApB,gBAAAyB,MAEAA,KAAAlC,OAAA,KACAkC,KAAAE,YAAA,KACAF,KAAAG,OAAA,GAGAJ,OAAAW,GACAhB,EAAAiB,KAAAX,KAAAlC,UACAkC,KAAAlC,OAAA6B,EAAAhC,YAAAqC,UAAAnC,gBAGA,MAAA0C,EAAA,IAAAV,EAAAG,MASA,OARAA,KAAAG,OAAAS,KAAA,KACAZ,KAAAG,OAAAU,QACAb,KAAAE,YAAAK,EACAG,EAAAH,KAEAb,EAAAiB,KAAAX,KAAAE,cACAF,KAAAc,WAEAP,EAGAR,WACAC,KAAAE,YAAA,KACAF,KAAAG,OAAAY,QACAf,KAAAG,OAAA,KAIAJ,MAAArB,GACAsB,KAAAE,YAAAc,KAAAtC,EAAAuC,MACAjB,KAAAE,YAAAgB,QAAA,IACAxC,EACAL,KAAA,YAAAK,EAAAyC,QAAA,cAAAzC,EAAA0C,OACAxB,EAAAlB,EAAAL,MACAK,EAAAL,OAGAgD,QAAAC,eAA6B5C,EAAAuC,wCCnF7B,IAAAM,GAGA,SAAAC,GACA,aAEA,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAoIA,SAAAC,EAAAjE,GACA,OAAAA,QA8CA,SAAAkE,EAAAlE,GACA,uBAAAA,KAAA6D,GAAA7D,EAAA8D,EAQA,SAAAK,EAAAnE,GACA,uBAAAA,KAAA,KA0BA,SAAAoE,EAAAC,EAAAC,GACA,OAAAJ,EAAAG,MAAAC,EAQA,SAAAC,EAAAF,EAAAC,GACA,OAAAJ,EAAAG,MAAAC,EAsBA,SAAAE,EAAAH,EAAAC,GACA,OAAAJ,EAAAG,OAAAC,EASA,SAAAG,EAAAJ,EAAAC,GACA,OAAAJ,EAAAG,OAAAC,EAuCA,SAAAlC,EAAApC,GACA,uBAAAA,EAiBA,SAAA0E,EAAA1E,GACA,OAAAoC,EAAApC,IAAA,KAAAA,EAoCA,SAAAvB,EAAAuB,GACA,0BAAAvC,OAAAkB,UAAAgG,SAAAzH,KAAA8C,GA0BA,SAAA4E,EAAA5E,EAAArB,GACA,IACA,OAAAqB,aAAArB,EACK,MAAAkG,GACL,UA2BA,SAAAC,EAAA9E,EAAA+E,GACA,IAAAzH,EAEA,IAAAA,KAAAyH,EACA,GAAAA,EAAAnG,eAAAtB,GAAA,CACA,QAAA0C,EAAApB,eAAAtB,WAAA0C,EAAA1C,WAAAyH,EAAAzH,GACA,SAGA,GAAAmB,EAAAuB,EAAA1C,MAAA,IAAAwH,EAAA9E,EAAA1C,GAAAyH,EAAAzH,IACA,SAKA,SAQA,SAAA0H,EAAAhF,GACA,OAAA+D,EAAA/D,GA0BA,SAAAiF,EAAAjF,GACA,OAAAiE,EAAAjE,IAAAwE,EAAAxE,EAAA0C,OAAA,GA8EA,SAAAwC,EAAAlF,GACA,yBAAAA,EAiGA,SAAAmF,EAAAnF,EAAAoF,GACA,IAAArI,EAEA,IAAAA,EAAA,EAAeA,EAAAiD,EAAA0C,OAAiB3F,GAAA,EAChC,GAAAiD,EAAAjD,KAAAqI,EACA,OAAAA,EAIA,OAAAA,EAGA,SAAAC,EAAArF,EAAAoF,GACA,IAAA9G,EAAAN,EAEA,IAAAM,KAAA0B,EACA,GAAAA,EAAApB,eAAAN,GAAA,CAGA,GAAAG,EAFAT,EAAAgC,EAAA1B,KAEA+G,EAAArH,EAAAoH,OACA,OAAAA,EAGA,GAAApH,IAAAoH,EACA,OAAAA,EAKA,OAAAA,EAqBA,SAAAE,EAAAC,EAAAC,GAKA,OAJA/H,OAAAgI,KAAAD,GAAAE,QAAA,SAAApH,GACAiH,EAAAjH,GAAAkH,EAAAlH,KAGAiH,EAQA,SAAAI,EAAAC,EAAAC,GACA,kBACA,OAIA,SAAAD,EAAAE,EAAAD,GACA,IAAAE,EAAAH,EAAA5I,GAAA4I,EAAAlD,OACAsD,EAAAF,EAAAC,GACAE,EAAAH,EAAAC,EAAA,GAMA,OALAG,EACAN,EAAAO,MAAA,KAAAL,GACApB,EAAAsB,KAAAH,EACAX,EAAAe,KAAAG,WAEAN,EAAA,GAbAO,CAAAT,EAAAU,UAAAT,IAgBA,SAAAK,EAAAlI,EAAAgI,EAAAC,GACA,GAAAjI,EACA,OAAAA,EAEA,UAAAiI,GAAAM,OAAAP,GAAA,oBAQA,SAAAQ,EAAAZ,GACA,IAAAa,EAAA,WACA,OAAAC,EAAAd,EAAAO,MAAA,KAAAG,aAGA,OADAG,EAAAzJ,EAAA4I,EAAAlD,OACA+D,EAGA,SAAAC,EAAA1I,GACA,OAAAA,EAyCA,SAAA2I,EAAApB,EAAAqB,EAAAhB,GACA,IAAAa,EAAA,WACA,IAAAI,EAAAf,EAIA,GAFAe,EAAAP,UAAA,GAEA,UAAAf,GAAA9B,EAAAQ,SAAA4C,GACA,SAGA,IAAAD,EAAAC,GACA,SAGAA,EAuBA,SAAAD,EAAAC,GACA,OAAAD,GACA,KAAA3B,EACA,OAAArB,EAAA1G,KAAA2J,GACA,KAAApI,EACA,OAAAhB,OAAAgI,KAAAoB,GAAAC,IAAA,SAAAxI,GACA,OAAAuI,EAAAvI,KAEA,QACA,OAAAuI,GAhCAE,CAAAH,EAAAC,GACAf,EAAAlC,EAAA1G,KAAAoJ,UAAA,GAEA,IACAO,EAAAnB,QAAA,SAAAsB,GACA,IACA,UAAAzB,GAAAtB,EAAA+C,MACApB,EAAAO,MAAA,MAAAa,GAAAC,OAAAnB,IAGA,UAGO,MAAAoB,GACP,SAGA,UAGA,OADAT,EAAAzJ,EAAA4I,EAAAlD,OACA+D,EAgBA,SAAAU,EAAAC,EAAA3I,GACA,OAAA4I,EAAA,CAAAD,EAAA9D,EAAA7E,IAGA,SAAA4I,EAAAvB,GACA,IAAAsB,EAAA3I,EAAA8E,EAAA6B,EAiBA,OAfAgC,EAAAtB,EAAAtD,QACA/D,EAAAqH,EAAAwB,MACA/D,EAAAuC,EAAAwB,MAEAlC,EAAA3G,GAAA,GAEAhB,OAAAgI,KAAAlC,GAAAmC,QAAA,SAAApH,GACAb,OAAAC,eAAA0H,EAAA9G,EAAA,CACAiJ,cAAA,EACA5J,YAAA,EACA6J,UAAA,EACAxJ,MAAAoJ,EAAAjB,MAAA,KAAAL,EAAAmB,OAAA1D,EAAAjF,GAAA+E,EAAA/E,SAIA8G,EAGA,SAAAqC,EAAAL,EAAAM,GACA,OAAAL,EAAA,CAAAD,EAAAM,EAAA,OASA,SAAAC,EAAAC,EAAAR,GACAzD,EAAA+B,QAAA,SAAApH,GACAsJ,EAAAtJ,GAAAuJ,GAAAJ,EAAAL,EAAA9D,EAAAhF,GAAAuJ,MAj2BAzE,EAAA,CACA0E,EAAA,QACAtJ,EAAA,SACAM,EAAA,SACAiJ,EAAA,UACAvK,EAAA,SACAS,EAAA,OACA+J,EAAA,QACAC,GAAA,aACAlL,EAAA,WACAM,EAAA,OACA6K,EAAA,WACAlL,EAAA,UAGAqG,EAAA,GACAC,EAAA,GAEA,CACA,CAAK9E,EAAA,QAAA0J,EAoFL,SAAA7D,EAAAC,GACA,OAAAD,IAAAC,GArFKxF,EAAA,KACL,CAAKN,EAAA,YAAA0J,EA4FL,SAAAlI,GACA,YAAAmI,IAAAnI,GA7FKlB,EAAA,KACL,CAAKN,EAAA,OAAA0J,EAoGL,SAAAlI,GACA,cAAAA,GArGKlB,EAAA,KACL,CAAKN,EAAA,WAAA0J,EAAAjE,EAAAnF,EAAA,KACL,CAAKN,EAAA,YAAA0J,EAoHL,SAAAlI,GACA,IAAA4G,EAEA,OAAA5G,GACA,UACA,UAAAmI,EACA,OACA,OACA,SAIA,iBADAvB,SAAA5G,IACA,WAAA4G,GAAA5C,GAAA,WAAA4C,GAhIK9H,EAAA,KACL,CAAKN,EAAA,WAAA0J,EAycL,SAAAlI,EAAAhC,GACA,IAAAoK,EAAAC,EAAA5C,EAAA/C,EAAA3F,EAEA,IAAAkH,EAAAjE,GACA,SAGA,GAAAgE,GAAAhE,EAAAlC,OAAAsK,WAAAlD,EAAAlF,EAAAsI,QAAA,CACAF,EAAApI,EAAAsI,SAEA,GAGA,IAFAD,EAAAD,EAAAG,QAEAvK,UACA,gBAEOqK,EAAAG,MAEP,SAKA,IAFA/C,EAAAhI,OAAAgI,KAAAzF,GACA0C,EAAA+C,EAAA/C,OACA3F,EAAA,EAAeA,EAAA2F,IAAY3F,EAC3B,GAAAiD,EAAAyF,EAAA1I,MAAAiB,EACA,SAIA,UAteKc,EAAA,KACL,CAAKN,EAAA,OAAA0J,EAsIL,SAAAlI,GACA,WAAAA,IAtIA,CAAKxB,EAAA,WAAA0J,EA8IL,SAAAlI,GACA,OAAAA,IAAA6D,GAAA7D,IAAA8D,IA9IA,CAAKtF,EAAA,SAAA0J,EAAAhE,GACL,CAAK1F,EAAA,UAAA0J,EAAA/D,GACL,CAAK3F,EAAA,OAAA0J,EAsKL,SAAAlI,GACA,uBAAAA,KAAA,OAtKA,CAAKxB,EAAA,MAAA0J,EA8KL,SAAAlI,GACA,OAAAmE,EAAAnE,MAAA,OA9KA,CAAKxB,EAAA,UAAA0J,EAAA9D,GACL,CAAK5F,EAAA,OAAA0J,EAAA3D,GACL,CAAK/F,EAAA,UAAA0J,EAsML,SAAAlI,EAAAyI,EAAAC,GACA,GAAAD,EAAAC,EACA,OAAAtE,EAAApE,EAAAyI,IAAAzI,EAAA0I,EAGA,OAAAnE,EAAAvE,EAAAyI,IAAAzI,EAAA0I,IA1MA,CAAKlK,EAAA,iBAAA0J,EAAA1D,GACL,CAAKhG,EAAA,cAAA0J,EAAAzD,GACL,CAAKjG,EAAA,UAAA0J,EAoOL,SAAAlI,EAAAyI,EAAAC,GACA,GAAAD,EAAAC,EACA,OAAAlE,EAAAxE,EAAAyI,IAAAzI,GAAA0I,EAGA,OAAAjE,EAAAzE,EAAAyI,IAAAzI,GAAA0I,IAxOA,CAAKlK,EAAA,WAAA0J,EAgPL,SAAAlI,GACA,OAAAoE,EAAApE,EAAA,KAhPA,CAAKxB,EAAA,WAAA0J,EAwPL,SAAAlI,GACA,OAAAuE,EAAAvE,EAAA,KAxPA,CAAKxB,EAAA,SAAA0J,EAAA9F,EAAAtD,EAAA,KACL,CAAKN,EAAA,cAAA0J,EAwQL,SAAAlI,GACA,WAAAA,GAzQKlB,EAAA,KACL,CAAKN,EAAA,iBAAA0J,EAAAxD,EAAA5F,EAAA,KACL,CAAKN,EAAA,WAAA0J,EAyRL,SAAAlI,EAAA2I,GACA,OAAAvG,EAAApC,KAAA,IAAAA,EAAA4I,QAAAD,IA1RK7J,EAAA,KACL,CAAKN,EAAA,QAAA0J,EAiSL,SAAAlI,EAAA6I,GACA,OAAAzG,EAAApC,QAAA8I,MAAAD,IAlSK/J,EAAA,KACL,CAAKN,EAAA,UAAA0J,EAySL,SAAAlI,GACA,WAAAA,IAAA,IAAAA,GA1SKlB,EAAA,KACL,CAAKN,EAAA,SAAA0J,EAAAzJ,EAAAK,EAAA,KACL,CAAKN,EAAA,cAAA0J,EAyTL,SAAAlI,GACA,OAAAvB,EAAAuB,IAAA,IAAAvC,OAAAgI,KAAAzF,GAAA0C,QA1TK5D,EAAA,KACL,CAAKN,EAAA,iBAAA0J,EAiUL,SAAAlI,GACA,OAAAvB,EAAAuB,IAAAvC,OAAAgI,KAAAzF,GAAA0C,OAAA,GAlUK5D,EAAA,KACL,CAAKN,EAAA,iBAAA0J,EAAAtD,EAAA9F,EAAA,KACL,CAAKN,EAAA,WAAA0J,EAuVL,SAAAlI,EAAArB,GACA,IACA,OAAAiG,EAAA5E,EAAArB,IACAqB,EAAA+I,YAAAzL,OAAAqB,EAAArB,MACAG,OAAAkB,UAAAgG,SAAAzH,KAAA8C,KAAA,WAAArB,EAAArB,KAAA,IACK,MAAAuH,GACL,WA7VK/F,EAAA,KACL,CAAKN,EAAA,OAAA0J,EAAApD,EAAAhG,EAAA,KACL,CAAKN,EAAA,QAAA0J,EAAAlD,EAAAlG,EAAA,KACL,CAAKN,EAAA,aAAA0J,EAoYL,SAAAlI,GACA,OAAAgF,EAAAhF,IAAA,IAAAA,EAAA0C,QArYK5D,EAAA,KACL,CAAKN,EAAA,gBAAA0J,EA4YL,SAAAlI,GACA,OAAAgF,EAAAhF,IAAAoE,EAAApE,EAAA0C,OAAA,IA7YK5D,EAAA,KACL,CAAKN,EAAA,YAAA0J,EAAAjD,EAAAnG,EAAA,MACL,CAAKN,EAAA,WAAA0J,EA4ZL,SAAAlI,GACA,IAAAgE,EAEA,OAAAiB,EAAAjF,GAGA,OAAAiE,EAAAjE,IAAAkF,EAAAlF,EAAAlC,OAAAsK,YAlaKtJ,EAAA,KACL,CAAKN,EAAA,OAAA0J,EAwdL,SAAAlI,GACA,OAAA4E,EAAA5E,EAAAgJ,OAAA7E,EAAAnE,EAAAiJ,YAzdKnK,EAAA,KACL,CAAKN,EAAA,WAAA0J,EAAAhD,EAAApG,EAAA,KACL,CAAKN,EAAA,YAAA0J,EA6cL,SAAAlI,EAAA0C,GACA,OAAAuB,EAAAjE,MAAA0C,YA9cK5D,EAAA,MACLgI,IAAA,SAAA9G,GACA,IAAAxB,EAAAwB,EAAAxB,EACA6E,EAAA7E,GAAA,WAAA4E,EAAApD,EAAAlB,GAAA,KACAwE,EAAA9E,GAAAwB,EAAAkI,IAGA3E,EAAA,CACA4C,MAmeA,SAAAnG,EAAAsD,GAGA,GAFAE,EAAAwB,MAAAhF,GAEAkF,EAAA5B,GACA,OAAAtD,EAAA8G,IAAA,SAAA9I,GACA,OAAAsF,EAAAtF,KAOA,OAHAwF,EAAAwB,MAAA1B,GACAE,EAAA0F,UAAAlJ,EAAAsD,EAAAZ,QAEA1C,EAAA8G,IAAA,SAAA9I,EAAAmL,GACA,OAAA7F,EAAA6F,GAAAnL,MA/eA8I,IA4fA,SAAA9G,EAAAsD,GAGA,GAFAE,EAAA/E,OAAAuB,GAEAkF,EAAA5B,GACA,OAQA,SAAAtD,EAAA4F,GACA,IAAAR,EAAA,GAMA,OAJA3H,OAAAgI,KAAAzF,GAAA0F,QAAA,SAAApH,GACA8G,EAAA9G,GAAAsH,EAAA5F,EAAA1B,MAGA8G,EAfAgE,CAAApJ,EAAAsD,GAKA,OAFAE,EAAA/E,OAAA6E,GAeA,SAAA+F,EAAArJ,EAAAsD,GACA,IAAA8B,EAAA,GAgBA,OAdA3H,OAAAgI,KAAAnC,GAAAoC,QAAA,SAAApH,GACA,IAAAsH,EAAAtC,EAAAhF,GAEA4G,EAAAU,GACAnC,EAAAQ,SAAAjE,GACAoF,EAAA9G,KAAAsH,EAAAzI,EAEAiI,EAAA9G,GAAAsH,EAAA5F,EAAA1B,IAEOG,EAAAmH,KACPR,EAAA9G,GAAA+K,EAAArJ,EAAA1B,GAAAsH,MAIAR,EA9BAiE,CAAArJ,EAAAsD,IApgBAgG,IA6iBA,SAAAtJ,GACA,GAAAgF,EAAAhF,GACA,OAAAmF,EAAAnF,GAAA,GAKA,OAFAwD,EAAA/E,OAAAuB,GAEAqF,EAAArF,GAAA,IAnjBAuJ,IA8lBA,SAAAvJ,GACA,GAAAgF,EAAAhF,GACA,OAAAmF,EAAAnF,GAAA,GAKA,OAFAwD,EAAA/E,OAAAuB,GAEAqF,EAAArF,GAAA,KAlmBA2D,EAAA,0CACAC,EAAAzC,MAAAxC,UAAAiF,MACAC,EAAA2F,OAAAC,kBACA3F,EAAA0F,OAAAE,kBACA3F,EAAA5C,MAAA4C,QACAC,EAAA,mBAAAlG,OAEAyF,EAAA+B,EAAA/B,EAAAD,GACAE,EAAA2D,EAAAxB,EAAAO,GACAzC,EAAA0D,EAAAX,EAAAE,GACAhD,EAAAyD,EAwpBA,SAAAvB,GACA,IAAAa,EAAA,WACA,QAAAhD,EAAAQ,SAAAqC,UAAA,KAIAV,EAAAO,MAAA,KAAAG,YAUA,OARAG,EAAAzJ,EAAA4I,EAAAlD,OAMA+D,EAAAtJ,GAAA,EAEAsJ,GAGA,SAAAzI,GACA,QAAAiG,EAAAjG,GACA,SAGA,OAAAA,IA/qBAwF,EAAAC,IAAAgE,EAAA9B,EAAAlC,GACAD,EAAAE,MAAA+D,EAAA9B,EAAAjC,GAEAC,EAAA+B,QAmwBA,SAAApH,GACAgF,EAAAhF,GAAAuJ,GAAAR,EACA,CAAAV,EAAApI,KAAA,WAAA+E,EAAAhF,GAAAgF,EAAA,SApwBAqE,EAAAnE,EAAAmC,GACAgC,EAAAlE,EAAA+C,GACA7C,EAAA+B,QA4wBA,SAAApH,GACAoF,EAAApF,GAAAuJ,GAAAR,EACA,CAAAV,EAAApI,KAAA,cAAA+E,EAAAhF,GAAAgF,EAAA,OAEAE,EAAAE,MAAApF,GAAAuJ,GAAAJ,EAAA9B,EAAAjC,EAAApF,GAAAuJ,IACArE,EAAAC,IAAAnF,GAAAuJ,GAAAJ,EAAA9B,EAAAlC,EAAAnF,GAAAuJ,MAGA,SAAAtE,QAIO4E,KAFDjF,EAAA,WACN,OAAAK,GACOrG,KAAAX,EAAAM,EAAAN,EAAAC,QAAAD,QAAA2G,GAtxBPyG,CAAArE,EAAA/B,EAAA,CACAC,SACAC,MACAC,WApGA,kBCEAlH,EAAAD,QAeA,SAAA6F,GACA,OAAAwH,EAAAC,KAAAzH,IAVA,IAAAwH,EAAA,00CCJApN,EAAAD,QAAA,CAAAuN,IACA,MAAAC,EAAA,IACAD,EACAE,WAAA,GACAC,MAAA,GACAC,MAAA,GACAC,QAAA,IAgEA,OA7DAJ,EAAAK,OAAA1E,QAAA2E,IACA,MAAAC,EAAA,IACAD,EACAN,OACAE,MAAA,GACAC,MAAA,GACAC,QAAA,IAGAG,EAAAN,WAAAtE,QAAA6E,IACA,MAAAC,EAAA,IACAD,EACAD,QACAP,OACAG,MAAA,GACAC,QAAA,IAGAK,EAAAP,MAAAvE,QAAA+E,IACA,MAAAC,EAAA,IACAD,EACAE,UAAAH,EACAF,QACAP,OACAI,QAAA,IAGAO,EAAAR,MAAAxE,QAAAkF,IACA,MAAAC,EAAA,IACAD,EACAF,OACAC,UAAAH,EACAF,QACAP,QAGAc,EAAAV,QAAAzE,QAAAoF,IACA,MAAAC,EAAA,IACAD,EACAD,OACAH,OACAC,UAAAH,EACAF,QACAP,QAGAgB,EAAAL,KAAAP,QAAA5H,KAAAwI,GACAA,EAAAJ,UAAAR,QAAA5H,KAAAwI,GACAA,EAAAT,MAAAH,QAAA5H,KAAAwI,GACAA,EAAAhB,KAAAI,QAAA5H,KAAAwI,KAEAF,EAAAF,UAAAT,MAAA3H,KAAAsI,GACAA,EAAAP,MAAAJ,MAAA3H,KAAAsI,GACAA,EAAAd,KAAAG,MAAA3H,KAAAsI,KAEAH,EAAAJ,MAAAL,MAAA1H,KAAAmI,GACAA,EAAAX,KAAAE,MAAA1H,KAAAmI,KAEAF,EAAAT,KAAAC,WAAAzH,KAAAiI,OAGAT,qBC7EA,MAAAzI,EAAgBzE,EAAQ,GAExB,IAAAmO,EAAA,EAEAxO,EAAAD,QAAA,MACAmF,YAAAnC,GACAyL,GAAA,EACArJ,KAAAgB,UAAqBqI,KAAcC,KAAAC,SAAAvG,SAAA,IAAAf,MAAA,OAEnCjC,KAAAwJ,UAAA5L,EACAoC,KAAAyJ,SAAA,GACAzJ,KAAA0J,QAAA,GACA1J,KAAA2J,UAAA,GACA3J,KAAA4J,SAAA,GAGA7J,KAAA8J,EAAAC,GAQA,OAPA9J,KAAAyJ,SAAA7I,KACAZ,KAAAyJ,SAAA7I,KAAAiJ,GAEAA,EAAA7J,KAAAyJ,UAGAK,GAAA9J,KAAA+J,MAAAD,GACA9J,KAGAD,MAAA+J,GAMA,OALA9J,KAAA0J,QAAA9I,KACAZ,KAAA0J,QAAA9I,KAAAkJ,GAEAA,EAAA9J,KAAA0J,SAEA1J,KAGAD,SAAAW,GAEA,OADAV,KAAA2J,UAAA/I,KAAAF,GACAV,KAGAD,QAAAW,GAEA,OADAV,KAAA4J,SAAAhJ,KAAAF,GACAV,KAGAD,MAAAqB,EAAAlC,GACAS,EAAAlB,WAAAuB,KAAAwJ,UAAA,CACAvI,MAAAjB,KAAAgB,GACAI,SACAlC,YAIAa,QAAArB,GACA,MAAAL,KAAWA,GAAOK,EAClB,IAAAsL,GAAA,EAEA,YAAAtL,EAAAyC,QACA,IAAAnB,KAAAyJ,SAAA1I,QAAAM,QAAA4I,IAAA5L,GACA2B,KAAAyJ,SAAA1F,QAAArD,IACA,MAAAwJ,EAAAxJ,EAAArC,GACA6L,GAAA,mBAAAA,EAAArL,MACAwC,QAAAC,KAAA,oHAGAtB,KAAAyJ,SAAApL,EACA2B,KAAAwJ,UAAA1I,WACAkJ,GAAA,GACK,WAAAtL,EAAAyC,QACL,IAAAnB,KAAA0J,QAAA3I,QAAAM,QAAA6B,MAAA7E,GACA2B,KAAA0J,QAAA3F,QAAArD,KAAArC,IACA2B,KAAA0J,QAAArL,EACA2B,KAAAwJ,UAAA1I,WACAkJ,GAAA,GACK,aAAAtL,EAAAyC,OACLnB,KAAA2J,UAAA5F,QAAArD,KAAArC,IAEAgD,QAAAC,KAAA,uBAAA5C,EAAAyC,QAGA6I,GACAhK,KAAA4J,SAAA7F,QAAArD,KAAArC","file":"tesseract.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Tesseract\"] = factory();\n\telse\n\t\troot[\"Tesseract\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","const isURL = require('is-url');\n\nconst defaultOptions = {\n // workerPath: 'https://cdn.jsdelivr.net/gh/naptha/tesseract.js@0.2.0/dist/worker.js',\n corePath: `https://cdn.jsdelivr.net/gh/naptha/tesseract.js-core@v2.0.0-beta.5/tesseract-core${typeof WebAssembly === 'object' ? '' : '.asm'}.js`,\n langPath: 'https://cdn.jsdelivr.net/gh/naptha/tessdata@gh-pages/4.0.0/',\n};\n\nif (process.env.NODE_ENV === 'development') {\n console.debug('Using Development Configuration');\n // eslint-disable-next-line\n const { protocol, host } = location;\n defaultOptions.workerPath = `${protocol}//${host}/dist/worker.dev.js?nocache=${Math.random().toString(36).slice(3)}`;\n} else {\n const { version } = require('../../package.json');\n defaultOptions.workerPath = `https://cdn.jsdelivr.net/gh/naptha/tesseract.js@${version}/dist/worker.js`;\n}\n\nconst loadImage = (imageURI) => {\n if (isURL(imageURI)) {\n return fetch(imageURI)\n .then(resp => resp.arrayBuffer());\n }\n return new Promise();\n};\n\nexports.defaultOptions = defaultOptions;\n\nexports.spawnWorker = (instance, workerOptions) => {\n let worker;\n if (window.Blob && window.URL) {\n const blob = new Blob([`importScripts(\"${workerOptions.workerPath}\");`]);\n worker = new Worker(window.URL.createObjectURL(blob));\n } else {\n worker = new Worker(workerOptions.workerPath);\n }\n\n worker.onmessage = ({ data }) => {\n instance._recv(data);\n };\n\n return worker;\n};\n\nexports.terminateWorker = (instance) => {\n instance.worker.terminate();\n};\n\nexports.sendPacket = (instance, packet) => {\n loadImage(packet.payload.image)\n .then(buf => new Uint8Array(buf))\n .then((img) => {\n instance.worker.postMessage({\n ...packet,\n payload: {\n ...packet.payload,\n image: Array.from(img),\n },\n });\n });\n};\n","const check = require('check-types');\nconst adapter = require('./node');\nconst circularize = require('./common/circularize');\nconst TesseractJob = require('./common/job');\n\nclass TesseractWorker {\n constructor(workerOptions = {}) {\n this.worker = null;\n this.workerOptions = Object.assign({}, adapter.defaultOptions, workerOptions);\n this._currentJob = null;\n this._queue = [];\n }\n\n recognize(image, options = { lang: 'eng' }) {\n return this._delay((job) => {\n job._send(\n 'recognize',\n {\n image,\n options: check.string(options)\n ? { lang: options || 'eng' }\n : options,\n workerOptions: this.workerOptions,\n },\n );\n });\n }\n\n detect(image, options = {}) {\n return this._delay((job) => {\n job._send(\n 'detect',\n {\n image,\n options,\n workerOptions: this.workerOptions,\n },\n );\n });\n }\n\n terminate() {\n if (this.worker) {\n adapter.terminateWorker(this);\n }\n this.worker = null;\n this._currentJob = null;\n this._queue = [];\n }\n\n _delay(fn) {\n if (check.null(this.worker)) {\n this.worker = adapter.spawnWorker(this, this.workerOptions);\n }\n\n const job = new TesseractJob(this);\n this._queue.push(() => {\n this._queue.shift();\n this._currentJob = job;\n fn(job);\n });\n if (check.null(this._currentJob)) {\n this._dequeue();\n }\n return job;\n }\n\n _dequeue() {\n this._currentJob = null;\n if (this._queue.length) {\n this._queue[0]();\n }\n }\n\n _recv(packet) {\n if (this._currentJob.id === packet.jobId) {\n this._currentJob._handle({\n ...packet,\n data: packet.status === 'resolve' && packet.action === 'recognize'\n ? circularize(packet.data)\n : packet.data,\n });\n } else {\n console.warn(`Job ID ${packet.jobId} not known.`);\n }\n }\n}\n\nmodule.exports = {\n TesseractWorker,\n};\n","/*globals define, module, Symbol */\n/*jshint -W056 */\n\n(function (globals) {\n 'use strict';\n\n var strings, messages, predicates, functions, assert, not, maybe,\n collections, slice, neginf, posinf, isArray, haveSymbols;\n\n strings = {\n v: 'value',\n n: 'number',\n s: 'string',\n b: 'boolean',\n o: 'object',\n t: 'type',\n a: 'array',\n al: 'array-like',\n i: 'iterable',\n d: 'date',\n f: 'function',\n l: 'length'\n };\n\n messages = {};\n predicates = {};\n\n [\n { n: 'equal', f: equal, s: 'v' },\n { n: 'undefined', f: isUndefined, s: 'v' },\n { n: 'null', f: isNull, s: 'v' },\n { n: 'assigned', f: assigned, s: 'v' },\n { n: 'primitive', f: primitive, s: 'v' },\n { n: 'includes', f: includes, s: 'v' },\n { n: 'zero', f: zero },\n { n: 'infinity', f: infinity },\n { n: 'number', f: number },\n { n: 'integer', f: integer },\n { n: 'even', f: even },\n { n: 'odd', f: odd },\n { n: 'greater', f: greater },\n { n: 'less', f: less },\n { n: 'between', f: between },\n { n: 'greaterOrEqual', f: greaterOrEqual },\n { n: 'lessOrEqual', f: lessOrEqual },\n { n: 'inRange', f: inRange },\n { n: 'positive', f: positive },\n { n: 'negative', f: negative },\n { n: 'string', f: string, s: 's' },\n { n: 'emptyString', f: emptyString, s: 's' },\n { n: 'nonEmptyString', f: nonEmptyString, s: 's' },\n { n: 'contains', f: contains, s: 's' },\n { n: 'match', f: match, s: 's' },\n { n: 'boolean', f: boolean, s: 'b' },\n { n: 'object', f: object, s: 'o' },\n { n: 'emptyObject', f: emptyObject, s: 'o' },\n { n: 'nonEmptyObject', f: nonEmptyObject, s: 'o' },\n { n: 'instanceStrict', f: instanceStrict, s: 't' },\n { n: 'instance', f: instance, s: 't' },\n { n: 'like', f: like, s: 't' },\n { n: 'array', f: array, s: 'a' },\n { n: 'emptyArray', f: emptyArray, s: 'a' },\n { n: 'nonEmptyArray', f: nonEmptyArray, s: 'a' },\n { n: 'arrayLike', f: arrayLike, s: 'al' },\n { n: 'iterable', f: iterable, s: 'i' },\n { n: 'date', f: date, s: 'd' },\n { n: 'function', f: isFunction, s: 'f' },\n { n: 'hasLength', f: hasLength, s: 'l' },\n ].map(function (data) {\n var n = data.n;\n messages[n] = 'Invalid ' + strings[data.s || 'n'];\n predicates[n] = data.f;\n });\n\n functions = {\n apply: apply,\n map: map,\n all: all,\n any: any\n };\n\n collections = [ 'array', 'arrayLike', 'iterable', 'object' ];\n slice = Array.prototype.slice;\n neginf = Number.NEGATIVE_INFINITY;\n posinf = Number.POSITIVE_INFINITY;\n isArray = Array.isArray;\n haveSymbols = typeof Symbol === 'function';\n\n functions = mixin(functions, predicates);\n assert = createModifiedPredicates(assertModifier, assertImpl);\n not = createModifiedPredicates(notModifier, notImpl);\n maybe = createModifiedPredicates(maybeModifier, maybeImpl);\n assert.not = createModifiedModifier(assertModifier, not);\n assert.maybe = createModifiedModifier(assertModifier, maybe);\n\n collections.forEach(createOfPredicates);\n createOfModifiers(assert, assertModifier);\n createOfModifiers(not, notModifier);\n collections.forEach(createMaybeOfModifiers);\n\n exportFunctions(mixin(functions, {\n assert: assert,\n not: not,\n maybe: maybe\n }));\n\n /**\n * Public function `equal`.\n *\n * Returns true if `lhs` and `rhs` are strictly equal, without coercion.\n * Returns false otherwise.\n */\n function equal (lhs, rhs) {\n return lhs === rhs;\n }\n\n /**\n * Public function `undefined`.\n *\n * Returns true if `data` is undefined, false otherwise.\n */\n function isUndefined (data) {\n return data === undefined;\n }\n\n /**\n * Public function `null`.\n *\n * Returns true if `data` is null, false otherwise.\n */\n function isNull (data) {\n return data === null;\n }\n\n /**\n * Public function `assigned`.\n *\n * Returns true if `data` is not null or undefined, false otherwise.\n */\n function assigned (data) {\n return data !== undefined && data !== null;\n }\n\n /**\n * Public function `primitive`.\n *\n * Returns true if `data` is a primitive type, false otherwise.\n */\n function primitive (data) {\n var type;\n\n switch (data) {\n case null:\n case undefined:\n case false:\n case true:\n return true;\n }\n\n type = typeof data;\n return type === 'string' || type === 'number' || (haveSymbols && type === 'symbol');\n }\n\n /**\n * Public function `zero`.\n *\n * Returns true if `data` is zero, false otherwise.\n */\n function zero (data) {\n return data === 0;\n }\n\n /**\n * Public function `infinity`.\n *\n * Returns true if `data` is positive or negative infinity, false otherwise.\n */\n function infinity (data) {\n return data === neginf || data === posinf;\n }\n\n /**\n * Public function `number`.\n *\n * Returns true if `data` is a number, false otherwise.\n */\n function number (data) {\n return typeof data === 'number' && data > neginf && data < posinf;\n }\n\n /**\n * Public function `integer`.\n *\n * Returns true if `data` is an integer, false otherwise.\n */\n function integer (data) {\n return typeof data === 'number' && data % 1 === 0;\n }\n\n /**\n * Public function `even`.\n *\n * Returns true if `data` is an even number, false otherwise.\n */\n function even (data) {\n return typeof data === 'number' && data % 2 === 0;\n }\n\n /**\n * Public function `odd`.\n *\n * Returns true if `data` is an odd number, false otherwise.\n */\n function odd (data) {\n return integer(data) && data % 2 !== 0;\n }\n\n /**\n * Public function `greater`.\n *\n * Returns true if `lhs` is a number greater than `rhs`, false otherwise.\n */\n function greater (lhs, rhs) {\n return number(lhs) && lhs > rhs;\n }\n\n /**\n * Public function `less`.\n *\n * Returns true if `lhs` is a number less than `rhs`, false otherwise.\n */\n function less (lhs, rhs) {\n return number(lhs) && lhs < rhs;\n }\n\n /**\n * Public function `between`.\n *\n * Returns true if `data` is a number between `x` and `y`, false otherwise.\n */\n function between (data, x, y) {\n if (x < y) {\n return greater(data, x) && data < y;\n }\n\n return less(data, x) && data > y;\n }\n\n /**\n * Public function `greaterOrEqual`.\n *\n * Returns true if `lhs` is a number greater than or equal to `rhs`, false\n * otherwise.\n */\n function greaterOrEqual (lhs, rhs) {\n return number(lhs) && lhs >= rhs;\n }\n\n /**\n * Public function `lessOrEqual`.\n *\n * Returns true if `lhs` is a number less than or equal to `rhs`, false\n * otherwise.\n */\n function lessOrEqual (lhs, rhs) {\n return number(lhs) && lhs <= rhs;\n }\n\n /**\n * Public function `inRange`.\n *\n * Returns true if `data` is a number in the range `x..y`, false otherwise.\n */\n function inRange (data, x, y) {\n if (x < y) {\n return greaterOrEqual(data, x) && data <= y;\n }\n\n return lessOrEqual(data, x) && data >= y;\n }\n\n /**\n * Public function `positive`.\n *\n * Returns true if `data` is a positive number, false otherwise.\n */\n function positive (data) {\n return greater(data, 0);\n }\n\n /**\n * Public function `negative`.\n *\n * Returns true if `data` is a negative number, false otherwise.\n */\n function negative (data) {\n return less(data, 0);\n }\n\n /**\n * Public function `string`.\n *\n * Returns true if `data` is a string, false otherwise.\n */\n function string (data) {\n return typeof data === 'string';\n }\n\n /**\n * Public function `emptyString`.\n *\n * Returns true if `data` is the empty string, false otherwise.\n */\n function emptyString (data) {\n return data === '';\n }\n\n /**\n * Public function `nonEmptyString`.\n *\n * Returns true if `data` is a non-empty string, false otherwise.\n */\n function nonEmptyString (data) {\n return string(data) && data !== '';\n }\n\n /**\n * Public function `contains`.\n *\n * Returns true if `data` is a string that contains `substring`, false\n * otherwise.\n */\n function contains (data, substring) {\n return string(data) && data.indexOf(substring) !== -1;\n }\n\n /**\n * Public function `match`.\n *\n * Returns true if `data` is a string that matches `regex`, false otherwise.\n */\n function match (data, regex) {\n return string(data) && !! data.match(regex);\n }\n\n /**\n * Public function `boolean`.\n *\n * Returns true if `data` is a boolean value, false otherwise.\n */\n function boolean (data) {\n return data === false || data === true;\n }\n\n /**\n * Public function `object`.\n *\n * Returns true if `data` is a plain-old JS object, false otherwise.\n */\n function object (data) {\n return Object.prototype.toString.call(data) === '[object Object]';\n }\n\n /**\n * Public function `emptyObject`.\n *\n * Returns true if `data` is an empty object, false otherwise.\n */\n function emptyObject (data) {\n return object(data) && Object.keys(data).length === 0;\n }\n\n /**\n * Public function `nonEmptyObject`.\n *\n * Returns true if `data` is a non-empty object, false otherwise.\n */\n function nonEmptyObject (data) {\n return object(data) && Object.keys(data).length > 0;\n }\n\n /**\n * Public function `instanceStrict`.\n *\n * Returns true if `data` is an instance of `prototype`, false otherwise.\n */\n function instanceStrict (data, prototype) {\n try {\n return data instanceof prototype;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Public function `instance`.\n *\n * Returns true if `data` is an instance of `prototype`, false otherwise.\n * Falls back to testing constructor.name and Object.prototype.toString\n * if the initial instanceof test fails.\n */\n function instance (data, prototype) {\n try {\n return instanceStrict(data, prototype) ||\n data.constructor.name === prototype.name ||\n Object.prototype.toString.call(data) === '[object ' + prototype.name + ']';\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Public function `like`.\n *\n * Tests whether `data` 'quacks like a duck'. Returns true if `data` has all\n * of the properties of `archetype` (the 'duck'), false otherwise.\n */\n function like (data, archetype) {\n var name;\n\n for (name in archetype) {\n if (archetype.hasOwnProperty(name)) {\n if (data.hasOwnProperty(name) === false || typeof data[name] !== typeof archetype[name]) {\n return false;\n }\n\n if (object(data[name]) && like(data[name], archetype[name]) === false) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Public function `array`.\n *\n * Returns true if `data` is an array, false otherwise.\n */\n function array (data) {\n return isArray(data);\n }\n\n /**\n * Public function `emptyArray`.\n *\n * Returns true if `data` is an empty array, false otherwise.\n */\n function emptyArray (data) {\n return array(data) && data.length === 0;\n }\n\n /**\n * Public function `nonEmptyArray`.\n *\n * Returns true if `data` is a non-empty array, false otherwise.\n */\n function nonEmptyArray (data) {\n return array(data) && greater(data.length, 0);\n }\n\n /**\n * Public function `arrayLike`.\n *\n * Returns true if `data` is an array-like object, false otherwise.\n */\n function arrayLike (data) {\n return assigned(data) && greaterOrEqual(data.length, 0);\n }\n\n /**\n * Public function `iterable`.\n *\n * Returns true if `data` is an iterable, false otherwise.\n */\n function iterable (data) {\n if (! haveSymbols) {\n // Fall back to `arrayLike` predicate in pre-ES6 environments.\n return arrayLike(data);\n }\n\n return assigned(data) && isFunction(data[Symbol.iterator]);\n }\n\n /**\n * Public function `includes`.\n *\n * Returns true if `data` contains `value`, false otherwise.\n */\n function includes (data, value) {\n var iterator, iteration, keys, length, i;\n\n if (! assigned(data)) {\n return false;\n }\n\n if (haveSymbols && data[Symbol.iterator] && isFunction(data.values)) {\n iterator = data.values();\n\n do {\n iteration = iterator.next();\n\n if (iteration.value === value) {\n return true;\n }\n } while (! iteration.done);\n\n return false;\n }\n\n keys = Object.keys(data);\n length = keys.length;\n for (i = 0; i < length; ++i) {\n if (data[keys[i]] === value) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Public function `hasLength`.\n *\n * Returns true if `data` has a length property that equals `length`, false\n * otherwise.\n */\n function hasLength (data, length) {\n return assigned(data) && data.length === length;\n }\n\n /**\n * Public function `date`.\n *\n * Returns true if `data` is a valid date, false otherwise.\n */\n function date (data) {\n return instanceStrict(data, Date) && integer(data.getTime());\n }\n\n /**\n * Public function `function`.\n *\n * Returns true if `data` is a function, false otherwise.\n */\n function isFunction (data) {\n return typeof data === 'function';\n }\n\n /**\n * Public function `apply`.\n *\n * Maps each value from the `data` to the corresponding predicate and returns\n * the result array. If the same function is to be applied across all of the\n * data, a single predicate function may be passed in.\n *\n */\n function apply (data, predicates) {\n assert.array(data);\n\n if (isFunction(predicates)) {\n return data.map(function (value) {\n return predicates(value);\n });\n }\n\n assert.array(predicates);\n assert.hasLength(data, predicates.length);\n\n return data.map(function (value, index) {\n return predicates[index](value);\n });\n }\n\n /**\n * Public function `map`.\n *\n * Maps each value from the `data` to the corresponding predicate and returns\n * the result object. Supports nested objects. If the `data` is not nested and\n * the same function is to be applied across all of it, a single predicate\n * function may be passed in.\n *\n */\n function map (data, predicates) {\n assert.object(data);\n\n if (isFunction(predicates)) {\n return mapSimple(data, predicates);\n }\n\n assert.object(predicates);\n\n return mapComplex(data, predicates);\n }\n\n function mapSimple (data, predicate) {\n var result = {};\n\n Object.keys(data).forEach(function (key) {\n result[key] = predicate(data[key]);\n });\n\n return result;\n }\n\n function mapComplex (data, predicates) {\n var result = {};\n\n Object.keys(predicates).forEach(function (key) {\n var predicate = predicates[key];\n\n if (isFunction(predicate)) {\n if (not.assigned(data)) {\n result[key] = !!predicate.m;\n } else {\n result[key] = predicate(data[key]);\n }\n } else if (object(predicate)) {\n result[key] = mapComplex(data[key], predicate);\n }\n });\n\n return result;\n }\n\n /**\n * Public function `all`\n *\n * Check that all boolean values are true\n * in an array (returned from `apply`)\n * or object (returned from `map`).\n *\n */\n function all (data) {\n if (array(data)) {\n return testArray(data, false);\n }\n\n assert.object(data);\n\n return testObject(data, false);\n }\n\n function testArray (data, result) {\n var i;\n\n for (i = 0; i < data.length; i += 1) {\n if (data[i] === result) {\n return result;\n }\n }\n\n return !result;\n }\n\n function testObject (data, result) {\n var key, value;\n\n for (key in data) {\n if (data.hasOwnProperty(key)) {\n value = data[key];\n\n if (object(value) && testObject(value, result) === result) {\n return result;\n }\n\n if (value === result) {\n return result;\n }\n }\n }\n\n return !result;\n }\n\n /**\n * Public function `any`\n *\n * Check that at least one boolean value is true\n * in an array (returned from `apply`)\n * or object (returned from `map`).\n *\n */\n function any (data) {\n if (array(data)) {\n return testArray(data, true);\n }\n\n assert.object(data);\n\n return testObject(data, true);\n }\n\n function mixin (target, source) {\n Object.keys(source).forEach(function (key) {\n target[key] = source[key];\n });\n\n return target;\n }\n\n /**\n * Public modifier `assert`.\n *\n * Throws if `predicate` returns false.\n */\n function assertModifier (predicate, defaultMessage) {\n return function () {\n return assertPredicate(predicate, arguments, defaultMessage);\n };\n }\n\n function assertPredicate (predicate, args, defaultMessage) {\n var argCount = predicate.l || predicate.length;\n var message = args[argCount];\n var ErrorType = args[argCount + 1];\n assertImpl(\n predicate.apply(null, args),\n nonEmptyString(message) ? message : defaultMessage,\n isFunction(ErrorType) ? ErrorType : TypeError\n );\n return args[0];\n }\n\n function assertImpl (value, message, ErrorType) {\n if (value) {\n return value;\n }\n throw new (ErrorType || Error)(message || 'Assertion failed');\n }\n\n /**\n * Public modifier `not`.\n *\n * Negates `predicate`.\n */\n function notModifier (predicate) {\n var modifiedPredicate = function () {\n return notImpl(predicate.apply(null, arguments));\n };\n modifiedPredicate.l = predicate.length;\n return modifiedPredicate;\n }\n\n function notImpl (value) {\n return !value;\n }\n\n /**\n * Public modifier `maybe`.\n *\n * Returns true if predicate argument is null or undefined,\n * otherwise propagates the return value from `predicate`.\n */\n function maybeModifier (predicate) {\n var modifiedPredicate = function () {\n if (not.assigned(arguments[0])) {\n return true;\n }\n\n return predicate.apply(null, arguments);\n };\n modifiedPredicate.l = predicate.length;\n\n // Hackishly indicate that this is a maybe.xxx predicate.\n // Without this flag, the alternative would be to iterate\n // through the maybe predicates or use indexOf to check,\n // which would be time-consuming.\n modifiedPredicate.m = true;\n\n return modifiedPredicate;\n }\n\n function maybeImpl (value) {\n if (assigned(value) === false) {\n return true;\n }\n\n return value;\n }\n\n /**\n * Public modifier `of`.\n *\n * Applies the chained predicate to members of the collection.\n */\n function ofModifier (target, type, predicate) {\n var modifiedPredicate = function () {\n var collection, args;\n\n collection = arguments[0];\n\n if (target === 'maybe' && not.assigned(collection)) {\n return true;\n }\n\n if (!type(collection)) {\n return false;\n }\n\n collection = coerceCollection(type, collection);\n args = slice.call(arguments, 1);\n\n try {\n collection.forEach(function (item) {\n if (\n (target !== 'maybe' || assigned(item)) &&\n !predicate.apply(null, [ item ].concat(args))\n ) {\n // TODO: Replace with for...of when ES6 is required.\n throw 0;\n }\n });\n } catch (ignore) {\n return false;\n }\n\n return true;\n };\n modifiedPredicate.l = predicate.length;\n return modifiedPredicate;\n }\n\n function coerceCollection (type, collection) {\n switch (type) {\n case arrayLike:\n return slice.call(collection);\n case object:\n return Object.keys(collection).map(function (key) {\n return collection[key];\n });\n default:\n return collection;\n }\n }\n\n function createModifiedPredicates (modifier, object) {\n return createModifiedFunctions([ modifier, predicates, object ]);\n }\n\n function createModifiedFunctions (args) {\n var modifier, object, functions, result;\n\n modifier = args.shift();\n object = args.pop();\n functions = args.pop();\n\n result = object || {};\n\n Object.keys(functions).forEach(function (key) {\n Object.defineProperty(result, key, {\n configurable: false,\n enumerable: true,\n writable: false,\n value: modifier.apply(null, args.concat(functions[key], messages[key]))\n });\n });\n\n return result;\n }\n\n function createModifiedModifier (modifier, modified) {\n return createModifiedFunctions([ modifier, modified, null ]);\n }\n\n function createOfPredicates (key) {\n predicates[key].of = createModifiedFunctions(\n [ ofModifier.bind(null, null), predicates[key], predicates, null ]\n );\n }\n\n function createOfModifiers (base, modifier) {\n collections.forEach(function (key) {\n base[key].of = createModifiedModifier(modifier, predicates[key].of);\n });\n }\n\n function createMaybeOfModifiers (key) {\n maybe[key].of = createModifiedFunctions(\n [ ofModifier.bind(null, 'maybe'), predicates[key], predicates, null ]\n );\n assert.maybe[key].of = createModifiedModifier(assertModifier, maybe[key].of);\n assert.not[key].of = createModifiedModifier(assertModifier, not[key].of);\n }\n\n function exportFunctions (functions) {\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return functions;\n });\n } else if (typeof module !== 'undefined' && module !== null && module.exports) {\n module.exports = functions;\n } else {\n globals.check = functions;\n }\n }\n}(this));\n","\n/**\n * Expose `isUrl`.\n */\n\nmodule.exports = isUrl;\n\n/**\n * Matcher.\n */\n\nvar matcher = /^(?:\\w+:)?\\/\\/([^\\s\\.]+\\.\\S{2}|localhost[\\:?\\d]*)\\S*$/;\n\n/**\n * Loosely validate a URL `string`.\n *\n * @param {String} string\n * @return {Boolean}\n */\n\nfunction isUrl(string){\n return matcher.test(string);\n}\n","// The result of dump.js is a big JSON tree\n// which can be easily serialized (for instance\n// to be sent from a webworker to the main app\n// or through Node's IPC), but we want\n// a (circular) DOM-like interface for walking\n// through the data.\n\nmodule.exports = (iPage) => {\n const page = {\n ...iPage,\n paragraphs: [],\n lines: [],\n words: [],\n symbols: [],\n };\n\n page.blocks.forEach((iBlock) => {\n const block = {\n ...iBlock,\n page,\n lines: [],\n words: [],\n symbols: [],\n };\n\n block.paragraphs.forEach((iPara) => {\n const para = {\n ...iPara,\n block,\n page,\n words: [],\n symbols: [],\n };\n\n para.lines.forEach((iLine) => {\n const line = {\n ...iLine,\n paragraph: para,\n block,\n page,\n symbols: [],\n };\n\n line.words.forEach((iWord) => {\n const word = {\n ...iWord,\n line,\n paragraph: para,\n block,\n page,\n };\n\n word.symbols.forEach((iSym) => {\n const sym = {\n ...iSym,\n word,\n line,\n paragraph: para,\n block,\n page,\n };\n\n sym.line.symbols.push(sym);\n sym.paragraph.symbols.push(sym);\n sym.block.symbols.push(sym);\n sym.page.symbols.push(sym);\n });\n word.paragraph.words.push(word);\n word.block.words.push(word);\n word.page.words.push(word);\n });\n line.block.lines.push(line);\n line.page.lines.push(line);\n });\n para.page.paragraphs.push(para);\n });\n });\n return page;\n};\n","const adapter = require('../node/');\n\nlet jobCounter = 0;\n\nmodule.exports = class TesseractJob {\n constructor(instance) {\n jobCounter += 1;\n this.id = `Job-${jobCounter}-${Math.random().toString(16).slice(3, 8)}`;\n\n this._instance = instance;\n this._resolve = [];\n this._reject = [];\n this._progress = [];\n this._finally = [];\n }\n\n then(resolve, reject) {\n if (this._resolve.push) {\n this._resolve.push(resolve);\n } else {\n resolve(this._resolve);\n }\n\n if (reject) this.catch(reject);\n return this;\n }\n\n catch(reject) {\n if (this._reject.push) {\n this._reject.push(reject);\n } else {\n reject(this._reject);\n }\n return this;\n }\n\n progress(fn) {\n this._progress.push(fn);\n return this;\n }\n\n finally(fn) {\n this._finally.push(fn);\n return this;\n }\n\n _send(action, payload) {\n adapter.sendPacket(this._instance, {\n jobId: this.id,\n action,\n payload,\n });\n }\n\n _handle(packet) {\n const { data } = packet;\n let runFinallyCbs = false;\n\n if (packet.status === 'resolve') {\n if (this._resolve.length === 0) console.log(data);\n this._resolve.forEach((fn) => {\n const ret = fn(data);\n if (ret && typeof ret.then === 'function') {\n console.warn('TesseractJob instances do not chain like ES6 Promises. To convert it into a real promise, use Promise.resolve.');\n }\n });\n this._resolve = data;\n this._instance._dequeue();\n runFinallyCbs = true;\n } else if (packet.status === 'reject') {\n if (this._reject.length === 0) console.error(data);\n this._reject.forEach(fn => fn(data));\n this._reject = data;\n this._instance._dequeue();\n runFinallyCbs = true;\n } else if (packet.status === 'progress') {\n this._progress.forEach(fn => fn(data));\n } else {\n console.warn('Message type unknown', packet.status);\n }\n\n if (runFinallyCbs) {\n this._finally.forEach(fn => fn(data));\n }\n }\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/scripts/dist/worker.min.js b/scripts/dist/worker.min.js deleted file mode 100644 index f828aee..0000000 --- a/scripts/dist/worker.min.js +++ /dev/null @@ -1,9 +0,0 @@ -!function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=1)}([function(t,e){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e,r){(function(t){const e=r(2);t.addEventListener("message",({data:t})=>{e.dispatchHandlers(t,t=>postMessage(t))}),e.setAdapter({getCore:(e,r)=>(t.TesseractCore||(r.progress({status:"loading tesseract core",progress:0}),t.importScripts(e.workerOptions.corePath),t.TesseractCore="object"==typeof WebAssembly?t.TesseractCoreWASM:t.TesseractCoreASM,r.progress({status:"loading tesseract core",progress:1})),t.TesseractCore)})}).call(this,r(0))},function(t,e,r){const{readImage:n,loadLang:i}=r(3),o=r(17);let s,a,h,f={};const u=(t,e)=>{let r=100663296;if(["chi_sim","chi_tra","jpn"].includes(t.options.lang)&&(r=167772160),!s||s.TOTAL_MEMORY{a=new(s=t).TessBaseAPI,e.progress({status:"initialized tesseract",progress:1})})}return new Promise},c=t=>{const{w:e,h:r,data:i}=n(s,Array.from(t));return a.SetImage(i),a.SetRectangle(0,0,e,r),i},l=(t,e,r)=>{const{options:{lang:n},workerOptions:{langPath:o}}=t;return i({langs:n,tessModule:s,langURI:o,cache:!0}).then(r)};e.dispatchHandlers=((t,e)=>{const r=(r,n)=>{e({jobId:t.jobId,status:r,action:t.action,data:n})};r.resolve=r.bind(this,"resolve"),r.reject=r.bind(this,"reject"),r.progress=r.bind(this,"progress"),h=r;try{"recognize"===t.action?((t,e)=>{u(t,e).then(()=>{l(t,0,()=>{const{options:r}=t,n=t=>{e.progress({status:"initializing api",progress:t})};n(0),a.Init(null,r.lang),n(.3),Object.keys(r).forEach(t=>{a.SetVariable(t,r[t])}),n(.6);const i=c(t.image);n(1),a.Recognize(null);const h=o(s,a);a.End(),s._free(i),e.resolve(h)})})})(t.payload,r):"detect"===t.action&&((t,e)=>{u(t,e).then(()=>{t.options.lang="osd",l(t,0,()=>{a.Init(null,"osd"),a.SetPageSegMode(s.PSM_OSD_ONLY);const r=c(t.image),n=new s.OSResults;if(a.DetectOS(n)){const t=n.get_best_result(),i=t.get_orientation_id(),o=t.get_script_id();a.End(),s._free(r),e.resolve({tesseract_script_id:o,script:n.get_unicharset().get_script_from_script_id(o),script_confidence:t.get_sconfidence(),orientation_degrees:[0,270,180,90][i],orientation_confidence:t.get_oconfidence()})}else a.End(),s._free(r),e.reject("Failed to detect OS")})})})(t.payload,r)}catch(t){r.reject(t.toString())}}),e.setAdapter=(t=>{f=t})},function(t,e,r){t.exports={loadLang:r(4)({fetch:r(5),gunzip:r(7),...r(14)}),readImage:r(16)}},function(t,e){const r=t=>({tessModule:e,dataPath:r,cachePath:n,cache:i,lang:o})=>s=>{if(e){if(r)try{e.FS.mkdir(r)}catch(t){}e.FS.writeFile(`${r||"."}/${o}.traineddata`,s)}return i&&t.writeCache(`${n||"."}/${o}.traineddata`,s),s};t.exports=(t=>({langs:e,...n})=>Promise.all(e.split("+").map((t=>({langURI:e,cachePath:n,...i})=>o=>t.readCache(`${n||"."}/${o}.traineddata`).then(e=>void 0===e?Promise.reject():r(t)({cachePath:n,lang:o,...i})(e)).catch(()=>t.fetch(`${e}/${o}.traineddata.gz`).then(t=>t.arrayBuffer()).then(e=>t.gunzip(new Uint8Array(e))).then(r(t)({cachePath:n,lang:o,...i}))))(t)(n))))},function(t,e,r){const{fetch:n}=r(6);t.exports=n},function(t,e,r){"use strict";r.r(e),r.d(e,"Headers",function(){return f}),r.d(e,"Request",function(){return g}),r.d(e,"Response",function(){return w}),r.d(e,"DOMException",function(){return m}),r.d(e,"fetch",function(){return A});var n={searchParams:"URLSearchParams"in self,iterable:"Symbol"in self&&"iterator"in Symbol,blob:"FileReader"in self&&"Blob"in self&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in self,arrayBuffer:"ArrayBuffer"in self};if(n.arrayBuffer)var i=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],o=ArrayBuffer.isView||function(t){return t&&i.indexOf(Object.prototype.toString.call(t))>-1};function s(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function a(t){return"string"!=typeof t&&(t=String(t)),t}function h(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return n.iterable&&(e[Symbol.iterator]=function(){return e}),e}function f(t){this.map={},t instanceof f?t.forEach(function(t,e){this.append(e,t)},this):Array.isArray(t)?t.forEach(function(t){this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function u(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function c(t){return new Promise(function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}})}function l(t){var e=new FileReader,r=c(e);return e.readAsArrayBuffer(t),r}function p(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function y(){return this.bodyUsed=!1,this._initBody=function(t){var e;this._bodyInit=t,t?"string"==typeof t?this._bodyText=t:n.blob&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:n.formData&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:n.searchParams&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():n.arrayBuffer&&n.blob&&((e=t)&&DataView.prototype.isPrototypeOf(e))?(this._bodyArrayBuffer=p(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):n.arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(t)||o(t))?this._bodyArrayBuffer=p(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText="",this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n.searchParams&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},n.blob&&(this.blob=function(){var t=u(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?u(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(l)}),this.text=function(){var t,e,r,n=u(this);if(n)return n;if(this._bodyBlob)return t=this._bodyBlob,e=new FileReader,r=c(e),e.readAsText(t),r;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),n=0;n-1?n:r),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(i)}function b(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var r=t.split("="),n=r.shift().replace(/\+/g," "),i=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(n),decodeURIComponent(i))}}),e}function w(t,e){e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new f(e.headers),this.url=e.url||"",this._initBody(t)}g.prototype.clone=function(){return new g(this,{body:this._bodyInit})},y.call(g.prototype),y.call(w.prototype),w.prototype.clone=function(){return new w(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new f(this.headers),url:this.url})},w.error=function(){var t=new w(null,{status:0,statusText:""});return t.type="error",t};var v=[301,302,303,307,308];w.redirect=function(t,e){if(-1===v.indexOf(e))throw new RangeError("Invalid status code");return new w(null,{status:e,headers:{location:t}})};var m=self.DOMException;try{new m}catch(t){(m=function(t,e){this.message=t,this.name=e;var r=Error(t);this.stack=r.stack}).prototype=Object.create(Error.prototype),m.prototype.constructor=m}function A(t,e){return new Promise(function(r,i){var o=new g(t,e);if(o.signal&&o.signal.aborted)return i(new m("Aborted","AbortError"));var s=new XMLHttpRequest;function a(){s.abort()}s.onload=function(){var t,e,n={status:s.status,statusText:s.statusText,headers:(t=s.getAllResponseHeaders()||"",e=new f,t.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach(function(t){var r=t.split(":"),n=r.shift().trim();if(n){var i=r.join(":").trim();e.append(n,i)}}),e)};n.url="responseURL"in s?s.responseURL:n.headers.get("X-Request-URL");var i="response"in s?s.response:s.responseText;r(new w(i,n))},s.onerror=function(){i(new TypeError("Network request failed"))},s.ontimeout=function(){i(new TypeError("Network request failed"))},s.onabort=function(){i(new m("Aborted","AbortError"))},s.open(o.method,o.url,!0),"include"===o.credentials?s.withCredentials=!0:"omit"===o.credentials&&(s.withCredentials=!1),"responseType"in s&&n.blob&&(s.responseType="blob"),o.headers.forEach(function(t,e){s.setRequestHeader(e,t)}),o.signal&&(o.signal.addEventListener("abort",a),s.onreadystatechange=function(){4===s.readyState&&o.signal.removeEventListener("abort",a)}),s.send(void 0===o._bodyInit?null:o._bodyInit)})}A.polyfill=!0,self.fetch||(self.fetch=A,self.Headers=f,self.Request=g,self.Response=w)},function(t,e,r){t.exports=r(8).gunzipSync},function(t,e,r){(function(t,r){/** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */(function(){"use strict";function n(t){throw t}var i=void 0,o=!0,s="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array&&"undefined"!=typeof DataView;function a(t,e){this.index="number"==typeof e?e:0,this.m=0,this.buffer=t instanceof(s?Uint8Array:Array)?t:new(s?Uint8Array:Array)(32768),2*this.buffer.length<=this.index&&n(Error("invalid index")),this.buffer.length<=this.index&&this.f()}a.prototype.f=function(){var t,e=this.buffer,r=e.length,n=new(s?Uint8Array:Array)(r<<1);if(s)n.set(e);else for(t=0;t>>8&255]<<16|p[t>>>16&255]<<8|p[t>>>24&255])>>32-e:p[t]>>8-e),8>e+s)a=a<>e-n-1&1,8==++s&&(s=0,i[o++]=p[a],a=0,o===i.length&&(i=this.f()));i[o]=a,this.buffer=i,this.m=s,this.index=o},a.prototype.finish=function(){var t,e=this.buffer,r=this.index;return 0h;++h){for(var u=l=h,c=7,l=l>>>1;l;l>>>=1)u<<=1,u|=1&l,--c;f[h]=(u<>>0}var p=f;function y(t,e,r){var n,i="number"==typeof e?e:e=0,o="number"==typeof r?r:t.length;for(n=-1,i=7&o;i--;++e)n=n>>>8^g[255&(n^t[e])];for(i=o>>3;i--;e+=8)n=(n=(n=(n=(n=(n=(n=(n=n>>>8^g[255&(n^t[e])])>>>8^g[255&(n^t[e+1])])>>>8^g[255&(n^t[e+2])])>>>8^g[255&(n^t[e+3])])>>>8^g[255&(n^t[e+4])])>>>8^g[255&(n^t[e+5])])>>>8^g[255&(n^t[e+6])])>>>8^g[255&(n^t[e+7])];return(4294967295^n)>>>0}var d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],g=s?new Uint32Array(d):d;function b(){}function w(t){this.buffer=new(s?Uint16Array:Array)(2*t),this.length=0}function v(t){var e,r,n,i,o,a,h,f,u,c,l=t.length,p=0,y=Number.POSITIVE_INFINITY;for(f=0;fp&&(p=t[f]),t[f]>=1;for(c=n<<16|f,u=a;uo[n]);)i=o[r],o[r]=o[n],o[n]=i,i=o[r+1],o[r+1]=o[n+1],o[n+1]=i,r=n;return this.length},w.prototype.pop=function(){var t,e,r,n,i,o=this.buffer;for(e=o[0],t=o[1],this.length-=2,o[0]=o[this.length],o[1]=o[this.length+1],i=0;!((n=2*i+2)>=this.length)&&(n+2o[n]&&(n+=2),o[n]>o[i]);)r=o[i],o[i]=o[n],o[n]=r,r=o[i+1],o[i+1]=o[n+1],o[n+1]=r,i=n;return{index:t,value:e,length:this.length}};var A,_=2,E={NONE:0,L:1,t:_,X:3},T=[];for(A=0;288>A;A++)switch(o){case 143>=A:T.push([A+48,8]);break;case 255>=A:T.push([A-144+400,9]);break;case 279>=A:T.push([A-256+0,7]);break;case 287>=A:T.push([A-280+192,8]);break;default:n("invalid literal: "+A)}function B(t,e){this.length=t,this.N=e}m.prototype.h=function(){var t,e,r,h,f=this.input;switch(this.k){case 0:for(r=0,h=f.length;r>>8&255,b[w++]=255&l,b[w++]=l>>>8&255,s)b.set(p,w),w+=p.length,b=b.subarray(0,w);else{for(d=0,g=p.length;dK)for(;0K?K:138)>K-3&&Q=Q?(rt[J++]=17,rt[J++]=Q-3,nt[17]++):(rt[J++]=18,rt[J++]=Q-11,nt[18]++),K-=Q;else if(rt[J++]=et[q],nt[et[q]]++,3>--K)for(;0K?K:6)>K-3&&Qz;z++)W[z]=Y[V[z]];for(O=19;4=t:return[265,t-11,1];case 14>=t:return[266,t-13,1];case 16>=t:return[267,t-15,1];case 18>=t:return[268,t-17,1];case 22>=t:return[269,t-19,2];case 26>=t:return[270,t-23,2];case 30>=t:return[271,t-27,2];case 34>=t:return[272,t-31,2];case 42>=t:return[273,t-35,3];case 50>=t:return[274,t-43,3];case 58>=t:return[275,t-51,3];case 66>=t:return[276,t-59,3];case 82>=t:return[277,t-67,4];case 98>=t:return[278,t-83,4];case 114>=t:return[279,t-99,4];case 130>=t:return[280,t-115,4];case 162>=t:return[281,t-131,5];case 194>=t:return[282,t-163,5];case 226>=t:return[283,t-195,5];case 257>=t:return[284,t-227,5];case 258===t:return[285,t-258,0];default:n("invalid length: "+t)}}var e,r,i=[];for(e=3;258>=e;e++)r=t(e),i[e]=r[2]<<24|r[1]<<16|r[0];return i}(),U=s?new Uint32Array(R):R;function P(t,e){function r(t,e){var r,i,s,a,h=t.N,f=[],u=0;switch(r=U[t.length],f[u++]=65535&r,f[u++]=r>>16&255,f[u++]=r>>24,o){case 1===h:i=[0,h-1,0];break;case 2===h:i=[1,h-2,0];break;case 3===h:i=[2,h-3,0];break;case 4===h:i=[3,h-4,0];break;case 6>=h:i=[4,h-5,1];break;case 8>=h:i=[5,h-7,1];break;case 12>=h:i=[6,h-9,2];break;case 16>=h:i=[7,h-13,2];break;case 24>=h:i=[8,h-17,3];break;case 32>=h:i=[9,h-25,3];break;case 48>=h:i=[10,h-33,4];break;case 64>=h:i=[11,h-49,4];break;case 96>=h:i=[12,h-65,5];break;case 128>=h:i=[13,h-97,5];break;case 192>=h:i=[14,h-129,6];break;case 256>=h:i=[15,h-193,6];break;case 384>=h:i=[16,h-257,7];break;case 512>=h:i=[17,h-385,7];break;case 768>=h:i=[18,h-513,8];break;case 1024>=h:i=[19,h-769,8];break;case 1536>=h:i=[20,h-1025,9];break;case 2048>=h:i=[21,h-1537,9];break;case 3072>=h:i=[22,h-2049,10];break;case 4096>=h:i=[23,h-3073,10];break;case 6144>=h:i=[24,h-4097,11];break;case 8192>=h:i=[25,h-6145,11];break;case 12288>=h:i=[26,h-8193,12];break;case 16384>=h:i=[27,h-12289,12];break;case 24576>=h:i=[28,h-16385,13];break;case 32768>=h:i=[29,h-24577,13];break;default:n("invalid distance")}for(r=i,f[u++]=r[0],f[u++]=r[1],f[u++]=r[2],s=0,a=f.length;s=f;)m[f++]=0;for(f=0;29>=f;)A[f++]=0}for(m[256]=1,a=0,h=e.length;a=h){for(y&&r(y,-1),f=0,u=h-a;fo&&e+of&&(i=n,f=o),258===o)break}return new B(f,e-i)}function S(t,e){var r,n,i,o,a,h=t.length,f=new w(572),u=new(s?Uint8Array:Array)(h);if(!s)for(o=0;o2*u[o-1]+c[o]&&(u[o]=2*u[o-1]+c[o]),p[o]=Array(u[o]),y[o]=Array(u[o]);for(i=0;it[i]?(p[o][a]=h,y[o][a]=e,f+=2):(p[o][a]=t[i],y[o][a]=i,++i);d[o]=0,1===c[o]&&n(o)}return l}(n,n.length,e),o=0,a=r.length;o>>=1;return o}function k(t,e){this.input=t,this.b=this.c=0,this.g={},e&&(e.flags&&(this.g=e.flags),"string"==typeof e.filename&&(this.filename=e.filename),"string"==typeof e.comment&&(this.w=e.comment),e.deflateOptions&&(this.l=e.deflateOptions)),this.l||(this.l={})}k.prototype.h=function(){var t,e,r,n,o,a,h,f,u=new(s?Uint8Array:Array)(32768),c=0,l=this.input,p=this.c,d=this.filename,g=this.w;if(u[c++]=31,u[c++]=139,u[c++]=8,t=0,this.g.fname&&(t|=C),this.g.fcomment&&(t|=D),this.g.fhcrc&&(t|=L),u[c++]=t,e=(Date.now?Date.now():+new Date)/1e3|0,u[c++]=255&e,u[c++]=e>>>8&255,u[c++]=e>>>16&255,u[c++]=e>>>24&255,u[c++]=0,u[c++]=O,this.g.fname!==i){for(h=0,f=d.length;h>>8&255),u[c++]=255&a;u[c++]=0}if(this.g.comment){for(h=0,f=g.length;h>>8&255),u[c++]=255&a;u[c++]=0}return this.g.fhcrc&&(r=65535&y(u,0,c),u[c++]=255&r,u[c++]=r>>>8&255),this.l.outputBuffer=u,this.l.outputIndex=c,u=(o=new m(l,this.l)).h(),c=o.b,s&&(c+8>u.buffer.byteLength?(this.a=new Uint8Array(c+8),this.a.set(new Uint8Array(u.buffer)),u=this.a):u=new Uint8Array(u.buffer)),n=y(l,i,i),u[c++]=255&n,u[c++]=n>>>8&255,u[c++]=n>>>16&255,u[c++]=n>>>24&255,f=l.length,u[c++]=255&f,u[c++]=f>>>8&255,u[c++]=f>>>16&255,u[c++]=f>>>24&255,this.c=p,s&&c>>=1){case 0:var e=this.input,r=this.c,a=this.a,h=this.b,f=e.length,u=i,c=a.length,l=i;switch(this.e=this.j=0,r+1>=f&&n(Error("invalid uncompressed block header: LEN")),u=e[r++]|e[r++]<<8,r+1>=f&&n(Error("invalid uncompressed block header: NLEN")),u===~(e[r++]|e[r++]<<8)&&n(Error("invalid uncompressed block header: length verify")),r+u>e.length&&n(Error("input buffer is broken")),this.q){case Y:for(;h+u>a.length;){if(u-=l=c-h,s)a.set(e.subarray(r,r+l),h),h+=l,r+=l;else for(;l--;)a[h++]=e[r++];this.b=h,a=this.f(),h=this.b}break;case j:for(;h+u>a.length;)a=this.f({B:2});break;default:n(Error("invalid inflate mode"))}if(s)a.set(e.subarray(r,r+u),h),h+=u,r+=u;else for(;u--;)a[h++]=e[r++];this.c=r,this.b=h,this.a=a;break;case 1:this.r(et,nt);break;case 2:var p,y,d,g,b=it(this,5)+257,w=it(this,5)+1,m=it(this,4)+4,A=new(s?Uint8Array:Array)(G.length),_=i,E=i,T=i,B=i,R=i;for(R=0;R=N?8:255>=N?9:279>=N?7:8;var Z,tt,et=v(Q),rt=new(s?Uint8Array:Array)(30);for(Z=0,tt=rt.length;Z=h&&n(Error("input buffer is broken")),i|=s[a++]<>>e,t.e=o-e,t.c=a,r}function ot(t,e){for(var r,i,o=t.j,s=t.e,a=t.input,h=t.c,f=a.length,u=e[0],c=e[1];s=f);)o|=a[h++]<>>16)>s&&n(Error("invalid code length: "+i)),t.j=o>>i,t.e=s-i,t.c=h,65535&r}function st(t){this.input=t,this.c=0,this.G=[],this.R=!1}function at(t){if("string"==typeof t){var e,r,n=t.split("");for(e=0,r=n.length;e>>0;t=n}for(var i,o=1,s=0,a=t.length,h=0;0>>0}function ht(t,e){var r,i;switch(this.input=t,this.c=0,!e&&(e={})||(e.index&&(this.c=e.index),e.verify&&(this.V=e.verify)),r=t[this.c++],i=t[this.c++],15&r){case ft:this.method=ft;break;default:n(Error("unsupported compression method"))}0!=((r<<8)+i)%31&&n(Error("invalid fcheck flag:"+((r<<8)+i)%31)),32&i&&n(Error("fdict flag is not supported")),this.J=new M(t,{index:this.c,bufferSize:e.bufferSize,bufferType:e.bufferType,resize:e.resize})}M.prototype.r=function(t,e){var r=this.a,n=this.b;this.A=t;for(var i,o,s,a,h=r.length-258;256!==(i=ot(this,t));)if(256>i)n>=h&&(this.b=n,r=this.f(),n=this.b),r[n++]=i;else for(a=V[o=i-257],0=h&&(this.b=n,r=this.f(),n=this.b);a--;)r[n]=r[n++-s];for(;8<=this.e;)this.e-=8,this.c--;this.b=n},M.prototype.Q=function(t,e){var r=this.a,n=this.b;this.A=t;for(var i,o,s,a,h=r.length;256!==(i=ot(this,t));)if(256>i)n>=h&&(h=(r=this.f()).length),r[n++]=i;else for(a=V[o=i-257],0h&&(h=(r=this.f()).length);a--;)r[n]=r[n++-s];for(;8<=this.e;)this.e-=8,this.c--;this.b=n},M.prototype.f=function(){var t,e,r=new(s?Uint8Array:Array)(this.b-32768),n=this.b-32768,i=this.a;if(s)r.set(i.subarray(32768,r.length));else for(t=0,e=r.length;tt;++t)i[t]=i[n+t];return this.b=32768,i},M.prototype.S=function(t){var e,r,n,i=this.input.length/this.c+1|0,o=this.input,a=this.a;return t&&("number"==typeof t.B&&(i=t.B),"number"==typeof t.M&&(i+=t.M)),2>i?r=(n=(o.length-this.c)/this.A[2]/2*258|0)e&&(this.a.length=e),t=this.a),this.buffer=t},st.prototype.i=function(){for(var t=this.input.length;this.c>>0,y(e,i,i)!==d&&n(Error("invalid CRC-32 checksum: 0x"+y(e,i,i).toString(16)+" / 0x"+d.toString(16))),a.Z=h=(g[w++]|g[w++]<<8|g[w++]<<16|g[w++]<<24)>>>0,(4294967295&e.length)!==h&&n(Error("invalid input size: "+(4294967295&e.length)+" / "+h)),this.G.push(a),this.c=w}this.R=o;var v,m,A,_=this.G,E=0,T=0;for(v=0,m=_.length;v>>0!==at(t)&&n(Error("invalid adler-32 checksum"))),t};var ft=8;function ut(t,e){this.input=t,this.a=new(s?Uint8Array:Array)(32768),this.k=ct.t;var r,n={};for(r in!e&&(e={})||"number"!=typeof e.compressionType||(this.k=e.compressionType),e)n[r]=e[r];n.outputBuffer=this.a,this.I=new m(this.input,n)}var ct=E;function lt(t,e){var r;return r=new ut(t).h(),e||(e={}),e.H?r:gt(r)}function pt(t,e){var r;return t.subarray=t.slice,r=new ht(t).i(),e||(e={}),e.noBuffer?r:gt(r)}function yt(t,e){var r;return t.subarray=t.slice,r=new k(t).h(),e||(e={}),e.H?r:gt(r)}function dt(t,e){var r;return t.subarray=t.slice,r=new st(t).i(),e||(e={}),e.H?r:gt(r)}function gt(t){var e,n,i=new r(t.length);for(e=0,n=t.length;e>24&255,h[f++]=a>>16&255,h[f++]=a>>8&255,h[f++]=255&a,h},e.deflate=function(e,r,n){t.nextTick(function(){var t,i;try{i=lt(e,n)}catch(e){t=e}r(t,i)})},e.deflateSync=lt,e.inflate=function(e,r,n){t.nextTick(function(){var t,i;try{i=pt(e,n)}catch(e){t=e}r(t,i)})},e.inflateSync=pt,e.gzip=function(e,r,n){t.nextTick(function(){var t,i;try{i=yt(e,n)}catch(e){t=e}r(t,i)})},e.gzipSync=yt,e.gunzip=function(e,r,n){t.nextTick(function(){var t,i;try{i=dt(e,n)}catch(e){t=e}r(t,i)})},e.gunzipSync=dt}).call(this)}).call(this,r(9),r(10).Buffer)},function(t,e){var r,n,i=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function a(t){if(r===setTimeout)return setTimeout(t,0);if((r===o||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:o}catch(t){r=o}try{n="function"==typeof clearTimeout?clearTimeout:s}catch(t){n=s}}();var h,f=[],u=!1,c=-1;function l(){u&&h&&(u=!1,h.length?f=h.concat(f):c=-1,f.length&&p())}function p(){if(!u){var t=a(l);u=!0;for(var e=f.length;e;){for(h=f,f=[];++c1)for(var r=1;r - * @license MIT - */ -var n=r(11),i=r(12),o=r(13);function s(){return h.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,e){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|t}function y(t,e){if(h.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return N(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return F(t).length;default:if(n)return N(t).length;e=(""+e).toLowerCase(),n=!0}}function d(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function g(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=h.from(e,n)),h.isBuffer(e))return 0===e.length?-1:b(t,e,r,n,i);if("number"==typeof e)return e&=255,h.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):b(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function b(t,e,r,n,i){var o,s=1,a=t.length,h=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,h/=2,r/=2}function f(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var u=-1;for(o=r;oa&&(r=a-h),o=r;o>=0;o--){for(var c=!0,l=0;li&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var s=0;s>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function T(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function B(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:f>223?3:f>191?2:1;if(i+c<=r)switch(c){case 1:f<128&&(u=f);break;case 2:128==(192&(o=t[i+1]))&&(h=(31&f)<<6|63&o)>127&&(u=h);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&(h=(15&f)<<12|(63&o)<<6|63&s)>2047&&(h<55296||h>57343)&&(u=h);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(h=(15&f)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&h<1114112&&(u=h)}null===u?(u=65533,c=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=c}return function(t){var e=t.length;if(e<=R)return String.fromCharCode.apply(String,t);var r="",n=0;for(;nthis.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return I(this,e,r);case"utf8":case"utf-8":return B(this,e,r);case"ascii":return U(this,e,r);case"latin1":case"binary":return P(this,e,r);case"base64":return T(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}.apply(this,arguments)},h.prototype.equals=function(t){if(!h.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===h.compare(this,t)},h.prototype.inspect=function(){var t="",r=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},h.prototype.compare=function(t,e,r,n,i){if(!h.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),a=Math.min(o,s),f=this.slice(n,i),u=t.slice(e,r),c=0;ci)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return w(this,t,e,r);case"utf8":case"utf-8":return v(this,t,e,r);case"ascii":return m(this,t,e,r);case"latin1":case"binary":return A(this,t,e,r);case"base64":return _(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var R=4096;function U(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function k(t,e,r,n,i,o){if(!h.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function O(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function L(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function C(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function D(t,e,r,n,o){return o||C(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function M(t,e,r,n,o){return o||C(t,0,r,8),i.write(t,e,r,n,52,8),r+8}h.prototype.slice=function(t,e){var r,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(e=void 0===e?n:~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),e0&&(i*=256);)n+=this[t+--e]*i;return n},h.prototype.readUInt8=function(t,e){return e||x(t,1,this.length),this[t]},h.prototype.readUInt16LE=function(t,e){return e||x(t,2,this.length),this[t]|this[t+1]<<8},h.prototype.readUInt16BE=function(t,e){return e||x(t,2,this.length),this[t]<<8|this[t+1]},h.prototype.readUInt32LE=function(t,e){return e||x(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},h.prototype.readUInt32BE=function(t,e){return e||x(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},h.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||x(t,e,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*e)),n},h.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||x(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},h.prototype.readInt8=function(t,e){return e||x(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},h.prototype.readInt16LE=function(t,e){e||x(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt16BE=function(t,e){e||x(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt32LE=function(t,e){return e||x(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},h.prototype.readInt32BE=function(t,e){return e||x(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},h.prototype.readFloatLE=function(t,e){return e||x(t,4,this.length),i.read(this,t,!0,23,4)},h.prototype.readFloatBE=function(t,e){return e||x(t,4,this.length),i.read(this,t,!1,23,4)},h.prototype.readDoubleLE=function(t,e){return e||x(t,8,this.length),i.read(this,t,!0,52,8)},h.prototype.readDoubleBE=function(t,e){return e||x(t,8,this.length),i.read(this,t,!1,52,8)},h.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e|=0,r|=0,n)||k(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o=0&&(o*=256);)this[e+i]=t/o&255;return e+r},h.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,1,255,0),h.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},h.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,2,65535,0),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):O(this,t,e,!0),e+2},h.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,2,65535,0),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):O(this,t,e,!1),e+2},h.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,4,4294967295,0),h.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):L(this,t,e,!0),e+4},h.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,4,4294967295,0),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):L(this,t,e,!1),e+4},h.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);k(this,t,e,r,i-1,-i)}var o=0,s=1,a=0;for(this[e]=255&t;++o>0)-a&255;return e+r},h.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);k(this,t,e,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+r},h.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,1,127,-128),h.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},h.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,2,32767,-32768),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):O(this,t,e,!0),e+2},h.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,2,32767,-32768),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):O(this,t,e,!1),e+2},h.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,4,2147483647,-2147483648),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):L(this,t,e,!0),e+4},h.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||k(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):L(this,t,e,!1),e+4},h.prototype.writeFloatLE=function(t,e,r){return D(this,t,e,!0,r)},h.prototype.writeFloatBE=function(t,e,r){return D(this,t,e,!1,r)},h.prototype.writeDoubleLE=function(t,e,r){return M(this,t,e,!0,r)},h.prototype.writeDoubleBE=function(t,e,r){return M(this,t,e,!1,r)},h.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e=0;--i)t[i+e]=this[i+r];else if(o<1e3||!h.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function F(t){return n.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(Y,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function z(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(0))},function(t,e,r){"use strict";e.byteLength=function(t){return 3*t.length/4-f(t)},e.toByteArray=function(t){var e,r,n,s,a,h=t.length;s=f(t),a=new o(3*h/4-s),r=s>0?h-4:h;var u=0;for(e=0;e>16&255,a[u++]=n>>8&255,a[u++]=255&n;2===s?(n=i[t.charCodeAt(e)]<<2|i[t.charCodeAt(e+1)]>>4,a[u++]=255&n):1===s&&(n=i[t.charCodeAt(e)]<<10|i[t.charCodeAt(e+1)]<<4|i[t.charCodeAt(e+2)]>>2,a[u++]=n>>8&255,a[u++]=255&n);return a},e.fromByteArray=function(t){for(var e,r=t.length,i=r%3,o="",s=[],a=0,h=r-i;ah?h:a+16383));1===i?(e=t[r-1],o+=n[e>>2],o+=n[e<<4&63],o+="=="):2===i&&(e=(t[r-2]<<8)+t[r-1],o+=n[e>>10],o+=n[e>>4&63],o+=n[e<<2&63],o+="=");return s.push(o),s.join("")};for(var n=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,h=s.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function u(t,e,r){for(var i,o,s=[],a=e;a>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return s.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,r,n,i){var o,s,a=8*i-n-1,h=(1<>1,u=-7,c=r?i-1:0,l=r?-1:1,p=t[e+c];for(c+=l,o=p&(1<<-u)-1,p>>=-u,u+=a;u>0;o=256*o+t[e+c],c+=l,u-=8);for(s=o&(1<<-u)-1,o>>=-u,u+=n;u>0;s=256*s+t[e+c],c+=l,u-=8);if(0===o)o=1-f;else{if(o===h)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,n),o-=f}return(p?-1:1)*s*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var s,a,h,f=8*o-i-1,u=(1<>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,y=n?1:-1,d=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=u):(s=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-s))<1&&(s--,h*=2),(e+=s+c>=1?l/h:l*Math.pow(2,1-c))*h>=2&&(s++,h/=2),s+c>=u?(a=0,s=u):s+c>=1?(a=(e*h-1)*Math.pow(2,i),s+=c):(a=e*Math.pow(2,c-1)*Math.pow(2,i),s=0));i>=8;t[r+p]=255&a,p+=y,a/=256,i-=8);for(s=s<0;t[r+p]=255&s,p+=y,s/=256,f-=8);t[r+p-y]|=128*d}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e,r){const{set:n,get:i}=r(15);t.exports={readCache:i,writeCache:n}},function(t,e,r){"use strict";r.r(e),r.d(e,"Store",function(){return n}),r.d(e,"get",function(){return s}),r.d(e,"set",function(){return a}),r.d(e,"del",function(){return h}),r.d(e,"clear",function(){return f}),r.d(e,"keys",function(){return u});class n{constructor(t="keyval-store",e="keyval"){this.storeName=e,this._dbp=new Promise((r,n)=>{const i=indexedDB.open(t,1);i.onerror=(()=>n(i.error)),i.onsuccess=(()=>r(i.result)),i.onupgradeneeded=(()=>{i.result.createObjectStore(e)})})}_withIDBStore(t,e){return this._dbp.then(r=>new Promise((n,i)=>{const o=r.transaction(this.storeName,t);o.oncomplete=(()=>n()),o.onabort=o.onerror=(()=>i(o.error)),e(o.objectStore(this.storeName))}))}}let i;function o(){return i||(i=new n),i}function s(t,e=o()){let r;return e._withIDBStore("readonly",e=>{r=e.get(t)}).then(()=>r.result)}function a(t,e,r=o()){return r._withIDBStore("readwrite",r=>{r.put(e,t)})}function h(t,e=o()){return e._withIDBStore("readwrite",e=>{e.delete(t)})}function f(t=o()){return t._withIDBStore("readwrite",t=>{t.clear()})}function u(t=o()){const e=[];return t._withIDBStore("readonly",t=>{(t.openKeyCursor||t.openCursor).call(t).onsuccess=function(){this.result&&(e.push(this.result.key),this.result.continue())}}).then(()=>e)}},function(t,e){t.exports=((t,e)=>{const r=t._malloc(e.length*Uint8Array.BYTES_PER_ELEMENT);t.HEAPU8.set(e,r);const n=t._pixReadMem(r,e.length);0===t.getValue(n+28,"i32")&&t.setValue(n+28,70,"i32");const[i,o,s,a,h,f,u,c,l,p]=Array(10).fill(0).map((e,r)=>t.getValue(n+4*r,"i32"));return{w:i,h:o,d:s,spp:a,wpl:h,refcount:f,xres:u,yres:c,informat:l,special:p,data:n}})},function(t,e){t.exports=((t,e)=>{const r=e.GetIterator(),n=[];let i,o,s,a,h;const f=(e,r)=>Object.keys(t).filter(t=>t.substr(0,r.length+1)===`${r}_`).filter(r=>t[r]===e).map(t=>t.slice(r.length+1))[0];r.Begin();do{if(r.IsAtBeginningOf(t.RIL_BLOCK)){const e=r.BlockPolygon();let o=null;if(t.getPointer(e)>0){const r=e.get_n(),n=e.get_x(),i=e.get_y();o=[];for(let t=0;t{const e=t.split("\n");if(" "===e[0].substring(0,2))for(let t=0;t {\n workerUtils.dispatchHandlers(data, obj => postMessage(obj));\n});\n\nworkerUtils.setAdapter({\n getCore: (req, res) => {\n if (!global.TesseractCore) {\n res.progress({ status: 'loading tesseract core', progress: 0 });\n global.importScripts(req.workerOptions.corePath);\n global.TesseractCore = typeof WebAssembly === 'object' ? global.TesseractCoreWASM : global.TesseractCoreASM;\n res.progress({ status: 'loading tesseract core', progress: 1 });\n }\n return global.TesseractCore;\n },\n});\n","const { readImage, loadLang } = require('tesseract.js-utils');\nconst dump = require('./dump');\n\nlet Module;\nlet base;\nlet latestJob;\nlet adapter = {};\n\nconst handleInit = (req, res) => {\n let MIN_MEMORY = 100663296;\n\n if (['chi_sim', 'chi_tra', 'jpn'].includes(req.options.lang)) {\n MIN_MEMORY = 167772160;\n }\n\n if (!Module || Module.TOTAL_MEMORY < MIN_MEMORY) {\n const Core = adapter.getCore(req, res);\n\n res.progress({ status: 'initializing tesseract', progress: 0 });\n\n return Core({\n // TOTAL_MEMORY: MIN_MEMORY,\n TesseractProgress(percent) {\n latestJob.progress({ status: 'recognizing text', progress: Math.max(0, (percent - 30) / 70) });\n },\n })\n .then((TessModule) => {\n Module = TessModule;\n base = new Module.TessBaseAPI();\n res.progress({ status: 'initialized tesseract', progress: 1 });\n });\n }\n\n return new Promise();\n};\n\nconst setImage = (image) => {\n const { w, h, data } = readImage(Module, Array.from(image));\n\n base.SetImage(data);\n base.SetRectangle(0, 0, w, h);\n return data;\n};\n\nconst loadLanguage = (req, res, cb) => {\n const { options: { lang }, workerOptions: { langPath } } = req;\n return loadLang({\n langs: lang,\n tessModule: Module,\n langURI: langPath,\n cache: true,\n }).then(cb);\n};\n\nconst handleRecognize = (req, res) => {\n handleInit(req, res)\n .then(() => {\n loadLanguage(req, res, () => {\n const { options } = req;\n\n const progressUpdate = (progress) => {\n res.progress({ status: 'initializing api', progress });\n };\n\n progressUpdate(0);\n base.Init(null, options.lang);\n progressUpdate(0.3);\n\n Object.keys(options).forEach((key) => {\n base.SetVariable(key, options[key]);\n });\n\n progressUpdate(0.6);\n const ptr = setImage(req.image);\n progressUpdate(1);\n\n base.Recognize(null);\n\n const result = dump(Module, base);\n\n base.End();\n Module._free(ptr);\n\n res.resolve(result);\n });\n });\n};\n\n\nconst handleDetect = (req, res) => {\n handleInit(req, res)\n .then(() => {\n req.options.lang = 'osd';\n loadLanguage(req, res, () => {\n base.Init(null, 'osd');\n base.SetPageSegMode(Module.PSM_OSD_ONLY);\n\n const ptr = setImage(req.image);\n const results = new Module.OSResults();\n\n if (!base.DetectOS(results)) {\n base.End();\n Module._free(ptr);\n res.reject('Failed to detect OS');\n } else {\n const best = results.get_best_result();\n const oid = best.get_orientation_id();\n const sid = best.get_script_id();\n\n base.End();\n Module._free(ptr);\n\n res.resolve({\n tesseract_script_id: sid,\n script: results.get_unicharset().get_script_from_script_id(sid),\n script_confidence: best.get_sconfidence(),\n orientation_degrees: [0, 270, 180, 90][oid],\n orientation_confidence: best.get_oconfidence(),\n });\n }\n });\n });\n};\n\nexports.dispatchHandlers = (packet, send) => {\n const respond = (status, data) => {\n send({\n jobId: packet.jobId,\n status,\n action: packet.action,\n data,\n });\n };\n respond.resolve = respond.bind(this, 'resolve');\n respond.reject = respond.bind(this, 'reject');\n respond.progress = respond.bind(this, 'progress');\n\n latestJob = respond;\n\n try {\n if (packet.action === 'recognize') {\n handleRecognize(packet.payload, respond);\n } else if (packet.action === 'detect') {\n handleDetect(packet.payload, respond);\n }\n } catch (err) {\n // Prepare exception to travel through postMessage\n respond.reject(err.toString());\n }\n};\n\nexports.setAdapter = (impl) => {\n adapter = impl;\n};\n","module.exports = {\n loadLang: require('./loadLang')({\n fetch: require('./common/browser/fetch'),\n gunzip: require('./common/browser/gunzip'),\n ...require('./common/browser/cache'),\n }),\n readImage: require('./readImage'),\n};\n","const handleLang = modules => ({\n tessModule,\n dataPath,\n cachePath,\n cache,\n lang,\n}) => (data) => {\n if (tessModule) {\n if (dataPath) {\n try {\n tessModule.FS.mkdir(dataPath);\n } catch (err) {\n // Do nothing\n }\n }\n tessModule.FS.writeFile(`${dataPath || '.'}/${lang}.traineddata`, data);\n }\n if (cache) {\n modules.writeCache(`${cachePath || '.'}/${lang}.traineddata`, data);\n }\n return data;\n};\n\nconst loadAndGunzipFile = modules => ({\n langURI,\n cachePath,\n ...options\n}) => lang => (\n modules.readCache(`${cachePath || '.'}/${lang}.traineddata`)\n .then((data) => {\n if (typeof data === 'undefined') {\n return Promise.reject();\n }\n return handleLang(modules)({ cachePath, lang, ...options })(data);\n })\n .catch(() => (\n // console.log(`Download ${lang}.traineddata.gz from ${langURI}/${lang}.traineddata.gz...`);\n modules.fetch(`${langURI}/${lang}.traineddata.gz`)\n .then(resp => resp.arrayBuffer())\n .then(buf => modules.gunzip(new Uint8Array(buf)))\n .then(handleLang(modules)({ cachePath, lang, ...options }))\n ))\n);\n\n/**\n * Load language(s) from local cache, download from remote if not in cache.\n *\n * All params below actually store in a object.\n *\n * ex:\n * loadLang({ langs, tesssModule, ... });\n *\n * @name loadLang\n * @function\n * @param {string} langs - langs to load, use '+' for multiple languages, ex: eng+chi_tra\n * @param {object} tessModule - TesseractModule\n * @param {string} langURI - prefix URI for downloading lang file\n * @param {string} cachePath - path to find cache\n * @param {string} dataPath - path to store data in mem\n * @param {boolean} cache - true for caching\n *\n */\nmodule.exports = modules => ({\n langs,\n ...options\n}) => (\n Promise\n .all(langs.split('+').map(loadAndGunzipFile(modules)(options)))\n);\n","const { fetch } = require('whatwg-fetch');\n\nmodule.exports = fetch;\n","var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = self.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.onabort = function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!self.fetch) {\n self.fetch = fetch\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n}\n","module.exports = require('zlibjs').gunzipSync;\n","/** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */(function() {'use strict';function q(b){throw b;}var t=void 0,v=!0;var B=\"undefined\"!==typeof Uint8Array&&\"undefined\"!==typeof Uint16Array&&\"undefined\"!==typeof Uint32Array&&\"undefined\"!==typeof DataView;function G(b,a){this.index=\"number\"===typeof a?a:0;this.m=0;this.buffer=b instanceof(B?Uint8Array:Array)?b:new (B?Uint8Array:Array)(32768);2*this.buffer.length<=this.index&&q(Error(\"invalid index\"));this.buffer.length<=this.index&&this.f()}G.prototype.f=function(){var b=this.buffer,a,c=b.length,d=new (B?Uint8Array:Array)(c<<1);if(B)d.set(b);else for(a=0;a>>8&255]<<16|I[b>>>16&255]<<8|I[b>>>24&255])>>32-a:I[b]>>8-a);if(8>a+f)g=g<>a-k-1&1,8===++f&&(f=0,d[e++]=I[g],g=0,e===d.length&&(d=this.f()));d[e]=g;this.buffer=d;this.m=f;this.index=e};G.prototype.finish=function(){var b=this.buffer,a=this.index,c;0L;++L){for(var R=L,ba=R,ca=7,R=R>>>1;R;R>>>=1)ba<<=1,ba|=R&1,--ca;aa[L]=(ba<>>0}var I=aa;function ha(b,a,c){var d,e=\"number\"===typeof a?a:a=0,f=\"number\"===typeof c?c:b.length;d=-1;for(e=f&7;e--;++a)d=d>>>8^S[(d^b[a])&255];for(e=f>>3;e--;a+=8)d=d>>>8^S[(d^b[a])&255],d=d>>>8^S[(d^b[a+1])&255],d=d>>>8^S[(d^b[a+2])&255],d=d>>>8^S[(d^b[a+3])&255],d=d>>>8^S[(d^b[a+4])&255],d=d>>>8^S[(d^b[a+5])&255],d=d>>>8^S[(d^b[a+6])&255],d=d>>>8^S[(d^b[a+7])&255];return(d^4294967295)>>>0}\nvar ia=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,\n2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,\n2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,\n2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,\n3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,\n936918E3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],S=B?new Uint32Array(ia):ia;function ja(){};function ka(b){this.buffer=new (B?Uint16Array:Array)(2*b);this.length=0}ka.prototype.getParent=function(b){return 2*((b-2)/4|0)};ka.prototype.push=function(b,a){var c,d,e=this.buffer,f;c=this.length;e[this.length++]=a;for(e[this.length++]=b;0e[d])f=e[c],e[c]=e[d],e[d]=f,f=e[c+1],e[c+1]=e[d+1],e[d+1]=f,c=d;else break;return this.length};\nka.prototype.pop=function(){var b,a,c=this.buffer,d,e,f;a=c[0];b=c[1];this.length-=2;c[0]=c[this.length];c[1]=c[this.length+1];for(f=0;;){e=2*f+2;if(e>=this.length)break;e+2c[e]&&(e+=2);if(c[e]>c[f])d=c[f],c[f]=c[e],c[e]=d,d=c[f+1],c[f+1]=c[e+1],c[e+1]=d;else break;f=e}return{index:b,value:a,length:this.length}};function T(b){var a=b.length,c=0,d=Number.POSITIVE_INFINITY,e,f,g,k,h,m,r,p,l,n;for(p=0;pc&&(c=b[p]),b[p]>=1;n=g<<16|p;for(l=m;lU;U++)switch(v){case 143>=U:qa.push([U+48,8]);break;case 255>=U:qa.push([U-144+400,9]);break;case 279>=U:qa.push([U-256+0,7]);break;case 287>=U:qa.push([U-280+192,8]);break;default:q(\"invalid literal: \"+U)}\nna.prototype.h=function(){var b,a,c,d,e=this.input;switch(this.k){case 0:c=0;for(d=e.length;c>>8&255;l[n++]=m&255;l[n++]=m>>>8&255;if(B)l.set(f,n),n+=f.length,l=l.subarray(0,n);else{r=0;for(p=f.length;rA)for(;0A?A:138,F>A-3&&F=F?(J[H++]=17,J[H++]=F-3,P[17]++):(J[H++]=18,J[H++]=F-11,P[18]++),A-=F;else if(J[H++]=K[y],P[K[y]]++,A--,3>A)for(;0A?A:6,F>A-3&&FE;E++)ta[E]=la[qb[E]];for(Y=19;4=a:return[265,a-11,1];case 14>=a:return[266,a-13,1];case 16>=a:return[267,a-15,1];case 18>=a:return[268,a-17,1];case 22>=a:return[269,a-19,2];case 26>=a:return[270,a-23,2];case 30>=a:return[271,a-27,2];case 34>=a:return[272,\na-31,2];case 42>=a:return[273,a-35,3];case 50>=a:return[274,a-43,3];case 58>=a:return[275,a-51,3];case 66>=a:return[276,a-59,3];case 82>=a:return[277,a-67,4];case 98>=a:return[278,a-83,4];case 114>=a:return[279,a-99,4];case 130>=a:return[280,a-115,4];case 162>=a:return[281,a-131,5];case 194>=a:return[282,a-163,5];case 226>=a:return[283,a-195,5];case 257>=a:return[284,a-227,5];case 258===a:return[285,a-258,0];default:q(\"invalid length: \"+a)}}var a=[],c,d;for(c=3;258>=c;c++)d=b(c),a[c]=d[2]<<24|d[1]<<\n16|d[0];return a}(),ya=B?new Uint32Array(xa):xa;\nfunction ra(b,a){function c(a,c){var b=a.N,d=[],f=0,e;e=ya[a.length];d[f++]=e&65535;d[f++]=e>>16&255;d[f++]=e>>24;var g;switch(v){case 1===b:g=[0,b-1,0];break;case 2===b:g=[1,b-2,0];break;case 3===b:g=[2,b-3,0];break;case 4===b:g=[3,b-4,0];break;case 6>=b:g=[4,b-5,1];break;case 8>=b:g=[5,b-7,1];break;case 12>=b:g=[6,b-9,2];break;case 16>=b:g=[7,b-13,2];break;case 24>=b:g=[8,b-17,3];break;case 32>=b:g=[9,b-25,3];break;case 48>=b:g=[10,b-33,4];break;case 64>=b:g=[11,b-49,4];break;case 96>=b:g=[12,b-\n65,5];break;case 128>=b:g=[13,b-97,5];break;case 192>=b:g=[14,b-129,6];break;case 256>=b:g=[15,b-193,6];break;case 384>=b:g=[16,b-257,7];break;case 512>=b:g=[17,b-385,7];break;case 768>=b:g=[18,b-513,8];break;case 1024>=b:g=[19,b-769,8];break;case 1536>=b:g=[20,b-1025,9];break;case 2048>=b:g=[21,b-1537,9];break;case 3072>=b:g=[22,b-2049,10];break;case 4096>=b:g=[23,b-3073,10];break;case 6144>=b:g=[24,b-4097,11];break;case 8192>=b:g=[25,b-6145,11];break;case 12288>=b:g=[26,b-8193,12];break;case 16384>=\nb:g=[27,b-12289,12];break;case 24576>=b:g=[28,b-16385,13];break;case 32768>=b:g=[29,b-24577,13];break;default:q(\"invalid distance\")}e=g;d[f++]=e[0];d[f++]=e[1];d[f++]=e[2];var h,k;h=0;for(k=d.length;h=f;)u[f++]=0;for(f=0;29>=f;)w[f++]=0}u[256]=1;d=0;for(e=a.length;d=e){p&&c(p,-1);f=0;for(g=e-d;fg&&a+gf&&(e=d,f=g);if(258===g)break}return new va(f,a-e)}\nfunction sa(b,a){var c=b.length,d=new ka(572),e=new (B?Uint8Array:Array)(c),f,g,k,h,m;if(!B)for(h=0;h2*e[n-1]+f[n]&&(e[n]=2*e[n-1]+f[n]),k[n]=Array(e[n]),h[n]=Array(e[n]);for(l=0;lb[l]?(k[n][s]=u,h[n][s]=a,w+=2):(k[n][s]=b[l],h[n][s]=l,++l);m[n]=0;1===f[n]&&d(n)}return g}\nfunction ua(b){var a=new (B?Uint16Array:Array)(b.length),c=[],d=[],e=0,f,g,k,h;f=0;for(g=b.length;f>>=1}return a};function Ba(b,a){this.input=b;this.b=this.c=0;this.g={};a&&(a.flags&&(this.g=a.flags),\"string\"===typeof a.filename&&(this.filename=a.filename),\"string\"===typeof a.comment&&(this.w=a.comment),a.deflateOptions&&(this.l=a.deflateOptions));this.l||(this.l={})}\nBa.prototype.h=function(){var b,a,c,d,e,f,g,k,h=new (B?Uint8Array:Array)(32768),m=0,r=this.input,p=this.c,l=this.filename,n=this.w;h[m++]=31;h[m++]=139;h[m++]=8;b=0;this.g.fname&&(b|=Ca);this.g.fcomment&&(b|=Da);this.g.fhcrc&&(b|=Ea);h[m++]=b;a=(Date.now?Date.now():+new Date)/1E3|0;h[m++]=a&255;h[m++]=a>>>8&255;h[m++]=a>>>16&255;h[m++]=a>>>24&255;h[m++]=0;h[m++]=Sa;if(this.g.fname!==t){g=0;for(k=l.length;g>>8&255),h[m++]=f&255;h[m++]=0}if(this.g.comment){g=\n0;for(k=n.length;g>>8&255),h[m++]=f&255;h[m++]=0}this.g.fhcrc&&(c=ha(h,0,m)&65535,h[m++]=c&255,h[m++]=c>>>8&255);this.l.outputBuffer=h;this.l.outputIndex=m;e=new na(r,this.l);h=e.h();m=e.b;B&&(m+8>h.buffer.byteLength?(this.a=new Uint8Array(m+8),this.a.set(new Uint8Array(h.buffer)),h=this.a):h=new Uint8Array(h.buffer));d=ha(r,t,t);h[m++]=d&255;h[m++]=d>>>8&255;h[m++]=d>>>16&255;h[m++]=d>>>24&255;k=r.length;h[m++]=k&255;h[m++]=k>>>8&255;h[m++]=k>>>16&255;h[m++]=\nk>>>24&255;this.c=p;B&&m>>=1;switch(b){case 0:var a=this.input,c=this.c,d=this.a,e=this.b,f=a.length,g=t,k=t,h=d.length,m=t;this.e=this.j=0;c+1>=f&&q(Error(\"invalid uncompressed block header: LEN\"));g=a[c++]|a[c++]<<8;c+1>=f&&q(Error(\"invalid uncompressed block header: NLEN\"));k=a[c++]|a[c++]<<8;g===~k&&q(Error(\"invalid uncompressed block header: length verify\"));c+g>a.length&&q(Error(\"input buffer is broken\"));switch(this.q){case Ua:for(;e+g>d.length;){m=\nh-e;g-=m;if(B)d.set(a.subarray(c,c+m),e),e+=m,c+=m;else for(;m--;)d[e++]=a[c++];this.b=e;d=this.f();e=this.b}break;case Ta:for(;e+g>d.length;)d=this.f({B:2});break;default:q(Error(\"invalid inflate mode\"))}if(B)d.set(a.subarray(c,c+g),e),e+=g,c+=g;else for(;g--;)d[e++]=a[c++];this.c=c;this.b=e;this.a=d;break;case 1:this.r(Va,Wa);break;case 2:for(var r=W(this,5)+257,p=W(this,5)+1,l=W(this,4)+4,n=new (B?Uint8Array:Array)(Xa.length),s=t,u=t,w=t,C=t,x=t,D=t,M=t,z=t,N=t,z=0;z=$?8:255>=$?9:279>=$?7:8;var Va=T(hb),jb=new (B?Uint8Array:Array)(30),kb,lb;kb=0;for(lb=jb.length;kb=g&&q(Error(\"input buffer is broken\")),c|=e[f++]<>>a;b.e=d-a;b.c=f;return k}\nfunction Ya(b,a){for(var c=b.j,d=b.e,e=b.input,f=b.c,g=e.length,k=a[0],h=a[1],m,r;d=g);)c|=e[f++]<>>16;r>d&&q(Error(\"invalid code length: \"+r));b.j=c>>r;b.e=d-r;b.c=f;return m&65535}\nV.prototype.r=function(b,a){var c=this.a,d=this.b;this.A=b;for(var e=c.length-258,f,g,k,h;256!==(f=Ya(this,b));)if(256>f)d>=e&&(this.b=d,c=this.f(),d=this.b),c[d++]=f;else{g=f-257;h=ab[g];0=e&&(this.b=d,c=this.f(),d=this.b);for(;h--;)c[d]=c[d++-k]}for(;8<=this.e;)this.e-=8,this.c--;this.b=d};\nV.prototype.Q=function(b,a){var c=this.a,d=this.b;this.A=b;for(var e=c.length,f,g,k,h;256!==(f=Ya(this,b));)if(256>f)d>=e&&(c=this.f(),e=c.length),c[d++]=f;else{g=f-257;h=ab[g];0e&&(c=this.f(),e=c.length);for(;h--;)c[d]=c[d++-k]}for(;8<=this.e;)this.e-=8,this.c--;this.b=d};\nV.prototype.f=function(){var b=new (B?Uint8Array:Array)(this.b-32768),a=this.b-32768,c,d,e=this.a;if(B)b.set(e.subarray(32768,b.length));else{c=0;for(d=b.length;cc;++c)e[c]=e[a+c];this.b=32768;return e};\nV.prototype.S=function(b){var a,c=this.input.length/this.c+1|0,d,e,f,g=this.input,k=this.a;b&&(\"number\"===typeof b.B&&(c=b.B),\"number\"===typeof b.M&&(c+=b.M));2>c?(d=(g.length-this.c)/this.A[2],f=258*(d/2)|0,e=fa&&(this.a.length=a),b=this.a);return this.buffer=b};function mb(b){this.input=b;this.c=0;this.G=[];this.R=!1}\nmb.prototype.i=function(){for(var b=this.input.length;this.c>>0;ha(e,t,t)!==r&&q(Error(\"invalid CRC-32 checksum: 0x\"+ha(e,t,t).toString(16)+\" / 0x\"+\nr.toString(16)));a.Z=c=(p[l++]|p[l++]<<8|p[l++]<<16|p[l++]<<24)>>>0;(e.length&4294967295)!==c&&q(Error(\"invalid input size: \"+(e.length&4294967295)+\" / \"+c));this.G.push(a);this.c=l}this.R=v;var n=this.G,s,u,w=0,C=0,x;s=0;for(u=n.length;s>>0;b=a}for(var e=1,f=0,g=b.length,k,h=0;0>>0};function ob(b,a){var c,d;this.input=b;this.c=0;if(a||!(a={}))a.index&&(this.c=a.index),a.verify&&(this.V=a.verify);c=b[this.c++];d=b[this.c++];switch(c&15){case pb:this.method=pb;break;default:q(Error(\"unsupported compression method\"))}0!==((c<<8)+d)%31&&q(Error(\"invalid fcheck flag:\"+((c<<8)+d)%31));d&32&&q(Error(\"fdict flag is not supported\"));this.J=new V(b,{index:this.c,bufferSize:a.bufferSize,bufferType:a.bufferType,resize:a.resize})}\nob.prototype.i=function(){var b=this.input,a,c;a=this.J.i();this.c=this.J.c;this.V&&(c=(b[this.c++]<<24|b[this.c++]<<16|b[this.c++]<<8|b[this.c++])>>>0,c!==nb(a)&&q(Error(\"invalid adler-32 checksum\")));return a};var pb=8;function rb(b,a){this.input=b;this.a=new (B?Uint8Array:Array)(32768);this.k=sb.t;var c={},d;if((a||!(a={}))&&\"number\"===typeof a.compressionType)this.k=a.compressionType;for(d in a)c[d]=a[d];c.outputBuffer=this.a;this.I=new na(this.input,c)}var sb=pa;\nrb.prototype.h=function(){var b,a,c,d,e,f,g,k=0;g=this.a;b=pb;switch(b){case pb:a=Math.LOG2E*Math.log(32768)-8;break;default:q(Error(\"invalid compression method\"))}c=a<<4|b;g[k++]=c;switch(b){case pb:switch(this.k){case sb.NONE:e=0;break;case sb.L:e=1;break;case sb.t:e=2;break;default:q(Error(\"unsupported compression type\"))}break;default:q(Error(\"invalid compression method\"))}d=e<<6|0;g[k++]=d|31-(256*c+d)%31;f=nb(this.input);this.I.b=k;g=this.I.h();k=g.length;B&&(g=new Uint8Array(g.buffer),g.length<=\nk+4&&(this.a=new Uint8Array(g.length+4),this.a.set(g),g=this.a),g=g.subarray(0,k+4));g[k++]=f>>24&255;g[k++]=f>>16&255;g[k++]=f>>8&255;g[k++]=f&255;return g};exports.deflate=tb;exports.deflateSync=ub;exports.inflate=vb;exports.inflateSync=wb;exports.gzip=xb;exports.gzipSync=yb;exports.gunzip=zb;exports.gunzipSync=Ab;function tb(b,a,c){process.nextTick(function(){var d,e;try{e=ub(b,c)}catch(f){d=f}a(d,e)})}function ub(b,a){var c;c=(new rb(b)).h();a||(a={});return a.H?c:Bb(c)}function vb(b,a,c){process.nextTick(function(){var d,e;try{e=wb(b,c)}catch(f){d=f}a(d,e)})}\nfunction wb(b,a){var c;b.subarray=b.slice;c=(new ob(b)).i();a||(a={});return a.noBuffer?c:Bb(c)}function xb(b,a,c){process.nextTick(function(){var d,e;try{e=yb(b,c)}catch(f){d=f}a(d,e)})}function yb(b,a){var c;b.subarray=b.slice;c=(new Ba(b)).h();a||(a={});return a.H?c:Bb(c)}function zb(b,a,c){process.nextTick(function(){var d,e;try{e=Ab(b,c)}catch(f){d=f}a(d,e)})}function Ab(b,a){var c;b.subarray=b.slice;c=(new mb(b)).i();a||(a={});return a.H?c:Bb(c)}\nfunction Bb(b){var a=new Buffer(b.length),c,d;c=0;for(d=b.length;c 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return (b64.length * 3 / 4) - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr((len * 3 / 4) - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0; i < l; i += 4) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","const { set, get } = require('idb-keyval');\n\nmodule.exports = {\n readCache: get,\n writeCache: set,\n};\n","class Store {\r\n constructor(dbName = 'keyval-store', storeName = 'keyval') {\r\n this.storeName = storeName;\r\n this._dbp = new Promise((resolve, reject) => {\r\n const openreq = indexedDB.open(dbName, 1);\r\n openreq.onerror = () => reject(openreq.error);\r\n openreq.onsuccess = () => resolve(openreq.result);\r\n // First time setup: create an empty object store\r\n openreq.onupgradeneeded = () => {\r\n openreq.result.createObjectStore(storeName);\r\n };\r\n });\r\n }\r\n _withIDBStore(type, callback) {\r\n return this._dbp.then(db => new Promise((resolve, reject) => {\r\n const transaction = db.transaction(this.storeName, type);\r\n transaction.oncomplete = () => resolve();\r\n transaction.onabort = transaction.onerror = () => reject(transaction.error);\r\n callback(transaction.objectStore(this.storeName));\r\n }));\r\n }\r\n}\r\nlet store;\r\nfunction getDefaultStore() {\r\n if (!store)\r\n store = new Store();\r\n return store;\r\n}\r\nfunction get(key, store = getDefaultStore()) {\r\n let req;\r\n return store._withIDBStore('readonly', store => {\r\n req = store.get(key);\r\n }).then(() => req.result);\r\n}\r\nfunction set(key, value, store = getDefaultStore()) {\r\n return store._withIDBStore('readwrite', store => {\r\n store.put(value, key);\r\n });\r\n}\r\nfunction del(key, store = getDefaultStore()) {\r\n return store._withIDBStore('readwrite', store => {\r\n store.delete(key);\r\n });\r\n}\r\nfunction clear(store = getDefaultStore()) {\r\n return store._withIDBStore('readwrite', store => {\r\n store.clear();\r\n });\r\n}\r\nfunction keys(store = getDefaultStore()) {\r\n const keys = [];\r\n return store._withIDBStore('readonly', store => {\r\n // This would be store.getAllKeys(), but it isn't supported by Edge or Safari.\r\n // And openKeyCursor isn't supported by Safari.\r\n (store.openKeyCursor || store.openCursor).call(store).onsuccess = function () {\r\n if (!this.result)\r\n return;\r\n keys.push(this.result.key);\r\n this.result.continue();\r\n };\r\n }).then(() => keys);\r\n}\n\nexport { Store, get, set, del, clear, keys };\n","module.exports = (TessModule, buf) => {\n const ptr = TessModule._malloc(buf.length * Uint8Array.BYTES_PER_ELEMENT);\n TessModule.HEAPU8.set(buf, ptr);\n const pix = TessModule._pixReadMem(ptr, buf.length);\n if (TessModule.getValue(pix + (7 * 4), 'i32') === 0) {\n /*\n * Set a yres default value to prevent warning from tesseract\n * See kMinCredibleResolution in tesseract/src/ccstruct/publictypes.h\n */\n TessModule.setValue(pix + (7 * 4), 70, 'i32');\n }\n const [w, h, d, spp, wpl, refcount, xres, yres, informat, special] = Array(10).fill(0)\n .map((v, idx) => (\n TessModule.getValue(pix + (idx * 4), 'i32')\n ));\n return {\n w,\n h,\n d,\n spp,\n wpl,\n refcount,\n xres,\n yres,\n informat,\n special,\n data: pix,\n };\n};\n","// the generated HOCR is excessively indented, so\n// we get rid of that indentation\n\nconst deindent = (html) => {\n const lines = html.split('\\n');\n if (lines[0].substring(0, 2) === ' ') {\n for (let i = 0; i < lines.length; i += 1) {\n if (lines[i].substring(0, 2) === ' ') {\n lines[i] = lines[i].slice(2);\n }\n }\n }\n return lines.join('\\n');\n};\n\nmodule.exports = (Module, base) => {\n const ri = base.GetIterator();\n const blocks = [];\n let block;\n let para;\n let textline;\n let word;\n let symbol;\n\n const enumToString = (value, prefix) => (\n Object.keys(Module)\n .filter(e => (e.substr(0, prefix.length + 1) === `${prefix}_`))\n .filter(e => Module[e] === value)\n .map(e => e.slice(prefix.length + 1))[0]\n );\n\n ri.Begin();\n do {\n if (ri.IsAtBeginningOf(Module.RIL_BLOCK)) {\n const poly = ri.BlockPolygon();\n let polygon = null;\n // BlockPolygon() returns null when automatic page segmentation is off\n if (Module.getPointer(poly) > 0) {\n const n = poly.get_n();\n const px = poly.get_x();\n const py = poly.get_y();\n polygon = [];\n for (let i = 0; i < n; i += 1) {\n polygon.push([px.getValue(i), py.getValue(i)]);\n }\n Module._ptaDestroy(Module.getPointer(poly));\n }\n\n block = {\n paragraphs: [],\n text: ri.GetUTF8Text(Module.RIL_BLOCK),\n confidence: ri.Confidence(Module.RIL_BLOCK),\n baseline: ri.getBaseline(Module.RIL_BLOCK),\n bbox: ri.getBoundingBox(Module.RIL_BLOCK),\n blocktype: enumToString(ri.BlockType(), 'PT'),\n polygon,\n };\n blocks.push(block);\n }\n if (ri.IsAtBeginningOf(Module.RIL_PARA)) {\n para = {\n lines: [],\n text: ri.GetUTF8Text(Module.RIL_PARA),\n confidence: ri.Confidence(Module.RIL_PARA),\n baseline: ri.getBaseline(Module.RIL_PARA),\n bbox: ri.getBoundingBox(Module.RIL_PARA),\n is_ltr: !!ri.ParagraphIsLtr(),\n };\n block.paragraphs.push(para);\n }\n if (ri.IsAtBeginningOf(Module.RIL_TEXTLINE)) {\n textline = {\n words: [],\n text: ri.GetUTF8Text(Module.RIL_TEXTLINE),\n confidence: ri.Confidence(Module.RIL_TEXTLINE),\n baseline: ri.getBaseline(Module.RIL_TEXTLINE),\n bbox: ri.getBoundingBox(Module.RIL_TEXTLINE),\n };\n para.lines.push(textline);\n }\n if (ri.IsAtBeginningOf(Module.RIL_WORD)) {\n const fontInfo = ri.getWordFontAttributes();\n const wordDir = ri.WordDirection();\n word = {\n symbols: [],\n choices: [],\n\n text: ri.GetUTF8Text(Module.RIL_WORD),\n confidence: ri.Confidence(Module.RIL_WORD),\n baseline: ri.getBaseline(Module.RIL_WORD),\n bbox: ri.getBoundingBox(Module.RIL_WORD),\n\n is_numeric: !!ri.WordIsNumeric(),\n in_dictionary: !!ri.WordIsFromDictionary(),\n direction: enumToString(wordDir, 'DIR'),\n language: ri.WordRecognitionLanguage(),\n\n is_bold: fontInfo.is_bold,\n is_italic: fontInfo.is_italic,\n is_underlined: fontInfo.is_underlined,\n is_monospace: fontInfo.is_monospace,\n is_serif: fontInfo.is_serif,\n is_smallcaps: fontInfo.is_smallcaps,\n font_size: fontInfo.pointsize,\n font_id: fontInfo.font_id,\n font_name: fontInfo.font_name,\n };\n const wc = new Module.WordChoiceIterator(ri);\n do {\n word.choices.push({\n text: wc.GetUTF8Text(),\n confidence: wc.Confidence(),\n });\n } while (wc.Next());\n Module.destroy(wc);\n textline.words.push(word);\n }\n\n // let image = null;\n // var pix = ri.GetBinaryImage(Module.RIL_SYMBOL)\n // var image = pix2array(pix);\n // // for some reason it seems that things stop working if you destroy pics\n // Module._pixDestroy(Module.getPointer(pix));\n if (ri.IsAtBeginningOf(Module.RIL_SYMBOL)) {\n symbol = {\n choices: [],\n image: null,\n text: ri.GetUTF8Text(Module.RIL_SYMBOL),\n confidence: ri.Confidence(Module.RIL_SYMBOL),\n baseline: ri.getBaseline(Module.RIL_SYMBOL),\n bbox: ri.getBoundingBox(Module.RIL_SYMBOL),\n is_superscript: !!ri.SymbolIsSuperscript(),\n is_subscript: !!ri.SymbolIsSubscript(),\n is_dropcap: !!ri.SymbolIsDropcap(),\n };\n word.symbols.push(symbol);\n const ci = new Module.ChoiceIterator(ri);\n do {\n symbol.choices.push({\n text: ci.GetUTF8Text(),\n confidence: ci.Confidence(),\n });\n } while (ci.Next());\n // Module.destroy(i);\n }\n } while (ri.Next(Module.RIL_SYMBOL));\n Module.destroy(ri);\n\n return {\n text: base.GetUTF8Text(),\n html: deindent(base.GetHOCRText()),\n confidence: base.MeanTextConf(),\n blocks,\n psm: enumToString(base.GetPageSegMode(), 'PSM'),\n oem: enumToString(base.oem(), 'OEM'),\n version: base.Version(),\n };\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/scripts/server.js b/scripts/server.js index ddbf44f..eee81a6 100644 --- a/scripts/server.js +++ b/scripts/server.js @@ -7,9 +7,9 @@ const webpackConfig = require('./webpack.config.dev'); const compiler = webpack(webpackConfig); const app = express(); -express.static.mime.types.wasm = 'application/wasm'; - app.use('/', express.static(path.resolve(__dirname, '..'))); app.use(middleware(compiler, { publicPath: '/dist' })); -app.listen(3000, () => console.log('Server is running on port 3000')); +module.exports = app.listen(3000, () => { + console.log('Server is running on port 3000'); +}); diff --git a/scripts/test-helper.js b/scripts/test-helper.js new file mode 100644 index 0000000..bbfc19b --- /dev/null +++ b/scripts/test-helper.js @@ -0,0 +1,17 @@ +const express = require('express'); +const path = require('path'); +global.expect = require('expect.js'); +global.fetch = require('node-fetch'); +global.Tesseract = require('../src'); + +const app = express(); +let devServer = null; + +global.startServer = (done) => { + app.use('/', express.static(path.resolve(__dirname, '..'))); + devServer = app.listen(3000, done); +}; + +global.stopServer = (done) => { + devServer.close(done); +}; diff --git a/scripts/webpack.config.prod.js b/scripts/webpack.config.prod.js index 90e4166..fa161d6 100644 --- a/scripts/webpack.config.prod.js +++ b/scripts/webpack.config.prod.js @@ -7,7 +7,7 @@ const genConfig = ({ devtool: 'source-map', entry, output: { - path: path.resolve(__dirname, 'dist'), + path: path.resolve(__dirname, '..', 'dist'), filename, library, libraryTarget, diff --git a/src/common/worker.js b/src/common/worker.js index 03679b9..441c486 100644 --- a/src/common/worker.js +++ b/src/common/worker.js @@ -48,14 +48,21 @@ const handleInit = (req, res) => { return Promise.resolve(); }; -const loadLanguage = (req) => { - const { options: { lang }, workerOptions: { langPath } } = req; - return loadLang({ +const loadLanguage = ({ + options: { lang }, + workerOptions: { + langPath, cachePath, cacheMethod, dataPath, + }, +}) => ( + loadLang({ langs: lang, tessModule: Module, langURI: langPath, - }); -}; + cachePath, + cacheMethod, + dataPath, + }) +); const handleRecognize = (req, res) => ( handleInit(req, res) diff --git a/src/node/index.js b/src/node/index.js index 30957b3..a97f4c9 100644 --- a/src/node/index.js +++ b/src/node/index.js @@ -11,7 +11,7 @@ const readFile = util.promisify(fs.readFile); const loadImage = (imageURI) => { if (isURL(imageURI)) { return fetch(imageURI) - .then(resp => resp.buffer()); + .then(resp => resp.arrayBuffer()); } return readFile(imageURI); }; diff --git a/tests/.eslintrc b/tests/.eslintrc new file mode 100644 index 0000000..d117642 --- /dev/null +++ b/tests/.eslintrc @@ -0,0 +1,5 @@ +{ + "rules": { + "no-undef": 0 + } +} diff --git a/tests/assets/images/cosmic.png b/tests/assets/images/cosmic.png new file mode 100644 index 0000000000000000000000000000000000000000..b78d9da284ed46a600119de5eb804a239b52f09a GIT binary patch literal 13037 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 literal 0 HcmV?d00001 diff --git a/tests/assets/images/simple.bmp b/tests/assets/images/simple.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7af3becb925ce18e6e3218ab8d84ba58b05a49fe GIT binary patch literal 172938 zcmeI(KW`jG7zf}rAS5Vg5E4~Nlp1#@A)z!>6i`#&7oer3Nt0_`^A(Uq4IhHSAAy?s z7~jONhnd-(u@xn{_&LS)di?JEc|5<{y|eP-`D@_YJvv3!|6 zr$_qvU!N_fkKAzk`FQv5^v#R!e*F2>pZ`Ap;g4ruJp1*Zi_6Q)&-eTNSLx&9tE;O| zzWMa;51;?^>g)USm*u1Ko7)~e2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5;&GZfez zZkE$yw=Bn-!x^r?lnFdtfyi$Pu?RoiePHG1EO321F3Ube_~x)X=XIDnfhQ`k?5|UP z54+`fym_JomQCPn1@euw{GRPE@N6c2xJfsAyWxwq@|E4`9h&8OpDr%+vVdi-8jE~wD}$S+@0zx zfd>c-^Bb?`%50XoNQ1STGZ)0J9v0*o&x}h=_%&__q2KW?b52UGQ6p{ zU03x4Smk$e`49NDDJ5_c*v@ac@v5s*+M=;(b6I&+iV)?-VL_V9st5HmMXgi^JB&4 z@8&l;ucqB*YI4MFqH^JJ+>RALT3dcu;F!Rqz{ci`n4}o4J*tf4L_~3W!?{-Qps}L3 zo8PqX9G{p*c~D;O-hO`9mOuH+QbwQ>*vN0HtoBVPE!B7-68%1(Kb;vO1aqfxnjeo+mA*9+XBPQnXj|ug*D<+<~qM?RFWs{3D3++hW7p?BUP~2vh>q|I&@ubk%{qSGmo98!yk>x69@`QAwaHAirIfH{0m? z`({1$Mt}eT0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ Q009C72oNAZ;Jp|44}r1WZU6uP literal 0 HcmV?d00001 diff --git a/tests/assets/images/simple.jpg b/tests/assets/images/simple.jpg new file mode 100644 index 0000000000000000000000000000000000000000..98b1b8cebbf34acdf571f6449fb69bc22de4b87a GIT binary patch literal 4978 zcmeHKc~BE*mJfml9^FO`5!7^pf*O&H5d`EI+W>M#K+XuXL4zR%4B-+8%yiotAi$tp z2}eedn~(-V0!W}oL!uHA1;Q;+!qEf)V+c3NV$DwVRPFw=Tl?qyzN+tg^{#sF)mQJ; zQw^y;01mo1Iy(Z?)OG+)ZXbYZ6mSKgzT+#t-s;=X*ro9mdv@*Gxl41;-o2W8G&T3` z|91c0ec$ZU)I0z@@Xfae4+0PF-G4~y&_S(j`rub5YF{nYHTG;99^9w7Z=3tSgz7f{ za1Vf?_9t~UAYcbjO&zGF;s6W)Y5;YBx*FgQ?ApCYZKtNjw($HxfSS6-4mI^18asFX zLq%QTXfz9q7}>zpF+7`?sUp z)&c_T0SdQ2y#AZ|KUP5dxOi;r*$e32Ip4;QGc%hJd3&bPwl*)b0@-0_@5~y^S0G=B zcgK#4k{6!C$6kymb7RcS%XH}X_+6IY-WDVANq})h4 zli}3U;k~fwA*N#LcW=SK9WG#vlOnJw?{DvoIeoQf7OHjJ_T3R~QW7uOz`3TT-_OLQ`U~{~CCC?rG!8v9 zY5mXCAI*}|J=ry8zm2K@m(T|38`z8Ncws@Bz);-W&hy`JFKY@} zLr{O{kjiMSP9#38Cna8BGgHlXa)tdf?tguE^Ws$iXPOF-Wum7KJuwOo$rF<~+`$ZLCeOU#VA5;PQy_Jb^%1%qAIyz<0I{JN^7J;DBHS_c;XTX^XYBdGo5w$G>-{M^VSQRo~c7tx&A3AeR-} z-cvD1!yI$K1Q4g}MHdUmSx1r9awsM)o3O7B>%z4h7+|cC87OeD9Oz#_-ry@ET0AVx zU!VEZdGk}x>7N%2xYJz?-526M*?<4)yS#nWh$yCues$QbD39tBBv|h6)IAGrk?8@x zbqg`cx%8GaCt78Mc>&i<_gRniY5~Q~Bay-9Z=R@|Us9GmeJUW>y7bUWrkfB0rl~wW z0-{$yVGpF}i>iB=jVO=9vXcBgKPHfOf4K+sb~@Jpt) zcGjb5GhR8V3_l1IDvJNYkCD1<^7NKDTtj~q05Zv}8MJI-Mig&eT^3*%^Yq(y^W1)V zII$U}Fe={cx^(K~vs>4*TaQkKNo!z4qR2spk1h`RXa>ImFDb$3(kd+|)6jGw4l*4k zb3+-T!rEsm4QfVLYjKRO3S%}5(Mse(AZtku_;fd}W{-)vy>nhrwGS zLA}D{v5Un?hy7;Z{eKcU`XrnNmvFC&kZjt#wU4c6c$^y2**Bpa>GL&CaS_H6mGuyt z#MD%-u}$OX!d&grnML}Ik%6}bs|%a#R=EzDcQ%ZkipW_%rvg-5;NFZVol+(`1>vx^ zH-;+`aTV?7xkE+bptlxJjWYEn!wP+lD;&X;$>32rchTD=daly$y(NpVF^@pDTWxLP z3P@kboVZ^M?({3>>33%C*C|L|ra<(Rb{3J$AGD+l7$(d=fC`+XrnV=k5XnXRI13Kn zbnwm9GmyI8#*P_u>)Q_a-iK%4&f4z5`Hbx2^{~a4mEho!jzSD(k+}}J$}FLkGWkf1 zuI!G$*x1+*LRt|sO#=!ES9?b=fdkx%ViX2qmCA@2b40#NC6ff!Sw*h5qF6S=Yr!7| zj(Uj#M8O9vQs5!6uNu$jnq#WxuglDGF3_Wra~jR4UaZQ7z%GY5hCg#Xq-(MH0v(-U ztMBLa?wEUPNCwhGq7}T!>3W_@lwg}L0$D?|bG{AMlmUvLZ5J-smnjrCKoBAlME0DJVY(WEDmXBO+pm7wzZ zIRDfcL}H35UT>Mlg%)ffPYU~&niL1Htkcpqe7D`KAWX|Xq5-%}PWS;i`=n*IaAqab z;Y(?c=U;>9_ayn4(6hR2a}OSSds+2IJ@5TXR@?*A#CPn~)l#MOW+gV{^XA;FlWB+_ z4oHP^Lo@KpS-|7pk2BD`f!eZao9Hdu(?v-rqa4YiyePJGwJ9+_;&zVt2BA4~3P z0ggi0}T4JA8tRyf*6(p~e17NKU zZd4w|zH7U=o82$i3e_R005ZF4U}f_p{b-yrhSjoGH;?es9(nBTJKpg6%bvQGeOQ66 zRY$vz&N0sKN7HJm`>2ykFifD(Bx$~w-u#xyRrFYmD;RLxMM_VpI7xsb%7El7-Le>W zTP`gwwX1!ZGKieoF0oJL{(Rp;|iIjVhAN47JK^;X4)NC0L|K zfc0|=`m(yLNJ5+yo#SX6s=JsI#%c1H9JFbfl74LQeL0b7N(0|LT;uv+^ca5cB~t&j z7n4b|mo+pOkO4&lwf-};$pd8~okNb;#*8zBE3VRGy%(lUc|EkOm(B&t0w@$ZVFC@A zWhPel7w6S?*Y?brr^nM!xWWm-P>Buh_$Rlps@$n|=y9*W^R9yLNiwq|V{Oaw%i8zW zrlMn8^)ivnijp?{0rr!!;xFP|Wl4uCV{6z~AcO=l+&8;ux@j8HKS+m!j~Juyp!`f@ z*D#dtHjnsOrd=Y26Gflpz>1Eg9C)|1 zX+12!>v{+%Ub-h+l>C!oYSvs?>AH3J!*Y{*SMA*doFzGRA#_?qN)qCNrwvh1C=hDn z+r*;pgI8xZ9SduBsI-r$cn{;lCJa%ACz440h2S3}>Mx-z7wnG_I(NUSsXubk&F3EH zjU`nB>(u<1P0!YOH3>sniKq52Hw1xd1v6Y~d96QLUg!wc0F42V~WhAyND?U|drUe1r&jMdCb@leU;??KhPe1Otwmsc8 zHj_}HRzxz%11DakUa~T&K*vPi@a<}5mv(vIt)e`V|Dr>1@A)pz-osk=Mcq$%mf7|A zQSfu$RSR<;2Z!|pyz7=(mP8XJOFnoApwl$g`cuKY6mCIj5EV5MxGd;~g;^>Y*7VAf<-9&hbuQo!$-*+=;~Jy-rU?y1R!lMBOhoL3 zQ7PPDR%i_`NXKzF9KwWQLsmP7k1`FgD|yq3{}tcgF;DZp*}odp_R!z%LH_S%`L5;o zBGIimPj#=bS)nz1kJ zr)n`>>SbF`iR1Q1j&PfG5TB=!n zx5XXKIhQr)<7jwRJQPl->cDJ(F^heJ#XR41m^a8=a)d0Oz=J?{-4aV82pw5Z$MHgY zP`aLMnJ(t50O1CtsNiRlJjk(ByRnTI!B{NIG>VNTjCi_bKO3jM|M1w*sC|2No15&$ zSa*J0E$%Q@cFY`+mEfip=K53sf!}}-S9chxpUYfjnEpa`W-3s>kPPIcRUGe#o_j>`F+49rkXr zz8jB;Ba^8>D~bx>-uT|**{9~%py0@WIz$%+N)l@=aAXqV3Nq9d#*%w?RgH@hJf4TV zcdKOiWI_)9vCsYYDfX44{!}1?3oQxagPYw1o|5LW9#Z39Yg_)}N%uyMJbKXsrp%m8 zI4|l|V0h4D9K~R2DsSGBvo(RzM@tj%MKA?KJg0SJOJbG9__$ZHa`dx@rDPCs4utC* z$3*SRVI_*>-_ciC;9|t!wDXi>^U*3Q=zxdPCo!tE`?^#GFfL5+1-pa+fkeIpx*;%9 r8tu0X^Bq|s7X}(a?Zdf-_ILP_l?|j}-}%`8IfZ|7|KBSBQVstnJ-c!- literal 0 HcmV?d00001 diff --git a/tests/assets/images/simple.pbm b/tests/assets/images/simple.pbm new file mode 100644 index 0000000000000000000000000000000000000000..83c7b93d25a4802b093c5f049a8c300f57060081 GIT binary patch literal 7211 zcmeH_u};G<5QZN8#Fi&$b{P1U7HkwfTo zu4D-@A#|Dk%m3dm`%510XLq;urg3%#@(2MTAOwVf5D)@FKnMr{A@C0g%*W(XKAG6? z(;N_6T0pk%EXS74WZHLTvN0%Hm7AsRhhiVWFPX(hTbAv( z#Z%7a?hE9>6g$w^p85>$V7dq%6nubD_?@$gd5I(o2+yFE(t0`{CMFxmHLZQ`43=f( zC(W!xQoWD!ZZtTmAO-MOM-U|UC WAOwVf5D)@FKnMr{As__)27xbr(pT>Q literal 0 HcmV?d00001 diff --git a/tests/assets/images/simple.png b/tests/assets/images/simple.png new file mode 100644 index 0000000000000000000000000000000000000000..68c0a42b34ffbbf0bfa8603deaacae4f8819417e GIT binary patch literal 1305 zcmeAS@N?(olHy`uVBq!ia0y~yU~~Yow{S24$*i^{Hz37W9OUlAu$Xf4@-t@L0A(HGxBISfg+A+5UX{lzi&+?e$j8r|b4r zwfn0-P;7sH{_n26Pp;4Z$`yZp{smXtoT|6G|8>5-FLVAXPU?NqhMcn>@uJFo_joZbT>)-ao#2SCt`W*lgl@6zuJ3c ztuYJdCFT4r0^w~_;oZpE$7zx}W@K!3OEY@hTG&ueQ_4;c5KXJyjs zJ9q2WTb}jocg{ar)ozt%o3nGvua6}M{>0sun5A*rXm+dhX`3>eib=<(ZVta>MX%n9|mu)|%ZFT9~ituOo z(~X(*+Ljj=yeYdMT$=KK%6YySH(ozkW_`c{ryVBBG;Yq!^~d1kU-+$yc?w$-e{Pd{Q*A0(AnS@W*R_5ZJT$gKBYgLidrUX@`~ zw(0X~=6?mh>Sm}vNUE?(@BeY`)f_p0Td9K7^)qMR)4zId=G~94nb!H;=ND#)IkTnU z;fs4$OMe%CXI}Tlbl1y!R&VD#T)h5FU-gU`f$cGoQ+XN1A8-Elo%Q?jckD4YvbU7w z&uo7E_0qxX4?dlI{AlggpZTXRr^lb^Npv`H^rYo3*?Z4^OyhsI`IP@`!QB>q>^f@S zqpnPBH?NIP-FhN-{n4~@5Bo|#9Q<-OSG0Y;>GyEGoVK28DQykif!y=Mme;?xdmVV_ z+TRLb)S7I*o>X&ru4`PJo!Z-HU*2U~uZi4PyY6huvwv#x^SN1KdZKq&S~UFLe4S^f z&4O9?vkNZYesb!-c~AG^vRb)&*VE2q9eMjJ?b5}+XYK4Jvz*yH=YP|~^_(-(SH_=a zs#9b9tn%wGAJen$-2Z2@~ literal 0 HcmV?d00001 diff --git a/tests/assets/images/testocr.jpg b/tests/assets/images/testocr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..953bb737d33b1425d11a347fb6f40df089fbd50f GIT binary patch literal 70583 zcmeFYWmH>Tv@RU9xJ!$BA!zYZytrF%X|ZC#U0Wy=cb8H;B)A2qxRn>z1S#%Ttmx%E z=YIE|`~CXPzwgIg*<+84kulcVnQN{&_w&qWJ}o@00fx4prWHb&yR(V z`T`XN4IKmX1ptefgcO^MoPv>w*@yDw8v)VAS1kO3Z&_u+BkG&jgk%+!b@cmR3+sUl zj6Pb1md?zchNZlhH?(&5OnX`aVEwzC6kz{*wteaUz5cHS{(okHiYGwp^5B+4S77C> zAcA%_qf_FfAhHjR@HEV*r&99`)b@5>WVbSYl(!~=6%r|BV|;LZu)<(g_6!CTCDUQ#OpAsQR}rF z#Fv(J0wHJiwSHTBY?{+c;6QLevTzl)sM2TgBpj}46qo#qjn=?~ri4kKZYjklz{@89 z_q_}9Zq-WLf$}=UnU3et{0Y#`)8YSsyix~2Lxi^5?kHCm1|}N#K;1#QF3_H7N1<$c z@mLcs=1G%loj|u`a)LTqsrDre=KSS5J!gEuS*cdM`H&AWnE5^%x#X@k{;4Cqdh>QO zvVQdO-F1J$+1uZ&@`S1bcp0Kbi>_Z!Qmjp@3r?$ldT4frUw#?!E20VvKc%0<|C!1g zaHi>XreQtyX>{ZCTi9KOb4TvO4$VV*)#qstXtqVo&E6Sj1R=f&9cn*`4s0!!Ng$`- zQmPQVi`@LC_ATLcVKX6`aogX)BALnA70!xZ-7l<;V;xjC z-ljvIGp=a`BAYjRCwKaaBk{cM=gdI14>&4I&Xs{_4voMsDp_V#GwZtL4ZFvxS^OqF zqr{m`dbwVM*jm!)+RDlxVq$Uwqj|fWxdP|?{o#uo8V2d_c z%fc+ch_b2peS3ipl(SzQVo34<UPciZs0Xb)%Ki&BkF7|Gz65m4yH`%?S6DbEemi?Y8|2uzMlgH^K~w%X|n!Hhbb zvsOl8T&6ccK>k35ols8vl=zkjqS)5YB&Y1f?XHoqix~q{+cpC?(eL4zhtME>a*DNU z^Tp^QbvU~?iCKJ5Kb!`AbCFd8KX_Kd*Ib+H`84P9udihm`__ zvVKKTSEPM?&;~ydrpa48Mpx+iUu|i8^ck?(^Kk%~cp*zgm+@hy9c~UFjTpIR7R1VS z0Xg&C;45&M_~ADjLF?|TnZQVb;28#T4Izj9{HkLZ@x(Qy(~*;d&c4C&Ae~x@CEAA# zvP1`t5wdItyULtOVQT=>r$JdkfLk5=!&d8RDm=v!{Cbnu=TBwlrO!5DwC_V%T+7b- zRVVqm$D!!a7X8ZOIQ)2m>c6De7K5(pGj&A9ZNcN&$UI1>--+J$6SeM4if9jFHe98p z>Mnk*1+sQzy+UP1$6=7;_xF#uDODYy=Np!+ii^nnP>_)a$k-%iMPt4`UaSW(oaC^2 zVOpm(H?mYI#u3se2HI3tr@q@-3)TLeO=z-rb~ zM0N-+m(4neswTXQ9ZM7K>B=G`=T&dd+WO&#Wwf2dL_Zk?d8^sdC#ue!-8+`0IP=+p z^TP>$s;-;PzPlacEPpi# zd9CYS5yh>2jH|-WvcL;prz9Tu0$JBCijEoQ;EU!SdQH4>n!?fHmE55MCrlL{4L=f( ziw4#*&cxq*!L-u(4QGw2NoN_%ja^IjCgT6tpyTwVPtLql{7*G!;9YlDE$u`6)p97s zsteQR9)7<{8n`Sjnv-PZ%8dmplKoX`xNBm@$mb+w{BOjQv-bL9l7-YlRZF0bUuumW zLRtPu;>s!8nMe-9Z|vRu_7E_fjyG+mbDfB7nbdGa@@%%7f42&zKD2$SkK{|6&gLY0 z>y>%6=^e?S;A--gxBbp-5rh90z*#MVykR9eRAPgCZl3@Bz0Qbj_JMQqbbNM7wpVFo&nyt(kk5J?4p5ls`#s8aQD~nmyda0Ia6gc zfKR6@FRPH+V+hORvZ3f9J#uSh3eXuUMXQoND4odIW|PkjKlycPuh=o>*os<$F3dSe zW|X4B@fM~DRUf=mv=Xkhr`S)^%Zg$N%3>7fLjM8M|8D*d;W{tvH`vV;`Ibfv7#geq zlY^Qi*_~!pYecehsX$^FlFh+HC`8yZ{BqKSg=I@pwVdiJ&hFt2?Lx1Cv%6i?>0Ve3 zt!B)~T$d1zDIK=^^=ZhwK6T;=i-bY{bSe|AEsnb89I#R4Ti!=_oJoS@J9p!Lopn5e zK0NItMe^U2#**Z$?6lHq28k^4@(JbUyvr1RD_8Rr7O~3X8`EoyC80E7-`} zJN*!!tgvK3XZ{L}VvzC-aX5zrSmbK`<_9dMc0;`l z!YQ8_%&{K3^z^D96x^?v2Xai?E0MYP%DUD5;!8qpN^Gd_&-a1zYeSd`yNs`$pgOj2*{gBD$v3s! zs^pVV15eDL&ed)+W`k;rP3QIvC9QM$OklXXY=qOj&w%s0MRE0FpI4&md&0Y6v=Uhj zYbl$uT#M~N-4=*=*pY}0ML$ft(&XZrWV@A9C)+LCD#A(7WsuCL>{1{RYd6QGxvJnB zT+b%3RvA&WQZ-x!v&`sFnyY*Qd{~~v+#o-b1rJE#{BB-oMs#BRi1*C|U-yT{#!Dbu zCC!DevuCY#zl68393W{@d?BACBD3!3gudYnx$Rrp9FWfw#ROm!H^+{mc+ zKVCC}OiouZ{SfH~XH{J}DgU^Z0sN^oa|H~g@z>s7ejSD=~qbu63Xz?o# z3tj2uuY$BI6PeNGrp+j&{>x}_oaI>sDBqHv1D<+{x_dhJC3ptSep<&3WqbNykmvQZ zesvjbeTzRGW$}zage?4+TBF<%QEkX)UjdL(E(?$a*{a0a>Lv8Ky+{-3tju4&+-$(K z3(o+GcCMAJMK^Y-c5W$B*!_X^*x+!agvN_20US!XIlnHkzw{$|7xlv0{DXg>$-AE} zUVp#b1uzBv4MJ0Lv%XO1(fyHgu|ip{!b)RYrS6NT(wJ@x*R*LE#* z;|(I+OtbA3)aO4^uUz&SM95oNcJySLY(y&+tY4v{dL|8gO@q_A(t03rID}Ru!ASFk zlS7}JBjxk`1yC0Lw97u3KaCMCG4?TuL2jf4sTVwz>JDK|7ds*b_{Rv(k|Gj zFll&cA!Lp0&`dBY_{)Aw?WDEEcOBvSH>w7FydF=OsosQ$|EokqMz;u?&7NJhVWvaq zoa<{gI^)^k6eyIuweBYSQbgUEPwqq1f}$cJUqVOT9Cwmqj1ppPeUwN+xw^V@)M5leHSm zq5ktC{D5bQgWx7JO(k_!Yxu8@1$*~w>X`I3j$%GF{T4+$=WPEuLf)gCj{?8j9^fr;@u{4#^ zRT<4-b&~CpzY*L62z(UW&r`yc)oD$ooz(^WOQb5}U&=7vn;4k>xa4l~;n_aro4&XY zcWG3wG9zB>cgjIo3DYJiK|4{iaO(J3%BjIbGIWQb3wZ*3^wPIQ4wx=^FL4u(xPtGl z#gTQArp3D4GeU9tkn+q%Uc@Ql7**tGcH(2f5#y;Hae*fm5Lz!;t1l0<{gmZtW%6Cz z@EDXgFv);>@>vvEg5QPbz3jVD0R8cGLqMNMZj*zd#mhM0uKzlC{1|^pwq!JhZa#j~ zI1fjqIbsZqQS6K=iBCc#b{N@1f=;GIPx1yV{}b;Z#w8yV)N7bJHfE)k5?zS!(iB|K zm#S6hn6L9)aDV-&h&t?;CN@MTSKQA}@s);{d2_zlPTt00msnJpvt^8y&#Qkt&f|Wz>GXrCAV#u_DiNh zdDH?};i%<>6)VbTNDoKdr$u6=$QCb8{i|~`9}@qfkB)P5b&{@?82MBg8U^=C9FMnp ze}(MSMUL^5sO~nS&z0x*dLV^Yn$>JO7JA&J17$n02#S&RLzTYIDjkigu~-x%;s*+E zkcp$R2Z}wpwyUpg`6Iggo2^G$Dg`9}xD8MtxG6oz#X$OcxOMrc@^D24g)Q|oVc>AW zt7*EU+FncRjp$+~?tBYIPqcp;(t|9k{q@Ah33dmX`uwyJFrm1TpA__bPTC68-|ddY zhKHo(wcq~yPz^~M)Yf*9cN+EVs(2L56WeTh)bFaq`Jz>I=hw5l`SxeNfqWRNU#Y2{ z8@jn1qg&b1);LMCG1|Z2`QK|EczyZE(dPaH(34tuYrJ3DVo+morjB&EU41<3pM~we zyVpJJ`U7|ZWKK3*(mrxrS^WJR^2=`N(#PQ2Rd*Zh;QPVU+)Gf652e-g#{Js`btR38 zCh)l97eO%myFGl_ugj5vmYy-|n!-O^DydErqF6@bKs%UR2kOdl3xxL0DDCO^jub*P zDiU88i(+%M@YEo`Vi?%+kE64E4IOtbd4B7geFET8z_-!qw`OV8eda%cdEE@sGT>^x zsauPGWo}N!>XvQFT7kdbTgyxd&vAY}I75p74Xg-Qqts*ggca7Man5*r(67|wkU?^D z@>)3v$)sfVPw@=pn(x)b$BXkO4}lXC)v@4oZb2gi>9 zF2hF!i@;@J1fxjsP#+fi$8OQDPzVr1Wu|F-pV8O2(Le-u|Ak5|q(P%mI^SM*KuRA0 zUVWEbB1pDjlZYYvTYX@3UoNyVx)QW&^#qW}-(P*$s)9P^QnQ5n>3JwTl;3Pul4N+R zw6Y4wLF(TmK{{C32r(s5YUbEV)yBba%YU` zsjlmtV8qqP3A}m+7r#mL*3!y|-|n|dC^*cN!F}reNrgne>3j=BZz1acZLs)pKabtm z6R}hCC4~?xxeUEhG-@2QaqugDgEcgScRQq}+A-uH&%CnsBjQ>gS$DbR80g&H;PPUr zh52S71Sx!wSR7#CyvHQ5Wr^Om)!Jh25`EKH==kF z+D|-Zn2pO*`UC(}VO6_1sCh8xy+`-!9Lh_vuqZ4$t@V8Tpz&y?G4}+RHbk3_xhY%u zwhah*Q*of;+~&2gVQ;v0VlulL1j^gA{388v6C30w8wq8C#%x%>!)ZM)jIorBjIc#~ z%H$IsWG>1JrP?2}Ms$<@RXL%n!%v8?;-lg6+TiDFHa@>1fVb)X%(pxRyi z?49buaO2b~gbVP0nn)>w>18|cj!OcSs9_I2{t=Chj+j*g+t`itJ8W>c)2`+uU#kOV zND)`L-L`v)$)i%dN{#Qgdo=!{PrOg*(;AMK@+#E>>F7;RTn}wfaDJoc+}xE>U)Bw)WE1$X z$l~j7+sewqChjG;YD$sNQO(ExvrBqk?AgvCRvYJcR#nESFz4`AUOmpw<#3D-%##Jn zWG(fEZy`X*5b88$iZ8W3<->v$ONvQ&gRLH|@Rp=nx;F^<-zH=F6{=M$IW!yv&Jrvy z#rojt#OYN0dJJz^{&2>fA4qq%qZUuGwRG==D>k|kY(OqLx{YR@snZm$8xYdb45CNv z1LObolggS}7hF~9 z`EwRad2BF?i_i?&0$tV_2M{&gbrb=Og7VI0=Vo?h(=<4m<5dz62Zsp?Eo3Y0Ou1Ia zSzF{TP%hTECOOIuH_y;>>HB!JMYB^96PV0I&!rk47!7&2_gGLSfvyS~`iw)&XDe_O z=Kh#n_=i!l>bS&3v|o7dgsszAvIv}Fh!vm21xIb&OAh=dXyvRx`LBVyk?hht>`c6@ ziOOZ%f;FHmv~=*-iVJ1;JLTfC&XeWN?{tA3?Oz5p0tkf>9aPBdPgWW zQFD)nzklFy2LDd}l!D;6_c9QFCkjfmd-j&~wZilxmrMKUBF1#Ear{;xd3Y40KRd{^sO?+Um63i1Id__0wOY$1 z^Qn`orwZon%**|NMe2}2XVbSyI03(uKX%K4=a5u&QD1Nh7@43zAke{J4;J$#C=B!q zgbZo5%Yv4eRLCZ{{-SbBvPckqtI8CJbh}nDRN~+v8Yb6A>gQ^Ui1M_B{6Fb<&H_m= z$YC_@ZrJP2wQ1xDOqWQ~;2@hSjco#Q$$qb=0`M|hcbAKvCRL}AV>ims#jI*M3Vp;+ zTxwSJFcNT29bJd%W+ZmZMfG$VUSR?UfL&8tT1%Kk0=klKdu#&Q%n0#QK ziU*rgr(RGw2}{aPIpWbDDId(yDYYkfqTrYL*RV$3`4<#AwPoX79D)36mTf1&lqdJ! zMWj>dvO)CELs9Tl0#I+Db}HPG)&xLZ{of$_d9CtHfB+z_(6tbP!h9 z)l24z0XKh`b72iT0em6NuIXj9=flVeg#!`)mvMU+qkHLlTCRh>I57 zN#oZD3liZI0%%M@Pk}R3oh?ne-Ic5l!DHezH%o&?R|PC&WJuh) zqkeuCTR{^kAs13si<^BK-wKTM(ev_#olt>_94;|d?z5{NZZ8D{#joI=7t~rB&iI8+ zrQr=Gu-CJdj$P}5CbtC?@?uG+e?F}xS+#Iw$L)wLzZFL>AY^1nzG*Sn>&!MVdIC68 z>pWQ0eYYD9k-QJM=x}BASq$V|y624&FhBDXAKZDon}_Q^0er^keXv2cF6v@l)2UnA z5*?pZVc5vDCxE|?z=aR1@(patx;V@Yo3(C3B6mx@LCD@;Xogw~^tNj8iq>{5W<xTQS#P(N=r;P8n?lx@;V*!p*qBYofStJb{>upD`fD?VuPYyl2P;i3KD+Wie+HYLUD;zbUNZN& zc=g}hDvJ}+j|Tet?s>4}J?a?fLjLRNCCdyPA&z15Dc50FNW2Tlf1iE`?9?Ws}Sc#Qz4|iuHUx zm-8wu<}aVUJjcc^jT z({j#K?s)wq24bF|WzyyvYTHVCm93xbo@HkZeCVqkAI3vVzpNLnXjEvOy#ZfuxOhTY$@ zZ-lNjL?D6^C%ZjO8E0qz8&UGSK6nUhifF0$)S{Ai1}aq@?3^D}wtQ#1{C;udt?O;8 zg}!f4@A)~8AN4--I*S3t&t*E?2OB>1v2aQIzaHCCHjlbjl7G67wgp~aODf!XpL#tm zxgqkaX?TaFoUXvLjU&!;{OEgL{$#4=SU>vUmMx0!eYiw9_hSRc#!jsJKub7N3)BDY>qMnTuhtg{$C1ToWH1 zo$_VV2y@SyTz1@NnV#P&Fa^|?C7d%#!V^u3si_%Vk)p&Cqseb~8hX?J+YQ@T$8MsZ z`b@S~q*UAi)3k6q_o2CMo)0Np9GMKhEGMn)c{3j>vaJR(Wt(l|>892`g_N{JGZ(ViOeshSaJOm~27yF@4ske7ixWNy0bdM;w(%@)lzv>LUrk|H;p@(IcMD-h7F2v(Ulby)Q7Q{_w47xo4%(v~V-TeQy~= za5RglJ>)mX%D+)132q+}kHaa?OvL$u(`3CgK|dLk`UE&ryu2OhDss7jZ#hqetV=E5 zOAVh$bX|w^938cX?3`ZSOE^@xG;s;V@Oj2{m{4?4gsbGUJ)?5n~4cFsFqS-f=8hoCe^y8~_*ftu=4z!k1J#r{OEtt5nvu8Et(B`HmubtxetOOlIEcd(P!ecq(82mRPl64_N;CGvF2xtt`Uv%4>VlkktqA+VX=h(VhR1 znbpJ8ZQ$c~4{myi4Yfs3-+V5W|Md2Z-Nnj@+L{t|5UtJ4ao7qaei*;N@k9gG=g%Em zE?~?yedHtOGRAbqBd76Tx-SCsa+NoXo+h<+yXo+F?Ht{CM>O{|#+rE=N{KtPKwZ=w zQc;TCQd2f2#S=Jq*fkP7xZ*3(K4AU0GqmcwLePcKc;|7s5q=9`c9AsHR{@FLP@ixz>zAygiW_(qHN=iGuRI`=EKl+ zQjrNOrfQN&7{i#xyC2A_ET1}2b9n`6QzjuTjgjmHYDa{*=u(rYsZDG;^x_4SaF%rx zs-n21nz|3*jQGK@aEeeDj$8m-g2}a&m7-_=lbrf5cOi?(`jyws0^B|>Gcnaji@7mz zV48|zZ8F^oM+`cT-*AKVUuCz)PzQ^U!#mZO|H*HG9u>!Z^GVF~&C(L9y2ADAXl3lZ zkuFxOPkf{_h0nob#AEs9n5cgtkWwM?jUKe!A@6z_B;Xylp{y+hi=5SKJ;vxOX>a2uAso=OKe7Q99D`fd0-0rllW@}hl782^9!Y5RhHNXiSSjjKZ@%(B z{;C7C>sm3?Em#-MS8^G6&;O?_D8G9zA20K|^;$viFU_XSyM#-egW}a#(dE%kfRdC)*AP85*zL3I32wgn1eki5Pgn{G zyeB;Ax(k8d7|-AEidn_=Z$x`*^laQkF z@$vtnd;*mBeX0gF<~JU-nzzhwm*Y~k82rF3*RUQY?W=f4C!Xw!6)Jtr=!E;Tc&Zg+ znWqxw@|yVgHqBMENU zfb1h4n@hrPprQc3iTlc^8y2CFn-zj(wYTQQ(Ye)B;m$8yZ@QeCu&te{ zK^X+u?i6^!h40-}|JcHK+L5+>x{$0G0w&V0_=SbuZ+7x*j5VQs4qp1S0lZ*GRzt(i zHpV79k@n{J_P!s1iACZYDnC(C6cp+8;xEE}H!AdR-lc$Sj`}UdStF5S@VrH$qp;W_yJa8sc=CvHnJD^V-7y4aOQDBWLuqk2n~>%&ERu`?3Oa%0 zUp*JBXRtpB2l$4B!XUZW>GWHxpXc79YdkN$C@_r!agi5o3&ImtLIn{M#sNf(NRz^ zm9sIl&I4Pwy^JZ3iZLT=#991qUhgpvrO+SEeE93ERmJ5(zPraAZgUlj8ZlkbOt1I; znKA(D>3z{7mx}~pdzNmCZ2Sw4glTIJ-~A^%8Wk>S#(9QEl;kYUsQ<#Fk<-tD&+rIq zvc{Fhf)n>P(g;5L;PSg-G@94+O`ga7T+kGYjzzRVKwAM|yzCgplce;_ptHkCz5Bs6D#LD1tNzoi5%XbQR)9zmL{4Z7#oXpX zz#P-Kr#Ei+_b=GfJ2W;DFparHkfQ41Ref&0f=-ijH1=xRKR5NlP3g$$F*^2J1Q-`m zZ>wmQoTa;tPxrU_&KNVUs$7m0+b{&`6+6 z8MHg${x7dkY%5m?K#jJwW@499iis}&UOsC)lhR>#_vRPr8JgQ_x=)22`d$p4VDKl< z7qI0I;X7wxn-gCmRH3yblexxjziAq0UK-uH2;PdjeZ6C2zYJ|ukfc^2XOeYObf?HO z%bW{=BxVwS`I7#j>p_EA!VgsOPz|2?54Of|cBBJf_AguWo%Q3w+2%7_L-L{p_k%eG zTiOKAp39Nr^PYJ;OGca4rl3vX500+Oy>qo~LyMViaX32uk%G;7f*QJx0AFJb}QpCkI+%vCH-Y znU2Tsd2=;6=MILK8}TFZePv6!G$4v`%!@v8>?4lcN=^u`HEurbVgj026G6S+Ge=^&}b61JXvAhS9&t#}<~x$nO4Q1zOo488I3OvI7Uj-nFg zKX*2!zg;-*j0u^=<}0lk?9E{t>lb`M**4BDyxz3L&}1&~-mhf$n-DVIr3BoIZT7aX z_I-v?g0rGsDEcRi`sBNDIBlXX?+?`0KSAT6+5~-}4w1O$M=`EVRl9t%lsv|h9pAdn z6(Cdp=(^LDYS^{5(e_|G0q#vP7*U1u>}Jrq^eTl9I&(frOx0uDTxRhs4;t3JhtVCr zW>L0m#4boYs6)wjT5R}8n{LiVIp@R{;Ia5t+a++Q%)3%j`?3l zJy(FD@kmlLa_nF7X}ugl>?YI22Z~0n)#bbInbkil7LPl}QhY6!QftLL6TrH~dO4U5 zf*T-Ss`iOj35w`?pMOT;hSCLueSW1MwZBEppi^8M(bVm~Dq`go6}sG_?lo`W@Oh{% zZk8p7*i0dA(1PL~5Fg1-l`=f4w8h!hR;PZsFVZ;L1IlwXF4Ir=G^`>Y6p;n#M{VA^ zP+YPf#HiQaHzR9HuqKrjWS}i?K02GKxzcJnrQjUYIq%eKwg%)is+Z#lmhpkhqlObJ zo4K(fAfQii6wie;vIl| zzDT%3dk|znj+wi!lv?>^-|bb-NXn<-*E+-^icCj)xLnW}z_0 zOZ1td{3#Ht1YDbSK^~p}A&bp*V=!x)FxS2U#Ej?xo97;|gNi_#n3$L>b|_UEpsn`n zt2|Z|v1$tj$&K9XZ6G9~U}g%La)GEp_fe{tAfQn+_o zo->HzBSRv<01%*Y)V(x#X7)mFE1azU zgW3Cd+E(2BAIu(#tugldf0?~Fh{$m(ab~C(1mZvO>NT%X%fZLDq&!yFTP?E9wH-qj zp6NYxcM3$s4F^0gW{D79aB2`a0|-N#iCosy@d+UFtd`He8Z>zV{Fe$D^jXv*#k_2| z<474YvM>PiyPwpAn0V2DgGHSh^4m|{H!8LY?yS{M1bFXC`Ma+@PXW9QaUNve7%S8K z(b0qpEpW7YC)wdC+Zt*-7-r_yn$)^!i}d?qEpE?v$^RnH4U@Wq%Js&@WE#BKnbv&I z>S!A+L10EDF-SWlN@7Y$AaK~Z>GK6II0EZ{$5RqRNh~=M2w~ChSyty{b&kJAloWg# z%~KzoaZNF5%TDL%afWI%N#V;lDLu=qSM-pi=km#PyuG?}UUfkhXZ=qAf;P1#K3i$n zij`Kd1k7>jrSdr}N&Z`&v+CEW5dDMSzpwht+4_I7J@hbte;49(cUJGwvGtl@m4dcA zx~}-;w&$h8a>JK*(aIrK{+sQ#$ z`q6>xSFFRmc*+kS@-(3hqX|FiSVEnNiG7!R2G;RqKKSP<*q#?J-W4E94njk>5|bca z{x_`+JF(h<(7QV30XAu+jRZGJK;W(hOj=@I-dWc@bHicbH@~yG3T%Q7@u@ZB2DPJlygN-Xhu6gU*)1ts)UnACp+(s?+(y7y} zqnXwuNW?A_!mla&s^0aggifAA-$7IKOAPk34jO>DDsjR^v@NdNa=zx4ssuQs&P{93 z|6M+EJop#$n(kkM(+JjDo3MDD1HQ>?=aZ6d^RnKA zgjkX6i+ci7luNWYw08A?)+%1Yd9=-mzx%9>ECukRalyh1g;;=Sh98AY&%-gvH@--K zcs)c5hT01UHkvpuK_ujgO%Bz9=JqCSl*^}A)7h1N2jgkk&#MP-IKR9WlsSIKIaQaU zQs(5|ouyeS7sFJ}RLkR0QODq(uacXtJ+DlfB50qUBgx$SNGVWOOB5`+UlII>BH$MB>zB!U=0iDXse=*Pq-=`HConwCE8AMS zT&()f1rW5Lbj_vC%0g5xko=>fb_Z zr4hzTSyV9cT(kocy-ddb5?$~mG7*wkSPHm&RdbZ?a+GtloLSdPtJaDd#`IYT8>@FB z%Rh~{fd2#;%iQ_Laz7(cdtQ`92V@=%Di?%40BvyE)S|RYXRKOCtlv7t{97K>b}OT1 z(dJ_Wk(0~I%j=oB@j7KOGb8A--{qC+Fy2eXP!%XU&>Ae12b2M;YB9?xhjwgZDx~9c zv5MmEs+L>WX8gzL|4|3&ww<&Fddvj4vWG@SWnaBc z^BL#7$O=9hCEmDuZ1gcj({6WYjE=$6FjCy~YA`I~^H> zariE%j@yI@G3NUnmdXjr30qy%50}W$To;P0ga~cRu%Ov!n5d=5@p9ay{{EJz{6cC+ zV&Y_+?*r$Od`q20V#RpIf#+S54MNW%kVu7+r;Fm<0ruosopW^v>AKC&X!k{I#Vclg z=u8mM<6bOW!xVDSd>yOAEq?Y={-d2*d!-<-{aLXtwjOz!hva`KhPE2~x11W*4`%!vXL z7=V3GVmK)RMx4adNm_w`^Jn!zp`@{n>9m;HJL6%cb3)CQ#1!v^ zo1EAeDT6mDr{dBPuOa8H{P(k#RTtU2oC=a?QE7S$D4S}d3yoV-wD7A8hq*UtqgrWN zU({YxmuYX_u|!dE5_Bwwg^tPqbqQXiC6Evoz^td(jk`)Ujd-5`#fQ%tf(JIKyMLe+ zL2*7(aPIQstFCmuuI@tfnTr&~#$C|MW8Dt{ml-w2{hpxap?0a$-y>};?>r23ADbN zBtXv)Lp1)7*mUgsuB^wNj#BF8jx*8y<@NUDT!Q{ivrVrF$6xu;0TPVLz>9FloDCkJI`V!vq*|WgA!xKH{-AQ zDJ}tH`XB><|ND(rayB`oDgMey%}Qkd%i+`Sea$ETL<6e{xiWGh<8!s2Ub3v4VGiCK+3Tg7e51(>PXNEftZl^r%vxy4+{IR|!`m?M7E-&a~zHcvAf zNmk~3t>^Y({aK)QT}Kf~w9h#YsxC;lzY2kc zT&EX)hlWTzb{VEzJexK?gm*&H^kMwo{;a%n{`v_Jes@BDA~}A$s^MjGt06=+I+~S1 zVXF!>lM?SwI#bCruR5r65GWr2-$mRPf5pOPSO_wsG*}K8NI0R8n_6AH`c)?hZmo#> zd2|j_DYHiU+{D7Qgft^XUiD{S85z7Aq|8o^_o9?G@jzCmO;UtYM31z!cl{7is((;z z;^mR=c;CuAYo*T)yzYsx>k){YXmX)ZiK_OQ92of&Cmn}f$fl%Pn*RTtsH}ZaacKMHFd z|7|MUnA)3cFa5WvEav~+6frLvBw{@ajype&p;@|0Rq|HR2Wm7QDxo9Dc7D&%+oCHB ziP|KxS*z(eRs)l!%di#;M>@zj1WUaUeg;ORayZXw5jka2j3mXCkC{YKrE&kfBSMip z!-Ady52ACu&5bOdlfM7h@2J#UYo$71x_G%qo=p;3>h1eV{`gj<+^izCh9zS64r-K# z(8xTTX(NM>MJbmid6>0{Up48hd$>crYrq|FqO5N3UZIw}5wm@W<+D@ysC}|s_?DD= zF5fve!_NIqEA8KHJd6M(xUlLudDi)ZbH4YlHiwv#P;A+)`Srn|k7AO->a!>7fojdf z8YYbFk9`ia#t9`FA>XvhN7Lvs=+2@r%DyvWRd8cxq?Lvne8%wFG1aCcZHusINHf@a z0{nQ^{*2#QJ-0zLocy-Jf3!fXj%H4KOZ5y`-*+{KWJp0nro~cJs&7L!Zppo$&yhN0 zuv#vQz=Y`!iJ^O?sHy$HFqs+_NM2rBTN^~FhdEgn&S^E}1NzL<9f=GyVKTdRk}FrI zD4AoVmY!y~_$eRHb{a?~O@uMdH6`biM&5K}p^N}ReN}dl@*7Mncl83xq%aRCR~B|> zFJbExZpDunZu&Oku*f(<9Kvs$7t(moJvffaB@&=tY4hbt1SJF#m@Ix@hhT>_XBw}K zUx*$uSogBX#&mP4L;uW*)<|d@r^q1FXL#SqjzpQYVeWb|%TpRhJQ!|hmcAt+9uZta zG4q=tk(6l+>Urk*=Ktz%BirbpS!@OHzyOy`le(qGwR(*(k52S{s@zQ~|Mm+ZZ&j@B zzcw#V7aw%26B+{}S}%PFWiR!RbG&)c{K8Xb5M5iP1n%-g2R(&k9!Z>+kp|I&8FLw#}&8>Kx|=NlMT<3LUuX*2*-Y8Wt#}u#r~DbFkg1 zW!4bB*SNo)w`2T&WM@)kbQRR-UG>6_ zQMD!UF-*h{)LJ@h*A&EEIO#Twqf)=^MJ2Ly;i<_Cs>v3{HnO}ZvXuS6iJ>n2qKz%+ zYgJ{jllvHAZpG2p|5P-CTjeqS)I50s;{z+&*=*?7(Vw5608QXJSLw*ayVgIUaeiW$ zjsu1Xv$!_e(3eHnCQbULwKRzy_9Va*nIC10VkaM-rHBe%VQyk#8%&z~Y=K|OQ$`F* zC%hZ8z)qw7#~bd~tnB9+(q(YX8*(hgg{dEj15&tU^Cx~?4!x+KZP~e!Nb9gy)-Jk! zW?4Be;B?v8zSG^hok8?~v?Et;1v}3)$k_V-IYYXVrr7lTHh?3>X@I~(e4B@pBe8R& zwIj|=-}Q{D71R3uVE@q|RJ~w2SHSyieim^VmKqKx59$S<`BzMwct*Ii#aV}m2)*rW zP2A2mwJ3)E zwBwKWypOIUnN!;oc5MCbWrCXu0)b&A}`MuiWd2yWSX&OBIGWs_Bi z>k~+ohzOM6AAVCUe?w;wj%VUtjFUXGbdE|4h2xo_25-S z{*A|&K3T2?4N&oImg|sXl&kZdbs`A)5Zc;}8uB!;1eb@fii3{}<`5I{Cd2M#^WK3L zht3~;23r0ShR&M?Axqw1*7X{1D@ zeb0#C$Hmf7k!dDEqF7mE<+)bl7LjL@5mV0-_VdQC-GPnH$_v-!?$7d-ZX*vZvQ4F5 z-}Ws;rn0-hL_n|e&D$1sYfHCJ)D_~fQBBEd7i|Bs5|6QHKTBA!IV$1eUGVR1loa8;_PjP{oIn2{SQ8wO-jDx-va^ngGV1p|Dj?kPf4-leD)fa`WBGPoJrVr@MY1!>MYRG}9oM?ESw8roH9@%Sld?qkh_a5BeYZzDsM-ary40tQyy}xA}#*YN6Bp>-|L6r2O#=7h9#w^&6n;G zaNa(JZ}4bMf4O=AKE854vjv~Rd4^ZrB9`e_@w84M-}9?~@ylXuzJ3c`rE>$#J)4@5 zn6Jwcaa)N7y`6wu`$d^5bR1+#gDLw4861PMc@RSk>1&qh#HmSoQxYHTeluxCQ65#7 zy|=3mojPnfmkujcDixb6G@J?o|G^MXFlKS@oBOiX!~vZntJc7adeX2e_9@-`EVIf1 z(R=7@n(WTNA%2>cT9{EN0uu-VcBV&YjyssVWQ@XM5pmfD9MY7Ycbpg0P(QDyZmSx5 z+itx^o1z`hVLiX4nn561y^1f8{!k<-dLa3XD}tx>n9hGf;%)G2W3RZ$_tx%4)7QH9FhZC#cx842f75o#HSoA?SlqeUNUW9lHW8Y^YKZHv9b zWbFOA1#OCj^OMbq#T0!+GKa$v-Jcm)g$d8WvBxB%=u3+dpxZSLM2}?lUusoOKB*S| z-+%III=@8<`(>Ewzz+%@Hza{UA;yQ~5l6?>s5?1|fIk?>^HhS=j{?1&+oq8hkCf^p zdxIV3j&0plI@+Tdm$d8jNFBdxu=WoP$DNUA-~7RFoHubGv_vOj2yjzG$b+C%dh~Tt zZ!2V4S*Dm`4hrP9D45k9vJRO0I=w_PHAsE^7mm6BCCS^twc-bEqN~$ot7+!sExWMb zdpzUBxu}H!LDH)D$!s|+FT#jE$!rI|4`{S{)R^G|Vcnwfrxxd~v4y_pMFtmHKEX#r z?0jD*q1CJT59-)R8*&a$7Bck)5qu-1cTfvfyPb63SEp+OX^(uTjQ3GR!#w`B{V++J z8QL;A@Ap|DO1pwwg>QTtdlFd(pon+B-^a5PwISC}?*`I$yz6@}tWj4GgH#G1Zjn(J zb_gqf?K?Kqpm%*?b79y5Hp(fc_B9NrO=CtP8UWaAp zRmh7n^`^@)TCwA&_48i@9?pAdjdh%M%rjcgH*D#jHsK{xqt5W$0BCGgz#sX%ZN}Di zN~+J~;tfi6`(V}|>4>hbLw=m_883T~jHNgLbn8Pa4s&CM0=#P1n8JZe8KxP){f#sR zh54hr`=_aiJ@m8#BIEV+P2S712X2`*5Y{VMdL?jhu~L?^PMyYyCzV9h4H)NP3!5oe zxkFGOhtl;6xaLYkyWRwqV&9nR;boJpQYR=Gs%a;$gM>~kar_nzs+OWin0@i#x^)fO zdsDn7!aH_=fssGmupYV{+A3~+OP9eTVISp?fkxoUgd$=?O4gqDgpDKXk*?OHv}E`L z5&|JrKR|~v+LC`T;v8UlLf^pUt}^kw*Wfb6P`R+(8Z!SrRsn)~4U&kcj0hIk*C^L< zoZK4F{dWDh&3*^zNN+>PmK%!Zkxn5HgK}xZvEQmZN}U`>KM)r194d;U8Ru z;dTo(j@&aF_}6z(LA@sKz_^P>-jiRuJ0b8>|E=(S9AoEY=_Rg7ZI+zWOL87C@`3(t zdB2@shf$`N3hV{lvO?+-S69ev(~@{BI`!I^1vtO)Mup1jseVtl_;tqDbMvv#C}*{^ z-r?$HbCLP70Kx|FSIvd-Maref)jnZ(XhuSjGfVc{}pL8(zJ2vm~hBGs1oeG zY8NupD@OTR&L7pgw`6PR)RS?7|09DGyrK{{1cN+${1~Iu;J(DTs?M%4SEwrP5S*vI zJ!MoRD}#>F$a5_2Q5Mf<9dfgM_|Y1&gZbKzSrl(aZk};Qu%3UG&#o(VD&}x_Z0{=W z*XejV&|wx|F6_6*edNJZ!J6YO+aHYInvvb;-ADVy zO@As9jZ&i@GTwhMTJGQt=!C1IUY$qZcY~jQ$w0tV$NPy=_a{qQuAN*F>cTtzol5wn zAD^+nxcfO_xu!l%7QJ_z7Q@4|e!45U!pJjP>b67gHh6P1O3Iw+-NDQt68>%@_LU~G zylm^t((&2j+DyNZ%lWAi6t_aI?j`%6Mi%lICYV*qS};xqoJf4UmUa<6@ih2@scJmW z)b>F*H~jsAt6m@6t-{79a1g;o62g3|2UM<75gYPXd-Df_c`yVgHXlErH(3WrdUVFk zI0r1Ze~UEu9m-;Siqwn4izJ-0VY`V&=aL<=m`N#xNaR6pC^m9PrEMC6xBAtVFlj3; z;?GmoJ3#Re#ge|tdG{tOB;}73&ChsG3y~@g+#1bcn$;HBA;5`lhYJk`B+>fCqa0h` zgk@J}PSv+cZ+FXRBSrDZ$&g1)2g-*2Yb3`(v{B6(%_xgl&TqruSKJGIKLyqtkaS+g zZ<<+jsx4pKQZrz~*?wlb_Sk+TvD`V2O#3zrm?H=C6N<$ux)-@^mmPPV$t*Ec-xH2f zF$(nxtLw-qgED#)Wpt09SjfKLLxP*CBVur|));AI3^oCm%$(U%t)@vPua-$s+k8R; zF2B}HKrGxTX9)9B6+;({H(&jhle#=;IMfv5_et}mdEDN-R>VojZDG4^-pJIe3ER(l z5miphyZjdeow+-Czn9-Q$69enUXz;ELh~Q&s@oAB3bNqop7NySLNbL9_S?DKj0m`@#Sl$|uy=ab zXQM-qBnlCTh6%D4y<>3DP6_??K%@1%#6)lLd_}mkC3|g7-PBuWJ2(WYcawA-YC&&E z=(R!aVy?fc;GAlr$@&>9oS-0&Iy4{~gMNClO85^(b-8vU&%=5fU0CvlTFq~{D$b*A z_3_V!#hD;n{z)r32PQ^Gf1w|)L&F@e^9K&+!=S|1Xuj(94@TAeX0he?ti9tY$G$}G zmr}hEW%?VNHJVodb6p2wWFHuJn+_<|tO=;t}oO3QqxPqCi6YY`2*VX2B zHcDp-A*RBEOk4NcJYu3BHOU>?P1^!=k%Wyo@AH)X`+gwNnJ;{jk*3#g6hWX~g~TJN zQGdfYAG){SLDPE6hVNvw%GK54-J6fsv%>4mKZsOIZiJ<`kfQlZptMXYz{!Dh&wsL23 z)%+6cWx~-pj^BA#Z}!@`jw9=hlQ;`W{+-acgX1<+?2cI;wY$aY0%rZ;j2^hubpgbRA5eaL!8B54dQ}*?)qa|GzKnv3$NQHYD54^=2AW53woJ zG;cyOS=<`5pOD0{u)OS!TookY5-1R>6oy*FC;4QEmX=i}ZXMKId+>)x*}S6*D8=US znDc=1iN-**KS!)ctjj0i;#hrvL9ri9fvQOD!w^C~4(L$kqywtfq)DOSn71Sh9zshy zv&G7Tb-|EJgMdhUaxZ?M$1L^~cOa`2P#B;t`NVlISi94`HAbsy?@HgA?=qK+(0kkR znRZkc;vGxvWHJ-y!-BE=h=gaWOn25B1=nkjH*={1)iyR8PHpXO)6w}xDMGrHz{}E& z`yE8@%|Xxo`1$<-@@#4+5q-M%xNLv*pub=rP3N$i%cjy@dot3TJ1^2NOwL%ZYwj3gF5-vKb)N z)y8m=r!+cIN;rsCH`WS;IJ%1)l+QSf)YTBUyIZJb+5#U(e%YefHWj)A5S4nf_IZDI z-d|%r!=y$-<%`F7!mP+0jgAx3GKJ;im;KnzIjzZ`F{l4PGiAAv}ep0cn! zqQ(I^v=ur8+sE$74AOljMqaS(EX{-)mrdC}&xqI7-zGsiPgv*!J)S>gQixB$B7*vr z!61~jRn2mvZI0s-do0t?o6lGIj#_0@Hg_VzI}K8`l&_f_vUQ?zZGig zOt~+mVkYT4K3uY-v!Z#llW*=&#~31A^JzCjA|Sp$zkXR^I7lOkwaXtC*;mL|D6WJY z{aigi+8tK~?y#FIx25p>I$DUZtmD(7NcmbOumz^C{(w@+AZcMtc~;6 zq9L)xtA{u{w>p>=P0nn3TPH0936MrEUTYJWa_7OV5pVnUQ5X1QhXw4w2+ zr|oe4i2(s0OiBPYw?Aonss(3-8?BNe={jT5 zBN&ghdlEL3Z2NQ9tNPauv#)YuZu(OhfU*h&z1!Dza50z+XUE_1@;~va+S6X=fLHHF z8e^9_o=*Wx%7dfr@r{eKr7TA#70AK`uu1A$>66^k9P#|=?<?V2dbS#e>08t z$hL&c0r<3(iGOw>q7nR`rnC{ZX(~q~O0uj9-x2d%ALH>JMRCo4Kb=ILYxPlq_tIU{ zR6l=lWq->(CCXm_rXyf!-myBtm}T?k6X(;;RDuOz4nS)yez9@?*F1pp@z&~_=KAgUIpv-{`egFI z`$nG{*c=nW($&zMXUX8W%Wk2m*~oP z^NTeRQO2kpz`tjq3ogvC6B`fIxCQC7SL6a#OdP>eyk|b*8ni&m*Rea`T1Xl`$KmJr zE@F_DuLX1pA{n zMq-bKSkQ0)o9oc&>OI#*-c=COh`pFk>>mt@8~)qx(!XDVjoQ&_obNg42!YHW4AIas z{eOe2Dt&ephK6XE5ct9dUJyBj{h_l7?O+PF%(r9)q7*&JG`O8wB3xc$Fg5phdA3UIZdw|Ml6w8tRs zO3nm4$&|_l0Zh#;!^{kZ42`Cm3$-EkQdm-{hmE|M3BLVB_oCj59|)5~1&npc%;>Qg zUyO@tcYo&qR;gitEDl&w4}WIXAzFWBb6%p2*HUKhu>#REZ%&_MaIO4Wmv4x(huJj58j*}46f`4bw%o6eQKNYygy?=XN% zhuoAw8R>OV_rUquZd8_DUoBlJ#n`|2_~-PW)F(C2+ObIqQAg>A%0fS@{l$y6#qzzLuCy0;m%@gI!; z*eU_~;#NU7VApL&#=5zKx-dcJG zM~bJ`InahmyVKw;w?g{SpazjUX^?H$*3d8~k}a54%u`YR7_`|T%hVM3cHv*DPP8|o zp;=<`2d{2U~u+#q}Na z>hLi8E&pmDm+=|xLG{U{|4dyp3hfBc*+TZuH0Ypmyv*ldkLdPwS=Wg*u9tpu6agZ= zZ*$$ISd;kxHwM*TlcrIPgi6o6QAlBxutI>zov2y!u|Gfh`WG}F!k3z2cdkCw;T$(kHY;xN;oD?`ByTW_O3s}~F{q=?Z9^F2`b71OuC zkuY?IH{S5Ydc?KXmt0V;d&RTg=x)MKBjw9OLQ%qHdyG3BHe4t_UrK<8VZe z?SeYacj_6M(2QDl4ey;?(V8(tY?3aLt8(h$7>%?e>%)9DY|IJ zCyQ@p=!OVBeUSi(@^v2uU1|#C@_Tw;ku1r`N{zsiBYFE{t0W{x$V>fY*JjanIi3Su z`lb&y+&QL$u0M7?Z7cPx3j%zSILr%09_nTj++Q$9TblK0xTvnNxHiLQs>G|eVLo5? zHL`V^?5bClu09WSpO`o|NG3xhy!=CwwfzWaYG@D?U8e#{VClqS7b$2WU?bOKf9gzxDbywH|E3)4YZ&$tSCkjJ};+PQ+3| zo#y%NkSzbpLO|44l!oYB-0o8WO0@IFOz$^;`AJjEmcm>B@sJ3%K%SvnV4SHZA?u;_ z)!6gKIS+`gMh6X<36*x+hsyVL+?Pm~l)! zZUnviSWt-dBu45-d3IEYym@i)G)Un1%zB7uc?OZNH(HOH?^Gx@CRBZ$X$B3pP^nJN zUn4Z~qU@HxL)I;Z82k=lJ!0k3T&{G1D;O`b5F3n=fM|S4Kntw#_Gc}z$jjpJPpWZ z{Z6I8u3>a~>yI|>9yQD`-vR57)-?LYT-cjpc#@w28`V;e&31(A+P2l2%T*t<8y{5| zwYX+ox*56AK;hrkWwg?3PF11?51EkjDRN=0o)F5NXFdxv*`x2k&Es*rC&7v^E0rD> zoL}AL3USZ+HpQ&M7bA`Uh3X|hHs@M7r|Yi^G`U^~F0-^+lV!!W)|u=B$M5y1DQwoG zEU}&Za^NT&UB6zkM-!qAa$qYLXG=E#{Q*<3Ue7(|Ic4cDP}{ejQ6LOD>1DC@NOv zTxThaxEVr2)A~!1+-b6X180zw6pi$@@MTcO*iAbc7kgIcBTug=RiblA(XQ5RD^#T$ zCM(}p%vL-uetH(bozMt9VJ-4tG9hIDcY}3mCG^y&O(uU44*rp44gEIv$U5JLKPeYy z_agQLbErDDQM(i2Hi_0=#vJuo_vDnN3*NTd9m!%i{g36K{B6ur!SZKXd+k2hAx*o_Pot= zso6(kipNbN)yh_1keqz1a`r>ffdB`*W26~%dyNLxqJ~QN7mJB?eZDJq+I#};2)f9p zC88Dej9LlM({Ka#8Ajm+^SsCeB?xG<8;!Ag!X62gktM8Eed! zc;-paVGF1{o8k2rM;~82E|&UbkLJsp-Bq$#c2bF~6eCknQi~lVneGi(T0uSWxVV&* zl%%>w!9P)# zCeX)vY@^YF5OiQmI;dla-HQ1Zb;Jmf1$(a4+4e0sC^IEP8mt67>OQYIattkasFYdX zaLBW$4eddUb$%Awpq|sek@;J(>HaRU8>II-?d1!p!5yC*vpSRHt(DMYArA=!fIi4# zp<=}DDakkF@dsBkCu1@ew3iqtr^Akl1qDKiK+NGD^u zU0yzkQ?WKXRyK?lr(g4$6eH&&6>Zn2%B`zPAzzZj`xb%x1wf z2Bi{&eQ$I48W)j5n?=+cCmh z*ajA7I`>BM8HqvZUyzdJNYs1*7RAM zkPOH}N5zZA|MTZZAa=nI8jtt{UrvA*^q-;YC2x<;#=rU_m-yAWBGGhnB` z3I!Lu3(?DPGW1)(jAQS&?!|D|*22hPSS?RtSZDu1^tSLAsRuh;kh$g)A27HjgOuGtKA-odr^ZC_+T0dJKvR!S-#gCm*}03QzN-H^nl;HH z9BZsFapmI`Aus%1>PZ^N4S&Wl3J=oXIK*6QJK<{ny zZh8nx0a+dlmQz47J8So_FcIsV*qSEk9ZS(HY3R=0?#6@Kc<98IEgBppO+g;+LLCgR zo!?Y^XDG2h|GNy?#$VLpqFlU-_TIdED;lN!uNaCLX9<=jqS-Z*_YCE?`W`67QAN^D7{QPG)sg$rU!1M&?%>9vo+gT*xUWOe3$Nz z*+e(FDEhjd6o6e8JdhWRY|bSQl0g0q>hU{892F}65Wj&$lWD;U;w~#A5r?fkDfAQ^ zi{MTW`9n$>8F?W3H8bJ0F~8m1&=8L_%KAPvZ#ams#!a} z!^mT5FQQHLMufK4O{6zZVqf(3`yp6SH~IdwIlB=+6*G-o7LbZQz2Fn9$k@glMG7nv zg#lwqT|P`@U8CJtY<_z%mA@zHDvj54sB^zq*Nq|`mz{DVOj)}tiPd*#^a-Bi&F&I7WDL`vB<7%9t521`nkqxy^^nkk_jq`=vn}YKpC72!a8rB0A9iscnlLpF& z6RC5LCL0T6HT#H%>5-;SiEeQ-8P|}j9mP*@iq!+oR*M%?>at&$p2k_fbdnkVcf)Pm zlBWZ>^!l6nV3R?+1IwE<*h4GE@I6M zFSbDqS%fxy<%X&19Z3+{=r{rZZ zOE%Eh<*PNf_}>%#^APda<;(EQ`5V~e*JR?w=LO5~_`cf;=t=)O;I-XwA%gcnHT!pW zLAQ&+3jGm7<0yTT^BYb|Dz>jtjVHb9q7yngE;j1-1XDWt3(+utbiLxN?4F9(aRf(t z7$(+SrFU14a{aaA%D$XF&NQ*3X}kyIKFuo)Cd(fK=U9K6q$Vh$)_*hMK%$mKfraIa zqg1UoUn*o=<|w|g&_XfjcB9Fw*i?j!(X`4)K@s%BBp_e%xmD=Ls9JTjH2c91#SQ(b%J~_tW zP0S6S+cOL(Y{~1KnMMLcWvQ1>%RhRr8HI{vD-_KO%#}693Q7rXSKhetWw%-&-<>)4 z(^FuuQR7HetbkX4H~K%XD3gJ!q>Ro*R`_6nF9}9sgOI0}j~Kn0?O;TYw6oGa#N@Jp zAInSm&~v|Sh}%hQLSx{@gUjv@Uff}iWI9YTUwut&i~Ttc{^C4?)fljy{X#xrZ;d8O zak3@PhCmM16jayTk1=UC?wKLyJZ^AhduMHw4PF=N*>TWzM@){x!qpB_oL$)*WkcHZ=dlQ({ z4z25?vxrIxtHED-WV!(}aK6{!1@kGnhTU|pt5@O(0nP*#`B>ZPHw{FHm-OxxTLjcC za#bTW>$dZB{DW+CbtJMaStAr6wcQv$p)_UNZ;(Bfuo>@5zLtjcOpOIeml#mx>+aec z8)W<11dvTWYLV-5?72g51Tr^zWfar7mufOWlsY1Ya5{1gr%qMX7WqTDRKR#MgAeTWv1B%i5Cz_EIwVRqpCfJCf9F4%9nnnyQfwpxH7m=B)nb0W5#f^@(F zY=#W3t{jn5_VnqWZc``|zmR4X^y+`1-X{@w8%^>>GmrS)!!;f0|Eq!fzj{ooEAKnH zhW|0uG;tdPzAsPD@a-xp4+-6lS{o;@YyT|L{W@6r5=86!3$L1`(Bk!%tB;XEZtqhY z$sCjkyt^9F5nN>AeEVSyJ_U`N!BxVyx*M029{rNxggXI;jP!nM5;|oJRAuyY_jZu! z<0i*1ulWfS zX*FXXY|mBoxS@4Dylw%P&uW-2PRz#&C)H$-B;B8Uet-(4oKV0b5DmvuBHGpvjUp^l z-q+!(#;XhdHahV;yWJ)#tA&qYoQ0=FxW+|dSgS-QujQ42`&>l+Kqgv#6Z$G!6 z^#PW1?GdP4BXg77n8~?S!Vt;XV;3<9J@tO`fa;NHQC2N*2cM|xE?DsYqB{_05sanbj!ryTwkF^Ck)Obo?(t^$>i({^o;nbs z2>D?{Kw{;`B?2NQ!5Ec}M-mT5QJ$RZ#_W4lF6M zd@w)V5qko+yoLhbWlm^s=~G-1u~sxa6|40(bFvH$QHenCvZO!tms zGYfSp{Hkn$?1)Mm$WA`^L4Vc-Ker0P8eM+qo5$ySh|@?UVD?($JH+IP*~01Z$F`k7 zieCi8WV_jl1<74g2a1gw)1|dhpFha4oM?(UPhwIg5!ee$Fo>BM`Y4Fhm~T zGu_}3HQd80X3-*dn#AM#m3x!>s{3iaVLkX3rRV%)W=gVfog?aIeD!qm#MlKSJ+=;< zy&%LZty{y?A==CirPNKDsra`Wx3)VF#h%^4k3Nw5_H{>kem2*EqT+Bv6+eI~t}~~l z64z5G4p(OwNq%(EPkR~eov zgZ;8d0ICY0>%-$&BRbcjHx@l55BggYpH8}RM6SB-vAq`3DEw*r5{3m}zzbE2)F?(2 zG?3AYMt|l}cvtlXT#Tf6gFz}sK_Q2Jsr&o<^ZW#cVBTxNwKl#+4C${2lNEUwlF=l} zmJx)bI_T%U%xwt`pDTW6U|c223o3op_3X=yp$~lb_EA_lL7dzAun6PNQhooe8I-#M zMr(o>kYyVHLpRkR?f0{g(#KRE`yHV)a7j+S-U1tLbD=CfGMbiv^6DTH4+^Vxt+}I{ z);1BJi0+Qk%;;s9YGOrov(b=Bk$2Y@Whx{+3($n3d!HkAf$TV~} zWukI{>RMC{#pi<#*Sp5Ci9uUB>^%o4NU2t~Zj|ZwkG_2=H_=U}?7)5e$wszcp_DHx zGsds@-`>a!H|SneoQ0I?aO>Pql)k)j*~;1Kc3Ke0!GY8gwJNNXihZc0o}fs^A{DH} zD*Op$gf|t3$`s3$=-SRM<^JpQY@B@XzkQ(gCNp(0?fcK>o6?Tl0l!l5zg9`tR6Tq2 zZf$$KITqYnp5MCSm2~U>xxs88D*jrb-vj)~O>pRfl1ROGK@#qX{0O(5o7PAJjkD5$UXli4$znD#K3>e>1(|L2pb zjNj73DIuy+A!}hpg`P2eF(pXzs_Eb~9p zcsn%XR7(_&Gjnjtg?Ve2U3CPuF}MZ+2}eUP_>8v6%*Pi}t6+nAJxeqIpWg+=`WqKg z(@6N(Ku0a!?_6W{V1qo=tiw~nC8E@PtqpyVe2bb(4bx;rN)@WRI)#Y!;bPws!fvM} zFXrYSVn=jggjl%QnT|eF`$3;^41L5*&o-9x{>hr zIlJ*fZNVRrtoWIKbeKN6XRT#1uH{%0=e4Ych(X#{@AjK_3N@Pjo<@9Vih?$WzEi{f>+Bn<{z&ySH`weP=gkF8v~Zmm<|EwKE43(C)y*a5Xdj*6 z3ot=k6&WnO)ZhC(#!C6lA@R@Ol0~LW+>>M_suy2XfBA0B>Z3(oiQ9|{#5EdjM88ZG zBSCZaT5vRQYHj-5e~;={$w1MhrMG&Agg%l3E&Jz8JAZ_h{o}q`r=&*9{;5`xt0K)M~s3_P0k4Z#?)9Z4N_7veVFcx-3|wu^X5fFvNIN- z%!tS@`N_dR$xz~eFz!A>1WJ(=Dli+Ktok+o>zTY+K+F3NNVgh(ZvLl6jbrS5EpZ># z-!!l(WO6>FU{Pl1HB$7`q$wYigEVujWcFC8nD7m@6s*><~{#1cQ$!$!)OFR0>Y~^HN^sOgp zs29DBh+N8!O0Oi)lpUNW?-)+E)WXmsl7che7XH}(wuVy`zg^rrp;w{;I?sShwsivFu<$<^L7;A} z54h7mM#SS@l}*%7S0Zl|)Ah z%G^!GAJ0?n#IIX_&c)R!F-e3y0H$oIrjS~pIU{|BFrvcu;$P04af_&xVoYRp*$pf5 z>UY`STI0o9RqsAYvac>xwD`yZR3;9_)v#{dt7B+vyK8y+farNiOw|gV+#d|Fle4+Y z$Aktnj9bGg5XmB)${Pf{Z#(*dH`^gpei8(vJ*H)iz3lO;#L3JaC5eweXo#pV<`LgMTAYLq0 z$~j2&3nBDz#lx(GQhs_E?9ROik{!H#=9kekqO#RdE^i78!_a^|Uw#s(5Fge`%+(S#GDK3n!0;>?_7Y zr>C4b8jk4a#)3Z}U2&9(Ks8p9_RV0BHS;CBPmr-V=+yPG7A}eJV@Sx?c^DuFAa67~ z_H(`l+#1j*yzCKbJ53MQW$pOw_0v8|O2!)@dv{_&iRhK&VP6Pq}TM`p3Z+P74-0IShP9WdAcG8 zJC{RQjJ`gWHDdVJT!e}>A*FW7L?5ChaweP*Z)%Dw?cBVc;KmfPHPrYi8C3CDN+sHJ zO?O>+jSlmIsK>b=ev-yPcBtrwww6ymT%h$;kkj&&A>#(nBdftRLQst$c2kahJylA+JK6(xsV@mL~mid6R;kU#q* z9Dnr|-=-n%h#`+`F;9ef&YmIB8R33Gec(Q0%Hob#!PJV5)WUcmNU7BYOB4fzWeqTu#>6* z=%IjtK3pD6T1m6y0Yor<@i%xF$7Th5Klv2E&bSHF!^PVLsqb>^hL}g|zvUNM3Dhb!`&@D`+d+kh%QR z#R${@^rz%6)l0tu2j$r%C%MOdHie9DG>T@DuKC))=wAaeP8z0R!nX`*cTORKtsCx6 zK8fRtRLv+?vEz>TQ2qK%YL;(V4l}w%lQLGX&@W?lHG7}yZ#L2PDt0aLZPEwEdKtGL zBPNFy%}l81{X!y)s2PiKN}(SU@c1Qg`L9yVDxOV_yP%g3Vte=qdv>60-IKlHZ~?Z` zgBR@KShx+wPPTUFJ1Qh33VlnJR#19F8rFH&W;2zq@E31)9NSE(2-ZBY>K%QkqZ zU)BwgxVPd(N6p?%E%tw~+og9uY+7zG4PM@K(Eln6=AJCpqb+Vx$R{7T^&m{m;*wv9 zy>cV_@W2~W!<4B>Dxw}+vI)=-6AU&zLt2tplQK`r;VW9s^0# zUntk~C%D^(K|49#fBYkT*Wb^W~57C1y%^8Q$8iiQjs(*L=2}b+M6K zg8%j9q%IG-S<|hdw^c{zt>!v+K!NGGSs-!qc~zEg@7lJhxYzahwu$RF{*4gj{BO6v zD*T#^d%eHJk?+0Q#nN9Dz9iknk}z6@?{VMdjEsZRmro=6>j|?#75ZR&#^t=pN@d3V z8i7nT8^N<@H#FW>jk9?Y{@HFVw6Nn9_-)beH*k&)+xZ6b?f~2RQc!L%kfuzxof)@@ zam>}^van{68g1s~t0cyhfa7KDO#jCSMSB4%cLH^H4OIpMnf;JQ;vb`^t1nBw9bK_1 z`3|ogwv00(;bx`d0p8b6&HsRnbkE1^JIXRsTb}#NVwq61Xe<>p=mZB!X!?njUt!7^ zRIv0@wL}fNQp$M8{)55cd+>haf}AGi z=728S=jtZ#o%c>ZB1Z=lc>wFRSFLvlkC(c5DTK@+Y{C`DkOp_cG1jQyR0n z$F4BcNZVm5o{zEcJ9g1+x0(EGWPP#bKfXIp1*%IgGV(k_I8Iq2vUV#w!wswlNof;1 zgQKF$c0acZPy^+f`BP(6pPQf0lwtGK*v&nDdZ0@DV{e<@JyFap!&mYjl0vem|0*|S z>O_8A?!BmrMl||l-yGQ0E`QidXCGn^Hlyji6lvRFi* zC3xOG!am=pg-xt4W0e}AyKP!Z(PG1dK-rYy>RIu@uOjRXnere$EmEyWO56_>A0fIt zkm8oKV{l&%y~AiHZK{PFXH}XDEBI0I4Wz&dk~lQ{jow*pw1YJ)27t#I`*lDI4u}bM zK^%=5vGeUFD`t#hyH&|p@XDpX{6E^U^%26qFI9B6?_7rX;fAom5<@#C#%j{NoJnBT&U0x~Ju?hkA$pVmTc*hb64;U1Lq9*hAq_ z`C#u75c4;jczN}zXve!FAaQkl^#f(fvNGSR4dE4T;jV>x!c517*|8Ybac_j4EGA`? z+f?iVHELi}4oxLZ^{EG3%nE>i$M-zB-}IN^HFk8Y@3nNCiu=5_(4-mVq0T6wfX;f~ zglm`3f9Y0u%m4Djsgq->xGLCqbF=oCDEa%#-73{?y)1_<=Ud3VnAZS&@Z7n;Yh6rb zwQq|OlzhninNi_>M#A(yyK(Ac@wdnS-ggT&?|E1i_6LK1?_hnz9`C@Bea872Oqi+- zY|pxZ_rvh0)NPxo=Tq)Mk!GS^2qNHD&qsK>5}YkNAPW%1Z*_ePaX*upcd!fa8m)3D z8|x`o!Yo4q8^3>aC>X1?WEdo<<*W7M>H{BpSaRB5l!d94Wgr9(MCjjDR8M%m&@BR4 zzi#0=WHWYi!Gr+kbS=u$j$&9Tbxp znrjT^O&+{E!S1Da*YrCURh|`s2_nzJ#=DNBcc-K})f;J0y&gwJA}UoK*X^%=Kq>JK z8nXCeWwUV4+zbTtGpu_RN#xgLsA>HxO^&!jzY2{TwQn}qwh}b?SxQDv@0KYb`pIbQ z+}90-t+PRABJ*;VVQaNjIeH7iNi^(Q(P5e*>k2}6rH+Z-qBpJv=3p9|xgzZ{HFUQ^ zPgD8g%z#{`nV^ipV0;qpD& zac_vWtWV}wZ>+Rp&$%FrrJdmP$5{ZDBFg5wS(^pbt*b~u_H^eSi}Q9%q}t>Tziyh_ z_qCr{>CC^=nGbO@quqge10?h>Nh!Bw-&)`8ft>XwU!(vn5RuN-1T~63|ePXl&E`kcb;uI!FVrKWa9yZ4ka{J9lnmgUKaZ8)%a|ktl0A3!Kx%;xGu(}m= zox`Ozn*)SRomg4iR%2`KSkD$?43?1sS%^{|3jk5 zKGO`>diBzG$Y%OHQzq5d1{VFXP!J%J4Mlq3D!J$cH& zEHsI?+}v@(RsMwRuq`cC-mqNm(}Dt%-va9<5*$RV&=XoH6;vFP2aQUIQoOLd<+0Hm zz6rl_z23kctX#ZX_ir|y?XX+7Ht@)fVevCejR8-uNozr~O4yqSj5u=jx_h0Vdg zSti_s9IQ;|&h;G~_aaibjnx*jt5h0XdRsIttZbjJD=2JN6xz@WFJLbU4_VZ2E3Zng zl-XUZ)cgX9eWE(_Y|9oQOcRC&Qw^5HA}}^huzPVgtF$J4)3X@+_{V_Q>Tq zD;_F=kY2?Qs& zTN5A9Q?w_uRZp3J~QjyT`2=%nPmydRi3=8Z8T*nOR^CMN8>BbKfKqnjR zTW#BEzdA#dzfQ=X)@Ve;3ZCVCW=P8R1xgR0CuTk>Hz@}~+?R1m=e3ny5xL3Rq_R0O z0qp@X_RiG${gxT5U%w5^tM+)7dgV!zPM2^tRrNGQy4q!hdi>%62cMNZ#shGAs%1Wf zzlt(4^(DtQ-(bn`Y>3&nt6#51LybuFa2yKn0_pd-Q5hU z2Q5RZ#b)|j%y5**uRPjKXHs(42}ffoaB+;i4Y60~=F+N~EjcIL-AblupNG6crUjxi zieGCL^_BlePLm_o)Pyy52dSa=o&^evqG~Vv{q%7zvJGmi zYzr0g#U1))BdE*+KkThC4!7-O&@xwLv?Hm+MVB8dj0V>JTGj%&8Omg7xiM9eza3`g zBV`PE8&)lhd?oNEvdELdNDQ+Z^cnak0y1U@!EwEmrd`!SVZaXSyx37{Pp(t*B-kQ$cJ&Xe)3 z0lW+P#~;S_N(tDPm}gC250 zTfsP9lgV#yFw=e^%N3@_Z8UW>$F%sZ8|LbfJeFC_^M!-GzC1efhS&m4GE?FS2%5){ zVRFO#+{LegD_hs=wrNObzptD%D)){F+14uJ#14>gX{^Mju+ zg9qtda>dP?;|PO-OiWYV+Z>L^2*5#g@z=__1GgyfL1K)Hn^|IvG~PX_Z8MpS5zfZM zjmCZEMK(h^@bX-&=g+<)t;p?ZwFS_&drv8UhM#pzQ> z1((G}u@fv`IWl5Iu#%;OIwYhI2PDelgyWA-6E{@e4=nuN%U~#J znM60{yQ@|2MwOsK5E6Zqf&wHW0@|8SCjh)uTWmjrC^tX1nd_Gz!n5EOvtEZr@JHb$ zHOG}V#|c}Su-f+hrZRoUX22QmQ)c}DJL4MBs!n^NImrvYXMT*YIlbv<3XZ1?RoGSS8E<;7p8$S$e_A398W$;U zvz&whyW~V=;;Pj>eX8ks@Of!)@+ochIRp8ll;da#q5nwE9g{1+qcg% z1C1@V$$c0S2zmMNzD#)BeXWq+YaPtC2ouTopK)*&6!p$x|_p#s(_kkASEq8<@id? z9YUXVOC*h{nd*&g%|Ca|6BJ9`g94Dns zI>R8^0oxGI>eDYqxj#sdP?b@4pEkLoZ+7&CiFQ#wSp_lDq%%2(Ca-!Vy{n&L?7zJW zH~$S?KM|GExODE&PnEum>YijL7EEAhF>S%4N;;`WyWaqrrzJ$H6D_*-!;v40E$DNg zh1S!TnlO!WIAvGC6u^;w5Gq&H8#FnFL0L9YMz&>D0NflUH=iYvP5nKeen71CgW?V` zS?6f+hteEvR{CTI!!#g7)yiInZe;{tl*?obM>2UpJ&3@%E%*%4Q_O^zQ%f^3X-P=| z4PBWJS}hTUqk0{7nah6*M>l~09v_*%g`>%FEx+($S_249Sc}^oB48JY!ck3U=665u znd_Z!IVu!kps~$}@r;~HfB{|tcybTJdP2df)&Z{t{f#v4y6M`Cz5WeFb1U*FFi|Qh0ugwZar&o}rQ0X6W zE-W)g#mgt>-s(P5Z>KDl zsv*lM#ft3DdzZ~-o`-;;Mj&{1Qk9jfaGGKwb-CR@GVyd7@(kgSCK!pzm?$w^gXpD@OSngCEVv@0gOM! zFZwSS+WgBJGXwnBJnza~H+9~J6Mv8Fz6RLJ=EAhZiCrbZm$xV8azS-anIw?q&0BK` z1C29!*2{$9^Y6hwG-s~5to!>iCT7y5&K6U#gA66|)UQUBUconmJ~0DKoB zb*|@(kbKHP0V>T{v%5y{(RnLHI!dT!!_Pq6e03^*8c1h@?%@CmzLw_M&#+L01DD1& z9#RbkKhzjEfR*$-4F#qN5fdiz7047j(Xs7fyeB&3C&hus7cKD5!^n6^EdoSBQ`*oG zbOG}HgCylYnumg@qw~uUwYsL>&AX|ddte`%?Xo{!37$lRme1}k?k^Dq4Z8&h_#^pc zLz(wq_+z|QnfximU-%;@?~bH60{+PUjh?`{r;rN~+L~BE{Ibxs+jV8-yXA2^>>ehK zFD$*_+x0H~uNx{ZyoA)tKx0gi)?@Sk#Nx8Rj?Us2SY`J$Fhiz6DtJK;C z?*T4@4^U6SGAbW%feqimbDLX#9{r|{rq76t6YZz0>1+pYufqb>V71RZ8?pIl=?P2& z$R2TT50b3`tKM42J*>=?2B%-WdOsvr81~$yF9B6^s-Cf>jZ(Ks=V@N2N; zCDHqIwtqdX>LpOP0q~_}Y?=qTlB6r1Vy z4X7CWFX42U&VMMs2rd0k@$wr&OSd{d9yWf_{Hp4HB^1#L#uCRH=415Xt%38Ax7$Ix z%SL=P>(chG-ym24C{Dm@8X;H>LwscBTgsOfopKR_*FAQL4c|5oaysrej!opYAvZ_3 zS|sVEnyKZiKXZt7z5IuEthL;e=o!SJvj=i#v1mV} z-gyBny*b+Wz17AD_7acCzq_*XH9^cLlDdZ?=}a2%%?VssOoeTxf2o`)wL;Gq>Ki&Z z>JDQiqHXky3O!L)3VV(Z%cojh<`Q*}%s!8o?gb%ClaU^(%I_wk2tGL_tkziJzNn`4Dj#n&5(ceq1S*A&uj!=3AD85{p)^bq1 zVFN~xY>86F1RN*`t3=h7SIc?+o_vace}TVxqx_v7k3~FbGy7y8n)UC4&{JExRAU@l zD4^8Z`G!CP=VYtS#Ug_#?OzDFb;E3Af?NXCaXYYq55T#_m>o-AjOa-avEp{!UdQ)){`reA{|^^bBh zrD~u(nf{X5$k&42Qvt1I+6;8g`uamLeB_+}?G+)7?^D{UNmO6Hx?o0~dvZ2bEdTF6M z<)S0B@T8mr3&TY^O(UiBBqO;l>p?`l{r{M^Uh?hV=qc2C+-l&;c2733gYT?ZodG*9 zu@PO}p||f>5?j``u8qu2Pmgc+*SVJbR@x3zkK)mvYBQL(d-8Z6TFz+@lM=Rj8qd|M zbF$?7JO;!QfN0$T3m%Tm#*yw7eYD}dI+ui}iH8y#HCeC|s@PYE*5ocGu~(;Kiq4Ba19f)Z^~38lt7BDtd_EWE>Q! zJ&HNMBNAQe0DHu`IiB`#JGC+UXErCyR_*smIq#6YAPs()BSR7XHt$IghCIG%Ijsw4 zKN{M60_Vr4C^!@mk3l}BIyBe+$?|gV$NaL+^J0?DuSK_%37hucXg_(%MX;~mBUedF ztSol+9xSdjWoz2$-n9@?fM!BX-fLjV6jz*x*@>j3HlTafGVr9RP!yY)SxOm3Of|S} z$4FZ2R2Vy$hy?UDvFZ>xT1fQz>iHHuN1w^HeS(C+D;wA8=ujZ^cnQ#`fvdi7y9(4W zNORoo5RHgW%Vw+!luBsO{sl4TsH}sEawB5N9z5j7ZqqyWnUbEw2 zoory}wXfI4!rp*uHnc=4o-K@%kPNp4e?4w$Ra-eNj~OTuh8DyaG|wKj9knp?qo#jO zl-o%hI&F76Av|oVOXr|0i^q7Z zi~5nv0Mqcw82hRVdtGU^-AI)ik+SW)Je=-YIv-f-krUuXkdIsM`T6ov%4>UfC*F_p zR4Y4>K_+9hd?H3lpS`EV7k|S|%Zb)}gp+}QdzMH)il*Xz8-ni)=`ahMymO>(DCED8 z!3>jrU#DC&$@pfDca=vD@Qt3qGI-j9Zb=(G&|-arKRLeUvV$PpUTve;@{K9|g{2S> zacR7z*LceVe9J@6M9%~q)#aM(`PL0DYIVm4>#WO{&Y1ore_wxyo;DHiP^K?{`#OLZ z51A-ohI5(h0GJW|epiKeBjhF` zxbUpLu#%jf9(uJ?RfRLY+BKtzwm7G`otG|ZdS$%z!Sq;!dfAl6-+9x%$^Na`zz46z zTjKH;sI#v9lMS?XITOQLq2zSK5@s01yk;`@UEWyvu|=iA)1ZunDuyNBZ1S;Tt$7od zUFz*jozmtPQ&#;@Q7Q9DRO&d4{ESx#q$mdN&wlV!tSCeyPL#{k|1nRu7~ryRhA++4WlKCM6HK`9NdPualB+HSQt<5 zzLtq_Q{vPAg z7QTw-8sU`<69}a7sM?5~>sU6{#s8qP(#qa>z2=9o;}jN&a?xZidt5EGxv6*~6tdKx zZ6D@Rzo#?~d^G>T)nYS?GixV!Nn%%A_>QfgorR>F8xoJl#};Y}x2dzvNdUNN;c?Lk zwKi7PM+?|!!2<6L#~lpQ&G+dduayTtNmU;-(&m!NG5osGU3WQI%pIq7hHz$uqe_6y zG|GwsEL$i)J#1JPU)j?RCsh9|{{_<>_+rMeHI$B z0lUG+mQCoQ(ws#U!-(@==ltJ3V5xzxWGwU$`7u^Vm!THL=Xr}~3o%w)rr3U<%Y_hs zE8#WR&@~^~Yft%Jn_7(eUrzZ^uNxO=B1=R!G4wlJCXJLU-SnGAu{b8p4eDV*(E?qK zkcsUkPWHza0e8X+38b1R#A|*bfapu_rsJ5EDSOU0ySU*LXLDXY?{W}Xsx%(&7*?KLFu0ec!~I)<9WM?incCue0!Jj zNM_MGioN|I{e8!zxz^*DO*H*O@fD#lYpQvgw+T6eNUllHqQS764Ro>1PBc*Zax*4KCdlvA;Q4F=k*&1QQLi|lQ ztP!{Pj4iD6<=EQrVF(RIsY5oGeoh9EPRy99f6 zW{G0-puoGV*rUCg;-?=&za1&3u=zE?=@@1YJ-x!E@pk+5-;hCHhcngeKSBm<}S?=60wnqEReW3iL0%SpU}D#ch01>;LoRUSz7jB+b=6{14KdaqH>5 z>TzD+BLdcCe}&MUbt;{`w864guCcRg-fo6}keTY;MK8x-(eJJ+O%3}Ifk_84>$F#TY~iU~@lXbE7?Wr4d^vq%x{ z&iPG9PXYd2GU+tC|6Pe5%oAACzu-`^pTkK`87lu-%*u~)Q%s7q`0F_`-HsSFf7anD zNqlWWvqXNCew*>iGp@yH?SfC=3l~Y^r1NE67cR>{L8~7yb(!^(3eR3jASK-KMEJ3! ziltuo3Oq`4u zK^Z(eoE;6@-Y~>Az1`k`!_{PO$}9NdmX|&3U2Jm)-V2(Ki{K*Hr03}GV4uDR{iX+? zkm)=X+*0oiywh!a((dO2jcrHyO28ox?+sLgz9p-qZ$aOWmwiCb4Td*~-%qALf4HbF zcKh54Yu1hr1n;~1~?PZEhueb^inPc-*^Wr^TUckH=?`B$h zC$|!t-TE%9DfaW6J9>B`IO13y2A>ww5zn{Q__~K^$yVb$OneiETFGN#cS+=kG(?ec ziQ4P!++Jkj#;SvUn`q5_8*T@R3GQEPQq!QcVlJ64N|1Rk-MH+EtTx?=Q|!bZ?kj(o zo%>X>{u&_*92>BE8)&?;4n}Fhl04ATkQ^O|39?4i^faG}uoe&VL<|8shA)&;|EufK zRabA450{%PrURvuBc)a)eV<(K_)sPyuchV~# z&RtHCU&L(JVtQ#oY7@fQ0UOph_f;Vlv~f@Xbwg!CGk`=M9u1G`b$itQ9dX$uTBBI# zffG4tF7sS1-xaat+wx5|O&~>=7kWtxDK|IXrCR#%RN;d-+a788-)mX2B+& z)KsoTbvtWsAjVRT?c(QF--CA>Z;?HVB*5JgMsdhd)%2~#!7 zrNyl5byl*z3Gir$oOALk(HF%!ZMvtH(6DBM69p>>fp<&pQTC_t zPA*Yzx7EzX?8g;zm`pJ9VEQOX77<|paNn)kXtIyE3RY-5y}&jy^g5`J#UM$IwCP9l z>6X@y5`A+g8>12-iyL48g~syk#Qd^)@Z9?%@yPJ4AC%pFt&NkXe?rV@=sL;TDM0+| zTtR0pX44JW-&f;`+<(so3;Bg0&;@%^v?kZx0kb`Tj%ICzlhrdMiMr)dum-X_bx2X{ z%|-@b=&dCa0gJ^q5@F0&x9F~XKi{SIWf0`;z=mA!4b*IhC~omO&L*ro2;*Cn{5UM z`-7Vc+YI5`e2^(9|9dRN1pQF({f2W&F1~uYA;Ll~B2=?kY3GI&%;g;cQ2?i{eqaBCnld5)vf= zKc0vm4NbEvW+VY6|GWfAbZx%PeHmaQnu}6lWR_`HA<{ysEL067=6omLgJ`a!U+Q8CphsRA0b%Oq#a^i;FyTmTEz>78W z{Oagq{uV|Y|Df|y!9^p%GV>S4de>9si}mN6g=kQp0x2E(AuzFz{qs*-Lh9;tZx~Qf z*->?89Yjmq?A{Ec2fvx&Y<|lu9!;nFMJd0z@cT2IR{O7kCHY&2)z8z+ab%&oOmYe3#p1dc@#J+~N$A|c zog1)Vfn%@f9#B@lw@vxnrG8F(=%G)81tUMsWvTTPE5kQh_3$a(-YP?(ik+1l+dpXl(Ubo^Uj0s3eAmw z4Lr6Y*7c|KqjtZ^`<+#P#GDKM*wr)TKaJ2`>zs0jDqaM~SH1d+QT7o_e&%9s6c_$| zPY#h>2zkaB@(eBFqlttZBOuZ~Y`>;|qLCrI8Z^D)3;YuQ`?VVD3z0xTHLF$Pv=mU? z$2R*(mi`wd!CJvVf>I?Cd~CZ-?qs@>=giNy|gCwOKcs`~4Z0F6Yxdsm^A0n* zgG}=97mB|hsPK>c%q)C|uLBe1WQ<~mm{jiDAKG{}Z#e%!deyi(0c{L@v~gJaZmAAKcJ+4(5esIL=|l|pjF?yC*E?TaWs*;1L=QNshzFEc$2@OBxP)49nUAysvB z1I9=WqSx71rPx$`mWe;bh8hT@8l1083&4m2g<)pY#^*(;MyoBl=B1eTi$#ofymqV4 zDsPP)OWVH?Np_jsOY5jB7aTc-wkh#Z047+w(9(!8wOUIU7IX4Gu@y>?JZw(N9a~Vw z9n-(p9GOg|;{eL;aa(toe9kGC>vz>p%?#Va`+dQz%V<uD!`<#KPwSle*}@ssBB*yz`Tu4to8U!D_XSv7uf zXvXb9*|*TunWFG^;pklj*s-;ohEB)wfLlDopg@kS1Jir@6t;Cv-d$9ScGPjX#F;Fv zebjMEdRG!0Dd@i+P!*Gjk^6nz_r#1#~&D>G;lxJ>=-b5J}Ai+DH=+5I%5(t|4z_X-nSPW)35<4LOIdzJq@zB1Q`T;^ZtmMGFHK5Z3&;l~xl1~4%@eT?56@LOEgeMFOAoeCzaMiCwMvu_ zJ<&^vNv???c=PI~{84@YE2{{GK_M+Vu-0aF%Hk)yq=OI)x9o2iVYZDt+nD+Mfhw|r z<#95$^&tK%8O;K1B}6V;`t<99ubR5H^-qCIx}mn_UQpl=$fp5J=H@Gb__jI)z%?2# z!s>)!@C-F%P-3q)vjdn<>QC9ML1$A8BiEl|51xsC4TPTf_O@A!#r{qF{>~imnk|QN$`yd(fr$lbXyATt_rpV|&nx<|nk%ygQrQ-X+baD55OQci?td z#Uwqtg83;uV`R`^(eaxf7*dlmJ5&)!c^)A^4`SCom3Lfx4}b>kFZ+3-|Kt}JyF?0= z8qs1ZF_ppxCkvy$1qqL+(5AC3edStUEhiojBK6X6&u+;cvlEOO9!#CP7FPqLV%_w| zJ@R}ZSIRgk`f9WXxZp2njB{LR?KO)(lA=$r)A)6%xTGSeWS;Dn7e5~`DjroV@6x*I z#w3+8@rog!Oox9YZOOGk7HI$$1&NSje9wl^S>8WIzh0S0e-e7=Qn`)4{%~5>XupJL zq3QD7d|a9TgQTJjL!lt zY~{zC7Fe(OEC51_%b#4U1mGm(eHp?s%azf_(GrN9i)saGHQq4HJIzPKIO*Q^MXn2J zDEI!9nshx968<+3{}Qo|ZJWy?HR&L6o6iwdha9A&z1ZxW(AZ0JJWNm)+_))32FMj1 zOFD~Gx0Tn!r?RY8R3d%(@=zt%Nx8^dF`3@KMM0xNxQ)@wg1p`I%(HeG#8EMeLCe0z_ZDPi zyDzt9m0_Bzs@BHV|7+Yjh5=Xa{~EUv|MSjv=0;@M)e*+6L0n8CzbB6a`tpx@7uY&H zwlcFt+jlF?g^P2YX_tMvPR^`7q zBMP^Z9R7pEz46*mtxD^)U>C@NW6lUN$Mlv>Bv{dJ?1%7m~9AcHd|F^d> zx3iEa3+O+!VLt^pFGNN!@MrWL(OOgv1O3LO6;YCtJB%&=X3j}|o;?0%=v*=8ucJ>5 zL7?gXim=E=u(JMrM`qnU^1EHPJaD9(jZUVY8p2FK?ki#WynD8go%I|ZWB!bwDV;Ci z2(SRX7(}omIb#qD!s*y`8StL!57L_5>tWBTwWlV}|Vmh8ORLcF%2-q9LnNLhea3_o494qEq=|L64I)H)^+vZ`*XY|evh%p#|O%g7PaMlNB9l+@2QCF`@AYpcMc*!6jh zy_D#l+0u#AP?h4n4_LVNsdPsx$%H&@e+bp##Ste~)e;fh!6@1mRQ z^5T^Aw^e51GZ_d-o7gn57usf@=Ea@9rKU^3dWAF~vqF-ip`~Z{>V&h<`a{wmq}82@ zG?rWMhxBum56P!1<~KCNzxzOCt-Awx@t+Cf9-FUzoZf$3ht6@`lpYB@+9O>3>wCaG z<#*d(euFj14cxd|8z)x7?vpL*wu6D!4VE!OL6sREWBrTTk>3ssV!9>pRfz7`+z@NY z_H@O(juMTxbTiu-8-hBhX+K7MHPi$;!eV|OFeF4Qq2ehmeYc+m=dFddbWJ4lZe%8L zVwLw)0KepS2btafevoqja2Lv2Nj(iPW0muw4zVA(u8uVpUH2P4e&pwFc;6B`eG)Z| z_=-|>09AFw4Z=tc+CXpIdAlPikis-kQpD7q`7%*Netl||Xj2zXlicx|d~}Ck1zSSM z@aB%l(ryex_I~Nz`qOe z*FQ&Kh7CdwY3|4{+=3RlzIvSwEVBAumOZkw@j~4OUX%S3W}n1Pup>M||D5fje8`;2 zB~j?DOr}*m{gxL$>ODF>yRiz_dY%_e2J%CH9m1%h?@Vd(KuW&==~sq0sK67F|*uLv@xv#%Lt{$UJuWErd$WHM;SWH@+ce$ zr5nPzkp68LM`XUGE-&JPRftdj(DpOb-s}&OCRO{|k4o)`G)8@4ZT;ZaCebga4E;=E z+=*AUT$tXe1XAg7dKW@aFq@$rnE!^V+&f}%*_Ck--o}cEyX_N2l6`7rT=$?(AhOnw zjTFKxk=Uoi@~8(Ce<9k+a@=&qHnf^wVosG_2%`>{EtLwS8ljGUy$~~qFe;xccvN zb8FW>2VE6^kUAbK{hD40J=kMy-Y{8btJ$?lCH%gMa?Uc}4lQR5DvikyT`hmUh*s!B zj@9Tnlj-a=+8yJuto^>ffspOxBq6Q5->Zz^xQtL~GHW?RNG_yX8!Ic|rJK?{rX@}s zm>{*DQbxPz@>ObdZ3nHj4izwB9mzhQHbh%lnu_&DnO&~*mhwQ3xczWt9PpB1&JR57 z>DXS`2=_A7I<^*^IJSH}Jr{(VBl*cxaBnCH<+mV*tdu2cJ|&W)=UZu&kOhy4=>~3d z3S4j17`Tg#-}|~%82>-aqTgwX1AqT*!CRdy#B}Pira!Gfwgpd45t;%Q`fBPUuBz1g zfeRt6Aqs{r>ooxEe*94C6qy4}mR8=FsM^zdiTP$_UK#qdDm3`fK9A@s1XR7u^i82a zwSM=kU?GjE{Z5D^YcuRiEYrYjU1eEf!`azOgv7HUXUEUo7kcSfiZ()mC^2)>UBoe( zy1K#{{oG$NvG;VxeIF?{%_!f6)Li`>n?QCd@cF@Gm&5s2KCICzpbpa~?|aH$#Zo3E zuKJhyi~{DF*f?Fx3^542Y$O2+ejzkJ>2wUEt4>d6GHG%-jkd7oTjm%Z=xSNG@%Q<1 z@pL9cCRyFD@KT&c#!#DC7(ivFprvKzaT>(t{8;Tj@dpXTJhts4;4wAhP&IvD(;gEj z!{GgU;=WH%E&FemRJV$9I-*Nz#a_e#0waD@JLkH9_|R|;{MD(7$ zk)fZJ#~K#7ORi`S!_5$pIzy7(zX452dLhof1KuU!*6Wn!DEU8z4-_qQTZB6ooIcLw z%cUWDX2L^U;I{Is?gO-$$hcAaOkP>w4OTlYE6{*`{*-V@qwg;e;|dh3ac zraaNr_}7Fve#>J{LQAaBv#APy&C0oj1_RZsxq%!0Uyw`dN{xa7WvEtRvfWkGBv{3R zIEmNNNWwLURunG>-L)|OaKjGN-$R{ytN3c+s<+LaW0o^0UBZINB5y}m6`e1A$xcC} zqSlY3l%6!ffS8DO&yW=OG=Dl)-Z=Gop5KpS{)i8;@4V&{?ofc?@5M@uEB40=6Mv+R zjbsf#ig?Lr;4bju@@e+?@o`D#QX;Q4hR$4XCfmi`C|o#_qsiE*FrFv2R*nx7dt9Go zNT<+O%y08CH0n|IBsjh5u>yuoJ1iI8H+u4>q;EbMD?7sG`Xd!F-^kyf9 zQVJ13j>9&#DVxdqpPmG(s}Zg`@{dY2_IK&#vE9>$s`eijXMC&;IS~|an&uQ74XNxC z?5Gom8b)6^Jijsc^-IxbyNw08mh)R3JGN(C_*_%*&(NJF(~S5zNl;I|uuyxRnv3gU z1k_BEOUdn>2*&3-V^*)(tK;lH2v8lRQNbb{Q?P>Hve$5Anr!afTMY#x8j*ClViu_J zC&4u=fh&|jW@xWF*4N+nEzQ`8F67RE=iRosQmHuzj+?WxiQ@94(5>G&lFM$Rm36-& z#W@i_IAKsODh|8h8fy8V3MJOGB}olzDuzxT#|SJJeNq-)8%WqJV?;g2A7~bn&3mIG zHrdP3$>GYcevA1;azCf&*&J;_l{gxmPS0oBYqX2)dj!ED(St8?79O6?5#ULd% zIEYpz_HkH*_*=ZiGLYig0>sQ(Nx^U)5RbWc@hT*wS3i;mn<;Jj#kiQECXv?LJ9^)~ zdu{QG)IF=Fn1Yt~?URQuWECQ{s>Z7#TpI!|`qy*Po{3~^b5KAz+=-KzAr=_<&wI*U zQ99f%ZFFpH(PLjDW}UT_petYUboJP+=OP3dA(M7Zi$npf83ay%!gi;q^2-_EzYFMI z0$uhsEn6+Pp8p+>ZU``aUdtUOZMFE2-lq|Do)>ZY*LF$f+naOR;{=VUxljK*RdHBr zgKBsCiRl-6<6*TViMfo6kuZWJC8DdTj(RGGtl?RQJIwsd5JRyjSYg8EsYW*~^(Ccb zpT{h#Z2o}VTOG63{On8Gy%4}!hbVj1D>?=Ri|$OAwNw=V7VdSBY@11A&&xj3lwNB; zs*@|zOx+B#og9*hCsEIiQt1bS>`!x#LQadoQTaS`K@6;)OI!mums;&vY~}~(x4&e| zHrU^B>Oq(!n!pBOaGrvn0>z@L$grA#OxqFYT8rJQ>ST9A z^%6~X9e%M$+;sEtAzYj;5-ORDko8yXzX>Olw;ZN%dc>b48mytG@l``e#(Bb=p>t$K z_LmfXUlJW-!b|(*Yv9lKSmy`)mS@c%oHt_A+n^L^U_QOGAk}St#I3ZFjeCBIHcr=2?o1#O_M)JKVK2PHlohr zUFrg*m9=#h&0l@t7?$mfSHZDEFVf#n(*k~E^JHf7zqbKHtAQo5 zZ3p*$5lfuqOXoqOCTLUjV{az8xj9nfkK(fc=xQ*%%h?6_DWRoYvs`OQjfJ>- z&VhK0NNsVv#E59g=~>*%1)2GC+ng5A($z_sls7Zbv_mc*9)qYB0TCVTn- zMhKi$>w^lPhY-SY@aH5YwF*bzv! z7e+p7-S)Z8tsr7;9WLt98krJQ4%~ABO6~EHB7b$guumnCgeeE`13JW>*N|O1oL0^8 zKhJbnzTH}WYvRL#J3oyb)bJUbSp5s}am1TMPz;CQb+h?q%!cKD|GYaZ3RNs|6W`_W zA0(5OruTLVi|yP*7%BHE$3@*uTv;iYN^kDPeq1<|jKv_@gn3|P z*O@{4EuSrQ!ti=|t+n)yCU+0j*-Q#>0RmVC?)~fr^!&3N1KM!uy#<0Ge55n^%L8}3 zWnBjAD{79x*HR{H#RC}^+YF-dXwJ!ew{pW-zQrH8BFLi>+zIw%LG*!=;Uw1q;)c9T19Gz8%#pPBDo#aGSfR@wrgl7*8G&MA zKN-Kuy^FLpGceS>>1e)`uNQU>vm1DOPS3lB87OVuZ4`$6E8v@YFaK|>uU?(o-p?$s zI~?8k8W4a6s$nMmqjXN5&I&>RS8_19K_FoQt1_UDFi>Y&oP6yC*9}Mx{*!jz_OaP) zq>z!F>GyAUsxclVFQG1VH$@9V<*ikuehFC;>1k&K%TC!yN(;bFGA~-Dn>Ahf@j%FR z9d=GNQr5l&O9nU%9fxTe*gj@N6cw9KA=g=|N5+JI`FfU3H{GmL5=Re(x3w)QyS4d_ zGy}9>M{0)*CCxGU)jnip7jIruvM7a2m0K$SN{efWwVuYh%Ju)@Kl^9Z*8lm5@b|Dy zFLc24iWg>SMlQ?iZ}E4h{VfQdXjtKN)~W&1$SY)!yqNTI*EPTBirJ>6oE0}aN0^$XS2>`BI913EYH_i9sxm7ZR$aL%slKT*(y-C&iz8 zcXVpXMsyy_Y}*QG(Jl2u=D}a(UvCBT(84jWre;JGWW+EeqP9~O;-(z?Cu+L&v^9qGJik zM>>w6X5FGK1ajdbGFRRuwj)E6e&Xn>>T4U;($tKYVSNNB|-zRZ;4 z?STe?zCm$Ox2{mR8oh{kKr-srGHP)1AJC4(R{sVx<|onkF}x+3NEz zaz~<(1!2zY%}dv@tTgRM0Ytn{+QO8b$7RMlA>s%*!o{VpTG-L(&o zy5EFt_)#vAaIYMyLvFuespqz5GF;;f21r{Qt4EU;5E#B)60}48IKskR8aNxVh(;0! z?74$t4LuYSw%`D{)%I0(%P;W|C}-up{y~F%77?g) zxW!5boy6WBtX?u|XP|ROhJ4}LK+9Q*#@_RY0VLgvhH5u;#TJ0BVCj{L{1a(Wq-d~@ zjQx?Es?87?a1)ITa%seh8S*yJj6Y;xy)k0FJc?u5#xSk&Tq4?KUWWs)S~z-q2<2_5 z9EtjaBuOh8*I0}`)g9_#T!2;hsO}otq3^Exme4dxo26e*24=Gf7?r@$0BP0uiIfyL zz6N$@AO+3x6x9P_TR9SzJT^H|n3X*m#>Z@5#7@6|hQ# zdhCnC;C!ppU{9%i1niR)l2l>Zf%EkvN82ZF5Mb*LQTyxh^uOABtEjg6#a$OEEmEL3 z#a#;&cPJEhNpNYgQXoLk0!50uyE`Gc1(z0zQ#811(H1DsVm*`f-)o(3@2j)Mx!nvd za+8rcGBfA=$@@Of+L>-q-2;b`xFs}q0~XT;Fr3HYy|jEH;c-^-TVSI(Yk+=UxFQ4| zd7z*B+}Oo%+dt6H2l0!l$^rU0y&2heSy(s7^cBC^{^d=xlijN2ut0^M$!c&PUiC;e zBrmCAbyh^=j1N8%w4-%;Nz>WR!7#|{XW!=qPi~6VPB^|P6^Cvq#}hB~9RB=#s`H+y zVLVkd5$i5CoPv#lgCVj|-913^9~vM;sp@dc7VaXTI92&oVk}^A7q&dZ#OU`9qrvsd zpg&|UnGz~rI*}~}59H`p2OCWLQ$A4ENx@NB?*YpCb+iEzGx1-Pb;`$vqA>yhWqqBl z5xbfUsRhOWzv$@99-fBVV|pEYf?7a(p1)tGg-n4JIG%BHOU_3O)T zMghnb)gqbXAzxO?NnoL#X}Nm%*6F;m+og{J%NEL~i}Zsti}!DfY*tfdX-lDQw1wI=T zM=kc6ko~Oq43FZ*qXaQIc<{7EaZ~m?TcoMBZkFDDJC`v<2*-Y>qY=1UK4f}%#xBV? zf+TjAj(Pt1~VpC@nSP0iZulDnGAnj|3ZGW9i2kL~)Z)M4VPY@@1%e#5$sIF7;s z^RF=_)h0=-DlBr;!5`4IQ)ur{tw?bzg`2*b=s2A5S6BTTNpE6+7Gp)Z&%ZGJRoyQ`gw`CJiV+F>QNtj zf%~JXoJM_qg*Ch9z4Rue7YnLwSci{s1%re*khGqfU>lX_ck!=>37(_~`Nh(%{MvQ{ zPkR_41hK)>-ph>@eo;7O|2|Elul|p-gan5P7d$|dU1q-;`aM9CX~f(@nI53YRDzes zs*ne0vU6Nt$b>d=TVa`K&5Y;ovIYNLRA3La$ll22Zg7LEMW;L^deUF6nQ_*N$`(a? zE%`PH^~mn&0J{4tZN<8a?;MaqIC~&h+CMrj!~eU&y%LDS$|(Lt$-5i?G->~6%vYj* zw*)r&^A6VTcFKym=W0C^zot2w4UuASoK!LQTr|^2dNA_m_eIXw))OzrerIFsclxP8 zW+CGsCq^&2{pUqa_2x|;QkQ-MVVgj=C9WqSej=Yqx1j^)S9mICiyOy)66C@$E=E_V zp6^AjFj+>dyM3Wi5AC1l14`BNy5x%pq#cPYM1JtswToO3@32EUA4AdPyx!*z!a1_M z2OC&)eK`xuDqC8a0+(&h3Y!(4`OG1zt@GfrD^|K~Eaz)v3x5V@ZyYHtck4Sy_x z;o*UYmKwUNyOqUV-i_-V3QO92H}UiYZF^;9K1EYWxgaOwPS|m5ex> z5%h-(vUshvL=L2rxXMhy;nCCIaxe7C?I+hNRnF)c2n+KmL`;0SW+;L6gV zjH=N8m_@l1aQyh~8-HixEFxj||-c9a%D(`NyhbVxt!Cn{TTISmbhEpL!{M z7Tv*yce9b{opv%*-5eZOox3f#{SkgS?4g?T?v`XIenpgJQ*5h79FtbitanuziyeiX zr5dY!+A(Lp3Efo?C(y*WzTCcw=4o1yEEZpN@R_WBW^BpEOJ#?4=2!Cm6$tCi8*t;d zCc716y{7Vr3MBBVm;1I^D~3hgB~1%T6>%zLl1zv`h%>oeCTGD>WF}1+S^cRz@cEb8 zlOta)sCtlUBMZcFy$!CW_}0!nb0tSP`}R-a2&9wFcljz(L`1#32*vNE4tMzl7~pM} zd2i@QMYVgrRoM0!yU7rg`Q9)oJRD? zZfpyQ3h*#8IwzLvrd}Rfl0r~~(^=M@;ES>vYqFs`R`qsW#`+BC>$7<9voV~SnM`$# zPby)u1-cBn<&EEu`@--T8UCG4`174?6cbJ#$#BWG%F&>|Uq9GK*%d>3z*$(TE2%VfrWl z*@jO%%3)a`AQ60qssq~lMEnHN`2%;{)G`>3V6HGl{MF%6a@4~WV6*XxKoWJhfb zl6aq+g@0jd;az0;`t^;715sn((sI|TwNnM2m3p@2P2d;t)H;gk4p>9Mz$c{)Lcl~s1D1)boIDqEiDzs95WUW~%L6Q9jJ4CnuywrJ8W;_9zFMQXJhgwG*F;6V zSFTd%blEM+I+IJxS9GwrhJONZ77F+*6>?5a*F>xa2ijG;myv5%9e+M@*Ggl4avPg4J>hF9ZAgI?BQ|PV{uyO;y1XpJ2se00_BE?~YfOw@xV8y|Toq&Ylq+ zP3tR1ah=G89tDZn@oyP;BEpd(FbVZaESSxk)7BtV19M41@@vy$<~p6?$vTNJ6EL-$7{|oplplvzm=7ZWn_r zca#$rHU(CC0fXyjLjN3K3{MU{4$}VY-Vvi!cl<}+n)`PiA+FbfC98Jim+7|*jWa0^ z2IFsq;fbu9w0G9K()(Y7kJOhzE*d|DNgQ=*j1#LqNMe(Sm5xlknfCrlCTUJPPr0bCD-Gj~V_AigBSYBBmR&>WtZT#z7uY|c zD%44_?zO4^oWz+8BS7|!Fh767gBITp_bhX%@A_!%) zKUS8tFzWr0;X{3Wg#8Ap2|8q@f&{UzOLT_t##BJ`3P3C~CUKf&OiKJzr9(js9Fo)_ z4rD=IGmJFV&l0ioP^hi_;LlyD6qh}y`~LLDxvTes#C)#YKVz@u240vBjO{YiS7r!d zZHZVh{YarYRr96P8#&>qU_SAgLfn3h+lrK$JE^cS@%BE}@hcUV2az zb%_q?5rTv}EE62$Wz;!JSs0UEune%~*D+sw*a}W#J4;CxyaAG%bQsKx-x=qlTbVOA z{;Br{d;dp6d4T-qS&MvEA%3xV!TqV(c&CO`vKMG?^>e%od>3($*J8)`t-=xA>;bNo zJA|la#Z_=yf;QvF*y4Wnc3(egk}YnH+83x4^;$}K3>UD^oGjwU?WZC_1G&Qv#o1C{cqUA>(%Qk_z$WeSM3%aT0H+qwV5JDI_%J=<&?O5}Vs_Lr zQX{%@B{K7SL@zX9%9X2g!?+nFhhKFl* z5mcu!iN(Z8WE82jz|e;>3o#1_^J^*)-8xy`32)|?EW?^dQ$Qn^JJeY+72e_m#&55q zAA>)U<#|nbuyMQ${XumF$ zx3bONp%nn_y?0DLLt}cSSx-M?f`EnrCjKiB!(K25tZwKPHB+jw?m$sGSNm;^M|{Lpvtm)gHN|I)SR(CH@1*!7&8NG*ElD=J>%h}; zg0#ew<&5<#kj&53q4Qi~8?140eipz2enb-evY{eo<{x&cS`XX|l`w}B#wXhq`V60A z=jZmd*^Yv6rDTIy=2a7?*YSj29iV?2EDD#*mQ%z=F7ch1yBNfA$*%Y|b59`nh$B;k z=8D^?81(lAB3_;2zdYbXk)$MaFo5oU?3XX4hj}-P$SqVxiq`rJuXgG)|#X zl~bzqRS@;HyDU*8kJMAKQ$@vBraoh94Y924ddsBXVvM-0j}5+in&45*RL2V03WudD z>TW6ZI88VXBRgcW6ijI&Q)C;N>-k0ZduTC?hxIkIh9J$TY25T;%b_4dn8zB}K*F~) zNVB4pioMYOf@UCylU>-ehfvzN5HX!%L(` zD`AaJzG9*-bDzVf5I?!H;uhS?hpS!dHHbvu5%aU-Nl~<2`oXZ4mivsrKE#m%U+>)W z@NS~bn(0_hUz_ZbonoPV+^o&{fHNnN(1lE)d3RlZpAYa8O9;sg9F$td;XnRP{@j*8>g4Tg6ZW6+_Wk1pN)1t;Qm8TEX}|mWg9z$zXX!NS&~AxhOo+`qty`m8*mkFU z9;s0wmup4G%j7^wUQN+h9W*5ouwI)rXMq0C*|{BjWh?mw(E%2#GX6qSZUzU&v*xxb9mwQN(CR!K@A$bMe1AK7H6yUce=xs z5q1KHnNOV#&5@bHuQH#QIV`Yjhr z;QQZUV#IJ4zR}c3khyrmLJS>h9V*Xqt3iCo@`~OZBGVqlo5LT6Omp|qkDZxgz4Uj? zt7b`wjz_||rzM|Vw#1q&w}g=A4$~8XCe4eFr^I3B`6D)JeL8yJKKCN)uX4U+sFO-9 z)lQ(5ku78Rbl=qeJP+ZlM3Y#PACsqs&j~tTv7Dc%RFw!`rPArGx>riAFO6q{o6&Q# z%bJ@oFT>rC{i|SZ@)#XPC6%VXDA2ElIurrWkCD!6j}s{9tUt;XTIK63M^0to38-{| zciy({yS94k+0`-hSvqBK%W>*;s&E9);Q>k%IUbjMg~R%2f($-N*NUi#9YvY<>Sg#= zJElt(qw4M!sz${~z4mKc7>3jWY$8+u#kKcCCAsuLTkw^rg+SW=Tx^#8luS7i% zztuhJK1cbBl0FG|lLKC^{T_PfH1ga3h)t~K4#Fi4-?@8o+X?~Ob=ig3C9c&6Z{6*w zT+%G^xykSBebo59bU*of9L@vYM6Q)Gj3WA>U)vXZQmgcSR2fLJUEFx*2L37s)q8y- ziVT-X)e54I*lKA{TJIxkx5h@eX@ zS!FsP8?|)NK#ZCloepzR`-T++E58eCwJGD=Cby?$<Us z7`F~Y50clgI}Y(7`A&v~ZF_L1%Kd~QV}$vDL>!H&^~zrts>t7F>2?u+en^~{y5jj~<=?@9K) zk?40ds`%$^!+v`urpO-8vl*=AEr zTKnAyszmTmx)}5};lRi9gfN8mxdT7dHvW{_b+CoEslsXqeT%^A9hDaelf<+{2Q-V- z>PaxA`&S*b@5%>1`g2T+->pRHIA+D|V$X1XPQRe&ZotfYmP}+Dc$A025oGpSR+_v< z`}m75kvaEeB~F-4>u$&aRxsE1*eRw#74^R;j`GUdi@7cx;jXkoDMrt{KFStb1n@0I z9t53;Ddk}O*L<0OjUFq(2U7Rz^^*A~bG$;!@MgECVVW^?j`J5b8Byvf*tRMj0s+nh zh*n2&Q!1~^kS|{HUE2%T`=;HNniH#dwWsz8?Akj^Lbntj0dPU{6zBA(ge%Rkd2BO% ztyp7;}Wc#!}k9F9O3?Fs9SSha-MLC5P_|>bQ9kvz#FS+y#tWoH^T`e1mG{x zu-?^oVaK3%pBQNdu@wRq_DrK8VcdpkmvSpCyT;-DT7zd)Z`c#|sEP}xJ649`7^EJY za|)zcvaVl7_2j9xmmP%k{@;N$@Uix^TWVOTTz^q?j_O({I?IobC^N@nR7;R|zbvl^ zKf#rf{7|80c%)2mV&jHlktB!kFtX**T-S`!o`mKI$t^6aXQo=aj zFAZg*sCd@8$AVnnuu#0l%D>BNIN|=Ex0YRYJDivyYwd{dW~?~YXz!%JLBp1!l%+_R-(E7 zPDdZ5SB+e2%*DGGwsP0ZK4=Kv|F6T0w2nIbWgf-zBJF2)#BGVwjD6S0_{NplEPvdG zjvUo8Ct9-=)mX0$e;e3Sr&hJNWJ&QupY+URIP>0_?=&bD)KYP5F&wCC9J?+^m$Mh= zu)skPU+(&A!~1aPSNFJ=B~%2v+k02M=Hb%$0)C(@31}q960>4-B`iHmm%r}lHUnHH z1_lSAkyH6(zip;b77zvs1|tm4 z7^vcl)wqvbl&?@IUJ<4pC4qr{pB@PM+Ym_6vr!UwXa19QTK+$>}^lbZCerS?$dsi*E?~cq+DUv7Ks!}L2yxtO&SaT_d%oG&B}BrGR%l9 zONhofTgXtPXCXmg@rfq8cMBQR(51Txcg*5riic`e(n}1QZUxR#^wK9x6k#tJ2A`XT z>@gvJvC~FZA?&cIhLn-cP4eD8$D}kT&Pb_?A+J0-okEMHPuI*z8VKt;^!0D_!rBQh zOj)wQUIV*m1(7&G>yLDK6~0zf2#gK;6s;V^1R7L25i8qNL zHhDXQcPT9X=yKuvDS2YWct<@JrPZ6~d+(dqN>{L|#vsBxraEkmks+e(g-g{fBXu@> zHs`XxY6xBuKL0_Vijiz>>QGFX|DEj;>wbgJe8{JAarUa5@1X7lRfo?G3n|{b9rv&+1ZV@6bB-Y>vuk^j;zxa z>Ofm-_Nu{TBQcZ;?Srz zX?~xgsNc=q_G5u-sERe?i&Rw^mGBmE{aMUdn(#&kPK^UO;Nu|mBN?chB01%be>^m^ z{Yk8^rOOE=KCAeAQadbLWcOK4eBc!bBl6u!-44D6r4Xs_Vybhe^`ghI1>+S)o_X@p z%wDQ&vL|yFE)lN8;|e_KXaoJQHZktFXmC4^&rM6$p+_}lf7biNp5#!-o|kXos6 zj#|kK<@@xWn>YBPw8Pu0L(GY<9r9aZ2x>TZZ_8^rM<5@}uE#{k+(kKPWTF&POxky5 z?80AG(>XE)W^W?qy<}C2rl{Y}nS5A+`h~J6)3@pu;TlzFFNQb*JZx@|x9O=A6KU>; zXolL_4T&lNjt&52A+{O*GiMp-48hxh7}GDH%5X|bZ7&+L?zK(mQ;5EcB5$)4gf#BB5O$TeY0>$_Tu+~yw>Bfr^x1I-V=*jj5o zitm@`o?rt`))4ODl2x~G0*IaoA1#W&O}*B~Xu+q+Vglde;ZoJ@^NGmCQn%{O_$g%_k> zL!^O>XPK;2OyqoaG6bruEJ*RZafZ~o|12M~()w9=6{b7N`d3O4S?I|&z_dv@dBSFi zBQ(@&@N(ztplD*P8->*_2_hzx!07#F>vLy9i8SgoVpOF3E3^;snY<2D-4))NNW&7f z!Czc++vOSCj4fI}*xebTd&l!D)Pr(9CK+Qy^|=cq+OffvnAq3NlL)MEe)t=ckBZQ; zVStamzV`_SlNXN&Ea>bB{ZT84%2yMl5$3Z$pC!f7Uh2nFeXd(VwvV$phRt~VjB}QD zl8F<;rIMpZKba~L;#-b}_9R`8JloXCBGi9`1<=Z!+sS9sSBLs2*9(-s8Skxr<%j}T z%rLb&873e0=czd^M}}=U>%Ew9?cMn)P)Nrnw*+b1s-diy8d*H~kkrhzsOu4h?tFP~ z+DDcQ6<0wV_sq3K(SP1I{pKB4X64OJYcDf`onX|!Nb zVQoZ4-K~`1iy^r~26yvd|Mi(|3?KaH!`LZ=iu;+7w=7Tm(|J$-;~Gaq^<3ST%_WY5 zwhA{bn6y^R`P1F)R{Y^lE1?n)A>4*#YG3~aZ55k|! z={9LCpE)quT?`U()e2t}g-|N)>~GSOkf0IxZp&)?MNzA0xNBQP_?P*qEt|3&w52xr zZQgvz(=Tcj?G8#quvfkOUCTvZ(eso8D=P#^>q|g@A6#=MCKP45qJY=-KJDaP8%!iu zu;&)qbX@-S`Eblz!@$FO8=@FW$9mi*0!oJvK)o3LQBrlR#6#P7@b^0}QBBM9dU?HH zwGM~Akt-b+?%;))*;}`53q}o(bwg5?C@akHHJe9Ek9}G&jI1lJS65@dp9wLJwr52| zyo`Mr4|>AJJ!dgly4>{4Eo6Y~o6Tr|qlql^>BKE0*oxE`x@Srb-heJhWh0l28INw< z1uF9_#$m*i71V0&8#7e#TlvMhl$aJVO(W1Hr{xa`{n?MT!IvvSiq*-PO&r}SVWtJ3 z&3`L~8NZwp8aQhKK@|*;8YUPEi$q&nTi1YRw&u4%Q};^%eaj6ySX+zfY*)P;YdS?B zDbth_%qp==Jk{)O1bT~Q-@nf1s39b#5|#*swnEX^g=Z#rNQS(&EI;5tE~`E#7X8pT z$ln`=baU^9@fEm#2@`7&HFme6JU>eZTUKSx!3%VhKpK{&n}Wp`)iqRO&hPPSgwaa zzf)QoNw;3K%8(|ST@uSiGH?s?z0P%}JF-GMqzV+l6KI>Z&MHK>=#7>eI{v5{aX7*j zpII8VYDf^gTq{)|^wR|vP}hVli*(WoMLN0)=0{b*`X!8>m#<5#?`F2&*Uy%ua)*Y% zPWnF>kkUnUYH-$wSZ%*$e@9ZQpROI71azJVy`$5wt!wT>DiX5r_9l_U8`SPH2n*w`<} zz(U}i@`Y6h?xUHR092oF*u_?iU1gE0_1JGGw8N#xVnfXsc_Gjvw~&vj#i;e}qI4Q{ z+&o!5Of35nzd&#I@I-@It>`+Ds1_Ml4qmUPL&rk$JOBuVp+`=;LHOP0cXK;J7ot1y zCDcPsL2>|M58fNMMM|=95*t;tMdEm|svhNgg7d`Ebon^9++COFkTiE?!%nxLc1R`b zaq*~SVsDHG6KhBS;VG6FcX-D@%#W8B`Fwu2+*Lm;qsZPb`4#z?M5M4E_jlS6QoCf~ zC2h#MID9yWCCK7_pG zm}Z*EZ6vj~+(HP9w051F7MgJ-DwRmK3fT?)BJ;j{o&NJl{ExdhxTIaL)qe5agar9W(8NW}N1MJ(n`vj<-mc@GD|P*7H&6T4XMqaGb~ld-nlj zCW$u);W(;pKf&qLV*`MZ)_|7b`PXT%mNP~4cCVbnA4Xd-_VbAiV~h@elbrFLyDzI6 zH!!TY??P5fHU;=&k2;S$QhgkPVq3U+uR!~eFVdXoMs=i0R&ZWgwCJa5chtQrZTg`X zp;NjAxN^MLBMYOaOLPkuM7DT$1kkzEz4hD589(0ii!vQZQO?bY-vg!gSGui@1ZDt8xN@oM_cK4F@;rBqn@ zIJzj%j+>PR!8C;UHXxFAJVfw$zuwxbsBx*VctQaK272!D zI$L;^mILA}Q?6g0x(}s3ZkGMr;&;}3Cb^JkPke2n;#&j8PC7#8%S_lld`>0H?_Ns& zIOWxtxenecBeh=p_-FT(j?qPrjl*QSDwoI9WlKUUS1geQ3@`NdHT$7KR#Xbhx9{+5 z8DrTH#R)wfa<*ZG%}$+n)#6P!^Hs~AotBeoe9Wu~6I6=S?d0XnVXvWxh~J$F^F5fp zEBe92Vld}wn2=VDyyk|*{%udrZCeh&GpK&!?XZYk+M9L~Gt_IO^)Uj-<&xYvl*71x zcBExOm(;HW9}@A|iTPy`@IqhrH{O8u8rAql7Ex(D$7zI!u|vW@`)3x*g7aEb2|KCV zJ-z|Z8Nk?N5av#BtFS^WFC%ZDH&%aBSe>M{wa3zX+?j5qD|2iZK#Pq(=Wgd z75+!NtCRZmtr;{=Y+1wcCs&L>_3)(cHp3A;uiVkx)_!@bp`@}zPr z)*B%1M-nj-Q@>YaY~eNfcV8_e#=Q(kZMfPQOa`n6$|ZHnr%kblcSOsdWm#vSsPK?S zyX$IgKN)0PP^Wr!bPud(?Fbz-?7qqQHf2joS-460nFYBa&yBJL5S5q^=C`TYcWEK>DVVM8}C|E&HhlwU`S5k*1tv~_=ZIS8{2hked? zjv5kK6m=)bNsc$$bnBVpLyMFxdb%1Jr_xf^18kxVp(2Y8&V#6^7(f8mgLnuXQKvV2 zs$Y7s7V&Lqd4(axekV$$fIG*P-_w-H7EfZY)yqgPiyb1=B{X5^{7k+Fns|ohf$p;Y z<#Mkq8TW_r?=qA(AJVK2B&n)NYrG`~q?*)=LB_K5WSL&mvH5hBFcl)#;U)obV&;yvY#*x=cvolgI_bW17!qC9_b{Kp^vF64>f{cPXOn-ZrmF$3eDjebur zR-9E^E4@oBY8Wz9MYu=OPbr2iUPJErZN}xHAg!&osd$N8#+1D%{;4>k+Z-Gk3l2TA zDpP%Q;>1G3v^$NDyB2Aa152dLB6yO^8IOxH1T=~A-ZP-W-C2^9OSIUvzJoZdRNRGf zs9WMU`m78s_;Dj~fJs{+CQ2k-e&GY(!ye-r2>_uJ;Or>7x1=2Lrg(*W_#iRPVj>MSchQ@V8;UJa`8|OIVS>Tn5zP*0#i)EUv3d)@o zGtgJPy{K?K>J)?aEviWAW?s^g3QZ{~T3SV=XG@xlKib)h--Rk&OIzFA@+88mC+fbL z)mOul2!@Sozo-08%7c8OCv?lQ{=)Q#5eOr0B?4hYG5dJR$X1@?O7o?#g{CkE6Ttogv}ah(0saV7~aAJlZ34TBgweszf?vMQC z%JNx$uANACP!E@M>}iZa7uRpntc3Ygl6^rTqcS3V7$bLaBGY@Buh2%cggOc#SXPR^mMM;4yzM@o=zZ}f*cG5B^wi)k>~A4^W4fg-g}cq1``k~lOPvk zhob;QYVj_%@lcMt@gqBS{4@BcbRGt)D6HNro~6fV)va!ul`<+NdU0{o3a`&N2#cKY z&~7}fTlNQz@I_cRwNE(0O%sTs0;`lu^!Ihyz>8KYF+xSugGuxwR%RBec-T=fA`1)= zpRi#tI0pwu;Q>j=OBU9prV5VX-qf;@UxrQSaB0dl<+N38#FEvX7oN!bLB2)jsJY|4 zSTNX6RTDC=@^vKbv3tW2d2-g`LF~3&r;0#WA2WI=V2c{~u}&mR?lAhbkx!~m1#VMv zv6GDsv@m<5Rnss3Rl-!s;aU9zlrYQQn!$k*Cd`Xm3MgTUe{!c`*0-*b?SdGMrMP{* zYBUbaV|XA>2;H8VJ7l?ctruF(KTS#iG3_OT%&R*pjiVd@zk@DssX)O;!0+JInatz% z;CI;a8t?ls2KXJ+x;BBzi-??@vRS#>K>c0qyTwCK4R9YZyvkPe3}o5OkjJ4(H_zJQ z!5Bjon?GVf1Lh8l3__B4T_5KZL8eAKDmy;eZHXkeok$j?JYG(qaLC8hieU02c~5;R zVbj1&(Dpqm)QKR0-MKB^Mgl#w8CBMCdDP%C#Z@kD9O3ec$feLjX!Nclb;iuHt$vX< zdY~l|%SEEJFx}Pq=1mWHjyoG1&JKc4o^HVg{p4jqj;KB6jz`VZB6pwm9^I-)e$~dQ zXMm!tRj>0&t=j6j58;sN)KF=HVWO%-A$*w)*-`2r<{gY7HR8bY;T>0(8KJew&rh&F zk2Go57UrhC2z6vWF4BmLTFsYNqnL0mVyW& z>7sJ-{;z88gTgqi%Ysce;H)xkQ<~njKVQ-`qKA}nbiGPvh7c6A_o(`~GWo2=uV0=> z?A9nO8MQkd(^wnTJXz{%t-+4bN!?4vUzUH&D90*70>-0_pc7$|y%F6i$F4%U9nsqA zS1YEZa(`r2$#KzuVdxl_a2v=cv4NCLJjlfovQJ(w^sywHG6+I()lzH_p-Z(XpOQI5 z6Gv(-w5x|ps3RXmXfsJYWfo1{LdM)cA-X*rpL@4XCHTh5r;OXM z^eZc@EbYj7>7s5qzFqiT3JD87Wxe8P@W&tGl(!!eTyxQ6*cOiSfp({{Ye z5qwk#`3Ki9tYtbTkqvMSM@9nuR5*7-%`Yd1wB4F)|5t7`{-^j6zy0XN=l^u%Y5+UC z#~qSgx%jkEH4D=7?W(Fd(3l;u9q5UB_~>btzRu0DC3VCUm=y;~Ln z5NWTbG?(R3-^h2Pid2SS5lYX<-~ik(sOua1?FyauK%st^#3SQhg?bmJL6?Pp73vGO zG=!9ZLOt-90Q&T>wi2k`fJaS;U6XgeXkQ(jQqAPH7ROue5~2LQVb|?PzdWC(p2s|+ zXrwxm2FYvA!=v6b&HtO3?`7}V}6D5 zX#JJ8)PHl_E~6iw;5woOue7Gu9dqnP(B?U82e9nO9YHc~ytrT;1Mb$1($C|d#Dv>k z>hdplM=n1HR8*UaR6Nru2N!J(Xvg112E&%o1G-ig9L0ck@i(mB$v%;VWL9#Uhe-d- zpDYjESJL58kFtmED+-(!cp^S@U$-pwKAZ>v-PcX$in$YDrH=&Yz5-8t?*@~BKQ0py zP_69vna0@DmdVB&`%AIus%LGJKZ`kD$-*DM>4->t!HVb5?Ldy*wlf`Bhry9zBqibg z9Dfj|64N7sbG(weRYqGYv7Q&9*aD~bkkcTBWE|J8^@3Nrb$Gj*YaQ(Zz#PeO(V9R) z0xOVAV*9#->IGmhml2?Cxb*!xihj*41bB?{$M0<_{V%*z3@A+&J;u8%$2_=V&eD3h z{^XID-)fXd52!j-ru{|1m@@?u2^g1XnZGuq?FzSy8MYC=GQMiIUS`7x=I+?q73vh1 zGC`}CDNnYfndb>nQHZ`+^Sx?Y!hco~-Rl-Z;8UBUG7Y}V3vfn$N;t`Gwb@z(bNuKO zyLE*1kR@tj2b;=+AJj-9KcW?f*CSe&C$XN#p=|m_fEsHZr~j z>H6qC&|fbuq5CHg+0Kw+1(NVDuDVwxy0&fx)^5h{){gGl@)kXsu=|^AXMqmpf;Qy( zqqnJ;aPsm``L}hD(woeLG%ZvOWl-9~K&tJc@gI?i|70fsb=8d%&AgDiUXy9#3m?BQ zomM8Fw$Wh-Z~FL5-jVfA;+945>81PBkzK_|X!luK#^a96yE3~Kf80N%izRw~xLP(< z8oz^CwtYm$TsITP-OMRJ&$qQmJUi>)aQ#1m8vpoIb%D7gdn1pkf7yWbkR1O@2Hc|F o7dha{C>100zqx?_$K&;%rP}}d;{SdF|MwgC|NRZr{9X8e0QzC6ga7~l literal 0 HcmV?d00001 diff --git a/tests/assets/images/testocr.pbm b/tests/assets/images/testocr.pbm new file mode 100644 index 0000000000000000000000000000000000000000..b70cc9ed30d938062075484ac7fe24a74487667a GIT binary patch literal 38411 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 O4GbC>H1H3kf&T-g^YIw~ literal 0 HcmV?d00001 diff --git a/tests/assets/images/testocr.png b/tests/assets/images/testocr.png new file mode 100644 index 0000000000000000000000000000000000000000..ce8d0e78b5d4cdb46258b479fb7def468e0040b6 GIT binary patch literal 23359 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 literal 0 HcmV?d00001 diff --git a/tests/assets/testocr.bmp b/tests/assets/testocr.bmp deleted file mode 100755 index b22531fed4e103a6b4385fd839d64ca61940f149..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1228938 zcmeFaudeM~^X2t6O-MjOumnK}8Z4rNL1EAcRNnv=(FW57jpH(qgqy(P(ddTCkCEqd z>Zz((^SjpGXP>>t44tZ3<4?^s);i}rkQex`{+oaOzyJIHi1V-izyI?;{(t}HU;SJE z_{abC&;Id`fA)|6_#gi~fd3zl_OJ7A{_&50`oCiIZ~m+Q`oH}j{?-5S|NLkF{r~nK z{fGbY|MY+Vvw!hl{1^YhzxtQ|@<06-|MFk{JOAtd^1uAM|K-2;fBy6T>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D zoPZN>0#3jQH~}Z%1e|~qZ~{)i2{-{K-~^n26L11fzzH}3C*TB}fD>>6PQVE`0Vm)D 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

?OY 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