@papyrus-sdk/ui-react-native 0.2.7 → 0.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../runtime/index.html","../index.ts","../components/Viewer.tsx","../components/PageRenderer.tsx","../components/WebViewViewer.tsx","../components/Topbar.tsx","../icons.tsx","../components/ToolDock.tsx","../strings.ts","../components/RightSheet.tsx","../components/AnnotationEditor.tsx","../components/BottomBar.tsx","../components/SettingsSheet.tsx","../components/CoverPreview.tsx"],"sourcesContent":["<!DOCTYPE html>\r\n<html lang=\"en\">\r\n <head>\r\n <meta charset=\"utf-8\" />\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n <title>Papyrus Mobile Runtime</title>\r\n <style>\r\n html,\r\n body {\r\n width: 100%;\r\n height: 100%;\r\n margin: 0;\r\n padding: 0;\r\n background: #ffffff;\r\n overflow: hidden;\r\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\r\n }\r\n\r\n #viewer {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n overflow: hidden;\r\n background: #ffffff;\r\n }\r\n </style>\r\n </head>\r\n <body>\r\n <div id=\"viewer\"></div>\r\n <script>\r\n/*!\r\n\r\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\r\n<http://stuartk.com/jszip>\r\n\r\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\r\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\r\n\r\nJSZip uses the library pako released under the MIT license :\r\nhttps://github.com/nodeca/pako/blob/main/LICENSE\r\n*/\r\n\r\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e<h.length;e++)u(h[e]);return u}({1:[function(e,t,r){\"use strict\";var d=e(\"./utils\"),c=e(\"./support\"),p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(e){for(var t,r,n,i,s,a,o,h=[],u=0,l=e.length,f=l,c=\"string\"!==d.getTypeOf(e);u<e.length;)f=l-u,n=c?(t=e[u++],r=u<l?e[u++]:0,u<l?e[u++]:0):(t=e.charCodeAt(u++),r=u<l?e.charCodeAt(u++):0,u<l?e.charCodeAt(u++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<f?(15&r)<<2|n>>6:64,o=2<f?63&n:64,h.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join(\"\")},r.decode=function(e){var t,r,n,i,s,a,o=0,h=0,u=\"data:\";if(e.substr(0,u.length)===u)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,f=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=c.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r<t;r++)n+=String.fromCharCode(255&e),e>>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var r=this.bytesWritten-e,n=function(e,t,r,n,i){var s=I.transformTo(\"string\",i(n));return R.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+A(e,2)+A(e,2)+A(t,4)+A(r,4)+A(s.length,2)+s}(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:n,meta:{percent:100}})},s.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},s.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on(\"error\",function(e){t.error(e)}),this},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},s.prototype.error=function(e){var t=this._sources;if(!i.prototype.error.call(this,e))return!1;for(var r=0;r<t.length;r++)try{t[r].error(e)}catch(e){}return!0},s.prototype.lock=function(){i.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=s},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(e,t,r){\"use strict\";var u=e(\"../compressions\"),n=e(\"./ZipFileWorker\");r.generateWorker=function(e,a,t){var o=new n(a.streamFiles,t,a.platform,a.encodeFileName),h=0;try{e.forEach(function(e,t){h++;var r=function(e,t){var r=e||t,n=u[r];if(!n)throw new Error(r+\" is not a valid compression method !\");return n}(t.options.compression,a.compression),n=t.options.compressionOptions||a.compressionOptions||{},i=t.dir,s=t.date;t._compressWorker(r,n).withStreamInfo(\"file\",{name:e,dir:i,date:s,comment:t.comment||\"\",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(o)}),o.entriesCount=h}catch(e){o.error(e)}return o}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(e,t,r){\"use strict\";function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files=Object.create(null),this.comment=null,this.root=\"\",this.clone=function(){var e=new n;for(var t in this)\"function\"!=typeof this[t]&&(e[t]=this[t]);return e}}(n.prototype=e(\"./object\")).loadAsync=e(\"./load\"),n.support=e(\"./support\"),n.defaults=e(\"./defaults\"),n.version=\"3.10.1\",n.loadAsync=function(e,t){return(new n).loadAsync(e,t)},n.external=e(\"./external\"),t.exports=n},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(e,t,r){\"use strict\";var u=e(\"./utils\"),i=e(\"./external\"),n=e(\"./utf8\"),s=e(\"./zipEntries\"),a=e(\"./stream/Crc32Probe\"),l=e(\"./nodejsUtils\");function f(n){return new i.Promise(function(e,t){var r=n.decompressed.getContentWorker().pipe(new a);r.on(\"error\",function(e){t(e)}).on(\"end\",function(){r.streamInfo.crc32!==n.decompressed.crc32?t(new Error(\"Corrupted zip : CRC32 mismatch\")):e()}).resume()})}t.exports=function(e,o){var h=this;return o=u.extend(o||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:n.utf8decode}),l.isNode&&l.isStream(e)?i.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):u.prepareContent(\"the loaded zip file\",e,!0,o.optimizedBinaryString,o.base64).then(function(e){var t=new s(o);return t.load(e),t}).then(function(e){var t=[i.Promise.resolve(e)],r=e.files;if(o.checkCRC32)for(var n=0;n<r.length;n++)t.push(f(r[n]));return i.Promise.all(t)}).then(function(e){for(var t=e.shift(),r=t.files,n=0;n<r.length;n++){var i=r[n],s=i.fileNameStr,a=u.resolve(i.fileNameStr);h.file(a,i.decompressed,{binary:!0,optimizedBinaryString:!0,date:i.date,dir:i.dir,comment:i.fileCommentStr.length?i.fileCommentStr:null,unixPermissions:i.unixPermissions,dosPermissions:i.dosPermissions,createFolders:o.createFolders}),i.dir||(h.file(a).unsafeOriginalName=s)}return t.zipComment.length&&(h.comment=t.zipComment),h})}},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../stream/GenericWorker\");function s(e,t){i.call(this,\"Nodejs stream input adapter for \"+e),this._upstreamEnded=!1,this._bindStream(t)}n.inherits(s,i),s.prototype._bindStream=function(e){var t=this;(this._stream=e).pause(),e.on(\"data\",function(e){t.push({data:e,meta:{percent:0}})}).on(\"error\",function(e){t.isPaused?this.generatedError=e:t.error(e)}).on(\"end\",function(){t.isPaused?t._upstreamEnded=!0:t.end()})},s.prototype.pause=function(){return!!i.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},t.exports=s},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(e,t,r){\"use strict\";var i=e(\"readable-stream\").Readable;function n(e,t,r){i.call(this,t),this._helper=e;var n=this;e.on(\"data\",function(e,t){n.push(e)||n._helper.pause(),r&&r(t)}).on(\"error\",function(e){n.emit(\"error\",e)}).on(\"end\",function(){n.push(null)})}e(\"../utils\").inherits(n,i),n.prototype._read=function(){this._helper.resume()},t.exports=n},{\"../utils\":32,\"readable-stream\":16}],14:[function(e,t,r){\"use strict\";t.exports={isNode:\"undefined\"!=typeof Buffer,newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(e,t);if(\"number\"==typeof e)throw new Error('The \"data\" argument must not be a number');return new Buffer(e,t)},allocBuffer:function(e){if(Buffer.alloc)return Buffer.alloc(e);var t=new Buffer(e);return t.fill(0),t},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&\"function\"==typeof e.on&&\"function\"==typeof e.pause&&\"function\"==typeof e.resume}}},{}],15:[function(e,t,r){\"use strict\";function s(e,t,r){var n,i=u.getTypeOf(t),s=u.extend(r||{},f);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),\"string\"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(e=g(e)),s.createFolders&&(n=_(e))&&b.call(this,n,!0);var a=\"string\"===i&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!a),(t instanceof c&&0===t.uncompressedSize||s.dir||!t||0===t.length)&&(s.base64=!1,s.binary=!0,t=\"\",s.compression=\"STORE\",i=\"string\");var o=null;o=t instanceof c||t instanceof l?t:p.isNode&&p.isStream(t)?new m(e,t):u.prepareContent(e,t,s.binary,s.optimizedBinaryString,s.base64);var h=new d(e,o,s);this.files[e]=h}var i=e(\"./utf8\"),u=e(\"./utils\"),l=e(\"./stream/GenericWorker\"),a=e(\"./stream/StreamHelper\"),f=e(\"./defaults\"),c=e(\"./compressedObject\"),d=e(\"./zipObject\"),o=e(\"./generate\"),p=e(\"./nodejsUtils\"),m=e(\"./nodejs/NodejsStreamInputAdapter\"),_=function(e){\"/\"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf(\"/\");return 0<t?e.substring(0,t):\"\"},g=function(e){return\"/\"!==e.slice(-1)&&(e+=\"/\"),e},b=function(e,t){return t=void 0!==t?t:f.createFolders,e=g(e),this.files[e]||s.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function h(e){return\"[object RegExp]\"===Object.prototype.toString.call(e)}var n={load:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},forEach:function(e){var t,r,n;for(t in this.files)n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n)},filter:function(r){var n=[];return this.forEach(function(e,t){r(e,t)&&n.push(t)}),n},file:function(e,t,r){if(1!==arguments.length)return e=this.root+e,s.call(this,e,t,r),this;if(h(e)){var n=e;return this.filter(function(e,t){return!t.dir&&n.test(e)})}var i=this.files[this.root+e];return i&&!i.dir?i:null},folder:function(r){if(!r)return this;if(h(r))return this.filter(function(e,t){return t.dir&&r.test(e)});var e=this.root+r,t=b.call(this,e),n=this.clone();return n.root=t.name,n},remove:function(r){r=this.root+r;var e=this.files[r];if(e||(\"/\"!==r.slice(-1)&&(r+=\"/\"),e=this.files[r]),e&&!e.dir)delete this.files[r];else for(var t=this.filter(function(e,t){return t.name.slice(0,r.length)===r}),n=0;n<t.length;n++)delete this.files[t[n].name];return this},generate:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},generateInternalStream:function(e){var t,r={};try{if((r=u.extend(e||{},{streamFiles:!1,compression:\"STORE\",compressionOptions:null,type:\"\",platform:\"DOS\",comment:null,mimeType:\"application/zip\",encodeFileName:i.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),\"binarystring\"===r.type&&(r.type=\"string\"),!r.type)throw new Error(\"No output type specified.\");u.checkSupport(r.type),\"darwin\"!==r.platform&&\"freebsd\"!==r.platform&&\"linux\"!==r.platform&&\"sunos\"!==r.platform||(r.platform=\"UNIX\"),\"win32\"===r.platform&&(r.platform=\"DOS\");var n=r.comment||this.comment||\"\";t=o.generateWorker(this,r,n)}catch(e){(t=new l(\"error\")).error(e)}return new a(t,r.type||\"string\",r.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){return(e=e||{}).type||(e.type=\"nodebuffer\"),this.generateInternalStream(e).toNodejsStream(t)}};t.exports=n},{\"./compressedObject\":2,\"./defaults\":5,\"./generate\":9,\"./nodejs/NodejsStreamInputAdapter\":12,\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31,\"./utils\":32,\"./zipObject\":35}],16:[function(e,t,r){\"use strict\";t.exports=e(\"stream\")},{stream:void 0}],17:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e);for(var t=0;t<this.data.length;t++)e[t]=255&e[t]}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data[this.zero+e]},i.prototype.lastIndexOfSignature=function(e){for(var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===t&&this.data[s+1]===r&&this.data[s+2]===n&&this.data[s+3]===i)return s-this.zero;return-1},i.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.readData(4);return t===s[0]&&r===s[1]&&n===s[2]&&i===s[3]},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],18:[function(e,t,r){\"use strict\";var n=e(\"../utils\");function i(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+e+\"). Corrupted zip ?\")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r<this._listeners[e].length;r++)this._listeners[e][r].call(this,t)},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.streamInfo=e.streamInfo,this.mergeStreamInfo(),this.previous=e;var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.end()}),e.on(\"error\",function(e){t.error(e)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var e=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,e)&&(this.streamInfo[e]=this.extraStreamInfo[e])},lock:function(){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var e=\"Worker \"+this.name;return this.previous?this.previous+\" -> \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r<t.length;r++)s+=t[r].length;switch(e){case\"string\":return t.join(\"\");case\"array\":return Array.prototype.concat.apply([],t);case\"uint8array\":for(i=new Uint8Array(s),r=0;r<t.length;r++)i.set(t[r],n),n+=t[r].length;return i;case\"nodebuffer\":return Buffer.concat(t);default:throw new Error(\"concat : unsupported type '\"+e+\"'\")}}(i,n),a);t(e)}catch(e){r(e)}n=[]}).resume()})}function f(e,t,r){var n=t;switch(t){case\"blob\":case\"arraybuffer\":n=\"uint8array\";break;case\"base64\":n=\"string\"}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s(\"error\"),this._worker.error(e)}}f.prototype={accumulate:function(e){return l(this,e)},on:function(e,t){var r=this;return\"data\"===e?this._worker.on(e,function(e){t.call(r,e.data,e.meta)}):this._worker.on(e,function(){h.delay(t,arguments,r)}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(e){if(h.checkSupport(\"nodestream\"),\"nodebuffer\"!==this._outputType)throw new Error(this._outputType+\" is not supported by this method\");return new o(this,{objectMode:\"nodebuffer\"!==this._outputType},e)}},t.exports=f},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(e,t,r){\"use strict\";if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,r.nodebuffer=\"undefined\"!=typeof Buffer,r.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=0===new Blob([n],{type:\"application/zip\"}).size}catch(e){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(n),r.blob=0===i.getBlob(\"application/zip\").size}catch(e){r.blob=!1}}}try{r.nodestream=!!e(\"readable-stream\").Readable}catch(e){r.nodestream=!1}},{\"readable-stream\":16}],31:[function(e,t,s){\"use strict\";for(var o=e(\"./utils\"),h=e(\"./support\"),r=e(\"./nodejsUtils\"),n=e(\"./stream/GenericWorker\"),u=new Array(256),i=0;i<256;i++)u[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;u[254]=u[254]=1;function a(){n.call(this,\"utf-8 decode\"),this.leftOver=null}function l(){n.call(this,\"utf-8 encode\")}s.utf8encode=function(e){return h.nodebuffer?r.newBufferFrom(e,\"utf-8\"):function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=h.uint8array?new Uint8Array(o):new Array(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t<s;)if((n=e[t++])<128)a[r++]=n;else if(4<(i=u[n]))a[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;1<i&&t<s;)n=n<<6|63&e[t++],i--;1<i?a[r++]=65533:n<65536?a[r++]=n:(n-=65536,a[r++]=55296|n>>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r<e.length;++r)t[r]=255&e.charCodeAt(r);return t}e(\"setimmediate\"),a.newBlob=function(t,r){a.checkSupport(\"blob\");try{return new Blob([t],{type:r})}catch(e){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return n.append(t),n.getBlob(r)}catch(e){throw new Error(\"Bug : can't construct the Blob.\")}}};var i={stringifyByChunk:function(e,t,r){var n=[],i=0,s=e.length;if(s<=r)return String.fromCharCode.apply(null,e);for(;i<s;)\"array\"===t||\"nodebuffer\"===t?n.push(String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,s)))):n.push(String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,s)))),i+=r;return n.join(\"\")},stringifyByChar:function(e){for(var t=\"\",r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},applyCanBeUsed:{uint8array:function(){try{return o.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}}(),nodebuffer:function(){try{return o.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}}()}};function s(e){var t=65536,r=a.getTypeOf(e),n=!0;if(\"uint8array\"===r?n=i.applyCanBeUsed.uint8array:\"nodebuffer\"===r&&(n=i.applyCanBeUsed.nodebuffer),n)for(;1<t;)try{return i.stringifyByChunk(e,r,t)}catch(e){t=Math.floor(t/2)}return i.stringifyByChar(e)}function f(e,t){for(var r=0;r<e.length;r++)t[r]=e[r];return t}a.applyFromCharCode=s;var c={};c.string={string:n,array:function(e){return l(e,new Array(e.length))},arraybuffer:function(e){return c.string.uint8array(e).buffer},uint8array:function(e){return l(e,new Uint8Array(e.length))},nodebuffer:function(e){return l(e,r.allocBuffer(e.length))}},c.array={string:s,array:n,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(e)}},c.arraybuffer={string:function(e){return s(new Uint8Array(e))},array:function(e){return f(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:n,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(new Uint8Array(e))}},c.uint8array={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:n,nodebuffer:function(e){return r.newBufferFrom(e)}},c.nodebuffer={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return c.nodebuffer.uint8array(e).buffer},uint8array:function(e){return f(e,new Uint8Array(e.length))},nodebuffer:n},a.transformTo=function(e,t){if(t=t||\"\",!e)return t;a.checkSupport(e);var r=a.getTypeOf(t);return c[r][e](t)},a.resolve=function(e){for(var t=e.split(\"/\"),r=[],n=0;n<t.length;n++){var i=t[n];\".\"===i||\"\"===i&&0!==n&&n!==t.length-1||(\"..\"===i?r.pop():r.push(i))}return r.join(\"/\")},a.getTypeOf=function(e){return\"string\"==typeof e?\"string\":\"[object Array]\"===Object.prototype.toString.call(e)?\"array\":o.nodebuffer&&r.isBuffer(e)?\"nodebuffer\":o.uint8array&&e instanceof Uint8Array?\"uint8array\":o.arraybuffer&&e instanceof ArrayBuffer?\"arraybuffer\":void 0},a.checkSupport=function(e){if(!o[e.toLowerCase()])throw new Error(e+\" is not supported by this platform\")},a.MAX_VALUE_16BITS=65535,a.MAX_VALUE_32BITS=-1,a.pretty=function(e){var t,r,n=\"\";for(r=0;r<(e||\"\").length;r++)n+=\"\\\\x\"+((t=e.charCodeAt(r))<16?\"0\":\"\")+t.toString(16).toUpperCase();return n},a.delay=function(e,t,r){setImmediate(function(){e.apply(r||null,t||[])})},a.inherits=function(e,t){function r(){}r.prototype=t.prototype,e.prototype=new r},a.extend=function(){var e,t,r={};for(e=0;e<arguments.length;e++)for(t in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],t)&&void 0===r[t]&&(r[t]=arguments[e][t]);return r},a.prepareContent=function(r,e,n,i,s){return u.Promise.resolve(e).then(function(n){return o.blob&&(n instanceof Blob||-1!==[\"[object File]\",\"[object Blob]\"].indexOf(Object.prototype.toString.call(n)))&&\"undefined\"!=typeof FileReader?new u.Promise(function(t,r){var e=new FileReader;e.onload=function(e){t(e.target.result)},e.onerror=function(e){r(e.target.error)},e.readAsArrayBuffer(n)}):n}).then(function(e){var t=a.getTypeOf(e);return t?(\"arraybuffer\"===t?e=a.transformTo(\"uint8array\",e):\"string\"===t&&(s?e=h.decode(e):n&&!0!==i&&(e=function(e){return l(e,o.uint8array?new Uint8Array(e.length):new Array(e.length))}(e))),e):u.Promise.reject(new Error(\"Can't read the data of '\"+r+\"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\"))})}},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,setimmediate:54}],33:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),i=e(\"./utils\"),s=e(\"./signature\"),a=e(\"./zipEntry\"),o=e(\"./support\");function h(e){this.files=[],this.loadOptions=e}h.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error(\"Corrupted zip or bug: unexpected signature (\"+i.pretty(t)+\", expected \"+i.pretty(e)+\")\")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength),t=o.uint8array?\"uint8array\":\"array\",r=i.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var e,t,r,n=this.zip64EndOfCentralSize-44;0<n;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++)t=this.files[e],this.reader.setIndex(t.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),t.readLocalPart(this.reader),t.handleUTF8(),t.processAttributes()},readCentralDir:function(){var e;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(e=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(e);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error(\"Corrupted zip or bug: expected \"+this.centralDirRecords+\" records in central dir, got \"+this.files.length)},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(e<0)throw!this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error(\"Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\"):new Error(\"Corrupted zip: can't find end of central directory\");this.reader.setIndex(e);var t=e;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,(e=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");if(this.reader.setIndex(e),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var n=t-r;if(0<n)this.isSignature(t,s.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error(\"Corrupted zip: missing \"+Math.abs(n)+\" bytes.\")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=h},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utils\":32,\"./zipEntry\":34}],34:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),s=e(\"./utils\"),i=e(\"./compressedObject\"),a=e(\"./crc32\"),o=e(\"./utf8\"),h=e(\"./compressions\"),u=e(\"./support\");function l(e,t){this.options=e,this.loadOptions=t}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)\");if(null===(t=function(e){for(var t in h)if(Object.prototype.hasOwnProperty.call(h,t)&&h[t].magic===e)return h[t];return null}(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+s.pretty(this.compressionMethod)+\" unknown (inner file : \"+s.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4<i;)t=e.readInt(2),r=e.readInt(2),n=e.readData(r),this.extraFields[t]={id:t,length:r,value:n};e.setIndex(i)},handleUTF8:function(){var e=u.uint8array?\"uint8array\":\"array\";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var t=this.findExtraFieldUnicodePath();if(null!==t)this.fileNameStr=t;else{var r=s.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var n=this.findExtraFieldUnicodeComment();if(null!==n)this.fileCommentStr=n;else{var i=s.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(i)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileName)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileComment)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null}},t.exports=l},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(e,t,r){\"use strict\";function n(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var s=e(\"./stream/StreamHelper\"),i=e(\"./stream/DataWorker\"),a=e(\"./utf8\"),o=e(\"./compressedObject\"),h=e(\"./stream/GenericWorker\");n.prototype={internalStream:function(e){var t=null,r=\"string\";try{if(!e)throw new Error(\"No output type specified.\");var n=\"string\"===(r=e.toLowerCase())||\"text\"===r;\"binarystring\"!==r&&\"text\"!==r||(r=\"string\"),t=this._decompressWorker();var i=!this._dataBinary;i&&!n&&(t=t.pipe(new a.Utf8EncodeWorker)),!i&&n&&(t=t.pipe(new a.Utf8DecodeWorker))}catch(e){(t=new h(\"error\")).error(e)}return new s(t,r,\"\")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||\"nodebuffer\").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof o&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof h?this._data:new i(this._data)}};for(var u=[\"asText\",\"asBinary\",\"asNodeBuffer\",\"asUint8Array\",\"asArrayBuffer\"],l=function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},f=0;f<u.length;f++)n.prototype[u[f]]=l;t.exports=n},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(e,l,t){(function(t){\"use strict\";var r,n,e=t.MutationObserver||t.WebKitMutationObserver;if(e){var i=0,s=new e(u),a=t.document.createTextNode(\"\");s.observe(a,{characterData:!0}),r=function(){a.data=i=++i%2}}else if(t.setImmediate||void 0===t.MessageChannel)r=\"document\"in t&&\"onreadystatechange\"in t.document.createElement(\"script\")?function(){var e=t.document.createElement(\"script\");e.onreadystatechange=function(){u(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},t.document.documentElement.appendChild(e)}:function(){setTimeout(u,0)};else{var o=new t.MessageChannel;o.port1.onmessage=u,r=function(){o.port2.postMessage(0)}}var h=[];function u(){var e,t;n=!0;for(var r=h.length;r;){for(t=h,h=[],e=-1;++e<r;)t[e]();r=h.length}n=!1}l.exports=function(e){1!==h.push(e)||n||r()}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],37:[function(e,t,r){\"use strict\";var i=e(\"immediate\");function u(){}var l={},s=[\"REJECTED\"],a=[\"FULFILLED\"],n=[\"PENDING\"];function o(e){if(\"function\"!=typeof e)throw new TypeError(\"resolver must be a function\");this.state=n,this.queue=[],this.outcome=void 0,e!==u&&d(this,e)}function h(e,t,r){this.promise=e,\"function\"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function f(t,r,n){i(function(){var e;try{e=r(n)}catch(e){return l.reject(t,e)}e===t?l.reject(t,new TypeError(\"Cannot resolve promise with itself\")):l.resolve(t,e)})}function c(e){var t=e&&e.then;if(e&&(\"object\"==typeof e||\"function\"==typeof e)&&\"function\"==typeof t)return function(){t.apply(e,arguments)}}function d(t,e){var r=!1;function n(e){r||(r=!0,l.reject(t,e))}function i(e){r||(r=!0,l.resolve(t,e))}var s=p(function(){e(i,n)});\"error\"===s.status&&n(s.value)}function p(e,t){var r={};try{r.value=e(t),r.status=\"success\"}catch(e){r.status=\"error\",r.value=e}return r}(t.exports=o).prototype.finally=function(t){if(\"function\"!=typeof t)return this;var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})})},o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if(\"function\"!=typeof e&&this.state===a||\"function\"!=typeof t&&this.state===s)return this;var r=new this.constructor(u);this.state!==n?f(r,this.state===a?e:t,this.outcome):this.queue.push(new h(r,e,t));return r},h.prototype.callFulfilled=function(e){l.resolve(this.promise,e)},h.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e)},h.prototype.callRejected=function(e){l.reject(this.promise,e)},h.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e)},l.resolve=function(e,t){var r=p(c,t);if(\"error\"===r.status)return l.reject(e,r.value);var n=r.value;if(n)d(e,n);else{e.state=a,e.outcome=t;for(var i=-1,s=e.queue.length;++i<s;)e.queue[i].callFulfilled(t)}return e},l.reject=function(e,t){e.state=s,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},o.resolve=function(e){if(e instanceof this)return e;return l.resolve(new this(u),e)},o.reject=function(e){var t=new this(u);return l.reject(t,e)},o.all=function(e){var r=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var n=e.length,i=!1;if(!n)return this.resolve([]);var s=new Array(n),a=0,t=-1,o=new this(u);for(;++t<n;)h(e[t],t);return o;function h(e,t){r.resolve(e).then(function(e){s[t]=e,++a!==n||i||(i=!0,l.resolve(o,s))},function(e){i||(i=!0,l.reject(o,e))})}},o.race=function(e){var t=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var r=e.length,n=!1;if(!r)return this.resolve([]);var i=-1,s=new this(u);for(;++i<r;)a=e[i],t.resolve(a).then(function(e){n||(n=!0,l.resolve(s,e))},function(e){n||(n=!0,l.reject(s,e))});var a;return s}},{immediate:36}],38:[function(e,t,r){\"use strict\";var n={};(0,e(\"./lib/utils/common\").assign)(n,e(\"./lib/deflate\"),e(\"./lib/inflate\"),e(\"./lib/zlib/constants\")),t.exports=n},{\"./lib/deflate\":39,\"./lib/inflate\":40,\"./lib/utils/common\":41,\"./lib/zlib/constants\":44}],39:[function(e,t,r){\"use strict\";var a=e(\"./zlib/deflate\"),o=e(\"./utils/common\"),h=e(\"./utils/strings\"),i=e(\"./zlib/messages\"),s=e(\"./zlib/zstream\"),u=Object.prototype.toString,l=0,f=-1,c=0,d=8;function p(e){if(!(this instanceof p))return new p(e);this.options=o.assign({level:f,method:d,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:\"\"},e||{});var t=this.options;t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==l)throw new Error(i[r]);if(t.header&&a.deflateSetHeader(this.strm,t.header),t.dictionary){var n;if(n=\"string\"==typeof t.dictionary?h.string2buf(t.dictionary):\"[object ArrayBuffer]\"===u.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(r=a.deflateSetDictionary(this.strm,n))!==l)throw new Error(i[r]);this._dict_set=!0}}function n(e,t){var r=new p(t);if(r.push(e,!0),r.err)throw r.msg||i[r.err];return r.result}p.prototype.push=function(e,t){var r,n,i=this.strm,s=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:!0===t?4:0,\"string\"==typeof e?i.input=h.string2buf(e):\"[object ArrayBuffer]\"===u.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new o.Buf8(s),i.next_out=0,i.avail_out=s),1!==(r=a.deflate(i,n))&&r!==l)return this.onEnd(r),!(this.ended=!0);0!==i.avail_out&&(0!==i.avail_in||4!==n&&2!==n)||(\"string\"===this.options.to?this.onData(h.buf2binstring(o.shrinkBuf(i.output,i.next_out))):this.onData(o.shrinkBuf(i.output,i.next_out)))}while((0<i.avail_in||0===i.avail_out)&&1!==r);return 4===n?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==n||(this.onEnd(l),!(i.avail_out=0))},p.prototype.onData=function(e){this.chunks.push(e)},p.prototype.onEnd=function(e){e===l&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=p,r.deflate=n,r.deflateRaw=function(e,t){return(t=t||{}).raw=!0,n(e,t)},r.gzip=function(e,t){return(t=t||{}).gzip=!0,n(e,t)}},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/deflate\":46,\"./zlib/messages\":51,\"./zlib/zstream\":53}],40:[function(e,t,r){\"use strict\";var c=e(\"./zlib/inflate\"),d=e(\"./utils/common\"),p=e(\"./utils/strings\"),m=e(\"./zlib/constants\"),n=e(\"./zlib/messages\"),i=e(\"./zlib/zstream\"),s=e(\"./zlib/gzheader\"),_=Object.prototype.toString;function a(e){if(!(this instanceof a))return new a(e);this.options=d.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new i,this.strm.avail_out=0;var r=c.inflateInit2(this.strm,t.windowBits);if(r!==m.Z_OK)throw new Error(n[r]);this.header=new s,c.inflateGetHeader(this.strm,this.header)}function o(e,t){var r=new a(t);if(r.push(e,!0),r.err)throw r.msg||n[r.err];return r.result}a.prototype.push=function(e,t){var r,n,i,s,a,o,h=this.strm,u=this.options.chunkSize,l=this.options.dictionary,f=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?m.Z_FINISH:m.Z_NO_FLUSH,\"string\"==typeof e?h.input=p.binstring2buf(e):\"[object ArrayBuffer]\"===_.call(e)?h.input=new Uint8Array(e):h.input=e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new d.Buf8(u),h.next_out=0,h.avail_out=u),(r=c.inflate(h,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&l&&(o=\"string\"==typeof l?p.string2buf(l):\"[object ArrayBuffer]\"===_.call(l)?new Uint8Array(l):l,r=c.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===f&&(r=m.Z_OK,f=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);h.next_out&&(0!==h.avail_out&&r!==m.Z_STREAM_END&&(0!==h.avail_in||n!==m.Z_FINISH&&n!==m.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(i=p.utf8border(h.output,h.next_out),s=h.next_out-i,a=p.buf2string(h.output,i),h.next_out=s,h.avail_out=u-s,s&&d.arraySet(h.output,h.output,i,s,0),this.onData(a)):this.onData(d.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(f=!0)}while((0<h.avail_in||0===h.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(n=m.Z_FINISH),n===m.Z_FINISH?(r=c.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):n!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(h.avail_out=0))},a.prototype.onData=function(e){this.chunks.push(e)},a.prototype.onEnd=function(e){e===m.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=d.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=a,r.inflate=o,r.inflateRaw=function(e,t){return(t=t||{}).raw=!0,o(e,t)},r.ungzip=o},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/constants\":44,\"./zlib/gzheader\":47,\"./zlib/inflate\":49,\"./zlib/messages\":51,\"./zlib/zstream\":53}],41:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){var t,r,n,i,s,a;for(t=n=0,r=e.length;t<r;t++)n+=e[t].length;for(a=new Uint8Array(n),t=i=0,r=e.length;t<r;t++)s=e[t],a.set(s,i),i+=s.length;return a}},s={arraySet:function(e,t,r,n,i){for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(n)},{}],42:[function(e,t,r){\"use strict\";var h=e(\"./common\"),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var u=new h.Buf8(256),n=0;n<256;n++)u[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;function l(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,h.shrinkBuf(e,t));for(var r=\"\",n=0;n<t;n++)r+=String.fromCharCode(e[n]);return r}u[254]=u[254]=1,r.string2buf=function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=new h.Buf8(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r<n;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,n,i,s,a=t||e.length,o=new Array(2*a);for(r=n=0;r<a;)if((i=e[r++])<128)o[n++]=i;else if(4<(s=u[i]))o[n++]=65533,r+=s-1;else{for(i&=2===s?31:3===s?15:7;1<s&&r<a;)i=i<<6|63&e[r++],s--;1<s?o[n++]=65533:i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(i=i+t[n++]|0)|0,--a;);i%=65521,s%=65521}return i|s<<16|0}},{}],44:[function(e,t,r){\"use strict\";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(e,t,r){\"use strict\";var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4<e?9:0)}function D(e){for(var t=e.length;0<=--t;)e[t]=0}function F(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<c);if(n=S-(c-s),s=c-S,a<n){if(e.match_start=t,o<=(a=n))break;d=u[s+a-1],p=u[s+a]}}}while((t=f[t&l])>h&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u<l&&(l=u),r=0===l?0:(a.avail_in-=l,c.arraySet(o,a.input,a.next_in,l,h),1===a.state.wrap?a.adler=d(a.adler,o,l,h):2===a.state.wrap&&(a.adler=p(a.adler,o,l,h)),a.next_in+=l,a.total_in+=l,l),e.lookahead+=r,e.lookahead+e.insert>=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+x-1])&e.hash_mask,e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<x)););}while(e.lookahead<z&&0!==e.strm.avail_in)}function Z(e,t){for(var r,n;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r)),e.match_length>=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function W(e,t){for(var r,n,i;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=x-1,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r),e.match_length<=5&&(1===e.strategy||e.match_length===x&&4096<e.strstart-e.match_start)&&(e.match_length=x-1)),e.prev_length>=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=x-1,e.strstart++,n&&(N(e,!1),0===e.strm.avail_out))return A}else if(e.match_available){if((n=u._tr_tally(e,0,e.window[e.strstart-1]))&&N(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return A}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=u._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function M(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function H(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=v,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new c.Buf16(2*w),this.dyn_dtree=new c.Buf16(2*(2*a+1)),this.bl_tree=new c.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new c.Buf16(k+1),this.heap=new c.Buf16(2*s+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new c.Buf16(2*s+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function G(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=i,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?C:E,e.adler=2===t.wrap?0:1,t.last_flush=l,u._tr_init(t),m):R(e,_)}function K(e){var t=G(e);return t===m&&function(e){e.window_size=2*e.w_size,D(e.head),e.max_lazy_match=h[e.level].max_lazy,e.good_match=h[e.level].good_length,e.nice_match=h[e.level].nice_length,e.max_chain_length=h[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=x-1,e.match_available=0,e.ins_h=0}(e.state),t}function Y(e,t,r,n,i,s){if(!e)return _;var a=1;if(t===g&&(t=6),n<0?(a=0,n=-n):15<n&&(a=2,n-=16),i<1||y<i||r!==v||n<8||15<n||t<0||9<t||s<0||b<s)return R(e,_);8===n&&(n=9);var o=new H;return(e.state=o).strm=e,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new c.Buf8(2*o.w_size),o.head=new c.Buf16(o.hash_size),o.prev=new c.Buf16(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new c.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=s,o.method=r,K(e)}h=[new M(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5<t||t<0)return e?R(e,_):_;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||666===n.status&&t!==f)return R(e,0===e.avail_out?-5:_);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===C)if(2===n.wrap)e.adler=0,U(n,31),U(n,139),U(n,8),n.gzhead?(U(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),U(n,255&n.gzhead.time),U(n,n.gzhead.time>>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0<e.strstart&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){s=e.strstart+S;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&i<s);e.match_length=S-(s-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0<n.wrap&&(n.wrap=-n.wrap),0!==n.pending?m:1)},r.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==C&&69!==t&&73!==t&&91!==t&&103!==t&&t!==E&&666!==t?R(e,_):(e.state=null,t===E?R(e,-3):m):_},r.deflateSetDictionary=function(e,t){var r,n,i,s,a,o,h,u,l=t.length;if(!e||!e.state)return _;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==C||r.lookahead)return _;for(1===s&&(e.adler=d(e.adler,t,l,0)),r.wrap=0,l>=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[n+x-1])&r.hash_mask,r.prev[n&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=n,n++,--i;);r.strstart=n,r.lookahead=x-1,j(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=x-1,r.match_available=0,e.next_in=o,e.input=h,e.avail_in=a,r.wrap=s,m},r.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./messages\":51,\"./trees\":52}],47:[function(e,t,r){\"use strict\";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},{}],48:[function(e,t,r){\"use strict\";t.exports=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C;r=e.state,n=e.next_in,z=e.input,i=n+(e.avail_in-5),s=e.next_out,C=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,f=r.wnext,c=r.window,d=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;e:do{p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=m[d&g];t:for(;;){if(d>>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<<y)-1)];continue t}if(32&y){r.mode=12;break e}e.msg=\"invalid literal/length code\",r.mode=30;break e}w=65535&v,(y&=15)&&(p<y&&(d+=z[n++]<<p,p+=8),w+=d&(1<<y)-1,d>>>=y,p-=y),p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=_[d&b];r:for(;;){if(d>>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<<y)-1)];continue r}e.msg=\"invalid distance code\",r.mode=30;break e}if(k=65535&v,p<(y&=15)&&(d+=z[n++]<<p,(p+=8)<y&&(d+=z[n++]<<p,p+=8)),h<(k+=d&(1<<y)-1)){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(d>>>=y,p-=y,(y=s-a)<k){if(l<(y=k-y)&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(S=c,(x=0)===f){if(x+=u-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}}else if(f<y){if(x+=u+f-y,(y-=f)<w){for(w-=y;C[s++]=c[x++],--y;);if(x=0,f<w){for(w-=y=f;C[s++]=c[x++],--y;);x=s-k,S=C}}}else if(x+=f-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}for(;2<w;)C[s++]=S[x++],C[s++]=S[x++],C[s++]=S[x++],w-=3;w&&(C[s++]=S[x++],1<w&&(C[s++]=S[x++]))}else{for(x=s-k;C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],2<(w-=3););w&&(C[s++]=C[x++],1<w&&(C[s++]=C[x++]))}break}}break}}while(n<i&&s<o);n-=w=p>>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=s<o?o-s+257:257-(s-o),r.hold=d,r.bits=p}},{}],49:[function(e,t,r){\"use strict\";var I=e(\"../utils/common\"),O=e(\"./adler32\"),B=e(\"./crc32\"),R=e(\"./inffast\"),T=e(\"./inftrees\"),D=1,F=2,N=0,U=-2,P=1,n=852,i=592;function L(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?U:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,o(e))):U}function u(e,t){var r,n;return e?(n=new s,(e.state=n).window=null,(r=h(e,t))!==N&&(e.state=null),r):U}var l,f,c=!0;function j(e){if(c){var t;for(l=new I.Buf32(512),f=new I.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(T(D,e.lens,0,288,l,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;T(F,e.lens,0,32,f,0,e.work,{bits:5}),c=!1}e.lencode=l,e.lenbits=9,e.distcode=f,e.distbits=5}function Z(e,t,r,n){var i,s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),n>=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}r.inflateReset=o,r.inflateReset2=h,r.inflateResetKeep=a,r.inflateInit=function(e){return u(e,15)},r.inflateInit2=u,r.inflate=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C=0,E=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return U;12===(r=e.state).mode&&(r.mode=13),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,f=o,c=h,x=N;e:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(2&r.wrap&&35615===u){E[r.check=0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<<k,e.adler=r.check=1,r.mode=512&u?10:12,l=u=0;break;case 2:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.flags=u,8!=(255&r.flags)){e.msg=\"unknown compression method\",r.mode=30;break}if(57344&r.flags){e.msg=\"unknown header flags set\",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.time=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(65535&r.check)){e.msg=\"header crc mismatch\",r.mode=30;break}l=u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}e.adler=r.check=L(u),l=u=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if((65535&u)!=(u>>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o<d&&(d=o),h<d&&(d=h),0===d)break e;I.arraySet(i,n,s,d,a),o-=d,s+=d,h-=d,a+=d,r.length-=d;break}r.mode=12;break;case 17:for(;l<14;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286<r.nlen||30<r.ndist){e.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(b<16)u>>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u>>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=3+(7&(u>>>=_)),u>>>=3,l-=3}else{for(z=_+7;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=11+(127&(u>>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(g&&0==(240&g)){for(v=_,y=g,w=b;g=(C=r.lencode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(0==(240&g)){for(v=_,y=g,w=b;g=(C=r.distcode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(h<d&&(d=h),h-=d,r.length-=d;i[a++]=m[p++],--d;);0===r.length&&(r.mode=21);break;case 26:if(0===h)break e;i[a++]=r.length,h--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===o)break e;o--,u|=n[s++]<<l,l+=8}if(c-=h,e.total_out+=c,r.total+=c,c&&(e.adler=r.check=r.flags?B(r.check,i,c,a-c):O(r.check,i,c,a-c)),c=h,(r.flags?u:L(u))!==r.check){e.msg=\"incorrect data check\",r.mode=30;break}l=u=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(4294967295&r.total)){e.msg=\"incorrect length check\",r.mode=30;break}l=u=0}r.mode=29;case 29:x=1;break e;case 30:x=-3;break e;case 31:return-4;case 32:default:return U}return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,(r.wsize||c!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&Z(e,e.output,e.next_out,c-e.avail_out)?(r.mode=31,-4):(f-=e.avail_in,c-=e.avail_out,e.total_in+=f,e.total_out+=c,r.total+=c,r.wrap&&c&&(e.adler=r.check=r.flags?B(r.check,i,c,e.next_out-c):O(r.check,i,c,e.next_out-c)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==f&&0===c||4===t)&&x===N&&(x=-5),x)},r.inflateEnd=function(e){if(!e||!e.state)return U;var t=e.state;return t.window&&(t.window=null),e.state=null,N},r.inflateGetHeader=function(e,t){var r;return e&&e.state?0==(2&(r=e.state).wrap)?U:((r.head=t).done=!1,N):U},r.inflateSetDictionary=function(e,t){var r,n=t.length;return e&&e.state?0!==(r=e.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,t,n,0)!==r.check?-3:Z(e,t,n,n)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./inffast\":48,\"./inftrees\":50}],50:[function(e,t,r){\"use strict\";var D=e(\"../utils/common\"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,r,n,i,s,a,o){var h,u,l,f,c,d,p,m,_,g=o.bits,b=0,v=0,y=0,w=0,k=0,x=0,S=0,z=0,C=0,E=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),R=null,T=0;for(b=0;b<=15;b++)O[b]=0;for(v=0;v<n;v++)O[t[r+v]]++;for(k=g,w=15;1<=w&&0===O[w];w--);if(w<k&&(k=w),0===w)return i[s++]=20971520,i[s++]=20971520,o.bits=1,0;for(y=1;y<w&&0===O[y];y++);for(k<y&&(k=y),b=z=1;b<=15;b++)if(z<<=1,(z-=O[b])<0)return-1;if(0<z&&(0===e||1!==w))return-1;for(B[1]=0,b=1;b<15;b++)B[b+1]=B[b]+O[b];for(v=0;v<n;v++)0!==t[r+v]&&(a[B[t[r+v]]++]=v);if(d=0===e?(A=R=a,19):1===e?(A=F,I-=257,R=N,T-=257,256):(A=U,R=P,-1),b=y,c=s,S=v=E=0,l=-1,f=(C=1<<(x=k))-1,1===e&&852<C||2===e&&592<C)return 1;for(;;){for(p=b-S,_=a[v]<d?(m=0,a[v]):a[v]>d?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<<b-S,y=u=1<<x;i[c+(E>>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<<b-1;E&h;)h>>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k<b&&(E&f)!==l){for(0===S&&(S=k),c+=y,z=1<<(x=b-S);x+S<w&&!((z-=O[x+S])<=0);)x++,z<<=1;if(C+=1<<x,1===e&&852<C||2===e&&592<C)return 1;i[l=E&f]=k<<24|x<<16|c-s|0}}return 0!==E&&(i[c+E]=b-S<<24|64<<16|0),o.bits=k,0}},{\"../utils/common\":41}],51:[function(e,t,r){\"use strict\";t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],52:[function(e,t,r){\"use strict\";var i=e(\"../utils/common\"),o=0,h=1;function n(e){for(var t=e.length;0<=--t;)e[t]=0}var s=0,a=29,u=256,l=u+1+a,f=30,c=19,_=2*l+1,g=15,d=16,p=7,m=256,b=16,v=17,y=18,w=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],k=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],x=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(l+2));n(z);var C=new Array(2*f);n(C);var E=new Array(512);n(E);var A=new Array(256);n(A);var I=new Array(a);n(I);var O,B,R,T=new Array(f);function D(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function F(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function N(e){return e<256?E[e]:E[256+(e>>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<<e.bi_valid&65535,U(e,e.bi_buf),e.bi_buf=t>>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function L(e,t,r){P(e,r[2*t],r[2*t+1])}function j(e,t){for(var r=0;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t<l;t++)e.dyn_ltree[2*t]=0;for(t=0;t<f;t++)e.dyn_dtree[2*t]=0;for(t=0;t<c;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*m]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function M(e){8<e.bi_valid?U(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function H(e,t,r,n){var i=2*t,s=2*r;return e[i]<e[s]||e[i]===e[s]&&n[t]<=n[r]}function G(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&H(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!H(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function K(e,t,r){var n,i,s,a,o=0;if(0!==e.last_lit)for(;n=e.pending_buf[e.d_buf+2*o]<<8|e.pending_buf[e.d_buf+2*o+1],i=e.pending_buf[e.l_buf+o],o++,0===n?L(e,i,t):(L(e,(s=A[i])+u+1,t),0!==(a=w[s])&&P(e,i-=I[s],a),L(e,s=N(--n),r),0!==(a=k[s])&&P(e,n-=T[s],a)),o<e.last_lit;);L(e,m,t)}function Y(e,t){var r,n,i,s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,h=t.stat_desc.elems,u=-1;for(e.heap_len=0,e.heap_max=_,r=0;r<h;r++)0!==s[2*r]?(e.heap[++e.heap_len]=u=r,e.depth[r]=0):s[2*r+1]=0;for(;e.heap_len<2;)s[2*(i=e.heap[++e.heap_len]=u<2?++u:0)]=1,e.depth[i]=0,e.opt_len--,o&&(e.static_len-=a[2*i+1]);for(t.max_code=u,r=e.heap_len>>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u<n||(e.bl_count[s]++,a=0,d<=n&&(a=c[n-d]),o=h[2*n],e.opt_len+=o*(s+a),f&&(e.static_len+=o*(l[2*n+1]+a)));if(0!==m){do{for(s=p-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[p]--,m-=2}while(0<m);for(s=p;0!==s;s--)for(n=e.bl_count[s];0!==n;)u<(i=e.heap[--r])||(h[2*i+1]!==s&&(e.opt_len+=(s-h[2*i+1])*h[2*i],h[2*i+1]=s),n--)}}(e,t),Z(s,u,e.bl_count)}function X(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++o<h&&i===a||(o<u?e.bl_tree[2*i]+=o:0!==i?(i!==s&&e.bl_tree[2*i]++,e.bl_tree[2*b]++):o<=10?e.bl_tree[2*v]++:e.bl_tree[2*y]++,s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4))}function V(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),n=0;n<=r;n++)if(i=a,a=t[2*(n+1)+1],!(++o<h&&i===a)){if(o<u)for(;L(e,i,e.bl_tree),0!=--o;);else 0!==i?(i!==s&&(L(e,i,e.bl_tree),o--),L(e,b,e.bl_tree),P(e,o-3,2)):o<=10?(L(e,v,e.bl_tree),P(e,o-3,3)):(L(e,y,e.bl_tree),P(e,o-11,7));s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4)}}n(T);var q=!1;function J(e,t,r,n){P(e,(s<<1)+(n?1:0),3),function(e,t,r,n){M(e),n&&(U(e,r),U(e,~r)),i.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}(e,t,r,!0)}r._tr_init=function(e){q||(function(){var e,t,r,n,i,s=new Array(g+1);for(n=r=0;n<a-1;n++)for(I[n]=r,e=0;e<1<<w[n];e++)A[r++]=n;for(A[r-1]=n,n=i=0;n<16;n++)for(T[n]=i,e=0;e<1<<k[n];e++)E[i++]=n;for(i>>=7;n<f;n++)for(T[n]=i<<7,e=0;e<1<<k[n]-7;e++)E[256+i++]=n;for(t=0;t<=g;t++)s[t]=0;for(e=0;e<=143;)z[2*e+1]=8,e++,s[8]++;for(;e<=255;)z[2*e+1]=9,e++,s[9]++;for(;e<=279;)z[2*e+1]=7,e++,s[7]++;for(;e<=287;)z[2*e+1]=8,e++,s[8]++;for(Z(z,l+1,s),e=0;e<f;e++)C[2*e+1]=5,C[2*e]=j(e,5);O=new D(z,w,u+1,l,g),B=new D(C,k,0,f,g),R=new D(new Array(0),x,0,c,p)}(),q=!0),e.l_desc=new F(e.dyn_ltree,O),e.d_desc=new F(e.dyn_dtree,B),e.bl_desc=new F(e.bl_tree,R),e.bi_buf=0,e.bi_valid=0,W(e)},r._tr_stored_block=J,r._tr_flush_block=function(e,t,r,n){var i,s,a=0;0<e.level?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t<u;t++)if(0!==e.dyn_ltree[2*t])return h;return o}(e)),Y(e,e.l_desc),Y(e,e.d_desc),a=function(e){var t;for(X(e,e.dyn_ltree,e.l_desc.max_code),X(e,e.dyn_dtree,e.d_desc.max_code),Y(e,e.bl_desc),t=c-1;3<=t&&0===e.bl_tree[2*S[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i<n;i++)P(e,e.bl_tree[2*S[i]+1],3);V(e,e.dyn_ltree,t-1),V(e,e.dyn_dtree,r-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),K(e,e.dyn_ltree,e.dyn_dtree)),W(e),n&&M(e)},r._tr_tally=function(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r<t.length;r++)t[r]=arguments[r+1];var n={callback:e,args:t};return h[o]=n,i(o),o++},e.clearImmediate=f}function f(e){delete h[e]}function c(e){if(u)setTimeout(c,0,e);else{var t=h[e];if(t){u=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{f(e),u=!1}}}}function d(e){e.source===r&&\"string\"==typeof e.data&&0===e.data.indexOf(a)&&c(+e.data.slice(a.length))}}(\"undefined\"==typeof self?void 0===e?this:e:self)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[10])(10)});\r\n</script>\r\n<script>\r\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"JSZip\")):\"function\"==typeof define&&define.amd?define([\"JSZip\"],e):\"object\"==typeof exports?exports.ePub=e(require(\"JSZip\")):t.ePub=e(t.JSZip)}(window,(function(t){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var s=e[n]={i:n,l:!1,exports:{}};return t[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var s in t)i.d(n,s,function(e){return t[e]}.bind(null,s));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,\"a\",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p=\"/dist/\",i(i.s=30)}([function(t,e,i){\"use strict\";i.r(e),i.d(e,\"requestAnimationFrame\",(function(){return s})),i.d(e,\"uuid\",(function(){return o})),i.d(e,\"documentHeight\",(function(){return a})),i.d(e,\"isElement\",(function(){return h})),i.d(e,\"isNumber\",(function(){return l})),i.d(e,\"isFloat\",(function(){return c})),i.d(e,\"prefixed\",(function(){return u})),i.d(e,\"defaults\",(function(){return d})),i.d(e,\"extend\",(function(){return f})),i.d(e,\"insert\",(function(){return p})),i.d(e,\"locationOf\",(function(){return g})),i.d(e,\"indexOfSorted\",(function(){return m})),i.d(e,\"bounds\",(function(){return v})),i.d(e,\"borders\",(function(){return y})),i.d(e,\"nodeBounds\",(function(){return b})),i.d(e,\"windowBounds\",(function(){return w})),i.d(e,\"indexOfNode\",(function(){return x})),i.d(e,\"indexOfTextNode\",(function(){return E})),i.d(e,\"indexOfElementNode\",(function(){return S})),i.d(e,\"isXml\",(function(){return N})),i.d(e,\"createBlob\",(function(){return _})),i.d(e,\"createBlobUrl\",(function(){return T})),i.d(e,\"revokeBlobUrl\",(function(){return C})),i.d(e,\"createBase64Url\",(function(){return O})),i.d(e,\"type\",(function(){return I})),i.d(e,\"parse\",(function(){return R})),i.d(e,\"qs\",(function(){return k})),i.d(e,\"qsa\",(function(){return A})),i.d(e,\"qsp\",(function(){return L})),i.d(e,\"sprint\",(function(){return j})),i.d(e,\"treeWalker\",(function(){return D})),i.d(e,\"walk\",(function(){return P})),i.d(e,\"blob2base64\",(function(){return M})),i.d(e,\"defer\",(function(){return z})),i.d(e,\"querySelectorByType\",(function(){return B})),i.d(e,\"findChildren\",(function(){return q})),i.d(e,\"parents\",(function(){return F})),i.d(e,\"filterChildren\",(function(){return U})),i.d(e,\"getParentByTagName\",(function(){return W})),i.d(e,\"RangeObject\",(function(){return H}));var n=i(15);const s=\"undefined\"!=typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),r=\"undefined\"!=typeof URL?URL:\"undefined\"!=typeof window?window.URL||window.webkitURL||window.mozURL:void 0;function o(){var t=(new Date).getTime();return\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g,(function(e){var i=(t+16*Math.random())%16|0;return t=Math.floor(t/16),(\"x\"==e?i:7&i|8).toString(16)}))}function a(){return Math.max(document.documentElement.clientHeight,document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight)}function h(t){return!(!t||1!=t.nodeType)}function l(t){return!isNaN(parseFloat(t))&&isFinite(t)}function c(t){let e=parseFloat(t);return!1!==l(t)&&(\"string\"==typeof t&&t.indexOf(\".\")>-1||Math.floor(e)!==e)}function u(t){var e=[\"-webkit-\",\"-webkit-\",\"-moz-\",\"-o-\",\"-ms-\"],i=t.toLowerCase(),n=[\"Webkit\",\"webkit\",\"Moz\",\"O\",\"ms\"].length;if(\"undefined\"==typeof document||void 0!==document.body.style[i])return t;for(var s=0;s<n;s++)if(void 0!==document.body.style[e[s]+i])return e[s]+i;return t}function d(t){for(var e=1,i=arguments.length;e<i;e++){var n=arguments[e];for(var s in n)void 0===t[s]&&(t[s]=n[s])}return t}function f(t){var e=[].slice.call(arguments,1);return e.forEach((function(e){e&&Object.getOwnPropertyNames(e).forEach((function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(e,i))}))})),t}function p(t,e,i){var n=g(t,e,i);return e.splice(n,0,t),n}function g(t,e,i,n,s){var r,o=n||0,a=s||e.length,h=parseInt(o+(a-o)/2);return i||(i=function(t,e){return t>e?1:t<e?-1:t==e?0:void 0}),a-o<=0?h:(r=i(e[h],t),a-o==1?r>=0?h:h+1:0===r?h:-1===r?g(t,e,i,h,a):g(t,e,i,o,h))}function m(t,e,i,n,s){var r,o=n||0,a=s||e.length,h=parseInt(o+(a-o)/2);return i||(i=function(t,e){return t>e?1:t<e?-1:t==e?0:void 0}),a-o<=0?-1:(r=i(e[h],t),a-o==1?0===r?h:-1:0===r?h:-1===r?m(t,e,i,h,a):m(t,e,i,o,h))}function v(t){var e=window.getComputedStyle(t),i=0,n=0;return[\"width\",\"paddingRight\",\"paddingLeft\",\"marginRight\",\"marginLeft\",\"borderRightWidth\",\"borderLeftWidth\"].forEach((function(t){i+=parseFloat(e[t])||0})),[\"height\",\"paddingTop\",\"paddingBottom\",\"marginTop\",\"marginBottom\",\"borderTopWidth\",\"borderBottomWidth\"].forEach((function(t){n+=parseFloat(e[t])||0})),{height:n,width:i}}function y(t){var e=window.getComputedStyle(t),i=0,n=0;return[\"paddingRight\",\"paddingLeft\",\"marginRight\",\"marginLeft\",\"borderRightWidth\",\"borderLeftWidth\"].forEach((function(t){i+=parseFloat(e[t])||0})),[\"paddingTop\",\"paddingBottom\",\"marginTop\",\"marginBottom\",\"borderTopWidth\",\"borderBottomWidth\"].forEach((function(t){n+=parseFloat(e[t])||0})),{height:n,width:i}}function b(t){let e,i=t.ownerDocument;if(t.nodeType==Node.TEXT_NODE){let n=i.createRange();n.selectNodeContents(t),e=n.getBoundingClientRect()}else e=t.getBoundingClientRect();return e}function w(){var t=window.innerWidth,e=window.innerHeight;return{top:0,left:0,right:t,bottom:e,width:t,height:e}}function x(t,e){for(var i,n=t.parentNode.childNodes,s=-1,r=0;r<n.length&&((i=n[r]).nodeType===e&&s++,i!=t);r++);return s}function E(t){return x(t,3)}function S(t){return x(t,1)}function N(t){return[\"xml\",\"opf\",\"ncx\"].indexOf(t)>-1}function _(t,e){return new Blob([t],{type:e})}function T(t,e){var i=_(t,e);return r.createObjectURL(i)}function C(t){return r.revokeObjectURL(t)}function O(t,e){if(\"string\"==typeof t)return\"data:\"+e+\";base64,\"+btoa(t)}function I(t){return Object.prototype.toString.call(t).slice(8,-1)}function R(t,e,i){var s;return s=\"undefined\"==typeof DOMParser||i?n.DOMParser:DOMParser,65279===t.charCodeAt(0)&&(t=t.slice(1)),(new s).parseFromString(t,e)}function k(t,e){var i;if(!t)throw new Error(\"No Element Provided\");return void 0!==t.querySelector?t.querySelector(e):(i=t.getElementsByTagName(e)).length?i[0]:void 0}function A(t,e){return void 0!==t.querySelector?t.querySelectorAll(e):t.getElementsByTagName(e)}function L(t,e,i){var n,s;if(void 0!==t.querySelector){for(var r in e+=\"[\",i)e+=r+\"~='\"+i[r]+\"'\";return e+=\"]\",t.querySelector(e)}if(n=t.getElementsByTagName(e),s=Array.prototype.slice.call(n,0).filter((function(t){for(var e in i)if(t.getAttribute(e)===i[e])return!0;return!1})))return s[0]}function j(t,e){void 0!==(t.ownerDocument||t).createTreeWalker?D(t,e,NodeFilter.SHOW_TEXT):P(t,(function(t){t&&3===t.nodeType&&e(t)}))}function D(t,e,i){var n=document.createTreeWalker(t,i,null,!1);let s;for(;s=n.nextNode();)e(s)}function P(t,e){if(e(t))return!0;if(t=t.firstChild)do{if(P(t,e))return!0;t=t.nextSibling}while(t)}function M(t){return new Promise((function(e,i){var n=new FileReader;n.readAsDataURL(t),n.onloadend=function(){e(n.result)}}))}function z(){this.resolve=null,this.reject=null,this.id=o(),this.promise=new Promise((t,e)=>{this.resolve=t,this.reject=e}),Object.freeze(this)}function B(t,e,i){var n;if(void 0!==t.querySelector&&(n=t.querySelector(`${e}[*|type=\"${i}\"]`)),n&&0!==n.length)return n;n=A(t,e);for(var s=0;s<n.length;s++)if(n[s].getAttributeNS(\"http://www.idpf.org/2007/ops\",\"type\")===i||n[s].getAttribute(\"epub:type\")===i)return n[s]}function q(t){for(var e=[],i=t.childNodes,n=0;n<i.length;n++){let t=i[n];1===t.nodeType&&e.push(t)}return e}function F(t){for(var e=[t];t;t=t.parentNode)e.unshift(t);return e}function U(t,e,i){for(var n=[],s=t.childNodes,r=0;r<s.length;r++){let t=s[r];if(1===t.nodeType&&t.nodeName.toLowerCase()===e){if(i)return t;n.push(t)}}if(!i)return n}function W(t,e){let i;if(null!==t&&\"\"!==e)for(i=t.parentNode;1===i.nodeType;){if(i.tagName.toLowerCase()===e)return i;i=i.parentNode}}class H{constructor(){this.collapsed=!1,this.commonAncestorContainer=void 0,this.endContainer=void 0,this.endOffset=void 0,this.startContainer=void 0,this.startOffset=void 0}setStart(t,e){this.startContainer=t,this.startOffset=e,this.endContainer?this.commonAncestorContainer=this._commonAncestorContainer():this.collapse(!0),this._checkCollapsed()}setEnd(t,e){this.endContainer=t,this.endOffset=e,this.startContainer?(this.collapsed=!1,this.commonAncestorContainer=this._commonAncestorContainer()):this.collapse(!1),this._checkCollapsed()}collapse(t){this.collapsed=!0,t?(this.endContainer=this.startContainer,this.endOffset=this.startOffset,this.commonAncestorContainer=this.startContainer.parentNode):(this.startContainer=this.endContainer,this.startOffset=this.endOffset,this.commonAncestorContainer=this.endOffset.parentNode)}selectNode(t){let e=t.parentNode,i=Array.prototype.indexOf.call(e.childNodes,t);this.setStart(e,i),this.setEnd(e,i+1)}selectNodeContents(t){t.childNodes[t.childNodes-1];let e=3===t.nodeType?t.textContent.length:parent.childNodes.length;this.setStart(t,0),this.setEnd(t,e)}_commonAncestorContainer(t,e){var i=F(t||this.startContainer),n=F(e||this.endContainer);if(i[0]==n[0])for(var s=0;s<i.length;s++)if(i[s]!=n[s])return i[s-1]}_checkCollapsed(){this.startContainer===this.endContainer&&this.startOffset===this.endOffset?this.collapsed=!0:this.collapsed=!1}toString(){}}},function(t,e,i){\"use strict\";i.d(e,\"b\",(function(){return n})),i.d(e,\"a\",(function(){return s})),i.d(e,\"c\",(function(){return r}));const n=\"0.3\",s=[\"keydown\",\"keyup\",\"keypressed\",\"mouseup\",\"mousedown\",\"mousemove\",\"click\",\"touchend\",\"touchstart\",\"touchmove\"],r={BOOK:{OPEN_FAILED:\"openFailed\"},CONTENTS:{EXPAND:\"expand\",RESIZE:\"resize\",SELECTED:\"selected\",SELECTED_RANGE:\"selectedRange\",LINK_CLICKED:\"linkClicked\"},LOCATIONS:{CHANGED:\"changed\"},MANAGERS:{RESIZE:\"resize\",RESIZED:\"resized\",ORIENTATION_CHANGE:\"orientationchange\",ADDED:\"added\",SCROLL:\"scroll\",SCROLLED:\"scrolled\",REMOVED:\"removed\"},VIEWS:{AXIS:\"axis\",WRITING_MODE:\"writingMode\",LOAD_ERROR:\"loaderror\",RENDERED:\"rendered\",RESIZED:\"resized\",DISPLAYED:\"displayed\",SHOWN:\"shown\",HIDDEN:\"hidden\",MARK_CLICKED:\"markClicked\"},RENDITION:{STARTED:\"started\",ATTACHED:\"attached\",DISPLAYED:\"displayed\",DISPLAY_ERROR:\"displayerror\",RENDERED:\"rendered\",REMOVED:\"removed\",RESIZED:\"resized\",ORIENTATION_CHANGE:\"orientationchange\",LOCATION_CHANGED:\"locationChanged\",RELOCATED:\"relocated\",MARK_CLICKED:\"markClicked\",SELECTED:\"selected\",LAYOUT:\"layout\"},LAYOUT:{UPDATED:\"updated\"},ANNOTATION:{ATTACH:\"attach\",DETACH:\"detach\"}}},function(t,e,i){\"use strict\";var n=i(0);class s{constructor(t,e,i){var r;if(this.str=\"\",this.base={},this.spinePos=0,this.range=!1,this.path={},this.start=null,this.end=null,!(this instanceof s))return new s(t,e,i);if(\"string\"==typeof e?this.base=this.parseComponent(e):\"object\"==typeof e&&e.steps&&(this.base=e),\"string\"===(r=this.checkType(t)))return this.str=t,Object(n.extend)(this,this.parse(t));if(\"range\"===r)return Object(n.extend)(this,this.fromRange(t,this.base,i));if(\"node\"===r)return Object(n.extend)(this,this.fromNode(t,this.base,i));if(\"EpubCFI\"===r&&t.path)return t;if(t)throw new TypeError(\"not a valid argument for EpubCFI\");return this}checkType(t){return this.isCfiString(t)?\"string\":!t||\"object\"!=typeof t||\"Range\"!==Object(n.type)(t)&&void 0===t.startContainer?t&&\"object\"==typeof t&&void 0!==t.nodeType?\"node\":!!(t&&\"object\"==typeof t&&t instanceof s)&&\"EpubCFI\":\"range\"}parse(t){var e,i,n,s={spinePos:-1,range:!1,base:{},path:{},start:null,end:null};return\"string\"!=typeof t?{spinePos:-1}:(0===t.indexOf(\"epubcfi(\")&&\")\"===t[t.length-1]&&(t=t.slice(8,t.length-1)),(e=this.getChapterComponent(t))?(s.base=this.parseComponent(e),i=this.getPathComponent(t),s.path=this.parseComponent(i),(n=this.getRange(t))&&(s.range=!0,s.start=this.parseComponent(n[0]),s.end=this.parseComponent(n[1])),s.spinePos=s.base.steps[1].index,s):{spinePos:-1})}parseComponent(t){var e,i={steps:[],terminal:{offset:null,assertion:null}},n=t.split(\":\"),s=n[0].split(\"/\");return n.length>1&&(e=n[1],i.terminal=this.parseTerminal(e)),\"\"===s[0]&&s.shift(),i.steps=s.map(function(t){return this.parseStep(t)}.bind(this)),i}parseStep(t){var e,i,n,s,r;if((s=t.match(/\\[(.*)\\]/))&&s[1]&&(r=s[1]),i=parseInt(t),!isNaN(i))return i%2==0?(e=\"element\",n=i/2-1):(e=\"text\",n=(i-1)/2),{type:e,index:n,id:r||null}}parseTerminal(t){var e,i,s=t.match(/\\[(.*)\\]/);return s&&s[1]?(e=parseInt(t.split(\"[\")[0]),i=s[1]):e=parseInt(t),Object(n.isNumber)(e)||(e=null),{offset:e,assertion:i}}getChapterComponent(t){return t.split(\"!\")[0]}getPathComponent(t){var e=t.split(\"!\");if(e[1]){return e[1].split(\",\")[0]}}getRange(t){var e=t.split(\",\");return 3===e.length&&[e[1],e[2]]}getCharecterOffsetComponent(t){return t.split(\":\")[1]||\"\"}joinSteps(t){return t?t.map((function(t){var e=\"\";return\"element\"===t.type&&(e+=2*(t.index+1)),\"text\"===t.type&&(e+=1+2*t.index),t.id&&(e+=\"[\"+t.id+\"]\"),e})).join(\"/\"):\"\"}segmentString(t){var e=\"/\";return e+=this.joinSteps(t.steps),t.terminal&&null!=t.terminal.offset&&(e+=\":\"+t.terminal.offset),t.terminal&&null!=t.terminal.assertion&&(e+=\"[\"+t.terminal.assertion+\"]\"),e}toString(){var t=\"epubcfi(\";return t+=this.segmentString(this.base),t+=\"!\",t+=this.segmentString(this.path),this.range&&this.start&&(t+=\",\",t+=this.segmentString(this.start)),this.range&&this.end&&(t+=\",\",t+=this.segmentString(this.end)),t+=\")\"}compare(t,e){var i,n,r,o;if(\"string\"==typeof t&&(t=new s(t)),\"string\"==typeof e&&(e=new s(e)),t.spinePos>e.spinePos)return 1;if(t.spinePos<e.spinePos)return-1;t.range?(i=t.path.steps.concat(t.start.steps),r=t.start.terminal):(i=t.path.steps,r=t.path.terminal),e.range?(n=e.path.steps.concat(e.start.steps),o=e.start.terminal):(n=e.path.steps,o=e.path.terminal);for(var a=0;a<i.length;a++){if(!i[a])return-1;if(!n[a])return 1;if(i[a].index>n[a].index)return 1;if(i[a].index<n[a].index)return-1}return i.length<n.length?-1:r.offset>o.offset?1:r.offset<o.offset?-1:0}step(t){var e=3===t.nodeType?\"text\":\"element\";return{id:t.id,tagName:t.tagName,type:e,index:this.position(t)}}filteredStep(t,e){var i,n=this.filter(t,e);if(n)return i=3===n.nodeType?\"text\":\"element\",{id:n.id,tagName:n.tagName,type:i,index:this.filteredPosition(n,e)}}pathTo(t,e,i){for(var n,s={steps:[],terminal:{offset:null,assertion:null}},r=t;r&&r.parentNode&&9!=r.parentNode.nodeType;)(n=i?this.filteredStep(r,i):this.step(r))&&s.steps.unshift(n),r=r.parentNode;return null!=e&&e>=0&&(s.terminal.offset=e,\"text\"!=s.steps[s.steps.length-1].type&&s.steps.push({type:\"text\",index:0})),s}equalStep(t,e){return!(!t||!e)&&(t.index===e.index&&t.id===e.id&&t.type===e.type)}fromRange(t,e,i){var n={range:!1,base:{},path:{},start:null,end:null},s=t.startContainer,r=t.endContainer,o=t.startOffset,a=t.endOffset,h=!1;if(i&&(h=null!=s.ownerDocument.querySelector(\".\"+i)),\"string\"==typeof e?(n.base=this.parseComponent(e),n.spinePos=n.base.steps[1].index):\"object\"==typeof e&&(n.base=e),t.collapsed)h&&(o=this.patchOffset(s,o,i)),n.path=this.pathTo(s,o,i);else{n.range=!0,h&&(o=this.patchOffset(s,o,i)),n.start=this.pathTo(s,o,i),h&&(a=this.patchOffset(r,a,i)),n.end=this.pathTo(r,a,i),n.path={steps:[],terminal:null};var l,c=n.start.steps.length;for(l=0;l<c&&this.equalStep(n.start.steps[l],n.end.steps[l]);l++)l===c-1?n.start.terminal===n.end.terminal&&(n.path.steps.push(n.start.steps[l]),n.range=!1):n.path.steps.push(n.start.steps[l]);n.start.steps=n.start.steps.slice(n.path.steps.length),n.end.steps=n.end.steps.slice(n.path.steps.length)}return n}fromNode(t,e,i){var n={range:!1,base:{},path:{},start:null,end:null};return\"string\"==typeof e?(n.base=this.parseComponent(e),n.spinePos=n.base.steps[1].index):\"object\"==typeof e&&(n.base=e),n.path=this.pathTo(t,null,i),n}filter(t,e){var i,n,s,r,o,a=!1;return 3===t.nodeType?(a=!0,s=t.parentNode,i=t.parentNode.classList.contains(e)):(a=!1,i=t.classList.contains(e)),i&&a?(r=s.previousSibling,o=s.nextSibling,r&&3===r.nodeType?n=r:o&&3===o.nodeType&&(n=o),n||t):!(i&&!a)&&t}patchOffset(t,e,i){if(3!=t.nodeType)throw new Error(\"Anchor must be a text node\");var n=t,s=e;for(t.parentNode.classList.contains(i)&&(n=t.parentNode);n.previousSibling;){if(1===n.previousSibling.nodeType){if(!n.previousSibling.classList.contains(i))break;s+=n.previousSibling.textContent.length}else s+=n.previousSibling.textContent.length;n=n.previousSibling}return s}normalizedMap(t,e,i){var n,s,r,o={},a=-1,h=t.length;for(n=0;n<h;n++)1===(s=t[n].nodeType)&&t[n].classList.contains(i)&&(s=3),n>0&&3===s&&3===r?o[n]=a:e===s&&(a+=1,o[n]=a),r=s;return o}position(t){var e,i;return 1===t.nodeType?((e=t.parentNode.children)||(e=Object(n.findChildren)(t.parentNode)),i=Array.prototype.indexOf.call(e,t)):i=(e=this.textNodes(t.parentNode)).indexOf(t),i}filteredPosition(t,e){var i,n;return 1===t.nodeType?(i=t.parentNode.children,n=this.normalizedMap(i,1,e)):(i=t.parentNode.childNodes,t.parentNode.classList.contains(e)&&(i=(t=t.parentNode).parentNode.childNodes),n=this.normalizedMap(i,3,e)),n[Array.prototype.indexOf.call(i,t)]}stepsToXpath(t){var e=[\".\",\"*\"];return t.forEach((function(t){var i=t.index+1;t.id?e.push(\"*[position()=\"+i+\" and @id='\"+t.id+\"']\"):\"text\"===t.type?e.push(\"text()[\"+i+\"]\"):e.push(\"*[\"+i+\"]\")})),e.join(\"/\")}stepsToQuerySelector(t){var e=[\"html\"];return t.forEach((function(t){var i=t.index+1;t.id?e.push(\"#\"+t.id):\"text\"===t.type||e.push(\"*:nth-child(\"+i+\")\")})),e.join(\">\")}textNodes(t,e){return Array.prototype.slice.call(t.childNodes).filter((function(t){return 3===t.nodeType||!(!e||!t.classList.contains(e))}))}walkToNode(t,e,i){var s,r,o=e||document,a=o.documentElement,h=t.length;for(r=0;r<h&&(\"element\"===(s=t[r]).type?a=s.id?o.getElementById(s.id):(a.children||Object(n.findChildren)(a))[s.index]:\"text\"===s.type&&(a=this.textNodes(a,i)[s.index]),a);r++);return a}findNode(t,e,i){var n,s,r=e||document;return i||void 0===r.evaluate?n=i?this.walkToNode(t,r,i):this.walkToNode(t,r):(s=this.stepsToXpath(t),n=r.evaluate(s,r,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue),n}fixMiss(t,e,i,n){var s,r,o=this.findNode(t.slice(0,-1),i,n),a=o.childNodes,h=this.normalizedMap(a,3,n),l=t[t.length-1].index;for(let t in h){if(!h.hasOwnProperty(t))return;if(h[t]===l){if(!(e>(r=(s=a[t]).textContent.length))){o=1===s.nodeType?s.childNodes[0]:s;break}e-=r}}return{container:o,offset:e}}toRange(t,e){var i,s,r,o,a,h,l,c,u=t||document,d=!!e&&null!=u.querySelector(\".\"+e);if(i=void 0!==u.createRange?u.createRange():new n.RangeObject,this.range?(s=this.start,h=this.path.steps.concat(s.steps),o=this.findNode(h,u,d?e:null),r=this.end,l=this.path.steps.concat(r.steps),a=this.findNode(l,u,d?e:null)):(s=this.path,h=this.path.steps,o=this.findNode(this.path.steps,u,d?e:null)),!o)return console.log(\"No startContainer found for\",this.toString()),null;try{null!=s.terminal.offset?i.setStart(o,s.terminal.offset):i.setStart(o,0)}catch(t){c=this.fixMiss(h,s.terminal.offset,u,d?e:null),i.setStart(c.container,c.offset)}if(a)try{null!=r.terminal.offset?i.setEnd(a,r.terminal.offset):i.setEnd(a,0)}catch(t){c=this.fixMiss(l,this.end.terminal.offset,u,d?e:null),i.setEnd(c.container,c.offset)}return i}isCfiString(t){return\"string\"==typeof t&&0===t.indexOf(\"epubcfi(\")&&\")\"===t[t.length-1]}generateChapterComponent(t,e,i){var n=\"/\"+2*(t+1)+\"/\";return n+=2*(parseInt(e)+1),i&&(n+=\"[\"+i+\"]\"),n}collapse(t){this.range&&(this.range=!1,t?(this.path.steps=this.path.steps.concat(this.start.steps),this.path.terminal=this.start.terminal):(this.path.steps=this.path.steps.concat(this.end.steps),this.path.terminal=this.end.terminal))}}e.a=s},function(t,e,i){\"use strict\";var n,s,r,o,a,h,l,c=i(31),u=i(45),d=Function.prototype.apply,f=Function.prototype.call,p=Object.create,g=Object.defineProperty,m=Object.defineProperties,v=Object.prototype.hasOwnProperty,y={configurable:!0,enumerable:!1,writable:!0};s=function(t,e){var i,s;return u(e),s=this,n.call(this,t,i=function(){r.call(s,t,i),d.call(e,this,arguments)}),i.__eeOnceListener__=e,this},a={on:n=function(t,e){var i;return u(e),v.call(this,\"__ee__\")?i=this.__ee__:(i=y.value=p(null),g(this,\"__ee__\",y),y.value=null),i[t]?\"object\"==typeof i[t]?i[t].push(e):i[t]=[i[t],e]:i[t]=e,this},once:s,off:r=function(t,e){var i,n,s,r;if(u(e),!v.call(this,\"__ee__\"))return this;if(!(i=this.__ee__)[t])return this;if(\"object\"==typeof(n=i[t]))for(r=0;s=n[r];++r)s!==e&&s.__eeOnceListener__!==e||(2===n.length?i[t]=n[r?0:1]:n.splice(r,1));else n!==e&&n.__eeOnceListener__!==e||delete i[t];return this},emit:o=function(t){var e,i,n,s,r;if(v.call(this,\"__ee__\")&&(s=this.__ee__[t]))if(\"object\"==typeof s){for(i=arguments.length,r=new Array(i-1),e=1;e<i;++e)r[e-1]=arguments[e];for(s=s.slice(),e=0;n=s[e];++e)d.call(n,this,r)}else switch(arguments.length){case 1:f.call(s,this);break;case 2:f.call(s,this,arguments[1]);break;case 3:f.call(s,this,arguments[1],arguments[2]);break;default:for(i=arguments.length,r=new Array(i-1),e=1;e<i;++e)r[e-1]=arguments[e];d.call(s,this,r)}}},h={on:c(n),once:c(s),off:c(r),emit:c(o)},l=m({},h),t.exports=e=function(t){return null==t?p(l):m(Object(t),h)},e.methods=a},function(t,e,i){\"use strict\";var n=i(7),s=i.n(n);e.a=class{constructor(t){var e;t.indexOf(\"://\")>-1&&(t=new URL(t).pathname),e=this.parse(t),this.path=t,this.isDirectory(t)?this.directory=t:this.directory=e.dir+\"/\",this.filename=e.base,this.extension=e.ext.slice(1)}parse(t){return s.a.parse(t)}isAbsolute(t){return s.a.isAbsolute(t||this.path)}isDirectory(t){return\"/\"===t.charAt(t.length-1)}resolve(t){return s.a.resolve(this.directory,t)}relative(t){return t&&t.indexOf(\"://\")>-1?t:s.a.relative(this.directory,t)}splitPath(t){return this.splitPathRe.exec(t).slice(1)}toString(){return this.path}}},function(t,e,i){\"use strict\";var n=i(4),s=i(7),r=i.n(s);e.a=class{constructor(t,e){var i=t.indexOf(\"://\")>-1,s=t;if(this.Url=void 0,this.href=t,this.protocol=\"\",this.origin=\"\",this.hash=\"\",this.hash=\"\",this.search=\"\",this.base=e,!i&&!1!==e&&\"string\"!=typeof e&&window&&window.location&&(this.base=window.location.href),i||this.base)try{this.base?this.Url=new URL(t,this.base):this.Url=new URL(t),this.href=this.Url.href,this.protocol=this.Url.protocol,this.origin=this.Url.origin,this.hash=this.Url.hash,this.search=this.Url.search,s=this.Url.pathname+(this.Url.search?this.Url.search:\"\")}catch(t){this.Url=void 0,this.base&&(s=new n.a(this.base).resolve(s))}this.Path=new n.a(s),this.directory=this.Path.directory,this.filename=this.Path.filename,this.extension=this.Path.extension}path(){return this.Path}resolve(t){var e;return t.indexOf(\"://\")>-1?t:(e=r.a.resolve(this.directory,t),this.origin+e)}relative(t){return r.a.relative(t,this.directory)}toString(){return this.href}}},function(t,e,i){\"use strict\";e.a=class{constructor(t){this.context=t||this,this.hooks=[]}register(){for(var t=0;t<arguments.length;++t)if(\"function\"==typeof arguments[t])this.hooks.push(arguments[t]);else for(var e=0;e<arguments[t].length;++e)this.hooks.push(arguments[t][e])}deregister(t){let e;for(let i=0;i<this.hooks.length;i++)if(e=this.hooks[i],e===t){this.hooks.splice(i,1);break}}trigger(){var t=arguments,e=this.context,i=[];return this.hooks.forEach((function(n){try{var s=n.apply(e,t)}catch(t){console.log(t)}s&&\"function\"==typeof s.then&&i.push(s)})),Promise.all(i)}list(){return this.hooks}clear(){return this.hooks=[]}}},function(t,e,i){\"use strict\";if(!n)var n={cwd:function(){return\"/\"}};function s(t){if(\"string\"!=typeof t)throw new TypeError(\"Path must be a string. Received \"+t)}function r(t,e){for(var i,n=\"\",s=-1,r=0,o=0;o<=t.length;++o){if(o<t.length)i=t.charCodeAt(o);else{if(47===i)break;i=47}if(47===i){if(s===o-1||1===r);else if(s!==o-1&&2===r){if(n.length<2||46!==n.charCodeAt(n.length-1)||46!==n.charCodeAt(n.length-2))if(n.length>2){for(var a=n.length-1,h=a;h>=0&&47!==n.charCodeAt(h);--h);if(h!==a){n=-1===h?\"\":n.slice(0,h),s=o,r=0;continue}}else if(2===n.length||1===n.length){n=\"\",s=o,r=0;continue}e&&(n.length>0?n+=\"/..\":n=\"..\")}else n.length>0?n+=\"/\"+t.slice(s+1,o):n=t.slice(s+1,o);s=o,r=0}else 46===i&&-1!==r?++r:r=-1}return n}var o={resolve:function(){for(var t,e=\"\",i=!1,o=arguments.length-1;o>=-1&&!i;o--){var a;o>=0?a=arguments[o]:(void 0===t&&(t=n.cwd()),a=t),s(a),0!==a.length&&(e=a+\"/\"+e,i=47===a.charCodeAt(0))}return e=r(e,!i),i?e.length>0?\"/\"+e:\"/\":e.length>0?e:\".\"},normalize:function(t){if(s(t),0===t.length)return\".\";var e=47===t.charCodeAt(0),i=47===t.charCodeAt(t.length-1);return 0!==(t=r(t,!e)).length||e||(t=\".\"),t.length>0&&i&&(t+=\"/\"),e?\"/\"+t:t},isAbsolute:function(t){return s(t),t.length>0&&47===t.charCodeAt(0)},join:function(){if(0===arguments.length)return\".\";for(var t,e=0;e<arguments.length;++e){var i=arguments[e];s(i),i.length>0&&(void 0===t?t=i:t+=\"/\"+i)}return void 0===t?\".\":o.normalize(t)},relative:function(t,e){if(s(t),s(e),t===e)return\"\";if((t=o.resolve(t))===(e=o.resolve(e)))return\"\";for(var i=1;i<t.length&&47===t.charCodeAt(i);++i);for(var n=t.length,r=n-i,a=1;a<e.length&&47===e.charCodeAt(a);++a);for(var h=e.length-a,l=r<h?r:h,c=-1,u=0;u<=l;++u){if(u===l){if(h>l){if(47===e.charCodeAt(a+u))return e.slice(a+u+1);if(0===u)return e.slice(a+u)}else r>l&&(47===t.charCodeAt(i+u)?c=u:0===u&&(c=0));break}var d=t.charCodeAt(i+u);if(d!==e.charCodeAt(a+u))break;47===d&&(c=u)}var f=\"\";for(u=i+c+1;u<=n;++u)u!==n&&47!==t.charCodeAt(u)||(0===f.length?f+=\"..\":f+=\"/..\");return f.length>0?f+e.slice(a+c):(a+=c,47===e.charCodeAt(a)&&++a,e.slice(a))},_makeLong:function(t){return t},dirname:function(t){if(s(t),0===t.length)return\".\";for(var e=t.charCodeAt(0),i=47===e,n=-1,r=!0,o=t.length-1;o>=1;--o)if(47===(e=t.charCodeAt(o))){if(!r){n=o;break}}else r=!1;return-1===n?i?\"/\":\".\":i&&1===n?\"//\":t.slice(0,n)},basename:function(t,e){if(void 0!==e&&\"string\"!=typeof e)throw new TypeError('\"ext\" argument must be a string');s(t);var i,n=0,r=-1,o=!0;if(void 0!==e&&e.length>0&&e.length<=t.length){if(e.length===t.length&&e===t)return\"\";var a=e.length-1,h=-1;for(i=t.length-1;i>=0;--i){var l=t.charCodeAt(i);if(47===l){if(!o){n=i+1;break}}else-1===h&&(o=!1,h=i+1),a>=0&&(l===e.charCodeAt(a)?-1==--a&&(r=i):(a=-1,r=h))}return n===r?r=h:-1===r&&(r=t.length),t.slice(n,r)}for(i=t.length-1;i>=0;--i)if(47===t.charCodeAt(i)){if(!o){n=i+1;break}}else-1===r&&(o=!1,r=i+1);return-1===r?\"\":t.slice(n,r)},extname:function(t){s(t);for(var e=-1,i=0,n=-1,r=!0,o=0,a=t.length-1;a>=0;--a){var h=t.charCodeAt(a);if(47!==h)-1===n&&(r=!1,n=a+1),46===h?-1===e?e=a:1!==o&&(o=1):-1!==e&&(o=-1);else if(!r){i=a+1;break}}return-1===e||-1===n||0===o||1===o&&e===n-1&&e===i+1?\"\":t.slice(e,n)},format:function(t){if(null===t||\"object\"!=typeof t)throw new TypeError('Parameter \"pathObject\" must be an object, not '+typeof t);return function(t,e){var i=e.dir||e.root,n=e.base||(e.name||\"\")+(e.ext||\"\");return i?i===e.root?i+n:i+t+n:n}(\"/\",t)},parse:function(t){s(t);var e={root:\"\",dir:\"\",base:\"\",ext:\"\",name:\"\"};if(0===t.length)return e;var i,n=t.charCodeAt(0),r=47===n;r?(e.root=\"/\",i=1):i=0;for(var o=-1,a=0,h=-1,l=!0,c=t.length-1,u=0;c>=i;--c)if(47!==(n=t.charCodeAt(c)))-1===h&&(l=!1,h=c+1),46===n?-1===o?o=c:1!==u&&(u=1):-1!==o&&(u=-1);else if(!l){a=c+1;break}return-1===o||-1===h||0===u||1===u&&o===h-1&&o===a+1?-1!==h&&(e.base=e.name=0===a&&r?t.slice(1,h):t.slice(a,h)):(0===a&&r?(e.name=t.slice(1,o),e.base=t.slice(1,h)):(e.name=t.slice(a,o),e.base=t.slice(a,h)),e.ext=t.slice(o,h)),a>0?e.dir=t.slice(0,a-1):r&&(e.dir=\"/\"),e},sep:\"/\",delimiter:\":\",posix:null};t.exports=o},function(t,e,i){\"use strict\";i.d(e,\"a\",(function(){return r})),i.d(e,\"b\",(function(){return o})),i.d(e,\"d\",(function(){return a})),i.d(e,\"c\",(function(){return h})),i.d(e,\"e\",(function(){return l}));var n=i(0),s=i(5);i(4);function r(t,e){var i,s,r=e.url,o=r.indexOf(\"://\")>-1;t&&(s=Object(n.qs)(t,\"head\"),(i=Object(n.qs)(s,\"base\"))||(i=t.createElement(\"base\"),s.insertBefore(i,s.firstChild)),!o&&window&&window.location&&(r=window.location.origin+r),i.setAttribute(\"href\",r))}function o(t,e){var i,s,r=e.canonical;t&&(i=Object(n.qs)(t,\"head\"),(s=Object(n.qs)(i,\"link[rel='canonical']\"))?s.setAttribute(\"href\",r):((s=t.createElement(\"link\")).setAttribute(\"rel\",\"canonical\"),s.setAttribute(\"href\",r),i.appendChild(s)))}function a(t,e){var i,s,r=e.idref;t&&(i=Object(n.qs)(t,\"head\"),(s=Object(n.qs)(i,\"link[property='dc.identifier']\"))?s.setAttribute(\"content\",r):((s=t.createElement(\"meta\")).setAttribute(\"name\",\"dc.identifier\"),s.setAttribute(\"content\",r),i.appendChild(s)))}function h(t,e){var i=t.querySelectorAll(\"a[href]\");if(i.length)for(var r=Object(n.qs)(t.ownerDocument,\"base\"),o=r?r.getAttribute(\"href\"):void 0,a=function(t){var i=t.getAttribute(\"href\");if(0!==i.indexOf(\"mailto:\"))if(i.indexOf(\"://\")>-1)t.setAttribute(\"target\",\"_blank\");else{var n;try{n=new s.a(i,o)}catch(t){}t.onclick=function(){return n&&n.hash?e(n.Path.path+n.hash):e(n?n.Path.path:i),!1}}}.bind(this),h=0;h<i.length;h++)a(i[h])}function l(t,e,i){return e.forEach((function(e,n){e&&i[n]&&(e=e.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"),t=t.replace(new RegExp(e,\"g\"),i[n]))})),t}},function(t,e,i){\"use strict\";var n=i(0);e.a=class{constructor(t){this._q=[],this.context=t,this.tick=n.requestAnimationFrame,this.running=!1,this.paused=!1}enqueue(){var t,e,i=[].shift.call(arguments),s=arguments;if(!i)throw new Error(\"No Task Provided\");return e=\"function\"==typeof i?{task:i,args:s,deferred:t=new n.defer,promise:t.promise}:{promise:i},this._q.push(e),0!=this.paused||this.running||this.run(),e.promise}dequeue(){var t,e,i;return!this._q.length||this.paused?((t=new n.defer).deferred.resolve(),t.promise):(e=(t=this._q.shift()).task)?(i=e.apply(this.context,t.args))&&\"function\"==typeof i.then?i.then(function(){t.deferred.resolve.apply(this.context,arguments)}.bind(this),function(){t.deferred.reject.apply(this.context,arguments)}.bind(this)):(t.deferred.resolve.apply(this.context,i),t.promise):t.promise?t.promise:void 0}dump(){for(;this._q.length;)this.dequeue()}run(){return this.running||(this.running=!0,this.defered=new n.defer),this.tick.call(window,()=>{this._q.length?this.dequeue().then(function(){this.run()}.bind(this)):(this.defered.resolve(),this.running=void 0)}),1==this.paused&&(this.paused=!1),this.defered.promise}flush(){return this.running?this.running:this._q.length?(this.running=this.dequeue().then(function(){return this.running=void 0,this.flush()}.bind(this)),this.running):void 0}clear(){this._q=[]}length(){return this._q.length}pause(){this.paused=!0}stop(){this._q=[],this.running=!1,this.paused=!0}}},function(t,e,i){\"use strict\";var n=i(3),s=i.n(n),r=i(0);function o(){var t=\"reverse\",e=function(){var t=document.createElement(\"div\");t.dir=\"rtl\",t.style.position=\"fixed\",t.style.width=\"1px\",t.style.height=\"1px\",t.style.top=\"0px\",t.style.left=\"0px\",t.style.overflow=\"hidden\";var e=document.createElement(\"div\");e.style.width=\"2px\";var i=document.createElement(\"span\");i.style.width=\"1px\",i.style.display=\"inline-block\";var n=document.createElement(\"span\");return n.style.width=\"1px\",n.style.display=\"inline-block\",e.appendChild(i),e.appendChild(n),t.appendChild(e),t}();return document.body.appendChild(e),e.scrollLeft>0?t=\"default\":\"undefined\"!=typeof Element&&Element.prototype.scrollIntoView?(e.children[0].children[1].scrollIntoView(),e.scrollLeft<0&&(t=\"negative\")):(e.scrollLeft=1,0===e.scrollLeft&&(t=\"negative\")),document.body.removeChild(e),t}var a=i(11),h=i(9),l=i(28),c=i.n(l);var u=class{constructor(t){this.settings=t||{},this.id=\"epubjs-container-\"+Object(r.uuid)(),this.container=this.create(this.settings),this.settings.hidden&&(this.wrapper=this.wrap(this.container))}create(t){let e=t.height,i=t.width,n=t.overflow||!1,s=t.axis||\"vertical\",o=t.direction;Object(r.extend)(this.settings,t),t.height&&Object(r.isNumber)(t.height)&&(e=t.height+\"px\"),t.width&&Object(r.isNumber)(t.width)&&(i=t.width+\"px\");let a=document.createElement(\"div\");return a.id=this.id,a.classList.add(\"epub-container\"),a.style.wordSpacing=\"0\",a.style.lineHeight=\"0\",a.style.verticalAlign=\"top\",a.style.position=\"relative\",\"horizontal\"===s&&(a.style.display=\"flex\",a.style.flexDirection=\"row\",a.style.flexWrap=\"nowrap\"),i&&(a.style.width=i),e&&(a.style.height=e),n&&(\"scroll\"===n&&\"vertical\"===s?(a.style[\"overflow-y\"]=n,a.style[\"overflow-x\"]=\"hidden\"):\"scroll\"===n&&\"horizontal\"===s?(a.style[\"overflow-y\"]=\"hidden\",a.style[\"overflow-x\"]=n):a.style.overflow=n),o&&(a.dir=o,a.style.direction=o),o&&this.settings.fullsize&&(document.body.style.direction=o),a}wrap(t){var e=document.createElement(\"div\");return e.style.visibility=\"hidden\",e.style.overflow=\"hidden\",e.style.width=\"0\",e.style.height=\"0\",e.appendChild(t),e}getElement(t){var e;if(Object(r.isElement)(t)?e=t:\"string\"==typeof t&&(e=document.getElementById(t)),!e)throw new Error(\"Not an Element\");return e}attachTo(t){var e,i=this.getElement(t);if(i)return e=this.settings.hidden?this.wrapper:this.container,i.appendChild(e),this.element=i,i}getContainer(){return this.container}onResize(t){Object(r.isNumber)(this.settings.width)&&Object(r.isNumber)(this.settings.height)||(this.resizeFunc=c()(t,50),window.addEventListener(\"resize\",this.resizeFunc,!1))}onOrientationChange(t){this.orientationChangeFunc=t,window.addEventListener(\"orientationchange\",this.orientationChangeFunc,!1)}size(t,e){var i;let n=t||this.settings.width,s=e||this.settings.height;null===t?(i=this.element.getBoundingClientRect()).width&&(t=Math.floor(i.width),this.container.style.width=t+\"px\"):Object(r.isNumber)(t)?this.container.style.width=t+\"px\":this.container.style.width=t,null===e?(i=i||this.element.getBoundingClientRect()).height&&(e=i.height,this.container.style.height=e+\"px\"):Object(r.isNumber)(e)?this.container.style.height=e+\"px\":this.container.style.height=e,Object(r.isNumber)(t)||(t=this.container.clientWidth),Object(r.isNumber)(e)||(e=this.container.clientHeight),this.containerStyles=window.getComputedStyle(this.container),this.containerPadding={left:parseFloat(this.containerStyles[\"padding-left\"])||0,right:parseFloat(this.containerStyles[\"padding-right\"])||0,top:parseFloat(this.containerStyles[\"padding-top\"])||0,bottom:parseFloat(this.containerStyles[\"padding-bottom\"])||0};let o=Object(r.windowBounds)(),a=window.getComputedStyle(document.body),h=parseFloat(a[\"padding-left\"])||0,l=parseFloat(a[\"padding-right\"])||0,c=parseFloat(a[\"padding-top\"])||0,u=parseFloat(a[\"padding-bottom\"])||0;return n||(t=o.width-h-l),(this.settings.fullsize&&!s||!s)&&(e=o.height-c-u),{width:t-this.containerPadding.left-this.containerPadding.right,height:e-this.containerPadding.top-this.containerPadding.bottom}}bounds(){let t;return\"visible\"!==this.container.style.overflow&&(t=this.container&&this.container.getBoundingClientRect()),t&&t.width&&t.height?t:Object(r.windowBounds)()}getSheet(){var t=document.createElement(\"style\");return t.appendChild(document.createTextNode(\"\")),document.head.appendChild(t),t.sheet}addStyleRules(t,e){var i=\"#\"+this.id+\" \",n=\"\";this.sheet||(this.sheet=this.getSheet()),e.forEach((function(t){for(var e in t)t.hasOwnProperty(e)&&(n+=e+\":\"+t[e]+\";\")})),this.sheet.insertRule(i+t+\" {\"+n+\"}\",0)}axis(t){\"horizontal\"===t?(this.container.style.display=\"flex\",this.container.style.flexDirection=\"row\",this.container.style.flexWrap=\"nowrap\"):this.container.style.display=\"block\",this.settings.axis=t}direction(t){this.container&&(this.container.dir=t,this.container.style.direction=t),this.settings.fullsize&&(document.body.style.direction=t),this.settings.dir=t}overflow(t){this.container&&(\"scroll\"===t&&\"vertical\"===this.settings.axis?(this.container.style[\"overflow-y\"]=t,this.container.style[\"overflow-x\"]=\"hidden\"):\"scroll\"===t&&\"horizontal\"===this.settings.axis?(this.container.style[\"overflow-y\"]=\"hidden\",this.container.style[\"overflow-x\"]=t):this.container.style.overflow=t),this.settings.overflow=t}destroy(){this.element&&(this.settings.hidden?this.wrapper:this.container,this.element.contains(this.container)&&this.element.removeChild(this.container),window.removeEventListener(\"resize\",this.resizeFunc),window.removeEventListener(\"orientationChange\",this.orientationChangeFunc))}};var d=class{constructor(t){this.container=t,this._views=[],this.length=0,this.hidden=!1}all(){return this._views}first(){return this._views[0]}last(){return this._views[this._views.length-1]}indexOf(t){return this._views.indexOf(t)}slice(){return this._views.slice.apply(this._views,arguments)}get(t){return this._views[t]}append(t){return this._views.push(t),this.container&&this.container.appendChild(t.element),this.length++,t}prepend(t){return this._views.unshift(t),this.container&&this.container.insertBefore(t.element,this.container.firstChild),this.length++,t}insert(t,e){return this._views.splice(e,0,t),this.container&&(e<this.container.children.length?this.container.insertBefore(t.element,this.container.children[e]):this.container.appendChild(t.element)),this.length++,t}remove(t){var e=this._views.indexOf(t);e>-1&&this._views.splice(e,1),this.destroy(t),this.length--}destroy(t){t.displayed&&t.destroy(),this.container&&this.container.removeChild(t.element),t=null}forEach(){return this._views.forEach.apply(this._views,arguments)}clear(){var t,e=this.length;if(this.length){for(var i=0;i<e;i++)t=this._views[i],this.destroy(t);this._views=[],this.length=0}}find(t){for(var e,i=this.length,n=0;n<i;n++)if((e=this._views[n]).displayed&&e.section.index==t.index)return e}displayed(){for(var t,e=[],i=this.length,n=0;n<i;n++)(t=this._views[n]).displayed&&e.push(t);return e}show(){for(var t,e=this.length,i=0;i<e;i++)(t=this._views[i]).displayed&&t.show();this.hidden=!1}hide(){for(var t,e=this.length,i=0;i<e;i++)(t=this._views[i]).displayed&&t.hide();this.hidden=!0}},f=i(1);class p{constructor(t){this.name=\"default\",this.optsSettings=t.settings,this.View=t.view,this.request=t.request,this.renditionQueue=t.queue,this.q=new h.a(this),this.settings=Object(r.extend)(this.settings||{},{infinite:!0,hidden:!1,width:void 0,height:void 0,axis:void 0,writingMode:void 0,flow:\"scrolled\",ignoreClass:\"\",fullsize:void 0,allowScriptedContent:!1,allowPopups:!1}),Object(r.extend)(this.settings,t.settings||{}),this.viewSettings={ignoreClass:this.settings.ignoreClass,axis:this.settings.axis,flow:this.settings.flow,layout:this.layout,method:this.settings.method,width:0,height:0,forceEvenPages:!0,allowScriptedContent:this.settings.allowScriptedContent,allowPopups:this.settings.allowPopups},this.rendered=!1}render(t,e){let i=t.tagName;void 0!==this.settings.fullsize||!i||\"body\"!=i.toLowerCase()&&\"html\"!=i.toLowerCase()||(this.settings.fullsize=!0),this.settings.fullsize&&(this.settings.overflow=\"visible\",this.overflow=this.settings.overflow),this.settings.size=e,this.settings.rtlScrollType=o(),this.stage=new u({width:e.width,height:e.height,overflow:this.overflow,hidden:this.settings.hidden,axis:this.settings.axis,fullsize:this.settings.fullsize,direction:this.settings.direction}),this.stage.attachTo(t),this.container=this.stage.getContainer(),this.views=new d(this.container),this._bounds=this.bounds(),this._stageSize=this.stage.size(),this.viewSettings.width=this._stageSize.width,this.viewSettings.height=this._stageSize.height,this.stage.onResize(this.onResized.bind(this)),this.stage.onOrientationChange(this.onOrientationChange.bind(this)),this.addEventListeners(),this.layout&&this.updateLayout(),this.rendered=!0}addEventListeners(){var t;window.addEventListener(\"unload\",function(t){this.destroy()}.bind(this)),t=this.settings.fullsize?window:this.container,this._onScroll=this.onScroll.bind(this),t.addEventListener(\"scroll\",this._onScroll)}removeEventListeners(){(this.settings.fullsize?window:this.container).removeEventListener(\"scroll\",this._onScroll),this._onScroll=void 0}destroy(){clearTimeout(this.orientationTimeout),clearTimeout(this.resizeTimeout),clearTimeout(this.afterScrolled),this.clear(),this.removeEventListeners(),this.stage.destroy(),this.rendered=!1}onOrientationChange(t){let{orientation:e}=window;this.optsSettings.resizeOnOrientationChange&&this.resize(),clearTimeout(this.orientationTimeout),this.orientationTimeout=setTimeout(function(){this.orientationTimeout=void 0,this.optsSettings.resizeOnOrientationChange&&this.resize(),this.emit(f.c.MANAGERS.ORIENTATION_CHANGE,e)}.bind(this),500)}onResized(t){this.resize()}resize(t,e,i){let n=this.stage.size(t,e);this.winBounds=Object(r.windowBounds)(),this.orientationTimeout&&this.winBounds.width===this.winBounds.height?this._stageSize=void 0:this._stageSize&&this._stageSize.width===n.width&&this._stageSize.height===n.height||(this._stageSize=n,this._bounds=this.bounds(),this.clear(),this.viewSettings.width=this._stageSize.width,this.viewSettings.height=this._stageSize.height,this.updateLayout(),this.emit(f.c.MANAGERS.RESIZED,{width:this._stageSize.width,height:this._stageSize.height},i))}createView(t,e){return new this.View(t,Object(r.extend)(this.viewSettings,{forceRight:e}))}handleNextPrePaginated(t,e,i){let n;if(\"pre-paginated\"===this.layout.name&&this.layout.divisor>1){if(t||0===e.index)return;if(n=e.next(),n&&!n.properties.includes(\"page-spread-left\"))return i.call(this,n)}}display(t,e){var i=new r.defer,n=i.promise;(e===t.href||Object(r.isNumber)(e))&&(e=void 0);var s=this.views.find(t);if(s&&t&&\"pre-paginated\"!==this.layout.name){let t=s.offset();if(\"ltr\"===this.settings.direction)this.scrollTo(t.left,t.top,!0);else{let e=s.width();this.scrollTo(t.left+e,t.top,!0)}if(e){let t=s.locationOf(e),i=s.width();this.moveTo(t,i)}return i.resolve(),n}this.clear();let o=!1;return\"pre-paginated\"===this.layout.name&&2===this.layout.divisor&&t.properties.includes(\"page-spread-right\")&&(o=!0),this.add(t,o).then(function(t){if(e){let i=t.locationOf(e),n=t.width();this.moveTo(i,n)}}.bind(this),t=>{i.reject(t)}).then(function(){return this.handleNextPrePaginated(o,t,this.add)}.bind(this)).then(function(){this.views.show(),i.resolve()}.bind(this)),n}afterDisplayed(t){this.emit(f.c.MANAGERS.ADDED,t)}afterResized(t){this.emit(f.c.MANAGERS.RESIZE,t.section)}moveTo(t,e){var i=0,n=0;this.isPaginated?((i=Math.floor(t.left/this.layout.delta)*this.layout.delta)+this.layout.delta>this.container.scrollWidth&&(i=this.container.scrollWidth-this.layout.delta),(n=Math.floor(t.top/this.layout.delta)*this.layout.delta)+this.layout.delta>this.container.scrollHeight&&(n=this.container.scrollHeight-this.layout.delta)):n=t.top,\"rtl\"===this.settings.direction&&(i+=this.layout.delta,i-=e),this.scrollTo(i,n,!0)}add(t,e){var i=this.createView(t,e);return this.views.append(i),i.onDisplayed=this.afterDisplayed.bind(this),i.onResize=this.afterResized.bind(this),i.on(f.c.VIEWS.AXIS,t=>{this.updateAxis(t)}),i.on(f.c.VIEWS.WRITING_MODE,t=>{this.updateWritingMode(t)}),i.display(this.request)}append(t,e){var i=this.createView(t,e);return this.views.append(i),i.onDisplayed=this.afterDisplayed.bind(this),i.onResize=this.afterResized.bind(this),i.on(f.c.VIEWS.AXIS,t=>{this.updateAxis(t)}),i.on(f.c.VIEWS.WRITING_MODE,t=>{this.updateWritingMode(t)}),i.display(this.request)}prepend(t,e){var i=this.createView(t,e);return i.on(f.c.VIEWS.RESIZED,t=>{this.counter(t)}),this.views.prepend(i),i.onDisplayed=this.afterDisplayed.bind(this),i.onResize=this.afterResized.bind(this),i.on(f.c.VIEWS.AXIS,t=>{this.updateAxis(t)}),i.on(f.c.VIEWS.WRITING_MODE,t=>{this.updateWritingMode(t)}),i.display(this.request)}counter(t){\"vertical\"===this.settings.axis?this.scrollBy(0,t.heightDelta,!0):this.scrollBy(t.widthDelta,0,!0)}next(){var t;let e=this.settings.direction;if(this.views.length){if(!this.isPaginated||\"horizontal\"!==this.settings.axis||e&&\"ltr\"!==e)if(this.isPaginated&&\"horizontal\"===this.settings.axis&&\"rtl\"===e)this.scrollLeft=this.container.scrollLeft,\"default\"===this.settings.rtlScrollType?this.container.scrollLeft>0?this.scrollBy(this.layout.delta,0,!0):t=this.views.last().section.next():this.container.scrollLeft+-1*this.layout.delta>-1*this.container.scrollWidth?this.scrollBy(this.layout.delta,0,!0):t=this.views.last().section.next();else if(this.isPaginated&&\"vertical\"===this.settings.axis){this.scrollTop=this.container.scrollTop,this.container.scrollTop+this.container.offsetHeight<this.container.scrollHeight?this.scrollBy(0,this.layout.height,!0):t=this.views.last().section.next()}else t=this.views.last().section.next();else this.scrollLeft=this.container.scrollLeft,this.container.scrollLeft+this.container.offsetWidth+this.layout.delta<=this.container.scrollWidth?this.scrollBy(this.layout.delta,0,!0):t=this.views.last().section.next();if(t){this.clear(),this.updateLayout();let e=!1;return\"pre-paginated\"===this.layout.name&&2===this.layout.divisor&&t.properties.includes(\"page-spread-right\")&&(e=!0),this.append(t,e).then(function(){return this.handleNextPrePaginated(e,t,this.append)}.bind(this),t=>t).then(function(){this.isPaginated||\"horizontal\"!==this.settings.axis||\"rtl\"!==this.settings.direction||\"default\"!==this.settings.rtlScrollType||this.scrollTo(this.container.scrollWidth,0,!0),this.views.show()}.bind(this))}}}prev(){var t;let e=this.settings.direction;if(this.views.length){if(!this.isPaginated||\"horizontal\"!==this.settings.axis||e&&\"ltr\"!==e)if(this.isPaginated&&\"horizontal\"===this.settings.axis&&\"rtl\"===e)this.scrollLeft=this.container.scrollLeft,\"default\"===this.settings.rtlScrollType?this.container.scrollLeft+this.container.offsetWidth<this.container.scrollWidth?this.scrollBy(-this.layout.delta,0,!0):t=this.views.first().section.prev():this.container.scrollLeft<0?this.scrollBy(-this.layout.delta,0,!0):t=this.views.first().section.prev();else if(this.isPaginated&&\"vertical\"===this.settings.axis){this.scrollTop=this.container.scrollTop,this.container.scrollTop>0?this.scrollBy(0,-this.layout.height,!0):t=this.views.first().section.prev()}else t=this.views.first().section.prev();else this.scrollLeft=this.container.scrollLeft,this.container.scrollLeft>0?this.scrollBy(-this.layout.delta,0,!0):t=this.views.first().section.prev();if(t){this.clear(),this.updateLayout();let e=!1;return\"pre-paginated\"===this.layout.name&&2===this.layout.divisor&&\"object\"!=typeof t.prev()&&(e=!0),this.prepend(t,e).then(function(){var e;if(\"pre-paginated\"===this.layout.name&&this.layout.divisor>1&&(e=t.prev()))return this.prepend(e)}.bind(this),t=>t).then(function(){this.isPaginated&&\"horizontal\"===this.settings.axis&&(\"rtl\"===this.settings.direction?\"default\"===this.settings.rtlScrollType?this.scrollTo(0,0,!0):this.scrollTo(-1*this.container.scrollWidth+this.layout.delta,0,!0):this.scrollTo(this.container.scrollWidth-this.layout.delta,0,!0)),this.views.show()}.bind(this))}}}current(){var t=this.visible();return t.length?t[t.length-1]:null}clear(){this.views&&(this.views.hide(),this.scrollTo(0,0,!0),this.views.clear())}currentLocation(){return this.updateLayout(),this.isPaginated&&\"horizontal\"===this.settings.axis?this.location=this.paginatedLocation():this.location=this.scrolledLocation(),this.location}scrolledLocation(){let t=this.visible(),e=this.container.getBoundingClientRect(),i=e.height<window.innerHeight?e.height:window.innerHeight,n=e.width<window.innerWidth?e.width:window.innerWidth,s=\"vertical\"===this.settings.axis,r=(this.settings.direction,0);return this.settings.fullsize&&(r=s?window.scrollY:window.scrollX),t.map(t=>{let o,a,h,l,{index:c,href:u}=t.section,d=t.position(),f=t.width(),p=t.height();s?(o=r+e.top-d.top+0,a=o+i-0,l=this.layout.count(p,i).pages,h=i):(o=r+e.left-d.left+0,a=o+n-0,l=this.layout.count(f,n).pages,h=n);let g=Math.ceil(o/h),m=[],v=Math.ceil(a/h);if(\"rtl\"===this.settings.direction&&!s){let t=g;g=l-v,v=l-t}m=[];for(var y=g;y<=v;y++){let t=y+1;m.push(t)}return{index:c,href:u,pages:m,totalPages:l,mapping:this.mapping.page(t.contents,t.section.cfiBase,o,a)}})}paginatedLocation(){let t=this.visible(),e=this.container.getBoundingClientRect(),i=0,n=0;return this.settings.fullsize&&(i=window.scrollX),t.map(t=>{let s,r,o,a,{index:h,href:l}=t.section,c=t.position(),u=t.width();\"rtl\"===this.settings.direction?(s=e.right-i,a=Math.min(Math.abs(s-c.left),this.layout.width)-n,o=c.width-(c.right-s)-n,r=o-a):(s=e.left+i,a=Math.min(c.right-s,this.layout.width)-n,r=s-c.left+n,o=r+a),n+=a;let d=this.mapping.page(t.contents,t.section.cfiBase,r,o),f=this.layout.count(u).pages,p=Math.floor(r/this.layout.pageWidth),g=[],m=Math.floor(o/this.layout.pageWidth);if(p<0&&(p=0,m+=1),\"rtl\"===this.settings.direction){let t=p;p=f-m,m=f-t}for(var v=p+1;v<=m;v++){let t=v;g.push(t)}return{index:h,href:l,pages:g,totalPages:f,mapping:d}})}isVisible(t,e,i,n){var s=t.position(),r=n||this.bounds();return\"horizontal\"===this.settings.axis&&s.right>r.left-e&&s.left<r.right+i||\"vertical\"===this.settings.axis&&s.bottom>r.top-e&&s.top<r.bottom+i}visible(){for(var t,e=this.bounds(),i=this.views.displayed(),n=i.length,s=[],r=0;r<n;r++)t=i[r],!0===this.isVisible(t,0,0,e)&&s.push(t);return s}scrollBy(t,e,i){let n=\"rtl\"===this.settings.direction?-1:1;i&&(this.ignore=!0),this.settings.fullsize?window.scrollBy(t*n,e*n):(t&&(this.container.scrollLeft+=t*n),e&&(this.container.scrollTop+=e)),this.scrolled=!0}scrollTo(t,e,i){i&&(this.ignore=!0),this.settings.fullsize?window.scrollTo(t,e):(this.container.scrollLeft=t,this.container.scrollTop=e),this.scrolled=!0}onScroll(){let t,e;this.settings.fullsize?(t=window.scrollY,e=window.scrollX):(t=this.container.scrollTop,e=this.container.scrollLeft),this.scrollTop=t,this.scrollLeft=e,this.ignore?this.ignore=!1:(this.emit(f.c.MANAGERS.SCROLL,{top:t,left:e}),clearTimeout(this.afterScrolled),this.afterScrolled=setTimeout(function(){this.emit(f.c.MANAGERS.SCROLLED,{top:this.scrollTop,left:this.scrollLeft})}.bind(this),20))}bounds(){return this.stage.bounds()}applyLayout(t){this.layout=t,this.updateLayout(),this.views&&this.views.length>0&&\"pre-paginated\"===this.layout.name&&this.display(this.views.first().section)}updateLayout(){this.stage&&(this._stageSize=this.stage.size(),this.isPaginated?(this.layout.calculate(this._stageSize.width,this._stageSize.height,this.settings.gap),this.settings.offset=this.layout.delta/this.layout.divisor):this.layout.calculate(this._stageSize.width,this._stageSize.height),this.viewSettings.width=this.layout.width,this.viewSettings.height=this.layout.height,this.setLayout(this.layout))}setLayout(t){this.viewSettings.layout=t,this.mapping=new a.a(t.props,this.settings.direction,this.settings.axis),this.views&&this.views.forEach((function(e){e&&e.setLayout(t)}))}updateWritingMode(t){this.writingMode=t}updateAxis(t,e){(e||t!==this.settings.axis)&&(this.settings.axis=t,this.stage&&this.stage.axis(t),this.viewSettings.axis=t,this.mapping&&(this.mapping=new a.a(this.layout.props,this.settings.direction,this.settings.axis)),this.layout&&(\"vertical\"===t?this.layout.spread(\"none\"):this.layout.spread(this.layout.settings.spread)))}updateFlow(t,e=\"auto\"){let i=\"paginated\"===t||\"auto\"===t;this.isPaginated=i,\"scrolled-doc\"===t||\"scrolled-continuous\"===t||\"scrolled\"===t?this.updateAxis(\"vertical\"):this.updateAxis(\"horizontal\"),this.viewSettings.flow=t,this.settings.overflow?this.overflow=this.settings.overflow:this.overflow=i?\"hidden\":e,this.stage&&this.stage.overflow(this.overflow),this.updateLayout()}getContents(){var t=[];return this.views?(this.views.forEach((function(e){const i=e&&e.contents;i&&t.push(i)})),t):t}direction(t=\"ltr\"){this.settings.direction=t,this.stage&&this.stage.direction(t),this.viewSettings.direction=t,this.updateLayout()}isRendered(){return this.rendered}}s()(p.prototype);e.a=p},function(t,e,i){\"use strict\";var n=i(2),s=i(0);e.a=class{constructor(t,e,i,n=!1){this.layout=t,this.horizontal=\"horizontal\"===i,this.direction=e||\"ltr\",this._dev=n}section(t){var e=this.findRanges(t);return this.rangeListToCfiList(t.section.cfiBase,e)}page(t,e,i,s){var r,o=!(!t||!t.document)&&t.document.body;if(o){if(r=this.rangePairToCfiPair(e,{start:this.findStart(o,i,s),end:this.findEnd(o,i,s)}),!0===this._dev){let e=t.document,i=new n.a(r.start).toRange(e),s=new n.a(r.end).toRange(e),o=e.defaultView.getSelection(),a=e.createRange();o.removeAllRanges(),a.setStart(i.startContainer,i.startOffset),a.setEnd(s.endContainer,s.endOffset),o.addRange(a)}return r}}walk(t,e){if(!t||t.nodeType!==Node.TEXT_NODE){var i=function(t){return t.data.trim().length>0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT},n=i;n.acceptNode=i;for(var s,r,o=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,n,!1);(s=o.nextNode())&&!(r=e(s)););return r}}findRanges(t){for(var e,i,n=[],s=t.contents.scrollWidth(),r=Math.ceil(s/this.layout.spreadWidth)*this.layout.divisor,o=this.layout.columnWidth,a=this.layout.gap,h=0;h<r.pages;h++)e=(o+a)*h,i=o*(h+1)+a*h,n.push({start:this.findStart(t.document.body,e,i),end:this.findEnd(t.document.body,e,i)});return n}findStart(t,e,i){for(var n,r,o=[t],a=t;o.length;)if(n=o.shift(),r=this.walk(n,t=>{var n,r,h,l,c;if(c=Object(s.nodeBounds)(t),this.horizontal&&\"ltr\"===this.direction){if(n=this.horizontal?c.left:c.top,r=this.horizontal?c.right:c.bottom,n>=e&&n<=i)return t;if(r>e)return t;a=t,o.push(t)}else if(this.horizontal&&\"rtl\"===this.direction){if(n=c.left,(r=c.right)<=i&&r>=e)return t;if(n<i)return t;a=t,o.push(t)}else{if(h=c.top,l=c.bottom,h>=e&&h<=i)return t;if(l>e)return t;a=t,o.push(t)}}))return this.findTextStartRange(r,e,i);return this.findTextStartRange(a,e,i)}findEnd(t,e,i){for(var n,r,o=[t],a=t;o.length;)if(n=o.shift(),r=this.walk(n,t=>{var n,r,h,l,c;if(c=Object(s.nodeBounds)(t),this.horizontal&&\"ltr\"===this.direction){if(n=Math.round(c.left),r=Math.round(c.right),n>i&&a)return a;if(r>i)return t;a=t,o.push(t)}else if(this.horizontal&&\"rtl\"===this.direction){if(n=Math.round(this.horizontal?c.left:c.top),(r=Math.round(this.horizontal?c.right:c.bottom))<e&&a)return a;if(n<e)return t;a=t,o.push(t)}else{if(h=Math.round(c.top),l=Math.round(c.bottom),h>i&&a)return a;if(l>i)return t;a=t,o.push(t)}}))return this.findTextEndRange(r,e,i);return this.findTextEndRange(a,e,i)}findTextStartRange(t,e,i){for(var n,s,r=this.splitTextNodeIntoRanges(t),o=0;o<r.length;o++)if(s=(n=r[o]).getBoundingClientRect(),this.horizontal&&\"ltr\"===this.direction){if(s.left>=e)return n}else if(this.horizontal&&\"rtl\"===this.direction){if(s.right<=i)return n}else if(s.top>=e)return n;return r[0]}findTextEndRange(t,e,i){for(var n,s,r,o,a,h,l,c=this.splitTextNodeIntoRanges(t),u=0;u<c.length;u++){if(r=(s=c[u]).getBoundingClientRect(),this.horizontal&&\"ltr\"===this.direction){if(o=r.left,a=r.right,o>i&&n)return n;if(a>i)return s}else if(this.horizontal&&\"rtl\"===this.direction){if(o=r.left,(a=r.right)<e&&n)return n;if(o<e)return s}else{if(h=r.top,l=r.bottom,h>i&&n)return n;if(l>i)return s}n=s}return c[c.length-1]}splitTextNodeIntoRanges(t,e){var i,n=[],s=(t.textContent||\"\").trim(),r=t.ownerDocument,o=e||\" \",a=s.indexOf(o);if(-1===a||t.nodeType!=Node.TEXT_NODE)return(i=r.createRange()).selectNodeContents(t),[i];for((i=r.createRange()).setStart(t,0),i.setEnd(t,a),n.push(i),i=!1;-1!=a;)(a=s.indexOf(o,a+1))>0&&(i&&(i.setEnd(t,a),n.push(i)),(i=r.createRange()).setStart(t,a+1));return i&&(i.setEnd(t,s.length),n.push(i)),n}rangePairToCfiPair(t,e){var i=e.start,s=e.end;return i.collapse(!0),s.collapse(!1),{start:new n.a(i,t).toString(),end:new n.a(s,t).toString()}}rangeListToCfiList(t,e){for(var i,n=[],s=0;s<e.length;s++)i=this.rangePairToCfiPair(t,e[s]),n.push(i);return n}axis(t){return t&&(this.horizontal=\"horizontal\"===t),this.horizontal}}},function(t,e,i){\"use strict\";var n=i(3),s=i.n(n),r=i(0),o=i(2),a=i(11),h=i(8),l=i(1);const c=\"undefined\"!=typeof navigator,u=c&&/Chrome/.test(navigator.userAgent),d=c&&!u&&/AppleWebKit/.test(navigator.userAgent);class f{constructor(t,e,i,n){this.epubcfi=new o.a,this.document=t,this.documentElement=this.document.documentElement,this.content=e||this.document.body,this.window=this.document.defaultView,this._size={width:0,height:0},this.sectionIndex=n||0,this.cfiBase=i||\"\",this.epubReadingSystem(\"epub.js\",l.b),this.called=0,this.active=!0,this.listeners()}static get listenedEvents(){return l.a}width(t){var e=this.content;return t&&Object(r.isNumber)(t)&&(t+=\"px\"),t&&(e.style.width=t),parseInt(this.window.getComputedStyle(e).width)}height(t){var e=this.content;return t&&Object(r.isNumber)(t)&&(t+=\"px\"),t&&(e.style.height=t),parseInt(this.window.getComputedStyle(e).height)}contentWidth(t){var e=this.content||this.document.body;return t&&Object(r.isNumber)(t)&&(t+=\"px\"),t&&(e.style.width=t),parseInt(this.window.getComputedStyle(e).width)}contentHeight(t){var e=this.content||this.document.body;return t&&Object(r.isNumber)(t)&&(t+=\"px\"),t&&(e.style.height=t),parseInt(this.window.getComputedStyle(e).height)}textWidth(){let t,e,i=this.document.createRange(),n=this.content||this.document.body,s=Object(r.borders)(n);return i.selectNodeContents(n),t=i.getBoundingClientRect(),e=t.width,s&&s.width&&(e+=s.width),Math.round(e)}textHeight(){let t,e,i=this.document.createRange(),n=this.content||this.document.body;return i.selectNodeContents(n),t=i.getBoundingClientRect(),e=t.bottom,Math.round(e)}scrollWidth(){return this.documentElement.scrollWidth}scrollHeight(){return this.documentElement.scrollHeight}overflow(t){return t&&(this.documentElement.style.overflow=t),this.window.getComputedStyle(this.documentElement).overflow}overflowX(t){return t&&(this.documentElement.style.overflowX=t),this.window.getComputedStyle(this.documentElement).overflowX}overflowY(t){return t&&(this.documentElement.style.overflowY=t),this.window.getComputedStyle(this.documentElement).overflowY}css(t,e,i){var n=this.content||this.document.body;return e?n.style.setProperty(t,e,i?\"important\":\"\"):n.style.removeProperty(t),this.window.getComputedStyle(n)[t]}viewport(t){var e,i=this.document.querySelector(\"meta[name='viewport']\"),n={width:void 0,height:void 0,scale:void 0,minimum:void 0,maximum:void 0,scalable:void 0},s=[];if(i&&i.hasAttribute(\"content\")){let t=i.getAttribute(\"content\"),e=t.match(/width\\s*=\\s*([^,]*)/),s=t.match(/height\\s*=\\s*([^,]*)/),r=t.match(/initial-scale\\s*=\\s*([^,]*)/),o=t.match(/minimum-scale\\s*=\\s*([^,]*)/),a=t.match(/maximum-scale\\s*=\\s*([^,]*)/),h=t.match(/user-scalable\\s*=\\s*([^,]*)/);e&&e.length&&void 0!==e[1]&&(n.width=e[1]),s&&s.length&&void 0!==s[1]&&(n.height=s[1]),r&&r.length&&void 0!==r[1]&&(n.scale=r[1]),o&&o.length&&void 0!==o[1]&&(n.minimum=o[1]),a&&a.length&&void 0!==a[1]&&(n.maximum=a[1]),h&&h.length&&void 0!==h[1]&&(n.scalable=h[1])}return e=Object(r.defaults)(t||{},n),t&&(e.width&&s.push(\"width=\"+e.width),e.height&&s.push(\"height=\"+e.height),e.scale&&s.push(\"initial-scale=\"+e.scale),\"no\"===e.scalable?(s.push(\"minimum-scale=\"+e.scale),s.push(\"maximum-scale=\"+e.scale),s.push(\"user-scalable=\"+e.scalable)):(e.scalable&&s.push(\"user-scalable=\"+e.scalable),e.minimum&&s.push(\"minimum-scale=\"+e.minimum),e.maximum&&s.push(\"minimum-scale=\"+e.maximum)),i||((i=this.document.createElement(\"meta\")).setAttribute(\"name\",\"viewport\"),this.document.querySelector(\"head\").appendChild(i)),i.setAttribute(\"content\",s.join(\", \")),this.window.scrollTo(0,0)),e}expand(){this.emit(l.c.CONTENTS.EXPAND)}listeners(){this.imageLoadListeners(),this.mediaQueryListeners(),this.addEventListeners(),this.addSelectionListeners(),\"undefined\"==typeof ResizeObserver?(this.resizeListeners(),this.visibilityListeners()):this.resizeObservers(),this.linksHandler()}removeListeners(){this.removeEventListeners(),this.removeSelectionListeners(),this.observer&&this.observer.disconnect(),clearTimeout(this.expanding)}resizeCheck(){let t=this.textWidth(),e=this.textHeight();t==this._size.width&&e==this._size.height||(this._size={width:t,height:e},this.onResize&&this.onResize(this._size),this.emit(l.c.CONTENTS.RESIZE,this._size))}resizeListeners(){clearTimeout(this.expanding),requestAnimationFrame(this.resizeCheck.bind(this)),this.expanding=setTimeout(this.resizeListeners.bind(this),350)}visibilityListeners(){document.addEventListener(\"visibilitychange\",()=>{\"visible\"===document.visibilityState&&!1===this.active?(this.active=!0,this.resizeListeners()):(this.active=!1,clearTimeout(this.expanding))})}transitionListeners(){let t=this.content;t.style.transitionProperty=\"font, font-size, font-size-adjust, font-stretch, font-variation-settings, font-weight, width, height\",t.style.transitionDuration=\"0.001ms\",t.style.transitionTimingFunction=\"linear\",t.style.transitionDelay=\"0\",this._resizeCheck=this.resizeCheck.bind(this),this.document.addEventListener(\"transitionend\",this._resizeCheck)}mediaQueryListeners(){for(var t=this.document.styleSheets,e=function(t){t.matches&&!this._expanding&&setTimeout(this.expand.bind(this),1)}.bind(this),i=0;i<t.length;i+=1){var n;try{n=t[i].cssRules}catch(t){return}if(!n)return;for(var s=0;s<n.length;s+=1){if(n[s].media)this.window.matchMedia(n[s].media.mediaText).addListener(e)}}}resizeObservers(){this.observer=new ResizeObserver(t=>{requestAnimationFrame(this.resizeCheck.bind(this))}),this.observer.observe(this.document.documentElement)}mutationObservers(){this.observer=new MutationObserver(t=>{this.resizeCheck()});this.observer.observe(this.document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})}imageLoadListeners(){for(var t,e=this.document.querySelectorAll(\"img\"),i=0;i<e.length;i++)void 0!==(t=e[i]).naturalWidth&&0===t.naturalWidth&&(t.onload=this.expand.bind(this))}fontLoadListeners(){this.document&&this.document.fonts&&this.document.fonts.ready.then(function(){this.resizeCheck()}.bind(this))}root(){return this.document?this.document.documentElement:null}locationOf(t,e){var i,n={left:0,top:0};if(!this.document)return n;if(this.epubcfi.isCfiString(t)){let s=new o.a(t).toRange(this.document,e);if(s){try{if(!s.endContainer||s.startContainer==s.endContainer&&s.startOffset==s.endOffset){let t=s.startContainer.textContent.indexOf(\" \",s.startOffset);-1==t&&(t=s.startContainer.textContent.length),s.setEnd(s.startContainer,t)}}catch(t){console.error(\"setting end offset to start container length failed\",t)}if(s.startContainer.nodeType===Node.ELEMENT_NODE)i=s.startContainer.getBoundingClientRect(),n.left=i.left,n.top=i.top;else if(d){let t=s.startContainer,e=new Range;try{1===t.nodeType?i=t.getBoundingClientRect():s.startOffset+2<t.length?(e.setStart(t,s.startOffset),e.setEnd(t,s.startOffset+2),i=e.getBoundingClientRect()):s.startOffset-2>0?(e.setStart(t,s.startOffset-2),e.setEnd(t,s.startOffset),i=e.getBoundingClientRect()):i=t.parentNode.getBoundingClientRect()}catch(t){console.error(t,t.stack)}}else i=s.getBoundingClientRect()}}else if(\"string\"==typeof t&&t.indexOf(\"#\")>-1){let e=t.substring(t.indexOf(\"#\")+1),n=this.document.getElementById(e);if(n)if(d){let t=new Range;t.selectNode(n),i=t.getBoundingClientRect()}else i=n.getBoundingClientRect()}return i&&(n.left=i.left,n.top=i.top),n}addStylesheet(t){return new Promise(function(e,i){var n,s=!1;this.document?(n=this.document.querySelector(\"link[href='\"+t+\"']\"))?e(!0):((n=this.document.createElement(\"link\")).type=\"text/css\",n.rel=\"stylesheet\",n.href=t,n.onload=n.onreadystatechange=function(){s||this.readyState&&\"complete\"!=this.readyState||(s=!0,setTimeout(()=>{e(!0)},1))},this.document.head.appendChild(n)):e(!1)}.bind(this))}_getStylesheetNode(t){var e;return t=\"epubjs-inserted-css-\"+(t||\"\"),!!this.document&&((e=this.document.getElementById(t))||((e=this.document.createElement(\"style\")).id=t,this.document.head.appendChild(e)),e)}addStylesheetCss(t,e){return!(!this.document||!t)&&(this._getStylesheetNode(e).innerHTML=t,!0)}addStylesheetRules(t,e){var i;if(this.document&&t&&0!==t.length)if(i=this._getStylesheetNode(e).sheet,\"[object Array]\"===Object.prototype.toString.call(t))for(var n=0,s=t.length;n<s;n++){var r=1,o=t[n],a=t[n][0],h=\"\";\"[object Array]\"===Object.prototype.toString.call(o[1][0])&&(o=o[1],r=0);for(var l=o.length;r<l;r++){var c=o[r];h+=c[0]+\":\"+c[1]+(c[2]?\" !important\":\"\")+\";\\n\"}i.insertRule(a+\"{\"+h+\"}\",i.cssRules.length)}else{Object.keys(t).forEach(e=>{const n=t[e];if(Array.isArray(n))n.forEach(t=>{const n=Object.keys(t).map(e=>`${e}:${t[e]}`).join(\";\");i.insertRule(`${e}{${n}}`,i.cssRules.length)});else{const t=Object.keys(n).map(t=>`${t}:${n[t]}`).join(\";\");i.insertRule(`${e}{${t}}`,i.cssRules.length)}})}}addScript(t){return new Promise(function(e,i){var n,s=!1;this.document?((n=this.document.createElement(\"script\")).type=\"text/javascript\",n.async=!0,n.src=t,n.onload=n.onreadystatechange=function(){s||this.readyState&&\"complete\"!=this.readyState||(s=!0,setTimeout((function(){e(!0)}),1))},this.document.head.appendChild(n)):e(!1)}.bind(this))}addClass(t){var e;this.document&&(e=this.content||this.document.body)&&e.classList.add(t)}removeClass(t){var e;this.document&&(e=this.content||this.document.body)&&e.classList.remove(t)}addEventListeners(){this.document&&(this._triggerEvent=this.triggerEvent.bind(this),l.a.forEach((function(t){this.document.addEventListener(t,this._triggerEvent,{passive:!0})}),this))}removeEventListeners(){this.document&&(l.a.forEach((function(t){this.document.removeEventListener(t,this._triggerEvent,{passive:!0})}),this),this._triggerEvent=void 0)}triggerEvent(t){this.emit(t.type,t)}addSelectionListeners(){this.document&&(this._onSelectionChange=this.onSelectionChange.bind(this),this.document.addEventListener(\"selectionchange\",this._onSelectionChange,{passive:!0}))}removeSelectionListeners(){this.document&&(this.document.removeEventListener(\"selectionchange\",this._onSelectionChange,{passive:!0}),this._onSelectionChange=void 0)}onSelectionChange(t){this.selectionEndTimeout&&clearTimeout(this.selectionEndTimeout),this.selectionEndTimeout=setTimeout(function(){var t=this.window.getSelection();this.triggerSelectedEvent(t)}.bind(this),250)}triggerSelectedEvent(t){var e,i;t&&t.rangeCount>0&&((e=t.getRangeAt(0)).collapsed||(i=new o.a(e,this.cfiBase).toString(),this.emit(l.c.CONTENTS.SELECTED,i),this.emit(l.c.CONTENTS.SELECTED_RANGE,e)))}range(t,e){return new o.a(t).toRange(this.document,e)}cfiFromRange(t,e){return new o.a(t,this.cfiBase,e).toString()}cfiFromNode(t,e){return new o.a(t,this.cfiBase,e).toString()}map(t){return new a.a(t).section()}size(t,e){var i={scale:1,scalable:\"no\"};this.layoutStyle(\"scrolling\"),t>=0&&(this.width(t),i.width=t,this.css(\"padding\",\"0 \"+t/12+\"px\")),e>=0&&(this.height(e),i.height=e),this.css(\"margin\",\"0\"),this.css(\"box-sizing\",\"border-box\"),this.viewport(i)}columns(t,e,i,n,s){let o=Object(r.prefixed)(\"column-axis\"),a=Object(r.prefixed)(\"column-gap\"),h=Object(r.prefixed)(\"column-width\"),l=Object(r.prefixed)(\"column-fill\"),c=0===this.writingMode().indexOf(\"vertical\")?\"vertical\":\"horizontal\";this.layoutStyle(\"paginated\"),\"rtl\"===s&&\"horizontal\"===c&&this.direction(s),this.width(t),this.height(e),this.viewport({width:t,height:e,scale:1,scalable:\"no\"}),this.css(\"overflow-y\",\"hidden\"),this.css(\"margin\",\"0\",!0),\"vertical\"===c?(this.css(\"padding-top\",n/2+\"px\",!0),this.css(\"padding-bottom\",n/2+\"px\",!0),this.css(\"padding-left\",\"20px\"),this.css(\"padding-right\",\"20px\"),this.css(o,\"vertical\")):(this.css(\"padding-top\",\"20px\"),this.css(\"padding-bottom\",\"20px\"),this.css(\"padding-left\",n/2+\"px\",!0),this.css(\"padding-right\",n/2+\"px\",!0),this.css(o,\"horizontal\")),this.css(\"box-sizing\",\"border-box\"),this.css(\"max-width\",\"inherit\"),this.css(l,\"auto\"),this.css(a,n+\"px\"),this.css(h,i+\"px\"),this.css(\"-webkit-line-box-contain\",\"block glyphs replaced\")}scaler(t,e,i){var n=\"scale(\"+t+\")\",s=\"\";this.css(\"transform-origin\",\"top left\"),(e>=0||i>=0)&&(s=\" translate(\"+(e||0)+\"px, \"+(i||0)+\"px )\"),this.css(\"transform\",n+s)}fit(t,e,i){var n=this.viewport(),s=parseInt(n.width),r=parseInt(n.height),o=t/s,a=e/r,h=o<a?o:a;if(this.layoutStyle(\"paginated\"),this.width(s),this.height(r),this.overflow(\"hidden\"),this.scaler(h,0,0),this.css(\"background-size\",s*h+\"px \"+r*h+\"px\"),this.css(\"background-color\",\"transparent\"),i&&i.properties.includes(\"page-spread-left\")){var l=t-s*h;this.css(\"margin-left\",l+\"px\")}}direction(t){this.documentElement&&(this.documentElement.style.direction=t)}mapPage(t,e,i,n,s){return new a.a(e,s).page(this,t,i,n)}linksHandler(){Object(h.c)(this.content,t=>{this.emit(l.c.CONTENTS.LINK_CLICKED,t)})}writingMode(t){let e=Object(r.prefixed)(\"writing-mode\");return t&&this.documentElement&&(this.documentElement.style[e]=t),this.window.getComputedStyle(this.documentElement)[e]||\"\"}layoutStyle(t){return t&&(this._layoutStyle=t,navigator.epubReadingSystem.layoutStyle=this._layoutStyle),this._layoutStyle||\"paginated\"}epubReadingSystem(t,e){return navigator.epubReadingSystem={name:t,version:e,layoutStyle:this.layoutStyle(),hasFeature:function(t){switch(t){case\"dom-manipulation\":case\"layout-changes\":case\"touch-events\":case\"mouse-events\":case\"keyboard-events\":return!0;case\"spine-scripting\":default:return!1}}},navigator.epubReadingSystem}destroy(){this.removeListeners()}}s()(f.prototype),e.a=f},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Underline=e.Highlight=e.Mark=e.Pane=void 0;var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}(),s=o(i(49)),r=o(i(50));function o(t){return t&&t.__esModule?t:{default:t}}function a(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function h(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function l(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.Pane=function(){function t(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.body;l(this,t),this.target=e,this.element=s.default.createElement(\"svg\"),this.marks=[],this.element.style.position=\"absolute\",this.element.setAttribute(\"pointer-events\",\"none\"),r.default.proxyMouse(this.target,this.marks),this.container=i,this.container.appendChild(this.element),this.render()}return n(t,[{key:\"addMark\",value:function(t){var e=s.default.createElement(\"g\");return this.element.appendChild(e),t.bind(e,this.container),this.marks.push(t),t.render(),t}},{key:\"removeMark\",value:function(t){var e=this.marks.indexOf(t);if(-1!==e){var i=t.unbind();this.element.removeChild(i),this.marks.splice(e,1)}}},{key:\"render\",value:function(){var t,e,i,n;!function(t,e){t.style.setProperty(\"top\",e.top+\"px\",\"important\"),t.style.setProperty(\"left\",e.left+\"px\",\"important\"),t.style.setProperty(\"height\",e.height+\"px\",\"important\"),t.style.setProperty(\"width\",e.width+\"px\",\"important\")}(this.element,(t=this.target,e=this.container,i=e.getBoundingClientRect(),n=t.getBoundingClientRect(),{top:n.top-i.top,left:n.left-i.left,height:t.scrollHeight,width:t.scrollWidth}));var s=!0,r=!1,o=void 0;try{for(var a,h=this.marks[Symbol.iterator]();!(s=(a=h.next()).done);s=!0){a.value.render()}}catch(t){r=!0,o=t}finally{try{!s&&h.return&&h.return()}finally{if(r)throw o}}}}]),t}();var c=e.Mark=function(){function t(){l(this,t),this.element=null}return n(t,[{key:\"bind\",value:function(t,e){this.element=t,this.container=e}},{key:\"unbind\",value:function(){var t=this.element;return this.element=null,t}},{key:\"render\",value:function(){}},{key:\"dispatchEvent\",value:function(t){this.element&&this.element.dispatchEvent(t)}},{key:\"getBoundingClientRect\",value:function(){return this.element.getBoundingClientRect()}},{key:\"getClientRects\",value:function(){for(var t=[],e=this.element.firstChild;e;)t.push(e.getBoundingClientRect()),e=e.nextSibling;return t}},{key:\"filteredRanges\",value:function(){var t=Array.from(this.range.getClientRects());return t.filter((function(e){for(var i=0;i<t.length;i++){if(t[i]===e)return!0;if(n=t[i],(s=e).right<=n.right&&s.left>=n.left&&s.top>=n.top&&s.bottom<=n.bottom)return!1}var n,s;return!0}))}}]),t}(),u=e.Highlight=function(t){function e(t,i,n,s){l(this,e);var r=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return r.range=t,r.className=i,r.data=n||{},r.attributes=s||{},r}return h(e,t),n(e,[{key:\"bind\",value:function(t,i){for(var n in function t(e,i,n){null===e&&(e=Function.prototype);var s=Object.getOwnPropertyDescriptor(e,i);if(void 0===s){var r=Object.getPrototypeOf(e);return null===r?void 0:t(r,i,n)}if(\"value\"in s)return s.value;var o=s.get;return void 0!==o?o.call(n):void 0}(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),\"bind\",this).call(this,t,i),this.data)this.data.hasOwnProperty(n)&&(this.element.dataset[n]=this.data[n]);for(var n in this.attributes)this.attributes.hasOwnProperty(n)&&this.element.setAttribute(n,this.attributes[n]);this.className&&this.element.classList.add(this.className)}},{key:\"render\",value:function(){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);for(var t=this.element.ownerDocument.createDocumentFragment(),e=this.filteredRanges(),i=this.element.getBoundingClientRect(),n=this.container.getBoundingClientRect(),r=0,o=e.length;r<o;r++){var a=e[r],h=s.default.createElement(\"rect\");h.setAttribute(\"x\",a.left-i.left+n.left),h.setAttribute(\"y\",a.top-i.top+n.top),h.setAttribute(\"height\",a.height),h.setAttribute(\"width\",a.width),t.appendChild(h)}this.element.appendChild(t)}}]),e}(c);e.Underline=function(t){function e(t,i,n,s){return l(this,e),a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,i,n,s))}return h(e,t),n(e,[{key:\"render\",value:function(){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);for(var t=this.element.ownerDocument.createDocumentFragment(),e=this.filteredRanges(),i=this.element.getBoundingClientRect(),n=this.container.getBoundingClientRect(),r=0,o=e.length;r<o;r++){var a=e[r],h=s.default.createElement(\"rect\");h.setAttribute(\"x\",a.left-i.left+n.left),h.setAttribute(\"y\",a.top-i.top+n.top),h.setAttribute(\"height\",a.height),h.setAttribute(\"width\",a.width),h.setAttribute(\"fill\",\"none\");var l=s.default.createElement(\"line\");l.setAttribute(\"x1\",a.left-i.left+n.left),l.setAttribute(\"x2\",a.left-i.left+n.left+a.width),l.setAttribute(\"y1\",a.top-i.top+n.top+a.height-1),l.setAttribute(\"y2\",a.top-i.top+n.top+a.height-1),l.setAttribute(\"stroke-width\",1),l.setAttribute(\"stroke\",\"black\"),l.setAttribute(\"stroke-linecap\",\"square\"),t.appendChild(h),t.appendChild(l)}this.element.appendChild(t)}}]),e}(u)},function(t,e,i){\"use strict\";function n(t,e){return void 0===e&&(e=Object),e&&\"function\"==typeof e.freeze?e.freeze(t):t}var s=n({HTML:\"text/html\",isHTML:function(t){return t===s.HTML},XML_APPLICATION:\"application/xml\",XML_TEXT:\"text/xml\",XML_XHTML_APPLICATION:\"application/xhtml+xml\",XML_SVG_IMAGE:\"image/svg+xml\"}),r=n({HTML:\"http://www.w3.org/1999/xhtml\",isHTML:function(t){return t===r.HTML},SVG:\"http://www.w3.org/2000/svg\",XML:\"http://www.w3.org/XML/1998/namespace\",XMLNS:\"http://www.w3.org/2000/xmlns/\"});e.freeze=n,e.MIME_TYPE=s,e.NAMESPACE=r},function(t,e,i){var n=i(25);e.DOMImplementation=n.DOMImplementation,e.XMLSerializer=n.XMLSerializer,e.DOMParser=i(46).DOMParser},function(t,e,i){\"use strict\";var n=i(3),s=i.n(n),r=i(0),o=i(6),a=i(2),h=i(9),l=i(1);class c{constructor(t){this.settings=t,this.name=t.layout||\"reflowable\",this._spread=\"none\"!==t.spread,this._minSpreadWidth=t.minSpreadWidth||800,this._evenSpreads=t.evenSpreads||!1,\"scrolled\"===t.flow||\"scrolled-continuous\"===t.flow||\"scrolled-doc\"===t.flow?this._flow=\"scrolled\":this._flow=\"paginated\",this.width=0,this.height=0,this.spreadWidth=0,this.delta=0,this.columnWidth=0,this.gap=0,this.divisor=1,this.props={name:this.name,spread:this._spread,flow:this._flow,width:0,height:0,spreadWidth:0,delta:0,columnWidth:0,gap:0,divisor:1}}flow(t){return void 0!==t&&(this._flow=\"scrolled\"===t||\"scrolled-continuous\"===t||\"scrolled-doc\"===t?\"scrolled\":\"paginated\",this.update({flow:this._flow})),this._flow}spread(t,e){return t&&(this._spread=\"none\"!==t,this.update({spread:this._spread})),e>=0&&(this._minSpreadWidth=e),this._spread}calculate(t,e,i){var n,s,r,o,a=1,h=i||0,l=t,c=e,u=Math.floor(l/12);a=this._spread&&l>=this._minSpreadWidth?2:1,\"reflowable\"!==this.name||\"paginated\"!==this._flow||i>=0||(h=u%2==0?u:u-1),\"pre-paginated\"===this.name&&(h=0),a>1?r=(n=l/a-h)+h:(n=l,r=l),\"pre-paginated\"===this.name&&a>1&&(l=n),s=n*a+h,o=l,this.width=l,this.height=c,this.spreadWidth=s,this.pageWidth=r,this.delta=o,this.columnWidth=n,this.gap=h,this.divisor=a,this.update({width:l,height:c,spreadWidth:s,pageWidth:r,delta:o,columnWidth:n,gap:h,divisor:a})}format(t,e,i){return\"pre-paginated\"===this.name?t.fit(this.columnWidth,this.height,e):\"paginated\"===this._flow?t.columns(this.width,this.height,this.columnWidth,this.gap,this.settings.direction):i&&\"horizontal\"===i?t.size(null,this.height):t.size(this.width,null)}count(t,e){let i,n;return\"pre-paginated\"===this.name?(i=1,n=1):\"paginated\"===this._flow?(e=e||this.delta,i=Math.ceil(t/e),n=i*this.divisor):(e=e||this.height,i=Math.ceil(t/e),n=i),{spreads:i,pages:n}}update(t){if(Object.keys(t).forEach(e=>{this.props[e]===t[e]&&delete t[e]}),Object.keys(t).length>0){let e=Object(r.extend)(this.props,t);this.emit(l.c.LAYOUT.UPDATED,e,t)}}}s()(c.prototype);var u=c,d=i(5);var f=class{constructor(t){this.rendition=t,this._themes={default:{rules:{},url:\"\",serialized:\"\"}},this._overrides={},this._current=\"default\",this._injected=[],this.rendition.hooks.content.register(this.inject.bind(this)),this.rendition.hooks.content.register(this.overrides.bind(this))}register(){if(0!==arguments.length)return 1===arguments.length&&\"object\"==typeof arguments[0]?this.registerThemes(arguments[0]):1===arguments.length&&\"string\"==typeof arguments[0]?this.default(arguments[0]):2===arguments.length&&\"string\"==typeof arguments[1]?this.registerUrl(arguments[0],arguments[1]):2===arguments.length&&\"object\"==typeof arguments[1]?this.registerRules(arguments[0],arguments[1]):void 0}default(t){if(t)return\"string\"==typeof t?this.registerUrl(\"default\",t):\"object\"==typeof t?this.registerRules(\"default\",t):void 0}registerThemes(t){for(var e in t)t.hasOwnProperty(e)&&(\"string\"==typeof t[e]?this.registerUrl(e,t[e]):this.registerRules(e,t[e]))}registerCss(t,e){this._themes[t]={serialized:e},(this._injected[t]||\"default\"==t)&&this.update(t)}registerUrl(t,e){var i=new d.a(e);this._themes[t]={url:i.toString()},(this._injected[t]||\"default\"==t)&&this.update(t)}registerRules(t,e){this._themes[t]={rules:e},(this._injected[t]||\"default\"==t)&&this.update(t)}select(t){var e=this._current;this._current=t,this.update(t),this.rendition.getContents().forEach(i=>{i.removeClass(e),i.addClass(t)})}update(t){this.rendition.getContents().forEach(e=>{this.add(t,e)})}inject(t){var e,i=[],n=this._themes;for(var s in n)!n.hasOwnProperty(s)||s!==this._current&&\"default\"!==s||(((e=n[s]).rules&&Object.keys(e.rules).length>0||e.url&&-1===i.indexOf(e.url))&&this.add(s,t),this._injected.push(s));\"default\"!=this._current&&t.addClass(this._current)}add(t,e){var i=this._themes[t];i&&e&&(i.url?e.addStylesheet(i.url):i.serialized?(e.addStylesheetCss(i.serialized,t),i.injected=!0):i.rules&&(e.addStylesheetRules(i.rules,t),i.injected=!0))}override(t,e,i){var n=this.rendition.getContents();this._overrides[t]={value:e,priority:!0===i},n.forEach(e=>{e.css(t,this._overrides[t].value,this._overrides[t].priority)})}removeOverride(t){var e=this.rendition.getContents();delete this._overrides[t],e.forEach(e=>{e.css(t)})}overrides(t){var e=this._overrides;for(var i in e)e.hasOwnProperty(i)&&t.css(i,e[i].value,e[i].priority)}fontSize(t){this.override(\"font-size\",t)}font(t){this.override(\"font-family\",t,!0)}destroy(){this.rendition=void 0,this._themes=void 0,this._overrides=void 0,this._current=void 0,this._injected=void 0}};i(12);class p{constructor({type:t,cfiRange:e,data:i,sectionIndex:n,cb:s,className:r,styles:o}){this.type=t,this.cfiRange=e,this.data=i,this.sectionIndex=n,this.mark=void 0,this.cb=s,this.className=r,this.styles=o}update(t){this.data=t}attach(t){let e,{cfiRange:i,data:n,type:s,mark:r,cb:o,className:a,styles:h}=this;return\"highlight\"===s?e=t.highlight(i,n,o,a,h):\"underline\"===s?e=t.underline(i,n,o,a,h):\"mark\"===s&&(e=t.mark(i,n,o)),this.mark=e,this.emit(l.c.ANNOTATION.ATTACH,e),e}detach(t){let e,{cfiRange:i,type:n}=this;return t&&(\"highlight\"===n?e=t.unhighlight(i):\"underline\"===n?e=t.ununderline(i):\"mark\"===n&&(e=t.unmark(i))),this.mark=void 0,this.emit(l.c.ANNOTATION.DETACH,e),e}text(){}}s()(p.prototype);var g=class{constructor(t){this.rendition=t,this.highlights=[],this.underlines=[],this.marks=[],this._annotations={},this._annotationsBySectionIndex={},this.rendition.hooks.render.register(this.inject.bind(this)),this.rendition.hooks.unloaded.register(this.clear.bind(this))}add(t,e,i,n,s,r){let o=encodeURI(e+t),h=new a.a(e).spinePos,l=new p({type:t,cfiRange:e,data:i,sectionIndex:h,cb:n,className:s,styles:r});return this._annotations[o]=l,h in this._annotationsBySectionIndex?this._annotationsBySectionIndex[h].push(o):this._annotationsBySectionIndex[h]=[o],this.rendition.views().forEach(t=>{l.sectionIndex===t.index&&l.attach(t)}),l}remove(t,e){let i=encodeURI(t+e);if(i in this._annotations){let t=this._annotations[i];if(e&&t.type!==e)return;this.rendition.views().forEach(e=>{this._removeFromAnnotationBySectionIndex(t.sectionIndex,i),t.sectionIndex===e.index&&t.detach(e)}),delete this._annotations[i]}}_removeFromAnnotationBySectionIndex(t,e){this._annotationsBySectionIndex[t]=this._annotationsAt(t).filter(t=>t!==e)}_annotationsAt(t){return this._annotationsBySectionIndex[t]}highlight(t,e,i,n,s){return this.add(\"highlight\",t,e,i,n,s)}underline(t,e,i,n,s){return this.add(\"underline\",t,e,i,n,s)}mark(t,e,i){return this.add(\"mark\",t,e,i)}each(){return this._annotations.forEach.apply(this._annotations,arguments)}inject(t){let e=t.index;if(e in this._annotationsBySectionIndex){this._annotationsBySectionIndex[e].forEach(e=>{this._annotations[e].attach(t)})}}clear(t){let e=t.index;if(e in this._annotationsBySectionIndex){this._annotationsBySectionIndex[e].forEach(e=>{this._annotations[e].detach(t)})}}show(){}hide(){}},m=i(20),v=i(10),y=i(22);class b{constructor(t,e){this.settings=Object(r.extend)(this.settings||{},{width:null,height:null,ignoreClass:\"\",manager:\"default\",view:\"iframe\",flow:null,layout:null,spread:null,minSpreadWidth:800,stylesheet:null,resizeOnOrientationChange:!0,script:null,snap:!1,defaultDirection:\"ltr\",allowScriptedContent:!1,allowPopups:!1}),Object(r.extend)(this.settings,e),\"object\"==typeof this.settings.manager&&(this.manager=this.settings.manager),this.book=t,this.hooks={},this.hooks.display=new o.a(this),this.hooks.serialize=new o.a(this),this.hooks.content=new o.a(this),this.hooks.unloaded=new o.a(this),this.hooks.layout=new o.a(this),this.hooks.render=new o.a(this),this.hooks.show=new o.a(this),this.hooks.content.register(this.handleLinks.bind(this)),this.hooks.content.register(this.passEvents.bind(this)),this.hooks.content.register(this.adjustImages.bind(this)),this.book.spine.hooks.content.register(this.injectIdentifier.bind(this)),this.settings.stylesheet&&this.book.spine.hooks.content.register(this.injectStylesheet.bind(this)),this.settings.script&&this.book.spine.hooks.content.register(this.injectScript.bind(this)),this.themes=new f(this),this.annotations=new g(this),this.epubcfi=new a.a,this.q=new h.a(this),this.location=void 0,this.q.enqueue(this.book.opened),this.starting=new r.defer,this.started=this.starting.promise,this.q.enqueue(this.start)}setManager(t){this.manager=t}requireManager(t){return\"string\"==typeof t&&\"default\"===t?v.a:\"string\"==typeof t&&\"continuous\"===t?y.a:t}requireView(t){return\"string\"==typeof t&&\"iframe\"===t?m.a:t}start(){switch(this.settings.layout||\"pre-paginated\"!==this.book.package.metadata.layout&&\"true\"!==this.book.displayOptions.fixedLayout||(this.settings.layout=\"pre-paginated\"),this.book.package.metadata.spread){case\"none\":this.settings.spread=\"none\";break;case\"both\":this.settings.spread=!0}this.manager||(this.ViewManager=this.requireManager(this.settings.manager),this.View=this.requireView(this.settings.view),this.manager=new this.ViewManager({view:this.View,queue:this.q,request:this.book.load.bind(this.book),settings:this.settings})),this.direction(this.book.package.metadata.direction||this.settings.defaultDirection),this.settings.globalLayoutProperties=this.determineLayoutProperties(this.book.package.metadata),this.flow(this.settings.globalLayoutProperties.flow),this.layout(this.settings.globalLayoutProperties),this.manager.on(l.c.MANAGERS.ADDED,this.afterDisplayed.bind(this)),this.manager.on(l.c.MANAGERS.REMOVED,this.afterRemoved.bind(this)),this.manager.on(l.c.MANAGERS.RESIZED,this.onResized.bind(this)),this.manager.on(l.c.MANAGERS.ORIENTATION_CHANGE,this.onOrientationChange.bind(this)),this.manager.on(l.c.MANAGERS.SCROLLED,this.reportLocation.bind(this)),this.emit(l.c.RENDITION.STARTED),this.starting.resolve()}attachTo(t){return this.q.enqueue(function(){this.manager.render(t,{width:this.settings.width,height:this.settings.height}),this.emit(l.c.RENDITION.ATTACHED)}.bind(this))}display(t){return this.displaying&&this.displaying.resolve(),this.q.enqueue(this._display,t)}_display(t){if(this.book){this.epubcfi.isCfiString(t);var e,i=new r.defer,n=i.promise;return this.displaying=i,this.book.locations.length()&&Object(r.isFloat)(t)&&(t=this.book.locations.cfiFromPercentage(parseFloat(t))),(e=this.book.spine.get(t))?(this.manager.display(e,t).then(()=>{i.resolve(e),this.displaying=void 0,this.emit(l.c.RENDITION.DISPLAYED,e),this.reportLocation()},t=>{this.emit(l.c.RENDITION.DISPLAY_ERROR,t)}),n):(i.reject(new Error(\"No Section Found\")),n)}}afterDisplayed(t){t.on(l.c.VIEWS.MARK_CLICKED,(e,i)=>this.triggerMarkEvent(e,i,t.contents)),this.hooks.render.trigger(t,this).then(()=>{t.contents?this.hooks.content.trigger(t.contents,this).then(()=>{this.emit(l.c.RENDITION.RENDERED,t.section,t)}):this.emit(l.c.RENDITION.RENDERED,t.section,t)})}afterRemoved(t){this.hooks.unloaded.trigger(t,this).then(()=>{this.emit(l.c.RENDITION.REMOVED,t.section,t)})}onResized(t,e){this.emit(l.c.RENDITION.RESIZED,{width:t.width,height:t.height},e),this.location&&this.location.start&&this.display(e||this.location.start.cfi)}onOrientationChange(t){this.emit(l.c.RENDITION.ORIENTATION_CHANGE,t)}moveTo(t){this.manager.moveTo(t)}resize(t,e,i){t&&(this.settings.width=t),e&&(this.settings.height=e),this.manager.resize(t,e,i)}clear(){this.manager.clear()}next(){return this.q.enqueue(this.manager.next.bind(this.manager)).then(this.reportLocation.bind(this))}prev(){return this.q.enqueue(this.manager.prev.bind(this.manager)).then(this.reportLocation.bind(this))}determineLayoutProperties(t){var e=this.settings.layout||t.layout||\"reflowable\",i=this.settings.spread||t.spread||\"auto\",n=this.settings.orientation||t.orientation||\"auto\",s=this.settings.flow||t.flow||\"auto\",r=t.viewport||\"\",o=this.settings.minSpreadWidth||t.minSpreadWidth||800,a=this.settings.direction||t.direction||\"ltr\";return(0===this.settings.width||this.settings.width>0)&&(0===this.settings.height||this.settings.height),{layout:e,spread:i,orientation:n,flow:s,viewport:r,minSpreadWidth:o,direction:a}}flow(t){var e=t;\"scrolled\"!==t&&\"scrolled-doc\"!==t&&\"scrolled-continuous\"!==t||(e=\"scrolled\"),\"auto\"!==t&&\"paginated\"!==t||(e=\"paginated\"),this.settings.flow=t,this._layout&&this._layout.flow(e),this.manager&&this._layout&&this.manager.applyLayout(this._layout),this.manager&&this.manager.updateFlow(e),this.manager&&this.manager.isRendered()&&this.location&&(this.manager.clear(),this.display(this.location.start.cfi))}layout(t){return t&&(this._layout=new u(t),this._layout.spread(t.spread,this.settings.minSpreadWidth),this._layout.on(l.c.LAYOUT.UPDATED,(t,e)=>{this.emit(l.c.RENDITION.LAYOUT,t,e)})),this.manager&&this._layout&&this.manager.applyLayout(this._layout),this._layout}spread(t,e){this.settings.spread=t,e&&(this.settings.minSpreadWidth=e),this._layout&&this._layout.spread(t,e),this.manager&&this.manager.isRendered()&&this.manager.updateLayout()}direction(t){this.settings.direction=t||\"ltr\",this.manager&&this.manager.direction(this.settings.direction),this.manager&&this.manager.isRendered()&&this.location&&(this.manager.clear(),this.display(this.location.start.cfi))}reportLocation(){return this.q.enqueue(function(){requestAnimationFrame(function(){var t=this.manager.currentLocation();if(t&&t.then&&\"function\"==typeof t.then)t.then(function(t){let e=this.located(t);e&&e.start&&e.end&&(this.location=e,this.emit(l.c.RENDITION.LOCATION_CHANGED,{index:this.location.start.index,href:this.location.start.href,start:this.location.start.cfi,end:this.location.end.cfi,percentage:this.location.start.percentage}),this.emit(l.c.RENDITION.RELOCATED,this.location))}.bind(this));else if(t){let e=this.located(t);if(!e||!e.start||!e.end)return;this.location=e,this.emit(l.c.RENDITION.LOCATION_CHANGED,{index:this.location.start.index,href:this.location.start.href,start:this.location.start.cfi,end:this.location.end.cfi,percentage:this.location.start.percentage}),this.emit(l.c.RENDITION.RELOCATED,this.location)}}.bind(this))}.bind(this))}currentLocation(){var t=this.manager.currentLocation();if(t&&t.then&&\"function\"==typeof t.then)t.then(function(t){return this.located(t)}.bind(this));else if(t){return this.located(t)}}located(t){if(!t.length)return{};let e=t[0],i=t[t.length-1],n={start:{index:e.index,href:e.href,cfi:e.mapping.start,displayed:{page:e.pages[0]||1,total:e.totalPages}},end:{index:i.index,href:i.href,cfi:i.mapping.end,displayed:{page:i.pages[i.pages.length-1]||1,total:i.totalPages}}},s=this.book.locations.locationFromCfi(e.mapping.start),r=this.book.locations.locationFromCfi(i.mapping.end);null!=s&&(n.start.location=s,n.start.percentage=this.book.locations.percentageFromLocation(s)),null!=r&&(n.end.location=r,n.end.percentage=this.book.locations.percentageFromLocation(r));let o=this.book.pageList.pageFromCfi(e.mapping.start),a=this.book.pageList.pageFromCfi(i.mapping.end);return-1!=o&&(n.start.page=o),-1!=a&&(n.end.page=a),i.index===this.book.spine.last().index&&n.end.displayed.page>=n.end.displayed.total&&(n.atEnd=!0),e.index===this.book.spine.first().index&&1===n.start.displayed.page&&(n.atStart=!0),n}destroy(){this.manager&&this.manager.destroy(),this.book=void 0}passEvents(t){l.a.forEach(e=>{t.on(e,e=>this.triggerViewEvent(e,t))}),t.on(l.c.CONTENTS.SELECTED,e=>this.triggerSelectedEvent(e,t))}triggerViewEvent(t,e){this.emit(t.type,t,e)}triggerSelectedEvent(t,e){this.emit(l.c.RENDITION.SELECTED,t,e)}triggerMarkEvent(t,e,i){this.emit(l.c.RENDITION.MARK_CLICKED,t,e,i)}getRange(t,e){var i=new a.a(t),n=this.manager.visible().filter((function(t){if(i.spinePos===t.index)return!0}));if(n.length)return n[0].contents.range(i,e)}adjustImages(t){if(\"pre-paginated\"===this._layout.name)return new Promise((function(t){t()}));let e=t.window.getComputedStyle(t.content,null),i=.95*(t.content.offsetHeight-(parseFloat(e.paddingTop)+parseFloat(e.paddingBottom))),n=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight);return t.addStylesheetRules({img:{\"max-width\":(this._layout.columnWidth?this._layout.columnWidth-n+\"px\":\"100%\")+\"!important\",\"max-height\":i+\"px!important\",\"object-fit\":\"contain\",\"page-break-inside\":\"avoid\",\"break-inside\":\"avoid\",\"box-sizing\":\"border-box\"},svg:{\"max-width\":(this._layout.columnWidth?this._layout.columnWidth-n+\"px\":\"100%\")+\"!important\",\"max-height\":i+\"px!important\",\"page-break-inside\":\"avoid\",\"break-inside\":\"avoid\"}}),new Promise((function(t,e){setTimeout((function(){t()}),1)}))}getContents(){return this.manager?this.manager.getContents():[]}views(){return(this.manager?this.manager.views:void 0)||[]}handleLinks(t){t&&t.on(l.c.CONTENTS.LINK_CLICKED,t=>{let e=this.book.path.relative(t);this.display(e)})}injectStylesheet(t,e){let i=t.createElement(\"link\");i.setAttribute(\"type\",\"text/css\"),i.setAttribute(\"rel\",\"stylesheet\"),i.setAttribute(\"href\",this.settings.stylesheet),t.getElementsByTagName(\"head\")[0].appendChild(i)}injectScript(t,e){let i=t.createElement(\"script\");i.setAttribute(\"type\",\"text/javascript\"),i.setAttribute(\"src\",this.settings.script),i.textContent=\" \",t.getElementsByTagName(\"head\")[0].appendChild(i)}injectIdentifier(t,e){let i=this.book.packaging.metadata.identifier,n=t.createElement(\"meta\");n.setAttribute(\"name\",\"dc.relation.ispartof\"),i&&n.setAttribute(\"content\",i),t.getElementsByTagName(\"head\")[0].appendChild(n)}}s()(b.prototype);e.a=b},function(t,e){var i;i=function(){return this}();try{i=i||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(i=window)}t.exports=i},function(t,e,i){\"use strict\";var n=i(38)();t.exports=function(t){return t!==n&&null!==t}},function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&(\"object\"==e||\"function\"==e)}},function(t,e,i){\"use strict\";var n=i(3),s=i.n(n),r=i(0),o=i(2),a=i(12),h=i(1),l=i(13);class c{constructor(t,e){this.settings=Object(r.extend)({ignoreClass:\"\",axis:void 0,direction:void 0,width:0,height:0,layout:void 0,globalLayoutProperties:{},method:void 0,forceRight:!1,allowScriptedContent:!1,allowPopups:!1},e||{}),this.id=\"epubjs-view-\"+Object(r.uuid)(),this.section=t,this.index=t.index,this.element=this.container(this.settings.axis),this.added=!1,this.displayed=!1,this.rendered=!1,this.fixedWidth=0,this.fixedHeight=0,this.epubcfi=new o.a,this.layout=this.settings.layout,this.pane=void 0,this.highlights={},this.underlines={},this.marks={}}container(t){var e=document.createElement(\"div\");return e.classList.add(\"epub-view\"),e.style.height=\"0px\",e.style.width=\"0px\",e.style.overflow=\"hidden\",e.style.position=\"relative\",e.style.display=\"block\",e.style.flex=t&&\"horizontal\"==t?\"none\":\"initial\",e}create(){return this.iframe||(this.element||(this.element=this.createContainer()),this.iframe=document.createElement(\"iframe\"),this.iframe.id=this.id,this.iframe.scrolling=\"no\",this.iframe.style.overflow=\"hidden\",this.iframe.seamless=\"seamless\",this.iframe.style.border=\"none\",this.iframe.sandbox=\"allow-same-origin\",this.settings.allowScriptedContent&&(this.iframe.sandbox+=\" allow-scripts\"),this.settings.allowPopups&&(this.iframe.sandbox+=\" allow-popups\"),this.iframe.setAttribute(\"enable-annotation\",\"true\"),this.resizing=!0,this.element.style.visibility=\"hidden\",this.iframe.style.visibility=\"hidden\",this.iframe.style.width=\"0\",this.iframe.style.height=\"0\",this._width=0,this._height=0,this.element.setAttribute(\"ref\",this.index),this.added=!0,this.elementBounds=Object(r.bounds)(this.element),\"srcdoc\"in this.iframe?this.supportsSrcdoc=!0:this.supportsSrcdoc=!1,this.settings.method||(this.settings.method=this.supportsSrcdoc?\"srcdoc\":\"write\")),this.iframe}render(t,e){return this.create(),this.size(),this.sectionRender||(this.sectionRender=this.section.render(t)),this.sectionRender.then(function(t){return this.load(t)}.bind(this)).then(function(){let t,e=this.contents.writingMode();return t=\"scrolled\"===this.settings.flow?0===e.indexOf(\"vertical\")?\"horizontal\":\"vertical\":0===e.indexOf(\"vertical\")?\"vertical\":\"horizontal\",0===e.indexOf(\"vertical\")&&\"paginated\"===this.settings.flow&&(this.layout.delta=this.layout.height),this.setAxis(t),this.emit(h.c.VIEWS.AXIS,t),this.setWritingMode(e),this.emit(h.c.VIEWS.WRITING_MODE,e),this.layout.format(this.contents,this.section,this.axis),this.addListeners(),new Promise((t,e)=>{this.expand(),this.settings.forceRight&&(this.element.style.marginLeft=this.width()+\"px\"),t()})}.bind(this),function(t){return this.emit(h.c.VIEWS.LOAD_ERROR,t),new Promise((e,i)=>{i(t)})}.bind(this)).then(function(){this.emit(h.c.VIEWS.RENDERED,this.section)}.bind(this))}reset(){this.iframe&&(this.iframe.style.width=\"0\",this.iframe.style.height=\"0\",this._width=0,this._height=0,this._textWidth=void 0,this._contentWidth=void 0,this._textHeight=void 0,this._contentHeight=void 0),this._needsReframe=!0}size(t,e){var i=t||this.settings.width,n=e||this.settings.height;\"pre-paginated\"===this.layout.name?this.lock(\"both\",i,n):\"horizontal\"===this.settings.axis?this.lock(\"height\",i,n):this.lock(\"width\",i,n),this.settings.width=i,this.settings.height=n}lock(t,e,i){var n,s=Object(r.borders)(this.element);n=this.iframe?Object(r.borders)(this.iframe):{width:0,height:0},\"width\"==t&&Object(r.isNumber)(e)&&(this.lockedWidth=e-s.width-n.width),\"height\"==t&&Object(r.isNumber)(i)&&(this.lockedHeight=i-s.height-n.height),\"both\"===t&&Object(r.isNumber)(e)&&Object(r.isNumber)(i)&&(this.lockedWidth=e-s.width-n.width,this.lockedHeight=i-s.height-n.height),this.displayed&&this.iframe&&this.expand()}expand(t){var e,i=this.lockedWidth,n=this.lockedHeight;this.iframe&&!this._expanding&&(this._expanding=!0,\"pre-paginated\"===this.layout.name?(i=this.layout.columnWidth,n=this.layout.height):\"horizontal\"===this.settings.axis?((i=this.contents.textWidth())%this.layout.pageWidth>0&&(i=Math.ceil(i/this.layout.pageWidth)*this.layout.pageWidth),this.settings.forceEvenPages&&(e=i/this.layout.pageWidth,this.layout.divisor>1&&\"reflowable\"===this.layout.name&&e%2>0&&(i+=this.layout.pageWidth))):\"vertical\"===this.settings.axis&&(n=this.contents.textHeight(),\"paginated\"===this.settings.flow&&n%this.layout.height>0&&(n=Math.ceil(n/this.layout.height)*this.layout.height)),(this._needsReframe||i!=this._width||n!=this._height)&&this.reframe(i,n),this._expanding=!1)}reframe(t,e){var i;Object(r.isNumber)(t)&&(this.element.style.width=t+\"px\",this.iframe.style.width=t+\"px\",this._width=t),Object(r.isNumber)(e)&&(this.element.style.height=e+\"px\",this.iframe.style.height=e+\"px\",this._height=e),i={width:t,height:e,widthDelta:this.prevBounds?t-this.prevBounds.width:t,heightDelta:this.prevBounds?e-this.prevBounds.height:e},this.pane&&this.pane.render(),requestAnimationFrame(()=>{let t;for(let e in this.marks)this.marks.hasOwnProperty(e)&&(t=this.marks[e],this.placeMark(t.element,t.range))}),this.onResize(this,i),this.emit(h.c.VIEWS.RESIZED,i),this.prevBounds=i,this.elementBounds=Object(r.bounds)(this.element)}load(t){var e=new r.defer,i=e.promise;if(!this.iframe)return e.reject(new Error(\"No Iframe Available\")),i;if(this.iframe.onload=function(t){this.onLoad(t,e)}.bind(this),\"blobUrl\"===this.settings.method)this.blobUrl=Object(r.createBlobUrl)(t,\"application/xhtml+xml\"),this.iframe.src=this.blobUrl,this.element.appendChild(this.iframe);else if(\"srcdoc\"===this.settings.method)this.iframe.srcdoc=t,this.element.appendChild(this.iframe);else{if(this.element.appendChild(this.iframe),this.document=this.iframe.contentDocument,!this.document)return e.reject(new Error(\"No Document Available\")),i;if(this.iframe.contentDocument.open(),window.MSApp&&MSApp.execUnsafeLocalFunction){var n=this;MSApp.execUnsafeLocalFunction((function(){n.iframe.contentDocument.write(t)}))}else this.iframe.contentDocument.write(t);this.iframe.contentDocument.close()}return i}onLoad(t,e){this.window=this.iframe.contentWindow,this.document=this.iframe.contentDocument,this.contents=new a.a(this.document,this.document.body,this.section.cfiBase,this.section.index),this.rendering=!1;var i=this.document.querySelector(\"link[rel='canonical']\");i?i.setAttribute(\"href\",this.section.canonical):((i=this.document.createElement(\"link\")).setAttribute(\"rel\",\"canonical\"),i.setAttribute(\"href\",this.section.canonical),this.document.querySelector(\"head\").appendChild(i)),this.contents.on(h.c.CONTENTS.EXPAND,()=>{this.displayed&&this.iframe&&(this.expand(),this.contents&&this.layout.format(this.contents))}),this.contents.on(h.c.CONTENTS.RESIZE,t=>{this.displayed&&this.iframe&&(this.expand(),this.contents&&this.layout.format(this.contents))}),e.resolve(this.contents)}setLayout(t){this.layout=t,this.contents&&(this.layout.format(this.contents),this.expand())}setAxis(t){this.settings.axis=t,this.element.style.flex=\"horizontal\"==t?\"none\":\"initial\",this.size()}setWritingMode(t){this.writingMode=t}addListeners(){}removeListeners(t){}display(t){var e=new r.defer;return this.displayed?e.resolve(this):this.render(t).then(function(){this.emit(h.c.VIEWS.DISPLAYED,this),this.onDisplayed(this),this.displayed=!0,e.resolve(this)}.bind(this),(function(t){e.reject(t,this)})),e.promise}show(){this.element.style.visibility=\"visible\",this.iframe&&(this.iframe.style.visibility=\"visible\",this.iframe.style.transform=\"translateZ(0)\",this.iframe.offsetWidth,this.iframe.style.transform=null),this.emit(h.c.VIEWS.SHOWN,this)}hide(){this.element.style.visibility=\"hidden\",this.iframe.style.visibility=\"hidden\",this.stopExpanding=!0,this.emit(h.c.VIEWS.HIDDEN,this)}offset(){return{top:this.element.offsetTop,left:this.element.offsetLeft}}width(){return this._width}height(){return this._height}position(){return this.element.getBoundingClientRect()}locationOf(t){this.iframe.getBoundingClientRect();var e=this.contents.locationOf(t,this.settings.ignoreClass);return{left:e.left,top:e.top}}onDisplayed(t){}onResize(t,e){}bounds(t){return!t&&this.elementBounds||(this.elementBounds=Object(r.bounds)(this.element)),this.elementBounds}highlight(t,e={},i,n=\"epubjs-hl\",s={}){if(!this.contents)return;const r=Object.assign({fill:\"yellow\",\"fill-opacity\":\"0.3\",\"mix-blend-mode\":\"multiply\"},s);let o=this.contents.range(t),a=()=>{this.emit(h.c.VIEWS.MARK_CLICKED,t,e)};e.epubcfi=t,this.pane||(this.pane=new l.Pane(this.iframe,this.element));let c=new l.Highlight(o,n,e,r),u=this.pane.addMark(c);return this.highlights[t]={mark:u,element:u.element,listeners:[a,i]},u.element.setAttribute(\"ref\",n),u.element.addEventListener(\"click\",a),u.element.addEventListener(\"touchstart\",a),i&&(u.element.addEventListener(\"click\",i),u.element.addEventListener(\"touchstart\",i)),u}underline(t,e={},i,n=\"epubjs-ul\",s={}){if(!this.contents)return;const r=Object.assign({stroke:\"black\",\"stroke-opacity\":\"0.3\",\"mix-blend-mode\":\"multiply\"},s);let o=this.contents.range(t),a=()=>{this.emit(h.c.VIEWS.MARK_CLICKED,t,e)};e.epubcfi=t,this.pane||(this.pane=new l.Pane(this.iframe,this.element));let c=new l.Underline(o,n,e,r),u=this.pane.addMark(c);return this.underlines[t]={mark:u,element:u.element,listeners:[a,i]},u.element.setAttribute(\"ref\",n),u.element.addEventListener(\"click\",a),u.element.addEventListener(\"touchstart\",a),i&&(u.element.addEventListener(\"click\",i),u.element.addEventListener(\"touchstart\",i)),u}mark(t,e={},i){if(!this.contents)return;if(t in this.marks){return this.marks[t]}let n=this.contents.range(t);if(!n)return;let s=n.commonAncestorContainer,r=1===s.nodeType?s:s.parentNode,o=i=>{this.emit(h.c.VIEWS.MARK_CLICKED,t,e)};n.collapsed&&1===s.nodeType?(n=new Range,n.selectNodeContents(s)):n.collapsed&&(n=new Range,n.selectNodeContents(r));let a=this.document.createElement(\"a\");return a.setAttribute(\"ref\",\"epubjs-mk\"),a.style.position=\"absolute\",a.dataset.epubcfi=t,e&&Object.keys(e).forEach(t=>{a.dataset[t]=e[t]}),i&&(a.addEventListener(\"click\",i),a.addEventListener(\"touchstart\",i)),a.addEventListener(\"click\",o),a.addEventListener(\"touchstart\",o),this.placeMark(a,n),this.element.appendChild(a),this.marks[t]={element:a,range:n,listeners:[o,i]},r}placeMark(t,e){let i,n,s;if(\"pre-paginated\"===this.layout.name||\"horizontal\"!==this.settings.axis){let t=e.getBoundingClientRect();i=t.top,n=t.right}else{let t,o=e.getClientRects();for(var r=0;r!=o.length;r++)t=o[r],(!s||t.left<s)&&(s=t.left,n=Math.ceil(s/this.layout.props.pageWidth)*this.layout.props.pageWidth-this.layout.gap/2,i=t.top)}t.style.top=i+\"px\",t.style.left=n+\"px\"}unhighlight(t){let e;t in this.highlights&&(e=this.highlights[t],this.pane.removeMark(e.mark),e.listeners.forEach(t=>{t&&(e.element.removeEventListener(\"click\",t),e.element.removeEventListener(\"touchstart\",t))}),delete this.highlights[t])}ununderline(t){let e;t in this.underlines&&(e=this.underlines[t],this.pane.removeMark(e.mark),e.listeners.forEach(t=>{t&&(e.element.removeEventListener(\"click\",t),e.element.removeEventListener(\"touchstart\",t))}),delete this.underlines[t])}unmark(t){let e;t in this.marks&&(e=this.marks[t],this.element.removeChild(e.element),e.listeners.forEach(t=>{t&&(e.element.removeEventListener(\"click\",t),e.element.removeEventListener(\"touchstart\",t))}),delete this.marks[t])}destroy(){for(let t in this.highlights)this.unhighlight(t);for(let t in this.underlines)this.ununderline(t);for(let t in this.marks)this.unmark(t);this.blobUrl&&Object(r.revokeBlobUrl)(this.blobUrl),this.displayed&&(this.displayed=!1,this.removeListeners(),this.contents.destroy(),this.stopExpanding=!0,this.element.removeChild(this.iframe),this.pane&&(this.pane.element.remove(),this.pane=void 0),this.iframe=void 0,this.contents=void 0,this._textWidth=null,this._textHeight=null,this._width=null,this._height=null)}}s()(c.prototype),e.a=c},function(t,e,i){var n=i(19),s=i(51),r=i(53),o=Math.max,a=Math.min;t.exports=function(t,e,i){var h,l,c,u,d,f,p=0,g=!1,m=!1,v=!0;if(\"function\"!=typeof t)throw new TypeError(\"Expected a function\");function y(e){var i=h,n=l;return h=l=void 0,p=e,u=t.apply(n,i)}function b(t){return p=t,d=setTimeout(x,e),g?y(t):u}function w(t){var i=t-f;return void 0===f||i>=e||i<0||m&&t-p>=c}function x(){var t=s();if(w(t))return E(t);d=setTimeout(x,function(t){var i=e-(t-f);return m?a(i,c-(t-p)):i}(t))}function E(t){return d=void 0,v&&h?y(t):(h=l=void 0,u)}function S(){var t=s(),i=w(t);if(h=arguments,l=this,f=t,i){if(void 0===d)return b(f);if(m)return clearTimeout(d),d=setTimeout(x,e),y(f)}return void 0===d&&(d=setTimeout(x,e)),u}return e=r(e)||0,n(i)&&(g=!!i.leading,c=(m=\"maxWait\"in i)?o(r(i.maxWait)||0,e):c,v=\"trailing\"in i?!!i.trailing:v),S.cancel=function(){void 0!==d&&clearTimeout(d),p=0,h=f=l=d=void 0},S.flush=function(){return void 0===d?u:E(s())},S}},function(t,e,i){\"use strict\";var n=i(0),s=i(10),r=i(1),o=i(3),a=i.n(o);const h=Math.PI/2,l={easeOutSine:function(t){return Math.sin(t*h)},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInOutQuint:function(t){return(t/=.5)<1?.5*Math.pow(t,5):.5*(Math.pow(t-2,5)+2)},easeInCubic:function(t){return Math.pow(t,3)}};class c{constructor(t,e){this.settings=Object(n.extend)({duration:80,minVelocity:.2,minDistance:10,easing:l.easeInCubic},e||{}),this.supportsTouch=this.supportsTouch(),this.supportsTouch&&this.setup(t)}setup(t){this.manager=t,this.layout=this.manager.layout,this.fullsize=this.manager.settings.fullsize,this.fullsize?(this.element=this.manager.stage.element,this.scroller=window,this.disableScroll()):(this.element=this.manager.stage.container,this.scroller=this.element,this.element.style.WebkitOverflowScrolling=\"touch\"),this.manager.settings.offset=this.layout.width,this.manager.settings.afterScrolledTimeout=2*this.settings.duration,this.isVertical=\"vertical\"===this.manager.settings.axis,this.manager.isPaginated&&!this.isVertical&&(this.touchCanceler=!1,this.resizeCanceler=!1,this.snapping=!1,this.scrollLeft,this.scrollTop,this.startTouchX=void 0,this.startTouchY=void 0,this.startTime=void 0,this.endTouchX=void 0,this.endTouchY=void 0,this.endTime=void 0,this.addListeners())}supportsTouch(){return!!(\"ontouchstart\"in window||window.DocumentTouch&&document instanceof DocumentTouch)}disableScroll(){this.element.style.overflow=\"hidden\"}enableScroll(){this.element.style.overflow=\"\"}addListeners(){this._onResize=this.onResize.bind(this),window.addEventListener(\"resize\",this._onResize),this._onScroll=this.onScroll.bind(this),this.scroller.addEventListener(\"scroll\",this._onScroll),this._onTouchStart=this.onTouchStart.bind(this),this.scroller.addEventListener(\"touchstart\",this._onTouchStart,{passive:!0}),this.on(\"touchstart\",this._onTouchStart),this._onTouchMove=this.onTouchMove.bind(this),this.scroller.addEventListener(\"touchmove\",this._onTouchMove,{passive:!0}),this.on(\"touchmove\",this._onTouchMove),this._onTouchEnd=this.onTouchEnd.bind(this),this.scroller.addEventListener(\"touchend\",this._onTouchEnd,{passive:!0}),this.on(\"touchend\",this._onTouchEnd),this._afterDisplayed=this.afterDisplayed.bind(this),this.manager.on(r.c.MANAGERS.ADDED,this._afterDisplayed)}removeListeners(){window.removeEventListener(\"resize\",this._onResize),this._onResize=void 0,this.scroller.removeEventListener(\"scroll\",this._onScroll),this._onScroll=void 0,this.scroller.removeEventListener(\"touchstart\",this._onTouchStart,{passive:!0}),this.off(\"touchstart\",this._onTouchStart),this._onTouchStart=void 0,this.scroller.removeEventListener(\"touchmove\",this._onTouchMove,{passive:!0}),this.off(\"touchmove\",this._onTouchMove),this._onTouchMove=void 0,this.scroller.removeEventListener(\"touchend\",this._onTouchEnd,{passive:!0}),this.off(\"touchend\",this._onTouchEnd),this._onTouchEnd=void 0,this.manager.off(r.c.MANAGERS.ADDED,this._afterDisplayed),this._afterDisplayed=void 0}afterDisplayed(t){let e=t.contents;[\"touchstart\",\"touchmove\",\"touchend\"].forEach(t=>{e.on(t,t=>this.triggerViewEvent(t,e))})}triggerViewEvent(t,e){this.emit(t.type,t,e)}onScroll(t){this.scrollLeft=this.fullsize?window.scrollX:this.scroller.scrollLeft,this.scrollTop=this.fullsize?window.scrollY:this.scroller.scrollTop}onResize(t){this.resizeCanceler=!0}onTouchStart(t){let{screenX:e,screenY:i}=t.touches[0];this.fullsize&&this.enableScroll(),this.touchCanceler=!0,this.startTouchX||(this.startTouchX=e,this.startTouchY=i,this.startTime=this.now()),this.endTouchX=e,this.endTouchY=i,this.endTime=this.now()}onTouchMove(t){let{screenX:e,screenY:i}=t.touches[0],n=Math.abs(i-this.endTouchY);this.touchCanceler=!0,!this.fullsize&&n<10&&(this.element.scrollLeft-=e-this.endTouchX),this.endTouchX=e,this.endTouchY=i,this.endTime=this.now()}onTouchEnd(t){this.fullsize&&this.disableScroll(),this.touchCanceler=!1;let e=this.wasSwiped();0!==e?this.snap(e):this.snap(),this.startTouchX=void 0,this.startTouchY=void 0,this.startTime=void 0,this.endTouchX=void 0,this.endTouchY=void 0,this.endTime=void 0}wasSwiped(){let t=this.layout.pageWidth*this.layout.divisor,e=this.endTouchX-this.startTouchX,i=Math.abs(e),n=e/(this.endTime-this.startTime),s=this.settings.minVelocity;return i<=this.settings.minDistance||i>=t?0:n>s?-1:n<-s?1:void 0}needsSnap(){return this.scrollLeft%(this.layout.pageWidth*this.layout.divisor)!=0}snap(t=0){let e=this.scrollLeft,i=this.layout.pageWidth*this.layout.divisor,n=Math.round(e/i)*i;return t&&(n+=t*i),this.smoothScrollTo(n)}smoothScrollTo(t){const e=new n.defer,i=this.scrollLeft,s=this.now(),r=this.settings.duration,o=this.settings.easing;return this.snapping=!0,function n(){const a=this.now(),h=Math.min(1,(a-s)/r);if(o(h),this.touchCanceler||this.resizeCanceler)return this.resizeCanceler=!1,this.snapping=!1,void e.resolve();h<1?(window.requestAnimationFrame(n.bind(this)),this.scrollTo(i+(t-i)*h,0)):(this.scrollTo(t,0),this.snapping=!1,e.resolve())}.call(this),e.promise}scrollTo(t=0,e=0){this.fullsize?window.scroll(t,e):(this.scroller.scrollLeft=t,this.scroller.scrollTop=e)}now(){return\"now\"in window.performance?performance.now():(new Date).getTime()}destroy(){this.scroller&&(this.fullsize&&this.enableScroll(),this.removeListeners(),this.scroller=void 0)}}a()(c.prototype);var u=c,d=i(21),f=i.n(d);class p extends s.a{constructor(t){super(t),this.name=\"continuous\",this.settings=Object(n.extend)(this.settings||{},{infinite:!0,overflow:void 0,axis:void 0,writingMode:void 0,flow:\"scrolled\",offset:500,offsetDelta:250,width:void 0,height:void 0,snap:!1,afterScrolledTimeout:10,allowScriptedContent:!1,allowPopups:!1}),Object(n.extend)(this.settings,t.settings||{}),\"undefined\"!=t.settings.gap&&0===t.settings.gap&&(this.settings.gap=t.settings.gap),this.viewSettings={ignoreClass:this.settings.ignoreClass,axis:this.settings.axis,flow:this.settings.flow,layout:this.layout,width:0,height:0,forceEvenPages:!1,allowScriptedContent:this.settings.allowScriptedContent,allowPopups:this.settings.allowPopups},this.scrollTop=0,this.scrollLeft=0}display(t,e){return s.a.prototype.display.call(this,t,e).then(function(){return this.fill()}.bind(this))}fill(t){var e=t||new n.defer;return this.q.enqueue(()=>this.check()).then(t=>{t?this.fill(e):e.resolve()}),e.promise}moveTo(t){var e=0,i=0;this.isPaginated?(e=Math.floor(t.left/this.layout.delta)*this.layout.delta,this.settings.offsetDelta):(i=t.top,t.top,this.settings.offsetDelta),(e>0||i>0)&&this.scrollBy(e,i,!0)}afterResized(t){this.emit(r.c.MANAGERS.RESIZE,t.section)}removeShownListeners(t){t.onDisplayed=function(){}}add(t){var e=this.createView(t);return this.views.append(e),e.on(r.c.VIEWS.RESIZED,t=>{e.expanded=!0}),e.on(r.c.VIEWS.AXIS,t=>{this.updateAxis(t)}),e.on(r.c.VIEWS.WRITING_MODE,t=>{this.updateWritingMode(t)}),e.onDisplayed=this.afterDisplayed.bind(this),e.onResize=this.afterResized.bind(this),e.display(this.request)}append(t){var e=this.createView(t);return e.on(r.c.VIEWS.RESIZED,t=>{e.expanded=!0}),e.on(r.c.VIEWS.AXIS,t=>{this.updateAxis(t)}),e.on(r.c.VIEWS.WRITING_MODE,t=>{this.updateWritingMode(t)}),this.views.append(e),e.onDisplayed=this.afterDisplayed.bind(this),e}prepend(t){var e=this.createView(t);return e.on(r.c.VIEWS.RESIZED,t=>{this.counter(t),e.expanded=!0}),e.on(r.c.VIEWS.AXIS,t=>{this.updateAxis(t)}),e.on(r.c.VIEWS.WRITING_MODE,t=>{this.updateWritingMode(t)}),this.views.prepend(e),e.onDisplayed=this.afterDisplayed.bind(this),e}counter(t){\"vertical\"===this.settings.axis?this.scrollBy(0,t.heightDelta,!0):this.scrollBy(t.widthDelta,0,!0)}update(t){for(var e,i=this.bounds(),s=this.views.all(),r=s.length,o=[],a=void 0!==t?t:this.settings.offset||0,h=new n.defer,l=[],c=0;c<r;c++)if(e=s[c],!0===this.isVisible(e,a,a,i)){if(e.displayed)e.show();else{let t=e.display(this.request).then((function(t){t.show()}),t=>{e.hide()});l.push(t)}o.push(e)}else this.q.enqueue(e.destroy.bind(e)),clearTimeout(this.trimTimeout),this.trimTimeout=setTimeout(function(){this.q.enqueue(this.trim.bind(this))}.bind(this),250);return l.length?Promise.all(l).catch(t=>{h.reject(t)}):(h.resolve(),h.promise)}check(t,e){var i=new n.defer,s=[],r=\"horizontal\"===this.settings.axis,o=this.settings.offset||0;t&&r&&(o=t),e&&!r&&(o=e);var a=this._bounds;let h=r?this.scrollLeft:this.scrollTop,l=r?Math.floor(a.width):a.height,c=r?this.container.scrollWidth:this.container.scrollHeight,u=this.writingMode&&0===this.writingMode.indexOf(\"vertical\")?\"vertical\":\"horizontal\",d=this.settings.rtlScrollType,f=\"rtl\"===this.settings.direction;this.settings.fullsize?(r&&f&&\"negative\"===d||!r&&f&&\"default\"===d)&&(h*=-1):(f&&\"default\"===d&&\"horizontal\"===u&&(h=c-l-h),f&&\"negative\"===d&&\"horizontal\"===u&&(h*=-1));let p=()=>{let t=this.views.first(),e=t&&t.section.prev();e&&s.push(this.prepend(e))},g=h-o;h+l+o>=c&&(()=>{let t=this.views.last(),e=t&&t.section.next();e&&s.push(this.append(e))})(),g<0&&p();let m=s.map(t=>t.display(this.request));return s.length?Promise.all(m).then(()=>this.check()).then(()=>this.update(o),t=>t):(this.q.enqueue(function(){this.update()}.bind(this)),i.resolve(!1),i.promise)}trim(){for(var t=new n.defer,e=this.views.displayed(),i=e[0],s=e[e.length-1],r=this.views.indexOf(i),o=this.views.indexOf(s),a=this.views.slice(0,r),h=this.views.slice(o+1),l=0;l<a.length-1;l++)this.erase(a[l],a);for(var c=1;c<h.length;c++)this.erase(h[c]);return t.resolve(),t.promise}erase(t,e){var i,n;this.settings.fullsize?(i=window.scrollY,n=window.scrollX):(i=this.container.scrollTop,n=this.container.scrollLeft);var s=t.bounds();this.views.remove(t),e&&(\"vertical\"===this.settings.axis?this.scrollTo(0,i-s.height,!0):\"rtl\"===this.settings.direction?this.settings.fullsize?this.scrollTo(n+Math.floor(s.width),0,!0):this.scrollTo(n,0,!0):this.scrollTo(n-Math.floor(s.width),0,!0))}addEventListeners(t){window.addEventListener(\"unload\",function(t){this.ignore=!0,this.destroy()}.bind(this)),this.addScrollListeners(),this.isPaginated&&this.settings.snap&&(this.snapper=new u(this,this.settings.snap&&\"object\"==typeof this.settings.snap&&this.settings.snap))}addScrollListeners(){var t;this.tick=n.requestAnimationFrame;let e=\"rtl\"===this.settings.direction&&\"default\"===this.settings.rtlScrollType?-1:1;this.scrollDeltaVert=0,this.scrollDeltaHorz=0,this.settings.fullsize?(t=window,this.scrollTop=window.scrollY*e,this.scrollLeft=window.scrollX*e):(t=this.container,this.scrollTop=this.container.scrollTop,this.scrollLeft=this.container.scrollLeft),this._onScroll=this.onScroll.bind(this),t.addEventListener(\"scroll\",this._onScroll),this._scrolled=f()(this.scrolled.bind(this),30),this.didScroll=!1}removeEventListeners(){(this.settings.fullsize?window:this.container).removeEventListener(\"scroll\",this._onScroll),this._onScroll=void 0}onScroll(){let t,e,i=\"rtl\"===this.settings.direction&&\"default\"===this.settings.rtlScrollType?-1:1;this.settings.fullsize?(t=window.scrollY*i,e=window.scrollX*i):(t=this.container.scrollTop,e=this.container.scrollLeft),this.scrollTop=t,this.scrollLeft=e,this.ignore?this.ignore=!1:this._scrolled(),this.scrollDeltaVert+=Math.abs(t-this.prevScrollTop),this.scrollDeltaHorz+=Math.abs(e-this.prevScrollLeft),this.prevScrollTop=t,this.prevScrollLeft=e,clearTimeout(this.scrollTimeout),this.scrollTimeout=setTimeout(function(){this.scrollDeltaVert=0,this.scrollDeltaHorz=0}.bind(this),150),clearTimeout(this.afterScrolled),this.didScroll=!1}scrolled(){this.q.enqueue(function(){return this.check()}.bind(this)),this.emit(r.c.MANAGERS.SCROLL,{top:this.scrollTop,left:this.scrollLeft}),clearTimeout(this.afterScrolled),this.afterScrolled=setTimeout(function(){this.snapper&&this.snapper.supportsTouch&&this.snapper.needsSnap()||this.emit(r.c.MANAGERS.SCROLLED,{top:this.scrollTop,left:this.scrollLeft})}.bind(this),this.settings.afterScrolledTimeout)}next(){let t=\"pre-paginated\"===this.layout.props.name&&this.layout.props.spread?2*this.layout.props.delta:this.layout.props.delta;this.views.length&&(this.isPaginated&&\"horizontal\"===this.settings.axis?this.scrollBy(t,0,!0):this.scrollBy(0,this.layout.height,!0),this.q.enqueue(function(){return this.check()}.bind(this)))}prev(){let t=\"pre-paginated\"===this.layout.props.name&&this.layout.props.spread?2*this.layout.props.delta:this.layout.props.delta;this.views.length&&(this.isPaginated&&\"horizontal\"===this.settings.axis?this.scrollBy(-t,0,!0):this.scrollBy(0,-this.layout.height,!0),this.q.enqueue(function(){return this.check()}.bind(this)))}updateFlow(t){this.rendered&&this.snapper&&(this.snapper.destroy(),this.snapper=void 0),super.updateFlow(t,\"scroll\"),this.rendered&&this.isPaginated&&this.settings.snap&&(this.snapper=new u(this,this.settings.snap&&\"object\"==typeof this.settings.snap&&this.settings.snap))}destroy(){super.destroy(),this.snapper&&this.snapper.destroy()}}e.a=p},function(t,e,i){(function(e){t.exports=function t(e,i,n){function s(o,a){if(!i[o]){if(!e[o]){if(r)return r(o,!0);var h=new Error(\"Cannot find module '\"+o+\"'\");throw h.code=\"MODULE_NOT_FOUND\",h}var l=i[o]={exports:{}};e[o][0].call(l.exports,(function(t){var i=e[o][1][t];return s(i||t)}),l,l.exports,t,e,i,n)}return i[o].exports}for(var r=!1,o=0;o<n.length;o++)s(n[o]);return s}({1:[function(t,i,n){(function(t){\"use strict\";var e,n,s=t.MutationObserver||t.WebKitMutationObserver;if(s){var r=0,o=new s(c),a=t.document.createTextNode(\"\");o.observe(a,{characterData:!0}),e=function(){a.data=r=++r%2}}else if(t.setImmediate||void 0===t.MessageChannel)e=\"document\"in t&&\"onreadystatechange\"in t.document.createElement(\"script\")?function(){var e=t.document.createElement(\"script\");e.onreadystatechange=function(){c(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},t.document.documentElement.appendChild(e)}:function(){setTimeout(c,0)};else{var h=new t.MessageChannel;h.port1.onmessage=c,e=function(){h.port2.postMessage(0)}}var l=[];function c(){var t,e;n=!0;for(var i=l.length;i;){for(e=l,l=[],t=-1;++t<i;)e[t]();i=l.length}n=!1}i.exports=function(t){1!==l.push(t)||n||e()}}).call(this,void 0!==e?e:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],2:[function(t,e,i){\"use strict\";var n=t(1);function s(){}var r={},o=[\"REJECTED\"],a=[\"FULFILLED\"],h=[\"PENDING\"];function l(t){if(\"function\"!=typeof t)throw new TypeError(\"resolver must be a function\");this.state=h,this.queue=[],this.outcome=void 0,t!==s&&f(this,t)}function c(t,e,i){this.promise=t,\"function\"==typeof e&&(this.onFulfilled=e,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof i&&(this.onRejected=i,this.callRejected=this.otherCallRejected)}function u(t,e,i){n((function(){var n;try{n=e(i)}catch(e){return r.reject(t,e)}n===t?r.reject(t,new TypeError(\"Cannot resolve promise with itself\")):r.resolve(t,n)}))}function d(t){var e=t&&t.then;if(t&&(\"object\"==typeof t||\"function\"==typeof t)&&\"function\"==typeof e)return function(){e.apply(t,arguments)}}function f(t,e){var i=!1;function n(e){i||(i=!0,r.reject(t,e))}function s(e){i||(i=!0,r.resolve(t,e))}var o=p((function(){e(s,n)}));\"error\"===o.status&&n(o.value)}function p(t,e){var i={};try{i.value=t(e),i.status=\"success\"}catch(t){i.status=\"error\",i.value=t}return i}e.exports=l,l.prototype.catch=function(t){return this.then(null,t)},l.prototype.then=function(t,e){if(\"function\"!=typeof t&&this.state===a||\"function\"!=typeof e&&this.state===o)return this;var i=new this.constructor(s);return this.state!==h?u(i,this.state===a?t:e,this.outcome):this.queue.push(new c(i,t,e)),i},c.prototype.callFulfilled=function(t){r.resolve(this.promise,t)},c.prototype.otherCallFulfilled=function(t){u(this.promise,this.onFulfilled,t)},c.prototype.callRejected=function(t){r.reject(this.promise,t)},c.prototype.otherCallRejected=function(t){u(this.promise,this.onRejected,t)},r.resolve=function(t,e){var i=p(d,e);if(\"error\"===i.status)return r.reject(t,i.value);var n=i.value;if(n)f(t,n);else{t.state=a,t.outcome=e;for(var s=-1,o=t.queue.length;++s<o;)t.queue[s].callFulfilled(e)}return t},r.reject=function(t,e){t.state=o,t.outcome=e;for(var i=-1,n=t.queue.length;++i<n;)t.queue[i].callRejected(e);return t},l.resolve=function(t){return t instanceof this?t:r.resolve(new this(s),t)},l.reject=function(t){var e=new this(s);return r.reject(e,t)},l.all=function(t){var e=this;if(\"[object Array]\"!==Object.prototype.toString.call(t))return this.reject(new TypeError(\"must be an array\"));var i=t.length,n=!1;if(!i)return this.resolve([]);for(var o=new Array(i),a=0,h=-1,l=new this(s);++h<i;)c(t[h],h);return l;function c(t,s){e.resolve(t).then((function(t){o[s]=t,++a!==i||n||(n=!0,r.resolve(l,o))}),(function(t){n||(n=!0,r.reject(l,t))}))}},l.race=function(t){var e=this;if(\"[object Array]\"!==Object.prototype.toString.call(t))return this.reject(new TypeError(\"must be an array\"));var i=t.length,n=!1;if(!i)return this.resolve([]);for(var o,a=-1,h=new this(s);++a<i;)o=t[a],e.resolve(o).then((function(t){n||(n=!0,r.resolve(h,t))}),(function(t){n||(n=!0,r.reject(h,t))}));return h}},{1:1}],3:[function(t,i,n){(function(e){\"use strict\";\"function\"!=typeof e.Promise&&(e.Promise=t(2))}).call(this,void 0!==e?e:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{2:2}],4:[function(t,e,i){\"use strict\";var n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},s=function(){try{if(\"undefined\"!=typeof indexedDB)return indexedDB;if(\"undefined\"!=typeof webkitIndexedDB)return webkitIndexedDB;if(\"undefined\"!=typeof mozIndexedDB)return mozIndexedDB;if(\"undefined\"!=typeof OIndexedDB)return OIndexedDB;if(\"undefined\"!=typeof msIndexedDB)return msIndexedDB}catch(t){return}}();function r(t,e){t=t||[],e=e||{};try{return new Blob(t,e)}catch(s){if(\"TypeError\"!==s.name)throw s;for(var i=new(\"undefined\"!=typeof BlobBuilder?BlobBuilder:\"undefined\"!=typeof MSBlobBuilder?MSBlobBuilder:\"undefined\"!=typeof MozBlobBuilder?MozBlobBuilder:WebKitBlobBuilder),n=0;n<t.length;n+=1)i.append(t[n]);return i.getBlob(e.type)}}\"undefined\"==typeof Promise&&t(3);var o=Promise;function a(t,e){e&&t.then((function(t){e(null,t)}),(function(t){e(t)}))}function h(t,e,i){\"function\"==typeof e&&t.then(e),\"function\"==typeof i&&t.catch(i)}function l(t){return\"string\"!=typeof t&&(console.warn(t+\" used as a key, but it is not a string.\"),t=String(t)),t}function c(){if(arguments.length&&\"function\"==typeof arguments[arguments.length-1])return arguments[arguments.length-1]}var u=void 0,d={},f=Object.prototype.toString;function p(t){return\"boolean\"==typeof u?o.resolve(u):function(t){return new o((function(e){var i=t.transaction(\"local-forage-detect-blob-support\",\"readwrite\"),n=r([\"\"]);i.objectStore(\"local-forage-detect-blob-support\").put(n,\"key\"),i.onabort=function(t){t.preventDefault(),t.stopPropagation(),e(!1)},i.oncomplete=function(){var t=navigator.userAgent.match(/Chrome\\/(\\d+)/),i=navigator.userAgent.match(/Edge\\//);e(i||!t||parseInt(t[1],10)>=43)}})).catch((function(){return!1}))}(t).then((function(t){return u=t}))}function g(t){var e=d[t.name],i={};i.promise=new o((function(t,e){i.resolve=t,i.reject=e})),e.deferredOperations.push(i),e.dbReady?e.dbReady=e.dbReady.then((function(){return i.promise})):e.dbReady=i.promise}function m(t){var e=d[t.name].deferredOperations.pop();if(e)return e.resolve(),e.promise}function v(t,e){var i=d[t.name].deferredOperations.pop();if(i)return i.reject(e),i.promise}function y(t,e){return new o((function(i,n){if(d[t.name]=d[t.name]||{forages:[],db:null,dbReady:null,deferredOperations:[]},t.db){if(!e)return i(t.db);g(t),t.db.close()}var r=[t.name];e&&r.push(t.version);var o=s.open.apply(s,r);e&&(o.onupgradeneeded=function(e){var i=o.result;try{i.createObjectStore(t.storeName),e.oldVersion<=1&&i.createObjectStore(\"local-forage-detect-blob-support\")}catch(i){if(\"ConstraintError\"!==i.name)throw i;console.warn('The database \"'+t.name+'\" has been upgraded from version '+e.oldVersion+\" to version \"+e.newVersion+', but the storage \"'+t.storeName+'\" already exists.')}}),o.onerror=function(t){t.preventDefault(),n(o.error)},o.onsuccess=function(){var e=o.result;e.onversionchange=function(t){t.target.close()},i(e),m(t)}}))}function b(t){return y(t,!1)}function w(t){return y(t,!0)}function x(t,e){if(!t.db)return!0;var i=!t.db.objectStoreNames.contains(t.storeName),n=t.version<t.db.version,s=t.version>t.db.version;if(n&&(t.version!==e&&console.warn('The database \"'+t.name+\"\\\" can't be downgraded from version \"+t.db.version+\" to version \"+t.version+\".\"),t.version=t.db.version),s||i){if(i){var r=t.db.version+1;r>t.version&&(t.version=r)}return!0}return!1}function E(t){return r([function(t){for(var e=t.length,i=new ArrayBuffer(e),n=new Uint8Array(i),s=0;s<e;s++)n[s]=t.charCodeAt(s);return i}(atob(t.data))],{type:t.type})}function S(t){return t&&t.__local_forage_encoded_blob}function N(t){var e=this,i=e._initReady().then((function(){var t=d[e._dbInfo.name];if(t&&t.dbReady)return t.dbReady}));return h(i,t,t),i}function _(t,e,i,n){void 0===n&&(n=1);try{var s=t.db.transaction(t.storeName,e);i(null,s)}catch(s){if(n>0&&(!t.db||\"InvalidStateError\"===s.name||\"NotFoundError\"===s.name))return o.resolve().then((function(){if(!t.db||\"NotFoundError\"===s.name&&!t.db.objectStoreNames.contains(t.storeName)&&t.version<=t.db.version)return t.db&&(t.version=t.db.version+1),w(t)})).then((function(){return function(t){g(t);for(var e=d[t.name],i=e.forages,n=0;n<i.length;n++){var s=i[n];s._dbInfo.db&&(s._dbInfo.db.close(),s._dbInfo.db=null)}return t.db=null,b(t).then((function(e){return t.db=e,x(t)?w(t):e})).then((function(n){t.db=e.db=n;for(var s=0;s<i.length;s++)i[s]._dbInfo.db=n})).catch((function(e){throw v(t,e),e}))}(t).then((function(){_(t,e,i,n-1)}))})).catch(i);i(s)}}var T={_driver:\"asyncStorage\",_initStorage:function(t){var e=this,i={db:null};if(t)for(var n in t)i[n]=t[n];var s=d[i.name];s||(s={forages:[],db:null,dbReady:null,deferredOperations:[]},d[i.name]=s),s.forages.push(e),e._initReady||(e._initReady=e.ready,e.ready=N);var r=[];function a(){return o.resolve()}for(var h=0;h<s.forages.length;h++){var l=s.forages[h];l!==e&&r.push(l._initReady().catch(a))}var c=s.forages.slice(0);return o.all(r).then((function(){return i.db=s.db,b(i)})).then((function(t){return i.db=t,x(i,e._defaultConfig.version)?w(i):t})).then((function(t){i.db=s.db=t,e._dbInfo=i;for(var n=0;n<c.length;n++){var r=c[n];r!==e&&(r._dbInfo.db=i.db,r._dbInfo.version=i.version)}}))},_support:function(){try{if(!s||!s.open)return!1;var t=\"undefined\"!=typeof openDatabase&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),e=\"function\"==typeof fetch&&-1!==fetch.toString().indexOf(\"[native code\");return(!t||e)&&\"undefined\"!=typeof indexedDB&&\"undefined\"!=typeof IDBKeyRange}catch(t){return!1}}(),iterate:function(t,e){var i=this,n=new o((function(e,n){i.ready().then((function(){_(i._dbInfo,\"readonly\",(function(s,r){if(s)return n(s);try{var o=r.objectStore(i._dbInfo.storeName).openCursor(),a=1;o.onsuccess=function(){var i=o.result;if(i){var n=i.value;S(n)&&(n=E(n));var s=t(n,i.key,a++);void 0!==s?e(s):i.continue()}else e()},o.onerror=function(){n(o.error)}}catch(t){n(t)}}))})).catch(n)}));return a(n,e),n},getItem:function(t,e){var i=this;t=l(t);var n=new o((function(e,n){i.ready().then((function(){_(i._dbInfo,\"readonly\",(function(s,r){if(s)return n(s);try{var o=r.objectStore(i._dbInfo.storeName).get(t);o.onsuccess=function(){var t=o.result;void 0===t&&(t=null),S(t)&&(t=E(t)),e(t)},o.onerror=function(){n(o.error)}}catch(t){n(t)}}))})).catch(n)}));return a(n,e),n},setItem:function(t,e,i){var n=this;t=l(t);var s=new o((function(i,s){var r;n.ready().then((function(){return r=n._dbInfo,\"[object Blob]\"===f.call(e)?p(r.db).then((function(t){return t?e:(i=e,new o((function(t,e){var n=new FileReader;n.onerror=e,n.onloadend=function(e){var n=btoa(e.target.result||\"\");t({__local_forage_encoded_blob:!0,data:n,type:i.type})},n.readAsBinaryString(i)})));var i})):e})).then((function(e){_(n._dbInfo,\"readwrite\",(function(r,o){if(r)return s(r);try{var a=o.objectStore(n._dbInfo.storeName);null===e&&(e=void 0);var h=a.put(e,t);o.oncomplete=function(){void 0===e&&(e=null),i(e)},o.onabort=o.onerror=function(){var t=h.error?h.error:h.transaction.error;s(t)}}catch(t){s(t)}}))})).catch(s)}));return a(s,i),s},removeItem:function(t,e){var i=this;t=l(t);var n=new o((function(e,n){i.ready().then((function(){_(i._dbInfo,\"readwrite\",(function(s,r){if(s)return n(s);try{var o=r.objectStore(i._dbInfo.storeName).delete(t);r.oncomplete=function(){e()},r.onerror=function(){n(o.error)},r.onabort=function(){var t=o.error?o.error:o.transaction.error;n(t)}}catch(t){n(t)}}))})).catch(n)}));return a(n,e),n},clear:function(t){var e=this,i=new o((function(t,i){e.ready().then((function(){_(e._dbInfo,\"readwrite\",(function(n,s){if(n)return i(n);try{var r=s.objectStore(e._dbInfo.storeName).clear();s.oncomplete=function(){t()},s.onabort=s.onerror=function(){var t=r.error?r.error:r.transaction.error;i(t)}}catch(t){i(t)}}))})).catch(i)}));return a(i,t),i},length:function(t){var e=this,i=new o((function(t,i){e.ready().then((function(){_(e._dbInfo,\"readonly\",(function(n,s){if(n)return i(n);try{var r=s.objectStore(e._dbInfo.storeName).count();r.onsuccess=function(){t(r.result)},r.onerror=function(){i(r.error)}}catch(t){i(t)}}))})).catch(i)}));return a(i,t),i},key:function(t,e){var i=this,n=new o((function(e,n){t<0?e(null):i.ready().then((function(){_(i._dbInfo,\"readonly\",(function(s,r){if(s)return n(s);try{var o=r.objectStore(i._dbInfo.storeName),a=!1,h=o.openKeyCursor();h.onsuccess=function(){var i=h.result;i?0===t||a?e(i.key):(a=!0,i.advance(t)):e(null)},h.onerror=function(){n(h.error)}}catch(t){n(t)}}))})).catch(n)}));return a(n,e),n},keys:function(t){var e=this,i=new o((function(t,i){e.ready().then((function(){_(e._dbInfo,\"readonly\",(function(n,s){if(n)return i(n);try{var r=s.objectStore(e._dbInfo.storeName).openKeyCursor(),o=[];r.onsuccess=function(){var e=r.result;e?(o.push(e.key),e.continue()):t(o)},r.onerror=function(){i(r.error)}}catch(t){i(t)}}))})).catch(i)}));return a(i,t),i},dropInstance:function(t,e){e=c.apply(this,arguments);var i=this.config();(t=\"function\"!=typeof t&&t||{}).name||(t.name=t.name||i.name,t.storeName=t.storeName||i.storeName);var n,r=this;if(t.name){var h=t.name===i.name&&r._dbInfo.db,l=h?o.resolve(r._dbInfo.db):b(t).then((function(e){var i=d[t.name],n=i.forages;i.db=e;for(var s=0;s<n.length;s++)n[s]._dbInfo.db=e;return e}));n=t.storeName?l.then((function(e){if(e.objectStoreNames.contains(t.storeName)){var i=e.version+1;g(t);var n=d[t.name],r=n.forages;e.close();for(var a=0;a<r.length;a++){var h=r[a];h._dbInfo.db=null,h._dbInfo.version=i}return new o((function(e,n){var r=s.open(t.name,i);r.onerror=function(t){r.result.close(),n(t)},r.onupgradeneeded=function(){r.result.deleteObjectStore(t.storeName)},r.onsuccess=function(){var t=r.result;t.close(),e(t)}})).then((function(t){n.db=t;for(var e=0;e<r.length;e++){var i=r[e];i._dbInfo.db=t,m(i._dbInfo)}})).catch((function(e){throw(v(t,e)||o.resolve()).catch((function(){})),e}))}})):l.then((function(e){g(t);var i=d[t.name],n=i.forages;e.close();for(var r=0;r<n.length;r++)n[r]._dbInfo.db=null;return new o((function(e,i){var n=s.deleteDatabase(t.name);n.onerror=function(){var t=n.result;t&&t.close(),i(n.error)},n.onblocked=function(){console.warn('dropInstance blocked for database \"'+t.name+'\" until all open connections are closed')},n.onsuccess=function(){var t=n.result;t&&t.close(),e(t)}})).then((function(t){i.db=t;for(var e=0;e<n.length;e++)m(n[e]._dbInfo)})).catch((function(e){throw(v(t,e)||o.resolve()).catch((function(){})),e}))}))}else n=o.reject(\"Invalid arguments\");return a(n,e),n}},C=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",O=/^~~local_forage_type~([^~]+)~/,I=\"__lfsc__:\".length,R=I+\"arbf\".length,k=Object.prototype.toString;function A(t){var e,i,n,s,r,o=.75*t.length,a=t.length,h=0;\"=\"===t[t.length-1]&&(o--,\"=\"===t[t.length-2]&&o--);var l=new ArrayBuffer(o),c=new Uint8Array(l);for(e=0;e<a;e+=4)i=C.indexOf(t[e]),n=C.indexOf(t[e+1]),s=C.indexOf(t[e+2]),r=C.indexOf(t[e+3]),c[h++]=i<<2|n>>4,c[h++]=(15&n)<<4|s>>2,c[h++]=(3&s)<<6|63&r;return l}function L(t){var e,i=new Uint8Array(t),n=\"\";for(e=0;e<i.length;e+=3)n+=C[i[e]>>2],n+=C[(3&i[e])<<4|i[e+1]>>4],n+=C[(15&i[e+1])<<2|i[e+2]>>6],n+=C[63&i[e+2]];return i.length%3==2?n=n.substring(0,n.length-1)+\"=\":i.length%3==1&&(n=n.substring(0,n.length-2)+\"==\"),n}var j={serialize:function(t,e){var i=\"\";if(t&&(i=k.call(t)),t&&(\"[object ArrayBuffer]\"===i||t.buffer&&\"[object ArrayBuffer]\"===k.call(t.buffer))){var n,s=\"__lfsc__:\";t instanceof ArrayBuffer?(n=t,s+=\"arbf\"):(n=t.buffer,\"[object Int8Array]\"===i?s+=\"si08\":\"[object Uint8Array]\"===i?s+=\"ui08\":\"[object Uint8ClampedArray]\"===i?s+=\"uic8\":\"[object Int16Array]\"===i?s+=\"si16\":\"[object Uint16Array]\"===i?s+=\"ur16\":\"[object Int32Array]\"===i?s+=\"si32\":\"[object Uint32Array]\"===i?s+=\"ui32\":\"[object Float32Array]\"===i?s+=\"fl32\":\"[object Float64Array]\"===i?s+=\"fl64\":e(new Error(\"Failed to get type for BinaryArray\"))),e(s+L(n))}else if(\"[object Blob]\"===i){var r=new FileReader;r.onload=function(){var i=\"~~local_forage_type~\"+t.type+\"~\"+L(this.result);e(\"__lfsc__:blob\"+i)},r.readAsArrayBuffer(t)}else try{e(JSON.stringify(t))}catch(i){console.error(\"Couldn't convert value into a JSON string: \",t),e(null,i)}},deserialize:function(t){if(\"__lfsc__:\"!==t.substring(0,I))return JSON.parse(t);var e,i=t.substring(R),n=t.substring(I,R);if(\"blob\"===n&&O.test(i)){var s=i.match(O);e=s[1],i=i.substring(s[0].length)}var o=A(i);switch(n){case\"arbf\":return o;case\"blob\":return r([o],{type:e});case\"si08\":return new Int8Array(o);case\"ui08\":return new Uint8Array(o);case\"uic8\":return new Uint8ClampedArray(o);case\"si16\":return new Int16Array(o);case\"ur16\":return new Uint16Array(o);case\"si32\":return new Int32Array(o);case\"ui32\":return new Uint32Array(o);case\"fl32\":return new Float32Array(o);case\"fl64\":return new Float64Array(o);default:throw new Error(\"Unkown type: \"+n)}},stringToBuffer:A,bufferToString:L};function D(t,e,i,n){t.executeSql(\"CREATE TABLE IF NOT EXISTS \"+e.storeName+\" (id INTEGER PRIMARY KEY, key unique, value)\",[],i,n)}function P(t,e,i,n,s,r){t.executeSql(i,n,s,(function(t,o){o.code===o.SYNTAX_ERR?t.executeSql(\"SELECT name FROM sqlite_master WHERE type='table' AND name = ?\",[e.storeName],(function(t,a){a.rows.length?r(t,o):D(t,e,(function(){t.executeSql(i,n,s,r)}),r)}),r):r(t,o)}),r)}function M(t,e,i,n){var s=this;t=l(t);var r=new o((function(r,o){s.ready().then((function(){void 0===e&&(e=null);var a=e,h=s._dbInfo;h.serializer.serialize(e,(function(e,l){l?o(l):h.db.transaction((function(i){P(i,h,\"INSERT OR REPLACE INTO \"+h.storeName+\" (key, value) VALUES (?, ?)\",[t,e],(function(){r(a)}),(function(t,e){o(e)}))}),(function(e){if(e.code===e.QUOTA_ERR){if(n>0)return void r(M.apply(s,[t,a,i,n-1]));o(e)}}))}))})).catch(o)}));return a(r,i),r}function z(t){return new o((function(e,i){t.transaction((function(n){n.executeSql(\"SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\",[],(function(i,n){for(var s=[],r=0;r<n.rows.length;r++)s.push(n.rows.item(r).name);e({db:t,storeNames:s})}),(function(t,e){i(e)}))}),(function(t){i(t)}))}))}var B={_driver:\"webSQLStorage\",_initStorage:function(t){var e=this,i={db:null};if(t)for(var n in t)i[n]=\"string\"!=typeof t[n]?t[n].toString():t[n];var s=new o((function(t,n){try{i.db=openDatabase(i.name,String(i.version),i.description,i.size)}catch(t){return n(t)}i.db.transaction((function(s){D(s,i,(function(){e._dbInfo=i,t()}),(function(t,e){n(e)}))}),n)}));return i.serializer=j,s},_support:\"function\"==typeof openDatabase,iterate:function(t,e){var i=this,n=new o((function(e,n){i.ready().then((function(){var s=i._dbInfo;s.db.transaction((function(i){P(i,s,\"SELECT * FROM \"+s.storeName,[],(function(i,n){for(var r=n.rows,o=r.length,a=0;a<o;a++){var h=r.item(a),l=h.value;if(l&&(l=s.serializer.deserialize(l)),void 0!==(l=t(l,h.key,a+1)))return void e(l)}e()}),(function(t,e){n(e)}))}))})).catch(n)}));return a(n,e),n},getItem:function(t,e){var i=this;t=l(t);var n=new o((function(e,n){i.ready().then((function(){var s=i._dbInfo;s.db.transaction((function(i){P(i,s,\"SELECT * FROM \"+s.storeName+\" WHERE key = ? LIMIT 1\",[t],(function(t,i){var n=i.rows.length?i.rows.item(0).value:null;n&&(n=s.serializer.deserialize(n)),e(n)}),(function(t,e){n(e)}))}))})).catch(n)}));return a(n,e),n},setItem:function(t,e,i){return M.apply(this,[t,e,i,1])},removeItem:function(t,e){var i=this;t=l(t);var n=new o((function(e,n){i.ready().then((function(){var s=i._dbInfo;s.db.transaction((function(i){P(i,s,\"DELETE FROM \"+s.storeName+\" WHERE key = ?\",[t],(function(){e()}),(function(t,e){n(e)}))}))})).catch(n)}));return a(n,e),n},clear:function(t){var e=this,i=new o((function(t,i){e.ready().then((function(){var n=e._dbInfo;n.db.transaction((function(e){P(e,n,\"DELETE FROM \"+n.storeName,[],(function(){t()}),(function(t,e){i(e)}))}))})).catch(i)}));return a(i,t),i},length:function(t){var e=this,i=new o((function(t,i){e.ready().then((function(){var n=e._dbInfo;n.db.transaction((function(e){P(e,n,\"SELECT COUNT(key) as c FROM \"+n.storeName,[],(function(e,i){var n=i.rows.item(0).c;t(n)}),(function(t,e){i(e)}))}))})).catch(i)}));return a(i,t),i},key:function(t,e){var i=this,n=new o((function(e,n){i.ready().then((function(){var s=i._dbInfo;s.db.transaction((function(i){P(i,s,\"SELECT key FROM \"+s.storeName+\" WHERE id = ? LIMIT 1\",[t+1],(function(t,i){var n=i.rows.length?i.rows.item(0).key:null;e(n)}),(function(t,e){n(e)}))}))})).catch(n)}));return a(n,e),n},keys:function(t){var e=this,i=new o((function(t,i){e.ready().then((function(){var n=e._dbInfo;n.db.transaction((function(e){P(e,n,\"SELECT key FROM \"+n.storeName,[],(function(e,i){for(var n=[],s=0;s<i.rows.length;s++)n.push(i.rows.item(s).key);t(n)}),(function(t,e){i(e)}))}))})).catch(i)}));return a(i,t),i},dropInstance:function(t,e){e=c.apply(this,arguments);var i=this.config();(t=\"function\"!=typeof t&&t||{}).name||(t.name=t.name||i.name,t.storeName=t.storeName||i.storeName);var n,s=this;return a(n=t.name?new o((function(e){var n;n=t.name===i.name?s._dbInfo.db:openDatabase(t.name,\"\",\"\",0),t.storeName?e({db:n,storeNames:[t.storeName]}):e(z(n))})).then((function(t){return new o((function(e,i){t.db.transaction((function(n){function s(t){return new o((function(e,i){n.executeSql(\"DROP TABLE IF EXISTS \"+t,[],(function(){e()}),(function(t,e){i(e)}))}))}for(var r=[],a=0,h=t.storeNames.length;a<h;a++)r.push(s(t.storeNames[a]));o.all(r).then((function(){e()})).catch((function(t){i(t)}))}),(function(t){i(t)}))}))})):o.reject(\"Invalid arguments\"),e),n}};function q(t,e){var i=t.name+\"/\";return t.storeName!==e.storeName&&(i+=t.storeName+\"/\"),i}function F(){return!function(){try{return localStorage.setItem(\"_localforage_support_test\",!0),localStorage.removeItem(\"_localforage_support_test\"),!1}catch(t){return!0}}()||localStorage.length>0}var U={_driver:\"localStorageWrapper\",_initStorage:function(t){var e={};if(t)for(var i in t)e[i]=t[i];return e.keyPrefix=q(t,this._defaultConfig),F()?(this._dbInfo=e,e.serializer=j,o.resolve()):o.reject()},_support:function(){try{return\"undefined\"!=typeof localStorage&&\"setItem\"in localStorage&&!!localStorage.setItem}catch(t){return!1}}(),iterate:function(t,e){var i=this,n=i.ready().then((function(){for(var e=i._dbInfo,n=e.keyPrefix,s=n.length,r=localStorage.length,o=1,a=0;a<r;a++){var h=localStorage.key(a);if(0===h.indexOf(n)){var l=localStorage.getItem(h);if(l&&(l=e.serializer.deserialize(l)),void 0!==(l=t(l,h.substring(s),o++)))return l}}}));return a(n,e),n},getItem:function(t,e){var i=this;t=l(t);var n=i.ready().then((function(){var e=i._dbInfo,n=localStorage.getItem(e.keyPrefix+t);return n&&(n=e.serializer.deserialize(n)),n}));return a(n,e),n},setItem:function(t,e,i){var n=this;t=l(t);var s=n.ready().then((function(){void 0===e&&(e=null);var i=e;return new o((function(s,r){var o=n._dbInfo;o.serializer.serialize(e,(function(e,n){if(n)r(n);else try{localStorage.setItem(o.keyPrefix+t,e),s(i)}catch(t){\"QuotaExceededError\"!==t.name&&\"NS_ERROR_DOM_QUOTA_REACHED\"!==t.name||r(t),r(t)}}))}))}));return a(s,i),s},removeItem:function(t,e){var i=this;t=l(t);var n=i.ready().then((function(){var e=i._dbInfo;localStorage.removeItem(e.keyPrefix+t)}));return a(n,e),n},clear:function(t){var e=this,i=e.ready().then((function(){for(var t=e._dbInfo.keyPrefix,i=localStorage.length-1;i>=0;i--){var n=localStorage.key(i);0===n.indexOf(t)&&localStorage.removeItem(n)}}));return a(i,t),i},length:function(t){var e=this.keys().then((function(t){return t.length}));return a(e,t),e},key:function(t,e){var i=this,n=i.ready().then((function(){var e,n=i._dbInfo;try{e=localStorage.key(t)}catch(t){e=null}return e&&(e=e.substring(n.keyPrefix.length)),e}));return a(n,e),n},keys:function(t){var e=this,i=e.ready().then((function(){for(var t=e._dbInfo,i=localStorage.length,n=[],s=0;s<i;s++){var r=localStorage.key(s);0===r.indexOf(t.keyPrefix)&&n.push(r.substring(t.keyPrefix.length))}return n}));return a(i,t),i},dropInstance:function(t,e){if(e=c.apply(this,arguments),!(t=\"function\"!=typeof t&&t||{}).name){var i=this.config();t.name=t.name||i.name,t.storeName=t.storeName||i.storeName}var n,s=this;return a(n=t.name?new o((function(e){t.storeName?e(q(t,s._defaultConfig)):e(t.name+\"/\")})).then((function(t){for(var e=localStorage.length-1;e>=0;e--){var i=localStorage.key(e);0===i.indexOf(t)&&localStorage.removeItem(i)}})):o.reject(\"Invalid arguments\"),e),n}},W=function(t,e){for(var i,n,s=t.length,r=0;r<s;){if((i=t[r])===(n=e)||\"number\"==typeof i&&\"number\"==typeof n&&isNaN(i)&&isNaN(n))return!0;r++}return!1},H=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},V={},X={},G={INDEXEDDB:T,WEBSQL:B,LOCALSTORAGE:U},Y=[G.INDEXEDDB._driver,G.WEBSQL._driver,G.LOCALSTORAGE._driver],$=[\"dropInstance\"],K=[\"clear\",\"getItem\",\"iterate\",\"key\",\"keys\",\"length\",\"removeItem\",\"setItem\"].concat($),Z={description:\"\",driver:Y.slice(),name:\"localforage\",size:4980736,storeName:\"keyvaluepairs\",version:1};function J(t,e){t[e]=function(){var i=arguments;return t.ready().then((function(){return t[e].apply(t,i)}))}}function Q(){for(var t=1;t<arguments.length;t++){var e=arguments[t];if(e)for(var i in e)e.hasOwnProperty(i)&&(H(e[i])?arguments[0][i]=e[i].slice():arguments[0][i]=e[i])}return arguments[0]}var tt=new(function(){function t(e){for(var i in function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),G)if(G.hasOwnProperty(i)){var n=G[i],s=n._driver;this[i]=s,V[s]||this.defineDriver(n)}this._defaultConfig=Q({},Z),this._config=Q({},this._defaultConfig,e),this._driverSet=null,this._initDriver=null,this._ready=!1,this._dbInfo=null,this._wrapLibraryMethodsWithReady(),this.setDriver(this._config.driver).catch((function(){}))}return t.prototype.config=function(t){if(\"object\"===(void 0===t?\"undefined\":n(t))){if(this._ready)return new Error(\"Can't call config() after localforage has been used.\");for(var e in t){if(\"storeName\"===e&&(t[e]=t[e].replace(/\\W/g,\"_\")),\"version\"===e&&\"number\"!=typeof t[e])return new Error(\"Database version must be a number.\");this._config[e]=t[e]}return!(\"driver\"in t)||!t.driver||this.setDriver(this._config.driver)}return\"string\"==typeof t?this._config[t]:this._config},t.prototype.defineDriver=function(t,e,i){var n=new o((function(e,i){try{var n=t._driver,s=new Error(\"Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver\");if(!t._driver)return void i(s);for(var r=K.concat(\"_initStorage\"),h=0,l=r.length;h<l;h++){var c=r[h];if((!W($,c)||t[c])&&\"function\"!=typeof t[c])return void i(s)}!function(){for(var e=function(t){return function(){var e=new Error(\"Method \"+t+\" is not implemented by the current driver\"),i=o.reject(e);return a(i,arguments[arguments.length-1]),i}},i=0,n=$.length;i<n;i++){var s=$[i];t[s]||(t[s]=e(s))}}();var u=function(i){V[n]&&console.info(\"Redefining LocalForage driver: \"+n),V[n]=t,X[n]=i,e()};\"_support\"in t?t._support&&\"function\"==typeof t._support?t._support().then(u,i):u(!!t._support):u(!0)}catch(t){i(t)}}));return h(n,e,i),n},t.prototype.driver=function(){return this._driver||null},t.prototype.getDriver=function(t,e,i){var n=V[t]?o.resolve(V[t]):o.reject(new Error(\"Driver not found.\"));return h(n,e,i),n},t.prototype.getSerializer=function(t){var e=o.resolve(j);return h(e,t),e},t.prototype.ready=function(t){var e=this,i=e._driverSet.then((function(){return null===e._ready&&(e._ready=e._initDriver()),e._ready}));return h(i,t,t),i},t.prototype.setDriver=function(t,e,i){var n=this;H(t)||(t=[t]);var s=this._getSupportedDrivers(t);function r(){n._config.driver=n.driver()}function a(t){return n._extend(t),r(),n._ready=n._initStorage(n._config),n._ready}var l=null!==this._driverSet?this._driverSet.catch((function(){return o.resolve()})):o.resolve();return this._driverSet=l.then((function(){var t=s[0];return n._dbInfo=null,n._ready=null,n.getDriver(t).then((function(t){n._driver=t._driver,r(),n._wrapLibraryMethodsWithReady(),n._initDriver=function(t){return function(){var e=0;return function i(){for(;e<t.length;){var s=t[e];return e++,n._dbInfo=null,n._ready=null,n.getDriver(s).then(a).catch(i)}r();var h=new Error(\"No available storage method found.\");return n._driverSet=o.reject(h),n._driverSet}()}}(s)}))})).catch((function(){r();var t=new Error(\"No available storage method found.\");return n._driverSet=o.reject(t),n._driverSet})),h(this._driverSet,e,i),this._driverSet},t.prototype.supports=function(t){return!!X[t]},t.prototype._extend=function(t){Q(this,t)},t.prototype._getSupportedDrivers=function(t){for(var e=[],i=0,n=t.length;i<n;i++){var s=t[i];this.supports(s)&&e.push(s)}return e},t.prototype._wrapLibraryMethodsWithReady=function(){for(var t=0,e=K.length;t<e;t++)J(this,K[t])},t.prototype.createInstance=function(e){return new t(e)},t}());e.exports=tt},{3:3}]},{},[4])(4)}).call(this,i(17))},function(t,e,i){\"use strict\";var n=i(3),s=i.n(n),r=i(0),o=i(5),a=i(4),h=i(2),l=i(6),c=i(8);var u=function(t,e,i,n){var s,o=\"undefined\"!=typeof window&&window.URL,h=o?\"blob\":\"arraybuffer\",l=new r.defer,c=new XMLHttpRequest,u=XMLHttpRequest.prototype;for(s in\"overrideMimeType\"in u||Object.defineProperty(u,\"overrideMimeType\",{value:function(){}}),i&&(c.withCredentials=!0),c.onreadystatechange=function(){if(this.readyState===XMLHttpRequest.DONE){var t=!1;if(\"\"!==this.responseType&&\"document\"!==this.responseType||(t=this.responseXML),200===this.status||0===this.status||t){var i;if(!this.response&&!t)return l.reject({status:this.status,message:\"Empty Response\",stack:(new Error).stack}),l.promise;if(403===this.status)return l.reject({status:this.status,response:this.response,message:\"Forbidden\",stack:(new Error).stack}),l.promise;i=t?this.responseXML:Object(r.isXml)(e)?Object(r.parse)(this.response,\"text/xml\"):\"xhtml\"==e?Object(r.parse)(this.response,\"application/xhtml+xml\"):\"html\"==e||\"htm\"==e?Object(r.parse)(this.response,\"text/html\"):\"json\"==e?JSON.parse(this.response):\"blob\"==e?o?this.response:new Blob([this.response]):this.response,l.resolve(i)}else l.reject({status:this.status,message:this.response,stack:(new Error).stack})}},c.onerror=function(t){l.reject(t)},c.open(\"GET\",t,!0),n)c.setRequestHeader(s,n[s]);return\"json\"==e&&c.setRequestHeader(\"Accept\",\"application/json\"),e||(e=new a.a(t).extension),\"blob\"==e&&(c.responseType=h),Object(r.isXml)(e)&&c.overrideMimeType(\"text/xml\"),\"binary\"==e&&(c.responseType=\"arraybuffer\"),c.send(),l.promise},d=i(15);var f=class{constructor(t,e){this.idref=t.idref,this.linear=\"yes\"===t.linear,this.properties=t.properties,this.index=t.index,this.href=t.href,this.url=t.url,this.canonical=t.canonical,this.next=t.next,this.prev=t.prev,this.cfiBase=t.cfiBase,e?this.hooks=e:(this.hooks={},this.hooks.serialize=new l.a(this),this.hooks.content=new l.a(this)),this.document=void 0,this.contents=void 0,this.output=void 0}load(t){var e=t||this.request||u,i=new r.defer,n=i.promise;return this.contents?i.resolve(this.contents):e(this.url).then(function(t){return this.document=t,this.contents=t.documentElement,this.hooks.content.trigger(this.document,this)}.bind(this)).then(function(){i.resolve(this.contents)}.bind(this)).catch((function(t){i.reject(t)})),n}base(){return Object(c.a)(this.document,this)}render(t){var e=new r.defer,i=e.promise;return this.output,this.load(t).then(function(t){var e=(\"undefined\"!=typeof navigator&&navigator.userAgent||\"\").indexOf(\"Trident\")>=0,i=new(\"undefined\"==typeof XMLSerializer||e?d.DOMParser:XMLSerializer);return this.output=i.serializeToString(t),this.output}.bind(this)).then(function(){return this.hooks.serialize.trigger(this.output,this)}.bind(this)).then(function(){e.resolve(this.output)}.bind(this)).catch((function(t){e.reject(t)})),i}find(t){var e=this,i=[],n=t.toLowerCase();return Object(r.sprint)(e.document,(function(t){!function(t){for(var s,r,o,a=t.textContent.toLowerCase(),h=e.document.createRange(),l=-1;-1!=r;)-1!=(r=a.indexOf(n,l+1))&&((h=e.document.createRange()).setStart(t,r),h.setEnd(t,r+n.length),s=e.cfiFromRange(h),o=t.textContent.length<150?t.textContent:\"...\"+(o=t.textContent.substring(r-75,r+75))+\"...\",i.push({cfi:s,excerpt:o})),l=r}(t)})),i}search(t,e=5){if(void 0===document.createTreeWalker)return this.find(t);let i=[];const n=this,s=t.toLowerCase(),r=function(t){const e=t.reduce((t,e)=>t+e.textContent,\"\").toLowerCase().indexOf(s);if(-1!=e){const r=0,o=e+s.length;let a=0,h=0;if(e<t[r].length){let s;for(;a<t.length-1&&(h+=t[a].length,!(o<=h));)a+=1;let l=t[r],c=t[a],u=n.document.createRange();u.setStart(l,e);let d=t.slice(0,a).reduce((t,e)=>t+e.textContent.length,0);u.setEnd(c,d>o?o:o-d),s=n.cfiFromRange(u);let f=t.slice(0,a+1).reduce((t,e)=>t+e.textContent,\"\");f.length>150&&(f=f.substring(e-75,e+75),f=\"...\"+f+\"...\"),i.push({cfi:s,excerpt:f})}}},o=document.createTreeWalker(n.document,NodeFilter.SHOW_TEXT,null,!1);let a,h=[];for(;a=o.nextNode();)h.push(a),h.length==e&&(r(h.slice(0,e)),h=h.slice(1,e));return h.length>0&&r(h),i}reconcileLayoutSettings(t){var e={layout:t.layout,spread:t.spread,orientation:t.orientation};return this.properties.forEach((function(t){var i,n,s=t.replace(\"rendition:\",\"\"),r=s.indexOf(\"-\");-1!=r&&(i=s.slice(0,r),n=s.slice(r+1),e[i]=n)})),e}cfiFromRange(t){return new h.a(t,this.cfiBase).toString()}cfiFromElement(t){return new h.a(t,this.cfiBase).toString()}unload(){this.document=void 0,this.contents=void 0,this.output=void 0}destroy(){this.unload(),this.hooks.serialize.clear(),this.hooks.content.clear(),this.hooks=void 0,this.idref=void 0,this.linear=void 0,this.properties=void 0,this.index=void 0,this.href=void 0,this.url=void 0,this.next=void 0,this.prev=void 0,this.cfiBase=void 0}};var p=class{constructor(){this.spineItems=[],this.spineByHref={},this.spineById={},this.hooks={},this.hooks.serialize=new l.a,this.hooks.content=new l.a,this.hooks.content.register(c.a),this.hooks.content.register(c.b),this.hooks.content.register(c.d),this.epubcfi=new h.a,this.loaded=!1,this.items=void 0,this.manifest=void 0,this.spineNodeIndex=void 0,this.baseUrl=void 0,this.length=void 0}unpack(t,e,i){this.items=t.spine,this.manifest=t.manifest,this.spineNodeIndex=t.spineNodeIndex,this.baseUrl=t.baseUrl||t.basePath||\"\",this.length=this.items.length,this.items.forEach((t,n)=>{var s,r=this.manifest[t.idref];t.index=n,t.cfiBase=this.epubcfi.generateChapterComponent(this.spineNodeIndex,t.index,t.id),t.href&&(t.url=e(t.href,!0),t.canonical=i(t.href)),r&&(t.href=r.href,t.url=e(t.href,!0),t.canonical=i(t.href),r.properties.length&&t.properties.push.apply(t.properties,r.properties)),\"yes\"===t.linear?(t.prev=function(){let e=t.index;for(;e>0;){let t=this.get(e-1);if(t&&t.linear)return t;e-=1}}.bind(this),t.next=function(){let e=t.index;for(;e<this.spineItems.length-1;){let t=this.get(e+1);if(t&&t.linear)return t;e+=1}}.bind(this)):(t.prev=function(){},t.next=function(){}),s=new f(t,this.hooks),this.append(s)}),this.loaded=!0}get(t){var e=0;if(void 0===t)for(;e<this.spineItems.length;){let t=this.spineItems[e];if(t&&t.linear)break;e+=1}else if(this.epubcfi.isCfiString(t)){e=new h.a(t).spinePos}else\"number\"==typeof t||!1===isNaN(t)?e=t:\"string\"==typeof t&&0===t.indexOf(\"#\")?e=this.spineById[t.substring(1)]:\"string\"==typeof t&&(t=t.split(\"#\")[0],e=this.spineByHref[t]||this.spineByHref[encodeURI(t)]);return this.spineItems[e]||null}append(t){var e=this.spineItems.length;return t.index=e,this.spineItems.push(t),this.spineByHref[decodeURI(t.href)]=e,this.spineByHref[encodeURI(t.href)]=e,this.spineByHref[t.href]=e,this.spineById[t.idref]=e,e}prepend(t){return this.spineByHref[t.href]=0,this.spineById[t.idref]=0,this.spineItems.forEach((function(t,e){t.index=e})),0}remove(t){var e=this.spineItems.indexOf(t);if(e>-1)return delete this.spineByHref[t.href],delete this.spineById[t.idref],this.spineItems.splice(e,1)}each(){return this.spineItems.forEach.apply(this.spineItems,arguments)}first(){let t=0;do{let e=this.get(t);if(e&&e.linear)return e;t+=1}while(t<this.spineItems.length)}last(){let t=this.spineItems.length-1;do{let e=this.get(t);if(e&&e.linear)return e;t-=1}while(t>=0)}destroy(){this.each(t=>t.destroy()),this.spineItems=void 0,this.spineByHref=void 0,this.spineById=void 0,this.hooks.serialize.clear(),this.hooks.content.clear(),this.hooks=void 0,this.epubcfi=void 0,this.loaded=!1,this.items=void 0,this.manifest=void 0,this.spineNodeIndex=void 0,this.baseUrl=void 0,this.length=void 0}},g=i(9),m=i(1);class v{constructor(t,e,i){this.spine=t,this.request=e,this.pause=i||100,this.q=new g.a(this),this.epubcfi=new h.a,this._locations=[],this._locationsWords=[],this.total=0,this.break=150,this._current=0,this._wordCounter=0,this.currentLocation=\"\",this._currentCfi=\"\",this.processingTimeout=void 0}generate(t){return t&&(this.break=t),this.q.pause(),this.spine.each(function(t){t.linear&&this.q.enqueue(this.process.bind(this),t)}.bind(this)),this.q.run().then(function(){return this.total=this._locations.length-1,this._currentCfi&&(this.currentLocation=this._currentCfi),this._locations}.bind(this))}createRange(){return{startContainer:void 0,startOffset:void 0,endContainer:void 0,endOffset:void 0}}process(t){return t.load(this.request).then(function(e){var i=new r.defer,n=this.parse(e,t.cfiBase);return this._locations=this._locations.concat(n),t.unload(),this.processingTimeout=setTimeout(()=>i.resolve(n),this.pause),i.promise}.bind(this))}parse(t,e,i){var n,s,o=[],a=t.ownerDocument,l=Object(r.qs)(a,\"body\"),c=0,u=i||this.break;if(Object(r.sprint)(l,function(t){var i,r=t.length,a=0;if(0===t.textContent.trim().length)return!1;for(0==c&&((n=this.createRange()).startContainer=t,n.startOffset=0),(i=u-c)>r&&(c+=r,a=r);a<r;)if(i=u-c,0===c&&(a+=1,(n=this.createRange()).startContainer=t,n.startOffset=a),a+i>=r)c+=r-a,a=r;else{a+=i,n.endContainer=t,n.endOffset=a;let s=new h.a(n,e).toString();o.push(s),c=0}s=t}.bind(this)),n&&n.startContainer&&s){n.endContainer=s,n.endOffset=s.length;let t=new h.a(n,e).toString();o.push(t),c=0}return o}generateFromWords(t,e,i){var n=t?new h.a(t):void 0;return this.q.pause(),this._locationsWords=[],this._wordCounter=0,this.spine.each(function(t){t.linear&&(n?t.index>=n.spinePos&&this.q.enqueue(this.processWords.bind(this),t,e,n,i):this.q.enqueue(this.processWords.bind(this),t,e,n,i))}.bind(this)),this.q.run().then(function(){return this._currentCfi&&(this.currentLocation=this._currentCfi),this._locationsWords}.bind(this))}processWords(t,e,i,n){return n&&this._locationsWords.length>=n?Promise.resolve():t.load(this.request).then(function(s){var o=new r.defer,a=this.parseWords(s,t,e,i),h=n-this._locationsWords.length;return this._locationsWords=this._locationsWords.concat(a.length>=n?a.slice(0,h):a),t.unload(),this.processingTimeout=setTimeout(()=>o.resolve(a),this.pause),o.promise}.bind(this))}countWords(t){return(t=(t=(t=t.replace(/(^\\s*)|(\\s*$)/gi,\"\")).replace(/[ ]{2,}/gi,\" \")).replace(/\\n /,\"\\n\")).split(\" \").length}parseWords(t,e,i,n){var s,o=e.cfiBase,a=[],l=t.ownerDocument,c=Object(r.qs)(l,\"body\"),u=i,d=!n||n.spinePos!==e.index;n&&e.index===n.spinePos&&(s=n.findNode(n.range?n.path.steps.concat(n.start.steps):n.path.steps,t.ownerDocument));return Object(r.sprint)(c,function(t){if(!d){if(t!==s)return!1;d=!0}if(t.textContent.length<10&&0===t.textContent.trim().length)return!1;var e,i=this.countWords(t.textContent),n=0;if(0===i)return!1;for((e=u-this._wordCounter)>i&&(this._wordCounter+=i,n=i);n<i;)if(n+(e=u-this._wordCounter)>=i)this._wordCounter+=i-n,n=i;else{n+=e;let i=new h.a(t,o);a.push({cfi:i.toString(),wordCount:this._wordCounter}),this._wordCounter=0}t}.bind(this)),a}locationFromCfi(t){let e;return h.a.prototype.isCfiString(t)&&(t=new h.a(t)),0===this._locations.length?-1:(e=Object(r.locationOf)(t,this._locations,this.epubcfi.compare),e>this.total?this.total:e)}percentageFromCfi(t){if(0===this._locations.length)return null;var e=this.locationFromCfi(t);return this.percentageFromLocation(e)}percentageFromLocation(t){return t&&this.total?t/this.total:0}cfiFromLocation(t){var e=-1;return\"number\"!=typeof t&&(t=parseInt(t)),t>=0&&t<this._locations.length&&(e=this._locations[t]),e}cfiFromPercentage(t){let e;if(t>1&&console.warn(\"Normalize cfiFromPercentage value to between 0 - 1\"),t>=1){let t=new h.a(this._locations[this.total]);return t.collapse(),t.toString()}return e=Math.ceil(this.total*t),this.cfiFromLocation(e)}load(t){return this._locations=\"string\"==typeof t?JSON.parse(t):t,this.total=this._locations.length-1,this._locations}save(){return JSON.stringify(this._locations)}getCurrent(){return this._current}setCurrent(t){var e;if(\"string\"==typeof t)this._currentCfi=t;else{if(\"number\"!=typeof t)return;this._current=t}0!==this._locations.length&&(\"string\"==typeof t?(e=this.locationFromCfi(t),this._current=e):e=t,this.emit(m.c.LOCATIONS.CHANGED,{percentage:this.percentageFromLocation(e)}))}get currentLocation(){return this._current}set currentLocation(t){this.setCurrent(t)}length(){return this._locations.length}destroy(){this.spine=void 0,this.request=void 0,this.pause=void 0,this.q.stop(),this.q=void 0,this.epubcfi=void 0,this._locations=void 0,this.total=void 0,this.break=void 0,this._current=void 0,this.currentLocation=void 0,this._currentCfi=void 0,clearTimeout(this.processingTimeout)}}s()(v.prototype);var y=v,b=i(7),w=i.n(b);var x=class{constructor(t){this.packagePath=\"\",this.directory=\"\",this.encoding=\"\",t&&this.parse(t)}parse(t){var e;if(!t)throw new Error(\"Container File Not Found\");if(!(e=Object(r.qs)(t,\"rootfile\")))throw new Error(\"No RootFile Found\");this.packagePath=e.getAttribute(\"full-path\"),this.directory=w.a.dirname(this.packagePath),this.encoding=t.xmlEncoding}destroy(){this.packagePath=void 0,this.directory=void 0,this.encoding=void 0}};var E=class{constructor(t){this.manifest={},this.navPath=\"\",this.ncxPath=\"\",this.coverPath=\"\",this.spineNodeIndex=0,this.spine=[],this.metadata={},t&&this.parse(t)}parse(t){var e,i,n;if(!t)throw new Error(\"Package File Not Found\");if(!(e=Object(r.qs)(t,\"metadata\")))throw new Error(\"No Metadata Found\");if(!(i=Object(r.qs)(t,\"manifest\")))throw new Error(\"No Manifest Found\");if(!(n=Object(r.qs)(t,\"spine\")))throw new Error(\"No Spine Found\");return this.manifest=this.parseManifest(i),this.navPath=this.findNavPath(i),this.ncxPath=this.findNcxPath(i,n),this.coverPath=this.findCoverPath(t),this.spineNodeIndex=Object(r.indexOfElementNode)(n),this.spine=this.parseSpine(n,this.manifest),this.uniqueIdentifier=this.findUniqueIdentifier(t),this.metadata=this.parseMetadata(e),this.metadata.direction=n.getAttribute(\"page-progression-direction\"),{metadata:this.metadata,spine:this.spine,manifest:this.manifest,navPath:this.navPath,ncxPath:this.ncxPath,coverPath:this.coverPath,spineNodeIndex:this.spineNodeIndex}}parseMetadata(t){var e={};return e.title=this.getElementText(t,\"title\"),e.creator=this.getElementText(t,\"creator\"),e.description=this.getElementText(t,\"description\"),e.pubdate=this.getElementText(t,\"date\"),e.publisher=this.getElementText(t,\"publisher\"),e.identifier=this.getElementText(t,\"identifier\"),e.language=this.getElementText(t,\"language\"),e.rights=this.getElementText(t,\"rights\"),e.modified_date=this.getPropertyText(t,\"dcterms:modified\"),e.layout=this.getPropertyText(t,\"rendition:layout\"),e.orientation=this.getPropertyText(t,\"rendition:orientation\"),e.flow=this.getPropertyText(t,\"rendition:flow\"),e.viewport=this.getPropertyText(t,\"rendition:viewport\"),e.media_active_class=this.getPropertyText(t,\"media:active-class\"),e.spread=this.getPropertyText(t,\"rendition:spread\"),e}parseManifest(t){var e={},i=Object(r.qsa)(t,\"item\");return Array.prototype.slice.call(i).forEach((function(t){var i=t.getAttribute(\"id\"),n=t.getAttribute(\"href\")||\"\",s=t.getAttribute(\"media-type\")||\"\",r=t.getAttribute(\"media-overlay\")||\"\",o=t.getAttribute(\"properties\")||\"\";e[i]={href:n,type:s,overlay:r,properties:o.length?o.split(\" \"):[]}})),e}parseSpine(t,e){var i=[],n=Object(r.qsa)(t,\"itemref\");return Array.prototype.slice.call(n).forEach((function(t,e){var n=t.getAttribute(\"idref\"),s=t.getAttribute(\"properties\")||\"\",r=s.length?s.split(\" \"):[],o={id:t.getAttribute(\"id\"),idref:n,linear:t.getAttribute(\"linear\")||\"yes\",properties:r,index:e};i.push(o)})),i}findUniqueIdentifier(t){var e=t.documentElement.getAttribute(\"unique-identifier\");if(!e)return\"\";var i=t.getElementById(e);return i&&\"identifier\"===i.localName&&\"http://purl.org/dc/elements/1.1/\"===i.namespaceURI&&i.childNodes.length>0?i.childNodes[0].nodeValue.trim():\"\"}findNavPath(t){var e=Object(r.qsp)(t,\"item\",{properties:\"nav\"});return!!e&&e.getAttribute(\"href\")}findNcxPath(t,e){var i,n=Object(r.qsp)(t,\"item\",{\"media-type\":\"application/x-dtbncx+xml\"});return n||(i=e.getAttribute(\"toc\"))&&(n=t.querySelector(\"#\"+i)),!!n&&n.getAttribute(\"href\")}findCoverPath(t){Object(r.qs)(t,\"package\").getAttribute(\"version\");var e=Object(r.qsp)(t,\"item\",{properties:\"cover-image\"});if(e)return e.getAttribute(\"href\");var i=Object(r.qsp)(t,\"meta\",{name:\"cover\"});if(i){var n=i.getAttribute(\"content\"),s=t.getElementById(n);return s?s.getAttribute(\"href\"):\"\"}return!1}getElementText(t,e){var i,n=t.getElementsByTagNameNS(\"http://purl.org/dc/elements/1.1/\",e);return n&&0!==n.length&&(i=n[0]).childNodes.length?i.childNodes[0].nodeValue:\"\"}getPropertyText(t,e){var i=Object(r.qsp)(t,\"meta\",{property:e});return i&&i.childNodes.length?i.childNodes[0].nodeValue:\"\"}load(t){this.metadata=t.metadata;let e=t.readingOrder||t.spine;return this.spine=e.map((t,e)=>(t.index=e,t.linear=t.linear||\"yes\",t)),t.resources.forEach((t,e)=>{this.manifest[e]=t,t.rel&&\"cover\"===t.rel[0]&&(this.coverPath=t.href)}),this.spineNodeIndex=0,this.toc=t.toc.map((t,e)=>(t.label=t.title,t)),{metadata:this.metadata,spine:this.spine,manifest:this.manifest,navPath:this.navPath,ncxPath:this.ncxPath,coverPath:this.coverPath,spineNodeIndex:this.spineNodeIndex,toc:this.toc}}destroy(){this.manifest=void 0,this.navPath=void 0,this.ncxPath=void 0,this.coverPath=void 0,this.spineNodeIndex=void 0,this.spine=void 0,this.metadata=void 0}};var S=class{constructor(t){this.toc=[],this.tocByHref={},this.tocById={},this.landmarks=[],this.landmarksByType={},this.length=0,t&&this.parse(t)}parse(t){let e,i,n=t.nodeType;n&&(e=Object(r.qs)(t,\"html\"),i=Object(r.qs)(t,\"ncx\")),n?e?(this.toc=this.parseNav(t),this.landmarks=this.parseLandmarks(t)):i&&(this.toc=this.parseNcx(t)):this.toc=this.load(t),this.length=0,this.unpack(this.toc)}unpack(t){for(var e,i=0;i<t.length;i++)(e=t[i]).href&&(this.tocByHref[e.href]=i),e.id&&(this.tocById[e.id]=i),this.length++,e.subitems.length&&this.unpack(e.subitems)}get(t){var e;return t?(0===t.indexOf(\"#\")?e=this.tocById[t.substring(1)]:t in this.tocByHref&&(e=this.tocByHref[t]),this.getByIndex(t,e,this.toc)):this.toc}getByIndex(t,e,i){if(0===i.length)return;const n=i[e];if(!n||t!==n.id&&t!==n.href){let n;for(let s=0;s<i.length&&(n=this.getByIndex(t,e,i[s].subitems),!n);++s);return n}return n}landmark(t){var e;return t?(e=this.landmarksByType[t],this.landmarks[e]):this.landmarks}parseNav(t){var e=Object(r.querySelectorByType)(t,\"nav\",\"toc\"),i=[];if(!e)return i;let n=Object(r.filterChildren)(e,\"ol\",!0);return n?i=this.parseNavList(n):i}parseNavList(t,e){const i=[];if(!t)return i;if(!t.children)return i;for(let n=0;n<t.children.length;n++){const s=this.navItem(t.children[n],e);s&&i.push(s)}return i}navItem(t,e){let i=t.getAttribute(\"id\")||void 0,n=Object(r.filterChildren)(t,\"a\",!0)||Object(r.filterChildren)(t,\"span\",!0);if(!n)return;let s=n.getAttribute(\"href\")||\"\";i||(i=s);let o=n.textContent||\"\",a=[],h=Object(r.filterChildren)(t,\"ol\",!0);return h&&(a=this.parseNavList(h,i)),{id:i,href:s,label:o,subitems:a,parent:e}}parseLandmarks(t){var e,i,n=Object(r.querySelectorByType)(t,\"nav\",\"landmarks\"),s=n?Object(r.qsa)(n,\"li\"):[],o=s.length,a=[];if(!s||0===o)return a;for(e=0;e<o;++e)(i=this.landmarkItem(s[e]))&&(a.push(i),this.landmarksByType[i.type]=e);return a}landmarkItem(t){let e=Object(r.filterChildren)(t,\"a\",!0);if(!e)return;let i=e.getAttributeNS(\"http://www.idpf.org/2007/ops\",\"type\")||void 0;return{href:e.getAttribute(\"href\")||\"\",label:e.textContent||\"\",type:i}}parseNcx(t){var e,i,n=Object(r.qsa)(t,\"navPoint\"),s=n.length,o={},a=[];if(!n||0===s)return a;for(e=0;e<s;++e)o[(i=this.ncxItem(n[e])).id]=i,i.parent?o[i.parent].subitems.push(i):a.push(i);return a}ncxItem(t){var e,i=t.getAttribute(\"id\")||!1,n=Object(r.qs)(t,\"content\").getAttribute(\"src\"),s=Object(r.qs)(t,\"navLabel\"),o=s.textContent?s.textContent:\"\",a=t.parentNode;return!a||\"navPoint\"!==a.nodeName&&\"navPoint\"!==a.nodeName.split(\":\").slice(-1)[0]||(e=a.getAttribute(\"id\")),{id:i,href:n,label:o,subitems:[],parent:e}}load(t){return t.map(t=>(t.label=t.title,t.subitems=t.children?this.load(t.children):[],t))}forEach(t){return this.toc.forEach(t)}},N={application:{ecmascript:[\"es\",\"ecma\"],javascript:\"js\",ogg:\"ogx\",pdf:\"pdf\",postscript:[\"ps\",\"ai\",\"eps\",\"epsi\",\"epsf\",\"eps2\",\"eps3\"],\"rdf+xml\":\"rdf\",smil:[\"smi\",\"smil\"],\"xhtml+xml\":[\"xhtml\",\"xht\"],xml:[\"xml\",\"xsl\",\"xsd\",\"opf\",\"ncx\"],zip:\"zip\",\"x-httpd-eruby\":\"rhtml\",\"x-latex\":\"latex\",\"x-maker\":[\"frm\",\"maker\",\"frame\",\"fm\",\"fb\",\"book\",\"fbdoc\"],\"x-object\":\"o\",\"x-shockwave-flash\":[\"swf\",\"swfl\"],\"x-silverlight\":\"scr\",\"epub+zip\":\"epub\",\"font-tdpfr\":\"pfr\",\"inkml+xml\":[\"ink\",\"inkml\"],json:\"json\",\"jsonml+json\":\"jsonml\",\"mathml+xml\":\"mathml\",\"metalink+xml\":\"metalink\",mp4:\"mp4s\",\"omdoc+xml\":\"omdoc\",oxps:\"oxps\",\"vnd.amazon.ebook\":\"azw\",widget:\"wgt\",\"x-dtbook+xml\":\"dtb\",\"x-dtbresource+xml\":\"res\",\"x-font-bdf\":\"bdf\",\"x-font-ghostscript\":\"gsf\",\"x-font-linux-psf\":\"psf\",\"x-font-otf\":\"otf\",\"x-font-pcf\":\"pcf\",\"x-font-snf\":\"snf\",\"x-font-ttf\":[\"ttf\",\"ttc\"],\"x-font-type1\":[\"pfa\",\"pfb\",\"pfm\",\"afm\"],\"x-font-woff\":\"woff\",\"x-mobipocket-ebook\":[\"prc\",\"mobi\"],\"x-mspublisher\":\"pub\",\"x-nzb\":\"nzb\",\"x-tgif\":\"obj\",\"xaml+xml\":\"xaml\",\"xml-dtd\":\"dtd\",\"xproc+xml\":\"xpl\",\"xslt+xml\":\"xslt\",\"internet-property-stream\":\"acx\",\"x-compress\":\"z\",\"x-compressed\":\"tgz\",\"x-gzip\":\"gz\"},audio:{flac:\"flac\",midi:[\"mid\",\"midi\",\"kar\",\"rmi\"],mpeg:[\"mpga\",\"mpega\",\"mp2\",\"mp3\",\"m4a\",\"mp2a\",\"m2a\",\"m3a\"],mpegurl:\"m3u\",ogg:[\"oga\",\"ogg\",\"spx\"],\"x-aiff\":[\"aif\",\"aiff\",\"aifc\"],\"x-ms-wma\":\"wma\",\"x-wav\":\"wav\",adpcm:\"adp\",mp4:\"mp4a\",webm:\"weba\",\"x-aac\":\"aac\",\"x-caf\":\"caf\",\"x-matroska\":\"mka\",\"x-pn-realaudio-plugin\":\"rmp\",xm:\"xm\",mid:[\"mid\",\"rmi\"]},image:{gif:\"gif\",ief:\"ief\",jpeg:[\"jpeg\",\"jpg\",\"jpe\"],pcx:\"pcx\",png:\"png\",\"svg+xml\":[\"svg\",\"svgz\"],tiff:[\"tiff\",\"tif\"],\"x-icon\":\"ico\",bmp:\"bmp\",webp:\"webp\",\"x-pict\":[\"pic\",\"pct\"],\"x-tga\":\"tga\",\"cis-cod\":\"cod\"},text:{\"cache-manifest\":[\"manifest\",\"appcache\"],css:\"css\",csv:\"csv\",html:[\"html\",\"htm\",\"shtml\",\"stm\"],mathml:\"mml\",plain:[\"txt\",\"text\",\"brf\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"bas\"],richtext:\"rtx\",\"tab-separated-values\":\"tsv\",\"x-bibtex\":\"bib\"},video:{mpeg:[\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\",\"mp2\",\"mpa\",\"mpv2\"],mp4:[\"mp4\",\"mp4v\",\"mpg4\"],quicktime:[\"qt\",\"mov\"],ogg:\"ogv\",\"vnd.mpegurl\":[\"mxu\",\"m4u\"],\"x-flv\":\"flv\",\"x-la-asf\":[\"lsf\",\"lsx\"],\"x-mng\":\"mng\",\"x-ms-asf\":[\"asf\",\"asx\",\"asr\"],\"x-ms-wm\":\"wm\",\"x-ms-wmv\":\"wmv\",\"x-ms-wmx\":\"wmx\",\"x-ms-wvx\":\"wvx\",\"x-msvideo\":\"avi\",\"x-sgi-movie\":\"movie\",\"x-matroska\":[\"mpv\",\"mkv\",\"mk3d\",\"mks\"],\"3gpp2\":\"3g2\",h261:\"h261\",h263:\"h263\",h264:\"h264\",jpeg:\"jpgv\",jpm:[\"jpm\",\"jpgm\"],mj2:[\"mj2\",\"mjp2\"],\"vnd.ms-playready.media.pyv\":\"pyv\",\"vnd.uvvu.mp4\":[\"uvu\",\"uvvu\"],\"vnd.vivo\":\"viv\",webm:\"webm\",\"x-f4v\":\"f4v\",\"x-m4v\":\"m4v\",\"x-ms-vob\":\"vob\",\"x-smv\":\"smv\"}},_=function(){var t,e,i,n,s={};for(t in N)if(N.hasOwnProperty(t))for(e in N[t])if(N[t].hasOwnProperty(e))if(\"string\"==typeof(i=N[t][e]))s[i]=t+\"/\"+e;else for(n=0;n<i.length;n++)s[i[n]]=t+\"/\"+e;return s}();var T={lookup:function(t){return t&&_[t.split(\".\").pop().toLowerCase()]||\"text/plain\"}};var C=class{constructor(t,e){this.settings={replacements:e&&e.replacements||\"base64\",archive:e&&e.archive,resolver:e&&e.resolver,request:e&&e.request},this.process(t)}process(t){this.manifest=t,this.resources=Object.keys(t).map((function(e){return t[e]})),this.replacementUrls=[],this.html=[],this.assets=[],this.css=[],this.urls=[],this.cssUrls=[],this.split(),this.splitUrls()}split(){this.html=this.resources.filter((function(t){if(\"application/xhtml+xml\"===t.type||\"text/html\"===t.type)return!0})),this.assets=this.resources.filter((function(t){if(\"application/xhtml+xml\"!==t.type&&\"text/html\"!==t.type)return!0})),this.css=this.resources.filter((function(t){if(\"text/css\"===t.type)return!0}))}splitUrls(){this.urls=this.assets.map(function(t){return t.href}.bind(this)),this.cssUrls=this.css.map((function(t){return t.href}))}createUrl(t){var e=new o.a(t),i=T.lookup(e.filename);return this.settings.archive?this.settings.archive.createUrl(t,{base64:\"base64\"===this.settings.replacements}):\"base64\"===this.settings.replacements?this.settings.request(t,\"blob\").then(t=>Object(r.blob2base64)(t)).then(t=>Object(r.createBase64Url)(t,i)):this.settings.request(t,\"blob\").then(t=>Object(r.createBlobUrl)(t,i))}replacements(){if(\"none\"===this.settings.replacements)return new Promise(function(t){t(this.urls)}.bind(this));var t=this.urls.map(t=>{var e=this.settings.resolver(t);return this.createUrl(e).catch(t=>(console.error(t),null))});return Promise.all(t).then(t=>(this.replacementUrls=t.filter(t=>\"string\"==typeof t),t))}replaceCss(t,e){var i=[];return t=t||this.settings.archive,e=e||this.settings.resolver,this.cssUrls.forEach(function(n){var s=this.createCssFile(n,t,e).then(function(t){var e=this.urls.indexOf(n);e>-1&&(this.replacementUrls[e]=t)}.bind(this));i.push(s)}.bind(this)),Promise.all(i)}createCssFile(t){if(w.a.isAbsolute(t))return new Promise((function(t){t()}));var e,i=this.settings.resolver(t);e=this.settings.archive?this.settings.archive.getText(i):this.settings.request(i,\"text\");var n=this.urls.map(t=>{var e=this.settings.resolver(t);return new a.a(i).relative(e)});return e?e.then(t=>(t=Object(c.e)(t,n,this.replacementUrls),\"base64\"===this.settings.replacements?Object(r.createBase64Url)(t,\"text/css\"):Object(r.createBlobUrl)(t,\"text/css\")),t=>new Promise((function(t){t()}))):new Promise((function(t){t()}))}relativeTo(t,e){return e=e||this.settings.resolver,this.urls.map(function(i){var n=e(i);return new a.a(t).relative(n)}.bind(this))}get(t){var e=this.urls.indexOf(t);if(-1!==e)return this.replacementUrls.length?new Promise(function(t,i){t(this.replacementUrls[e])}.bind(this)):this.createUrl(t)}substitute(t,e){var i;return i=e?this.relativeTo(e):this.urls,Object(c.e)(t,i,this.replacementUrls)}destroy(){this.settings=void 0,this.manifest=void 0,this.resources=void 0,this.replacementUrls=void 0,this.html=void 0,this.assets=void 0,this.css=void 0,this.urls=void 0,this.cssUrls=void 0}};var O=class{constructor(t){this.pages=[],this.locations=[],this.epubcfi=new h.a,this.firstPage=0,this.lastPage=0,this.totalPages=0,this.toc=void 0,this.ncx=void 0,t&&(this.pageList=this.parse(t)),this.pageList&&this.pageList.length&&this.process(this.pageList)}parse(t){var e=Object(r.qs)(t,\"html\"),i=Object(r.qs)(t,\"ncx\");return e?this.parseNav(t):i?this.parseNcx(t):void 0}parseNav(t){var e,i,n=Object(r.querySelectorByType)(t,\"nav\",\"page-list\"),s=n?Object(r.qsa)(n,\"li\"):[],o=s.length,a=[];if(!s||0===o)return a;for(e=0;e<o;++e)i=this.item(s[e]),a.push(i);return a}parseNcx(t){var e,i,n,s,o=[],a=0;if(!(i=Object(r.qs)(t,\"pageList\")))return o;if(s=(n=Object(r.qsa)(i,\"pageTarget\")).length,!n||0===n.length)return o;for(a=0;a<s;++a)e=this.ncxItem(n[a]),o.push(e);return o}ncxItem(t){var e=Object(r.qs)(t,\"navLabel\"),i=Object(r.qs)(e,\"text\").textContent;return{href:Object(r.qs)(t,\"content\").getAttribute(\"src\"),page:parseInt(i,10)}}item(t){var e,i,n=Object(r.qs)(t,\"a\"),s=n.getAttribute(\"href\")||\"\",o=n.textContent||\"\",a=parseInt(o);return-1!=s.indexOf(\"epubcfi\")?(i=(e=s.split(\"#\"))[0],{cfi:e.length>1&&e[1],href:s,packageUrl:i,page:a}):{href:s,page:a}}process(t){t.forEach((function(t){this.pages.push(t.page),t.cfi&&this.locations.push(t.cfi)}),this),this.firstPage=parseInt(this.pages[0]),this.lastPage=parseInt(this.pages[this.pages.length-1]),this.totalPages=this.lastPage-this.firstPage}pageFromCfi(t){var e=-1;if(0===this.locations.length)return-1;var i=Object(r.indexOfSorted)(t,this.locations,this.epubcfi.compare);return-1!=i?e=this.pages[i]:void 0!==(e=(i=Object(r.locationOf)(t,this.locations,this.epubcfi.compare))-1>=0?this.pages[i-1]:this.pages[0])||(e=-1),e}cfiFromPage(t){var e=-1;\"number\"!=typeof t&&(t=parseInt(t));var i=this.pages.indexOf(t);return-1!=i&&(e=this.locations[i]),e}pageFromPercentage(t){return Math.round(this.totalPages*t)}percentageFromPage(t){var e=(t-this.firstPage)/this.totalPages;return Math.round(1e3*e)/1e3}percentageFromCfi(t){var e=this.pageFromCfi(t);return this.percentageFromPage(e)}destroy(){this.pages=void 0,this.locations=void 0,this.epubcfi=void 0,this.pageList=void 0,this.toc=void 0,this.ncx=void 0}},I=i(16),R=i(29),k=i.n(R);var A=class{constructor(){this.zip=void 0,this.urlCache={},this.checkRequirements()}checkRequirements(){try{this.zip=new k.a}catch(t){throw new Error(\"JSZip lib not loaded\")}}open(t,e){return this.zip.loadAsync(t,{base64:e})}openUrl(t,e){return u(t,\"binary\").then(function(t){return this.zip.loadAsync(t,{base64:e})}.bind(this))}request(t,e){var i,n=new r.defer,s=new a.a(t);return e||(e=s.extension),(i=\"blob\"==e?this.getBlob(t):this.getText(t))?i.then(function(t){let i=this.handleResponse(t,e);n.resolve(i)}.bind(this)):n.reject({message:\"File not found in the epub: \"+t,stack:(new Error).stack}),n.promise}handleResponse(t,e){return\"json\"==e?JSON.parse(t):Object(r.isXml)(e)?Object(r.parse)(t,\"text/xml\"):\"xhtml\"==e?Object(r.parse)(t,\"application/xhtml+xml\"):\"html\"==e||\"htm\"==e?Object(r.parse)(t,\"text/html\"):t}getBlob(t,e){var i=window.decodeURIComponent(t.substr(1)),n=this.zip.file(i);if(n)return e=e||T.lookup(n.name),n.async(\"uint8array\").then((function(t){return new Blob([t],{type:e})}))}getText(t,e){var i=window.decodeURIComponent(t.substr(1)),n=this.zip.file(i);if(n)return n.async(\"string\").then((function(t){return t}))}getBase64(t,e){var i=window.decodeURIComponent(t.substr(1)),n=this.zip.file(i);if(n)return e=e||T.lookup(n.name),n.async(\"base64\").then((function(t){return\"data:\"+e+\";base64,\"+t}))}createUrl(t,e){var i,n,s=new r.defer,o=window.URL||window.webkitURL||window.mozURL,a=e&&e.base64;return t in this.urlCache?(s.resolve(this.urlCache[t]),s.promise):(a?(n=this.getBase64(t))&&n.then(function(e){this.urlCache[t]=e,s.resolve(e)}.bind(this)):(n=this.getBlob(t))&&n.then(function(e){i=o.createObjectURL(e),this.urlCache[t]=i,s.resolve(i)}.bind(this)),n||s.reject({message:\"File not found in the epub: \"+t,stack:(new Error).stack}),s.promise)}revokeUrl(t){var e=window.URL||window.webkitURL||window.mozURL,i=this.urlCache[t];i&&e.revokeObjectURL(i)}destroy(){var t=window.URL||window.webkitURL||window.mozURL;for(let e in this.urlCache)t.revokeObjectURL(e);this.zip=void 0,this.urlCache={}}},L=i(23),j=i.n(L);class D{constructor(t,e,i){this.urlCache={},this.storage=void 0,this.name=t,this.requester=e||u,this.resolver=i,this.online=!0,this.checkRequirements(),this.addListeners()}checkRequirements(){try{let t;void 0===j.a&&(t=j.a),this.storage=t.createInstance({name:this.name})}catch(t){throw new Error(\"localForage lib not loaded\")}}addListeners(){this._status=this.status.bind(this),window.addEventListener(\"online\",this._status),window.addEventListener(\"offline\",this._status)}removeListeners(){window.removeEventListener(\"online\",this._status),window.removeEventListener(\"offline\",this._status),this._status=void 0}status(t){let e=navigator.onLine;this.online=e,e?this.emit(\"online\",this):this.emit(\"offline\",this)}add(t,e){let i=t.resources.map(t=>{let{href:i}=t,n=this.resolver(i),s=window.encodeURIComponent(n);return this.storage.getItem(s).then(t=>!t||e?this.requester(n,\"binary\").then(t=>this.storage.setItem(s,t)):t)});return Promise.all(i)}put(t,e,i){let n=window.encodeURIComponent(t);return this.storage.getItem(n).then(s=>s||this.requester(t,\"binary\",e,i).then(t=>this.storage.setItem(n,t)))}request(t,e,i,n){return this.online?this.requester(t,e,i,n).then(e=>(this.put(t),e)):this.retrieve(t,e)}retrieve(t,e){new r.defer;var i=new a.a(t);return e||(e=i.extension),(\"blob\"==e?this.getBlob(t):this.getText(t)).then(i=>{var n,s=new r.defer;return i?(n=this.handleResponse(i,e),s.resolve(n)):s.reject({message:\"File not found in storage: \"+t,stack:(new Error).stack}),s.promise})}handleResponse(t,e){return\"json\"==e?JSON.parse(t):Object(r.isXml)(e)?Object(r.parse)(t,\"text/xml\"):\"xhtml\"==e?Object(r.parse)(t,\"application/xhtml+xml\"):\"html\"==e||\"htm\"==e?Object(r.parse)(t,\"text/html\"):t}getBlob(t,e){let i=window.encodeURIComponent(t);return this.storage.getItem(i).then((function(i){if(i)return e=e||T.lookup(t),new Blob([i],{type:e})}))}getText(t,e){let i=window.encodeURIComponent(t);return e=e||T.lookup(t),this.storage.getItem(i).then((function(t){var i,n=new r.defer,s=new FileReader;if(t)return i=new Blob([t],{type:e}),s.addEventListener(\"loadend\",()=>{n.resolve(s.result)}),s.readAsText(i,e),n.promise}))}getBase64(t,e){let i=window.encodeURIComponent(t);return e=e||T.lookup(t),this.storage.getItem(i).then(t=>{var i,n=new r.defer,s=new FileReader;if(t)return i=new Blob([t],{type:e}),s.addEventListener(\"loadend\",()=>{n.resolve(s.result)}),s.readAsDataURL(i,e),n.promise})}createUrl(t,e){var i,n,s=new r.defer,o=window.URL||window.webkitURL||window.mozURL,a=e&&e.base64;return t in this.urlCache?(s.resolve(this.urlCache[t]),s.promise):(a?(n=this.getBase64(t))&&n.then(function(e){this.urlCache[t]=e,s.resolve(e)}.bind(this)):(n=this.getBlob(t))&&n.then(function(e){i=o.createObjectURL(e),this.urlCache[t]=i,s.resolve(i)}.bind(this)),n||s.reject({message:\"File not found in storage: \"+t,stack:(new Error).stack}),s.promise)}revokeUrl(t){var e=window.URL||window.webkitURL||window.mozURL,i=this.urlCache[t];i&&e.revokeObjectURL(i)}destroy(){var t=window.URL||window.webkitURL||window.mozURL;for(let e in this.urlCache)t.revokeObjectURL(e);this.urlCache={},this.removeListeners()}}s()(D.prototype);var P=D;var M=class{constructor(t){this.interactive=\"\",this.fixedLayout=\"\",this.openToSpread=\"\",this.orientationLock=\"\",t&&this.parse(t)}parse(t){if(!t)return this;const e=Object(r.qs)(t,\"display_options\");if(!e)return this;return Object(r.qsa)(e,\"option\").forEach(t=>{let e=\"\";switch(t.childNodes.length&&(e=t.childNodes[0].nodeValue),t.attributes.name.value){case\"interactive\":this.interactive=e;break;case\"fixed-layout\":this.fixedLayout=e;break;case\"open-to-spread\":this.openToSpread=e;break;case\"orientation-lock\":this.orientationLock=e}}),this}destroy(){this.interactive=void 0,this.fixedLayout=void 0,this.openToSpread=void 0,this.orientationLock=void 0}};const z=\"binary\",B=\"base64\",q=\"epub\",F=\"opf\",U=\"json\",W=\"directory\";class H{constructor(t,e){void 0===e&&\"string\"!=typeof t&&t instanceof Blob==!1&&t instanceof ArrayBuffer==!1&&(e=t,t=void 0),this.settings=Object(r.extend)(this.settings||{},{requestMethod:void 0,requestCredentials:void 0,requestHeaders:void 0,encoding:void 0,replacements:void 0,canonical:void 0,openAs:void 0,store:void 0}),Object(r.extend)(this.settings,e),this.opening=new r.defer,this.opened=this.opening.promise,this.isOpen=!1,this.loading={manifest:new r.defer,spine:new r.defer,metadata:new r.defer,cover:new r.defer,navigation:new r.defer,pageList:new r.defer,resources:new r.defer,displayOptions:new r.defer},this.loaded={manifest:this.loading.manifest.promise,spine:this.loading.spine.promise,metadata:this.loading.metadata.promise,cover:this.loading.cover.promise,navigation:this.loading.navigation.promise,pageList:this.loading.pageList.promise,resources:this.loading.resources.promise,displayOptions:this.loading.displayOptions.promise},this.ready=Promise.all([this.loaded.manifest,this.loaded.spine,this.loaded.metadata,this.loaded.cover,this.loaded.navigation,this.loaded.resources,this.loaded.displayOptions]),this.isRendered=!1,this.request=this.settings.requestMethod||u,this.spine=new p,this.locations=new y(this.spine,this.load.bind(this)),this.navigation=void 0,this.pageList=void 0,this.url=void 0,this.path=void 0,this.archived=!1,this.archive=void 0,this.storage=void 0,this.resources=void 0,this.rendition=void 0,this.container=void 0,this.packaging=void 0,this.displayOptions=void 0,this.settings.store&&this.store(this.settings.store),t&&this.open(t,this.settings.openAs).catch(e=>{var i=new Error(\"Cannot load book at \"+t);this.emit(m.c.BOOK.OPEN_FAILED,i)})}open(t,e){var i,n=e||this.determineType(t);return n===z?(this.archived=!0,this.url=new o.a(\"/\",\"\"),i=this.openEpub(t)):n===B?(this.archived=!0,this.url=new o.a(\"/\",\"\"),i=this.openEpub(t,n)):n===q?(this.archived=!0,this.url=new o.a(\"/\",\"\"),i=this.request(t,\"binary\",this.settings.requestCredentials,this.settings.requestHeaders).then(this.openEpub.bind(this))):n==F?(this.url=new o.a(t),i=this.openPackaging(this.url.Path.toString())):n==U?(this.url=new o.a(t),i=this.openManifest(this.url.Path.toString())):(this.url=new o.a(t),i=this.openContainer(\"META-INF/container.xml\").then(this.openPackaging.bind(this))),i}openEpub(t,e){return this.unarchive(t,e||this.settings.encoding).then(()=>this.openContainer(\"META-INF/container.xml\")).then(t=>this.openPackaging(t))}openContainer(t){return this.load(t).then(t=>(this.container=new x(t),this.resolve(this.container.packagePath)))}openPackaging(t){return this.path=new a.a(t),this.load(t).then(t=>(this.packaging=new E(t),this.unpack(this.packaging)))}openManifest(t){return this.path=new a.a(t),this.load(t).then(t=>(this.packaging=new E,this.packaging.load(t),this.unpack(this.packaging)))}load(t){var e=this.resolve(t);return this.archived?this.archive.request(e):this.request(e,null,this.settings.requestCredentials,this.settings.requestHeaders)}resolve(t,e){if(t){var i=t;return t.indexOf(\"://\")>-1?t:(this.path&&(i=this.path.resolve(t)),0!=e&&this.url&&(i=this.url.resolve(i)),i)}}canonical(t){return t?this.settings.canonical?this.settings.canonical(t):this.resolve(t,!0):\"\"}determineType(t){var e;return\"base64\"===this.settings.encoding?B:\"string\"!=typeof t?z:((e=new o.a(t).path().extension)&&(e=e.replace(/\\?.*$/,\"\")),e?\"epub\"===e?q:\"opf\"===e?F:\"json\"===e?U:void 0:W)}unpack(t){this.package=t,\"\"===this.packaging.metadata.layout?this.load(this.url.resolve(\"META-INF/com.apple.ibooks.display-options.xml\")).then(t=>{this.displayOptions=new M(t),this.loading.displayOptions.resolve(this.displayOptions)}).catch(t=>{this.displayOptions=new M,this.loading.displayOptions.resolve(this.displayOptions)}):(this.displayOptions=new M,this.loading.displayOptions.resolve(this.displayOptions)),this.spine.unpack(this.packaging,this.resolve.bind(this),this.canonical.bind(this)),this.resources=new C(this.packaging.manifest,{archive:this.archive,resolver:this.resolve.bind(this),request:this.request.bind(this),replacements:this.settings.replacements||(this.archived?\"blobUrl\":\"base64\")}),this.loadNavigation(this.packaging).then(()=>{this.loading.navigation.resolve(this.navigation)}),this.packaging.coverPath&&(this.cover=this.resolve(this.packaging.coverPath)),this.loading.manifest.resolve(this.packaging.manifest),this.loading.metadata.resolve(this.packaging.metadata),this.loading.spine.resolve(this.spine),this.loading.cover.resolve(this.cover),this.loading.resources.resolve(this.resources),this.loading.pageList.resolve(this.pageList),this.isOpen=!0,this.archived||this.settings.replacements&&\"none\"!=this.settings.replacements?this.replacements().then(()=>{this.loaded.displayOptions.then(()=>{this.opening.resolve(this)})}).catch(t=>{console.error(t)}):this.loaded.displayOptions.then(()=>{this.opening.resolve(this)})}loadNavigation(t){let e=t.navPath||t.ncxPath,i=t.toc;return i?new Promise((e,n)=>{this.navigation=new S(i),t.pageList&&(this.pageList=new O(t.pageList)),e(this.navigation)}):e?this.load(e,\"xml\").then(t=>(this.navigation=new S(t),this.pageList=new O(t),this.navigation)):new Promise((t,e)=>{this.navigation=new S,this.pageList=new O,t(this.navigation)})}section(t){return this.spine.get(t)}renderTo(t,e){return this.rendition=new I.a(this,e),this.rendition.attachTo(t),this.rendition}setRequestCredentials(t){this.settings.requestCredentials=t}setRequestHeaders(t){this.settings.requestHeaders=t}unarchive(t,e){return this.archive=new A,this.archive.open(t,e)}store(t){let e=this.settings.replacements&&\"none\"!==this.settings.replacements,i=this.url,n=this.settings.requestMethod||u.bind(this);return this.storage=new P(t,n,this.resolve.bind(this)),this.request=this.storage.request.bind(this.storage),this.opened.then(()=>{this.archived&&(this.storage.requester=this.archive.request.bind(this.archive));let t=(t,e)=>{e.output=this.resources.substitute(t,e.url)};this.resources.settings.replacements=e||\"blobUrl\",this.resources.replacements().then(()=>this.resources.replaceCss()),this.storage.on(\"offline\",()=>{this.url=new o.a(\"/\",\"\"),this.spine.hooks.serialize.register(t)}),this.storage.on(\"online\",()=>{this.url=i,this.spine.hooks.serialize.deregister(t)})}),this.storage}coverUrl(){return this.loaded.cover.then(()=>this.cover?this.archived?this.archive.createUrl(this.cover):this.cover:null)}replacements(){return this.spine.hooks.serialize.register((t,e)=>{e.output=this.resources.substitute(t,e.url)}),this.resources.replacements().then(()=>this.resources.replaceCss())}getRange(t){var e=new h.a(t),i=this.spine.get(e.spinePos),n=this.load.bind(this);return i?i.load(n).then((function(t){return e.toRange(i.document)})):new Promise((t,e)=>{e(\"CFI could not be found\")})}key(t){var e=t||this.packaging.metadata.identifier||this.url.filename;return`epubjs:${m.b}:${e}`}destroy(){this.opened=void 0,this.loading=void 0,this.loaded=void 0,this.ready=void 0,this.isOpen=!1,this.isRendered=!1,this.spine&&this.spine.destroy(),this.locations&&this.locations.destroy(),this.pageList&&this.pageList.destroy(),this.archive&&this.archive.destroy(),this.resources&&this.resources.destroy(),this.container&&this.container.destroy(),this.packaging&&this.packaging.destroy(),this.rendition&&this.rendition.destroy(),this.displayOptions&&this.displayOptions.destroy(),this.spine=void 0,this.locations=void 0,this.pageList=void 0,this.archive=void 0,this.resources=void 0,this.container=void 0,this.packaging=void 0,this.rendition=void 0,this.navigation=void 0,this.url=void 0,this.path=void 0,this.archived=!1}}s()(H.prototype);e.a=H},function(t,e,i){var n=i(14).NAMESPACE;function s(t){return\"\"!==t}function r(t,e){return t.hasOwnProperty(e)||(t[e]=!0),t}function o(t){if(!t)return[];var e=function(t){return t?t.split(/[\\t\\n\\f\\r ]+/).filter(s):[]}(t);return Object.keys(e.reduce(r,{}))}function a(t,e){for(var i in t)e[i]=t[i]}function h(t,e){var i=t.prototype;if(!(i instanceof e)){function n(){}n.prototype=e.prototype,a(i,n=new n),t.prototype=i=n}i.constructor!=t&&(\"function\"!=typeof t&&console.error(\"unknown Class:\"+t),i.constructor=t)}var l={},c=l.ELEMENT_NODE=1,u=l.ATTRIBUTE_NODE=2,d=l.TEXT_NODE=3,f=l.CDATA_SECTION_NODE=4,p=l.ENTITY_REFERENCE_NODE=5,g=l.ENTITY_NODE=6,m=l.PROCESSING_INSTRUCTION_NODE=7,v=l.COMMENT_NODE=8,y=l.DOCUMENT_NODE=9,b=l.DOCUMENT_TYPE_NODE=10,w=l.DOCUMENT_FRAGMENT_NODE=11,x=l.NOTATION_NODE=12,E={},S={},N=(E.INDEX_SIZE_ERR=(S[1]=\"Index size error\",1),E.DOMSTRING_SIZE_ERR=(S[2]=\"DOMString size error\",2),E.HIERARCHY_REQUEST_ERR=(S[3]=\"Hierarchy request error\",3)),_=(E.WRONG_DOCUMENT_ERR=(S[4]=\"Wrong document\",4),E.INVALID_CHARACTER_ERR=(S[5]=\"Invalid character\",5),E.NO_DATA_ALLOWED_ERR=(S[6]=\"No data allowed\",6),E.NO_MODIFICATION_ALLOWED_ERR=(S[7]=\"No modification allowed\",7),E.NOT_FOUND_ERR=(S[8]=\"Not found\",8)),T=(E.NOT_SUPPORTED_ERR=(S[9]=\"Not supported\",9),E.INUSE_ATTRIBUTE_ERR=(S[10]=\"Attribute in use\",10));E.INVALID_STATE_ERR=(S[11]=\"Invalid state\",11),E.SYNTAX_ERR=(S[12]=\"Syntax error\",12),E.INVALID_MODIFICATION_ERR=(S[13]=\"Invalid modification\",13),E.NAMESPACE_ERR=(S[14]=\"Invalid namespace\",14),E.INVALID_ACCESS_ERR=(S[15]=\"Invalid access\",15);function C(t,e){if(e instanceof Error)var i=e;else i=this,Error.call(this,S[t]),this.message=S[t],Error.captureStackTrace&&Error.captureStackTrace(this,C);return i.code=t,e&&(this.message=this.message+\": \"+e),i}function O(){}function I(t,e){this._node=t,this._refresh=e,R(this)}function R(t){var e=t._node._inc||t._node.ownerDocument._inc;if(t._inc!=e){var i=t._refresh(t._node);at(t,\"length\",i.length),a(i,t),t._inc=e}}function k(){}function A(t,e){for(var i=t.length;i--;)if(t[i]===e)return i}function L(t,e,i,s){if(s?e[A(e,s)]=i:e[e.length++]=i,t){i.ownerElement=t;var r=t.ownerDocument;r&&(s&&q(r,t,s),function(t,e,i){t&&t._inc++,i.namespaceURI===n.XMLNS&&(e._nsMap[i.prefix?i.localName:\"\"]=i.value)}(r,t,i))}}function j(t,e,i){var n=A(e,i);if(!(n>=0))throw C(_,new Error(t.tagName+\"@\"+i));for(var s=e.length-1;n<s;)e[n]=e[++n];if(e.length=s,t){var r=t.ownerDocument;r&&(q(r,t,i),i.ownerElement=null)}}function D(){}function P(){}function M(t){return(\"<\"==t?\"&lt;\":\">\"==t&&\"&gt;\")||\"&\"==t&&\"&amp;\"||'\"'==t&&\"&quot;\"||\"&#\"+t.charCodeAt()+\";\"}function z(t,e){if(e(t))return!0;if(t=t.firstChild)do{if(z(t,e))return!0}while(t=t.nextSibling)}function B(){}function q(t,e,i,s){t&&t._inc++,i.namespaceURI===n.XMLNS&&delete e._nsMap[i.prefix?i.localName:\"\"]}function F(t,e,i){if(t&&t._inc){t._inc++;var n=e.childNodes;if(i)n[n.length++]=i;else{for(var s=e.firstChild,r=0;s;)n[r++]=s,s=s.nextSibling;n.length=r}}}function U(t,e){var i=e.previousSibling,n=e.nextSibling;return i?i.nextSibling=n:t.firstChild=n,n?n.previousSibling=i:t.lastChild=i,F(t.ownerDocument,t),e}function W(t,e,i){var n=e.parentNode;if(n&&n.removeChild(e),e.nodeType===w){var s=e.firstChild;if(null==s)return e;var r=e.lastChild}else s=r=e;var o=i?i.previousSibling:t.lastChild;s.previousSibling=o,r.nextSibling=i,o?o.nextSibling=s:t.firstChild=s,null==i?t.lastChild=r:i.previousSibling=r;do{s.parentNode=t}while(s!==r&&(s=s.nextSibling));return F(t.ownerDocument||t,t),e.nodeType==w&&(e.firstChild=e.lastChild=null),e}function H(){this._nsMap={}}function V(){}function X(){}function G(){}function Y(){}function $(){}function K(){}function Z(){}function J(){}function Q(){}function tt(){}function et(){}function it(){}function nt(t,e){var i=[],n=9==this.nodeType&&this.documentElement||this,s=n.prefix,r=n.namespaceURI;if(r&&null==s&&null==(s=n.lookupPrefix(r)))var o=[{namespace:r,prefix:null}];return ot(this,i,t,e,o),i.join(\"\")}function st(t,e,i){var s=t.prefix||\"\",r=t.namespaceURI;if(!r)return!1;if(\"xml\"===s&&r===n.XML||r===n.XMLNS)return!1;for(var o=i.length;o--;){var a=i[o];if(a.prefix===s)return a.namespace!==r}return!0}function rt(t,e,i){t.push(\" \",e,'=\"',i.replace(/[<&\"]/g,M),'\"')}function ot(t,e,i,s,r){if(r||(r=[]),s){if(!(t=s(t)))return;if(\"string\"==typeof t)return void e.push(t)}switch(t.nodeType){case c:var o=t.attributes,a=o.length,h=t.firstChild,l=t.tagName,g=l;if(!(i=n.isHTML(t.namespaceURI)||i)&&!t.prefix&&t.namespaceURI){for(var x,E=0;E<o.length;E++)if(\"xmlns\"===o.item(E).name){x=o.item(E).value;break}if(!x)for(var S=r.length-1;S>=0;S--){if(\"\"===(N=r[S]).prefix&&N.namespace===t.namespaceURI){x=N.namespace;break}}if(x!==t.namespaceURI)for(S=r.length-1;S>=0;S--){var N;if((N=r[S]).namespace===t.namespaceURI){N.prefix&&(g=N.prefix+\":\"+l);break}}}e.push(\"<\",g);for(var _=0;_<a;_++){\"xmlns\"==(T=o.item(_)).prefix?r.push({prefix:T.localName,namespace:T.value}):\"xmlns\"==T.nodeName&&r.push({prefix:\"\",namespace:T.value})}for(_=0;_<a;_++){var T,C,O;if(st(T=o.item(_),0,r))rt(e,(C=T.prefix||\"\")?\"xmlns:\"+C:\"xmlns\",O=T.namespaceURI),r.push({prefix:C,namespace:O});ot(T,e,i,s,r)}if(l===g&&st(t,0,r))rt(e,(C=t.prefix||\"\")?\"xmlns:\"+C:\"xmlns\",O=t.namespaceURI),r.push({prefix:C,namespace:O});if(h||i&&!/^(?:meta|link|img|br|hr|input)$/i.test(l)){if(e.push(\">\"),i&&/^script$/i.test(l))for(;h;)h.data?e.push(h.data):ot(h,e,i,s,r.slice()),h=h.nextSibling;else for(;h;)ot(h,e,i,s,r.slice()),h=h.nextSibling;e.push(\"</\",g,\">\")}else e.push(\"/>\");return;case y:case w:for(h=t.firstChild;h;)ot(h,e,i,s,r.slice()),h=h.nextSibling;return;case u:return rt(e,t.name,t.value);case d:return e.push(t.data.replace(/[<&]/g,M).replace(/]]>/g,\"]]&gt;\"));case f:return e.push(\"<![CDATA[\",t.data,\"]]>\");case v:return e.push(\"\\x3c!--\",t.data,\"--\\x3e\");case b:var I=t.publicId,R=t.systemId;if(e.push(\"<!DOCTYPE \",t.name),I)e.push(\" PUBLIC \",I),R&&\".\"!=R&&e.push(\" \",R),e.push(\">\");else if(R&&\".\"!=R)e.push(\" SYSTEM \",R,\">\");else{var k=t.internalSubset;k&&e.push(\" [\",k,\"]\"),e.push(\">\")}return;case m:return e.push(\"<?\",t.target,\" \",t.data,\"?>\");case p:return e.push(\"&\",t.nodeName,\";\");default:e.push(\"??\",t.nodeName)}}function at(t,e,i){t[e]=i}C.prototype=Error.prototype,a(E,C),O.prototype={length:0,item:function(t){return this[t]||null},toString:function(t,e){for(var i=[],n=0;n<this.length;n++)ot(this[n],i,t,e);return i.join(\"\")}},I.prototype.item=function(t){return R(this),this[t]},h(I,O),k.prototype={length:0,item:O.prototype.item,getNamedItem:function(t){for(var e=this.length;e--;){var i=this[e];if(i.nodeName==t)return i}},setNamedItem:function(t){var e=t.ownerElement;if(e&&e!=this._ownerElement)throw new C(T);var i=this.getNamedItem(t.nodeName);return L(this._ownerElement,this,t,i),i},setNamedItemNS:function(t){var e,i=t.ownerElement;if(i&&i!=this._ownerElement)throw new C(T);return e=this.getNamedItemNS(t.namespaceURI,t.localName),L(this._ownerElement,this,t,e),e},removeNamedItem:function(t){var e=this.getNamedItem(t);return j(this._ownerElement,this,e),e},removeNamedItemNS:function(t,e){var i=this.getNamedItemNS(t,e);return j(this._ownerElement,this,i),i},getNamedItemNS:function(t,e){for(var i=this.length;i--;){var n=this[i];if(n.localName==e&&n.namespaceURI==t)return n}return null}},D.prototype={hasFeature:function(t,e){return!0},createDocument:function(t,e,i){var n=new B;if(n.implementation=this,n.childNodes=new O,n.doctype=i||null,i&&n.appendChild(i),e){var s=n.createElementNS(t,e);n.appendChild(s)}return n},createDocumentType:function(t,e,i){var n=new K;return n.name=t,n.nodeName=t,n.publicId=e||\"\",n.systemId=i||\"\",n}},P.prototype={firstChild:null,lastChild:null,previousSibling:null,nextSibling:null,attributes:null,parentNode:null,childNodes:null,ownerDocument:null,nodeValue:null,namespaceURI:null,prefix:null,localName:null,insertBefore:function(t,e){return W(this,t,e)},replaceChild:function(t,e){this.insertBefore(t,e),e&&this.removeChild(e)},removeChild:function(t){return U(this,t)},appendChild:function(t){return this.insertBefore(t,null)},hasChildNodes:function(){return null!=this.firstChild},cloneNode:function(t){return function t(e,i,n){var s=new i.constructor;for(var r in i){var o=i[r];\"object\"!=typeof o&&o!=s[r]&&(s[r]=o)}i.childNodes&&(s.childNodes=new O);switch(s.ownerDocument=e,s.nodeType){case c:var a=i.attributes,h=s.attributes=new k,l=a.length;h._ownerElement=s;for(var d=0;d<l;d++)s.setAttributeNode(t(e,a.item(d),!0));break;case u:n=!0}if(n)for(var f=i.firstChild;f;)s.appendChild(t(e,f,n)),f=f.nextSibling;return s}(this.ownerDocument||this,this,t)},normalize:function(){for(var t=this.firstChild;t;){var e=t.nextSibling;e&&e.nodeType==d&&t.nodeType==d?(this.removeChild(e),t.appendData(e.data)):(t.normalize(),t=e)}},isSupported:function(t,e){return this.ownerDocument.implementation.hasFeature(t,e)},hasAttributes:function(){return this.attributes.length>0},lookupPrefix:function(t){for(var e=this;e;){var i=e._nsMap;if(i)for(var n in i)if(i[n]==t)return n;e=e.nodeType==u?e.ownerDocument:e.parentNode}return null},lookupNamespaceURI:function(t){for(var e=this;e;){var i=e._nsMap;if(i&&t in i)return i[t];e=e.nodeType==u?e.ownerDocument:e.parentNode}return null},isDefaultNamespace:function(t){return null==this.lookupPrefix(t)}},a(l,P),a(l,P.prototype),B.prototype={nodeName:\"#document\",nodeType:y,doctype:null,documentElement:null,_inc:1,insertBefore:function(t,e){if(t.nodeType==w){for(var i=t.firstChild;i;){var n=i.nextSibling;this.insertBefore(i,e),i=n}return t}return null==this.documentElement&&t.nodeType==c&&(this.documentElement=t),W(this,t,e),t.ownerDocument=this,t},removeChild:function(t){return this.documentElement==t&&(this.documentElement=null),U(this,t)},importNode:function(t,e){return function t(e,i,n){var s;switch(i.nodeType){case c:(s=i.cloneNode(!1)).ownerDocument=e;case w:break;case u:n=!0}s||(s=i.cloneNode(!1));if(s.ownerDocument=e,s.parentNode=null,n)for(var r=i.firstChild;r;)s.appendChild(t(e,r,n)),r=r.nextSibling;return s}(this,t,e)},getElementById:function(t){var e=null;return z(this.documentElement,(function(i){if(i.nodeType==c&&i.getAttribute(\"id\")==t)return e=i,!0})),e},getElementsByClassName:function(t){var e=o(t);return new I(this,(function(i){var n=[];return e.length>0&&z(i.documentElement,(function(s){if(s!==i&&s.nodeType===c){var r=s.getAttribute(\"class\");if(r){var a=t===r;if(!a){var h=o(r);a=e.every((l=h,function(t){return l&&-1!==l.indexOf(t)}))}a&&n.push(s)}}var l})),n}))},createElement:function(t){var e=new H;return e.ownerDocument=this,e.nodeName=t,e.tagName=t,e.localName=t,e.childNodes=new O,(e.attributes=new k)._ownerElement=e,e},createDocumentFragment:function(){var t=new tt;return t.ownerDocument=this,t.childNodes=new O,t},createTextNode:function(t){var e=new G;return e.ownerDocument=this,e.appendData(t),e},createComment:function(t){var e=new Y;return e.ownerDocument=this,e.appendData(t),e},createCDATASection:function(t){var e=new $;return e.ownerDocument=this,e.appendData(t),e},createProcessingInstruction:function(t,e){var i=new et;return i.ownerDocument=this,i.tagName=i.target=t,i.nodeValue=i.data=e,i},createAttribute:function(t){var e=new V;return e.ownerDocument=this,e.name=t,e.nodeName=t,e.localName=t,e.specified=!0,e},createEntityReference:function(t){var e=new Q;return e.ownerDocument=this,e.nodeName=t,e},createElementNS:function(t,e){var i=new H,n=e.split(\":\"),s=i.attributes=new k;return i.childNodes=new O,i.ownerDocument=this,i.nodeName=e,i.tagName=e,i.namespaceURI=t,2==n.length?(i.prefix=n[0],i.localName=n[1]):i.localName=e,s._ownerElement=i,i},createAttributeNS:function(t,e){var i=new V,n=e.split(\":\");return i.ownerDocument=this,i.nodeName=e,i.name=e,i.namespaceURI=t,i.specified=!0,2==n.length?(i.prefix=n[0],i.localName=n[1]):i.localName=e,i}},h(B,P),H.prototype={nodeType:c,hasAttribute:function(t){return null!=this.getAttributeNode(t)},getAttribute:function(t){var e=this.getAttributeNode(t);return e&&e.value||\"\"},getAttributeNode:function(t){return this.attributes.getNamedItem(t)},setAttribute:function(t,e){var i=this.ownerDocument.createAttribute(t);i.value=i.nodeValue=\"\"+e,this.setAttributeNode(i)},removeAttribute:function(t){var e=this.getAttributeNode(t);e&&this.removeAttributeNode(e)},appendChild:function(t){return t.nodeType===w?this.insertBefore(t,null):function(t,e){var i=e.parentNode;if(i){var n=t.lastChild;i.removeChild(e);n=t.lastChild}return n=t.lastChild,e.parentNode=t,e.previousSibling=n,e.nextSibling=null,n?n.nextSibling=e:t.firstChild=e,t.lastChild=e,F(t.ownerDocument,t,e),e}(this,t)},setAttributeNode:function(t){return this.attributes.setNamedItem(t)},setAttributeNodeNS:function(t){return this.attributes.setNamedItemNS(t)},removeAttributeNode:function(t){return this.attributes.removeNamedItem(t.nodeName)},removeAttributeNS:function(t,e){var i=this.getAttributeNodeNS(t,e);i&&this.removeAttributeNode(i)},hasAttributeNS:function(t,e){return null!=this.getAttributeNodeNS(t,e)},getAttributeNS:function(t,e){var i=this.getAttributeNodeNS(t,e);return i&&i.value||\"\"},setAttributeNS:function(t,e,i){var n=this.ownerDocument.createAttributeNS(t,e);n.value=n.nodeValue=\"\"+i,this.setAttributeNode(n)},getAttributeNodeNS:function(t,e){return this.attributes.getNamedItemNS(t,e)},getElementsByTagName:function(t){return new I(this,(function(e){var i=[];return z(e,(function(n){n===e||n.nodeType!=c||\"*\"!==t&&n.tagName!=t||i.push(n)})),i}))},getElementsByTagNameNS:function(t,e){return new I(this,(function(i){var n=[];return z(i,(function(s){s===i||s.nodeType!==c||\"*\"!==t&&s.namespaceURI!==t||\"*\"!==e&&s.localName!=e||n.push(s)})),n}))}},B.prototype.getElementsByTagName=H.prototype.getElementsByTagName,B.prototype.getElementsByTagNameNS=H.prototype.getElementsByTagNameNS,h(H,P),V.prototype.nodeType=u,h(V,P),X.prototype={data:\"\",substringData:function(t,e){return this.data.substring(t,t+e)},appendData:function(t){t=this.data+t,this.nodeValue=this.data=t,this.length=t.length},insertData:function(t,e){this.replaceData(t,0,e)},appendChild:function(t){throw new Error(S[N])},deleteData:function(t,e){this.replaceData(t,e,\"\")},replaceData:function(t,e,i){i=this.data.substring(0,t)+i+this.data.substring(t+e),this.nodeValue=this.data=i,this.length=i.length}},h(X,P),G.prototype={nodeName:\"#text\",nodeType:d,splitText:function(t){var e=this.data,i=e.substring(t);e=e.substring(0,t),this.data=this.nodeValue=e,this.length=e.length;var n=this.ownerDocument.createTextNode(i);return this.parentNode&&this.parentNode.insertBefore(n,this.nextSibling),n}},h(G,X),Y.prototype={nodeName:\"#comment\",nodeType:v},h(Y,X),$.prototype={nodeName:\"#cdata-section\",nodeType:f},h($,X),K.prototype.nodeType=b,h(K,P),Z.prototype.nodeType=x,h(Z,P),J.prototype.nodeType=g,h(J,P),Q.prototype.nodeType=p,h(Q,P),tt.prototype.nodeName=\"#document-fragment\",tt.prototype.nodeType=w,h(tt,P),et.prototype.nodeType=m,h(et,P),it.prototype.serializeToString=function(t,e,i){return nt.call(t,e,i)},P.prototype.toString=nt;try{if(Object.defineProperty){Object.defineProperty(I.prototype,\"length\",{get:function(){return R(this),this.$$length}}),Object.defineProperty(P.prototype,\"textContent\",{get:function(){return function t(e){switch(e.nodeType){case c:case w:var i=[];for(e=e.firstChild;e;)7!==e.nodeType&&8!==e.nodeType&&i.push(t(e)),e=e.nextSibling;return i.join(\"\");default:return e.nodeValue}}(this)},set:function(t){switch(this.nodeType){case c:case w:for(;this.firstChild;)this.removeChild(this.firstChild);(t||String(t))&&this.appendChild(this.ownerDocument.createTextNode(t));break;default:this.data=t,this.value=t,this.nodeValue=t}}}),at=function(t,e,i){t[\"$$\"+e]=i}}}catch(t){}e.DocumentType=K,e.DOMException=C,e.DOMImplementation=D,e.Element=H,e.Node=P,e.NodeList=O,e.XMLSerializer=it},function(t,e,i){var n=i(52),s=\"object\"==typeof self&&self&&self.Object===Object&&self,r=n||s||Function(\"return this\")();t.exports=r},function(t,e,i){var n=i(26).Symbol;t.exports=n},function(t,e,i){var n=i(21),s=i(19);t.exports=function(t,e,i){var r=!0,o=!0;if(\"function\"!=typeof t)throw new TypeError(\"Expected a function\");return s(i)&&(r=\"leading\"in i?!!i.leading:r,o=\"trailing\"in i?!!i.trailing:o),n(t,e,{leading:r,maxWait:e,trailing:o})}},function(e,i){e.exports=t},function(t,e,i){\"use strict\";i.r(e),function(t){var n=i(24),s=i(16),r=i(2),o=i(12),a=i(0),h=i(1);i(20),i(10),i(22);function l(t,e){return new n.a(t,e)}l.VERSION=h.b,void 0!==t&&(t.EPUBJS_VERSION=h.b),l.Book=n.a,l.Rendition=s.a,l.Contents=o.a,l.CFI=r.a,l.utils=a,e.default=l}.call(this,i(17))},function(t,e,i){\"use strict\";var n=i(32),s=i(40),r=i(41),o=i(42);(t.exports=function(t,e){var i,r,a,h,l;return arguments.length<2||\"string\"!=typeof t?(h=e,e=t,t=null):h=arguments[2],null==t?(i=a=!0,r=!1):(i=o.call(t,\"c\"),r=o.call(t,\"e\"),a=o.call(t,\"w\")),l={value:e,configurable:i,enumerable:r,writable:a},h?n(s(h),l):l}).gs=function(t,e,i){var a,h,l,c;return\"string\"!=typeof t?(l=i,i=e,e=t,t=null):l=arguments[3],null==e?e=void 0:r(e)?null==i?i=void 0:r(i)||(l=i,i=void 0):(l=e,e=i=void 0),null==t?(a=!0,h=!1):(a=o.call(t,\"c\"),h=o.call(t,\"e\")),c={get:e,set:i,configurable:a,enumerable:h},l?n(s(l),c):c}},function(t,e,i){\"use strict\";t.exports=i(33)()?Object.assign:i(34)},function(t,e,i){\"use strict\";t.exports=function(){var t,e=Object.assign;return\"function\"==typeof e&&(e(t={foo:\"raz\"},{bar:\"dwa\"},{trzy:\"trzy\"}),t.foo+t.bar+t.trzy===\"razdwatrzy\")}},function(t,e,i){\"use strict\";var n=i(35),s=i(39),r=Math.max;t.exports=function(t,e){var i,o,a,h=r(arguments.length,2);for(t=Object(s(t)),a=function(n){try{t[n]=e[n]}catch(t){i||(i=t)}},o=1;o<h;++o)n(e=arguments[o]).forEach(a);if(void 0!==i)throw i;return t}},function(t,e,i){\"use strict\";t.exports=i(36)()?Object.keys:i(37)},function(t,e,i){\"use strict\";t.exports=function(){try{return Object.keys(\"primitive\"),!0}catch(t){return!1}}},function(t,e,i){\"use strict\";var n=i(18),s=Object.keys;t.exports=function(t){return s(n(t)?Object(t):t)}},function(t,e,i){\"use strict\";t.exports=function(){}},function(t,e,i){\"use strict\";var n=i(18);t.exports=function(t){if(!n(t))throw new TypeError(\"Cannot use null or undefined\");return t}},function(t,e,i){\"use strict\";var n=i(18),s=Array.prototype.forEach,r=Object.create,o=function(t,e){var i;for(i in t)e[i]=t[i]};t.exports=function(t){var e=r(null);return s.call(arguments,(function(t){n(t)&&o(Object(t),e)})),e}},function(t,e,i){\"use strict\";t.exports=function(t){return\"function\"==typeof t}},function(t,e,i){\"use strict\";t.exports=i(43)()?String.prototype.contains:i(44)},function(t,e,i){\"use strict\";var n=\"razdwatrzy\";t.exports=function(){return\"function\"==typeof n.contains&&(!0===n.contains(\"dwa\")&&!1===n.contains(\"foo\"))}},function(t,e,i){\"use strict\";var n=String.prototype.indexOf;t.exports=function(t){return n.call(this,t,arguments[1])>-1}},function(t,e,i){\"use strict\";t.exports=function(t){if(\"function\"!=typeof t)throw new TypeError(t+\" is not a function\");return t}},function(t,e,i){var n=i(14),s=i(25),r=i(47),o=i(48),a=s.DOMImplementation,h=n.NAMESPACE,l=o.ParseError,c=o.XMLReader;function u(t){this.options=t||{locator:{}}}function d(){this.cdata=!1}function f(t,e){e.lineNumber=t.lineNumber,e.columnNumber=t.columnNumber}function p(t){if(t)return\"\\n@\"+(t.systemId||\"\")+\"#[line:\"+t.lineNumber+\",col:\"+t.columnNumber+\"]\"}function g(t,e,i){return\"string\"==typeof t?t.substr(e,i):t.length>=e+i||e?new java.lang.String(t,e,i)+\"\":t}function m(t,e){t.currentElement?t.currentElement.appendChild(e):t.doc.appendChild(e)}u.prototype.parseFromString=function(t,e){var i=this.options,n=new c,s=i.domBuilder||new d,o=i.errorHandler,a=i.locator,l=i.xmlns||{},u=/\\/x?html?$/.test(e),f=u?r.HTML_ENTITIES:r.XML_ENTITIES;return a&&s.setDocumentLocator(a),n.errorHandler=function(t,e,i){if(!t){if(e instanceof d)return e;t=e}var n={},s=t instanceof Function;function r(e){var r=t[e];!r&&s&&(r=2==t.length?function(i){t(e,i)}:t),n[e]=r&&function(t){r(\"[xmldom \"+e+\"]\\t\"+t+p(i))}||function(){}}return i=i||{},r(\"warning\"),r(\"error\"),r(\"fatalError\"),n}(o,s,a),n.domBuilder=i.domBuilder||s,u&&(l[\"\"]=h.HTML),l.xml=l.xml||h.XML,t&&\"string\"==typeof t?n.parse(t,l,f):n.errorHandler.error(\"invalid doc source\"),s.doc},d.prototype={startDocument:function(){this.doc=(new a).createDocument(null,null,null),this.locator&&(this.doc.documentURI=this.locator.systemId)},startElement:function(t,e,i,n){var s=this.doc,r=s.createElementNS(t,i||e),o=n.length;m(this,r),this.currentElement=r,this.locator&&f(this.locator,r);for(var a=0;a<o;a++){t=n.getURI(a);var h=n.getValue(a),l=(i=n.getQName(a),s.createAttributeNS(t,i));this.locator&&f(n.getLocator(a),l),l.value=l.nodeValue=h,r.setAttributeNode(l)}},endElement:function(t,e,i){var n=this.currentElement;n.tagName;this.currentElement=n.parentNode},startPrefixMapping:function(t,e){},endPrefixMapping:function(t){},processingInstruction:function(t,e){var i=this.doc.createProcessingInstruction(t,e);this.locator&&f(this.locator,i),m(this,i)},ignorableWhitespace:function(t,e,i){},characters:function(t,e,i){if(t=g.apply(this,arguments)){if(this.cdata)var n=this.doc.createCDATASection(t);else n=this.doc.createTextNode(t);this.currentElement?this.currentElement.appendChild(n):/^\\s*$/.test(t)&&this.doc.appendChild(n),this.locator&&f(this.locator,n)}},skippedEntity:function(t){},endDocument:function(){this.doc.normalize()},setDocumentLocator:function(t){(this.locator=t)&&(t.lineNumber=0)},comment:function(t,e,i){t=g.apply(this,arguments);var n=this.doc.createComment(t);this.locator&&f(this.locator,n),m(this,n)},startCDATA:function(){this.cdata=!0},endCDATA:function(){this.cdata=!1},startDTD:function(t,e,i){var n=this.doc.implementation;if(n&&n.createDocumentType){var s=n.createDocumentType(t,e,i);this.locator&&f(this.locator,s),m(this,s),this.doc.doctype=s}},warning:function(t){console.warn(\"[xmldom warning]\\t\"+t,p(this.locator))},error:function(t){console.error(\"[xmldom error]\\t\"+t,p(this.locator))},fatalError:function(t){throw new l(t,this.locator)}},\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,(function(t){d.prototype[t]=function(){return null}})),e.__DOMHandler=d,e.DOMParser=u,e.DOMImplementation=s.DOMImplementation,e.XMLSerializer=s.XMLSerializer},function(t,e,i){var n=i(14).freeze;e.XML_ENTITIES=n({amp:\"&\",apos:\"'\",gt:\">\",lt:\"<\",quot:'\"'}),e.HTML_ENTITIES=n({lt:\"<\",gt:\">\",amp:\"&\",quot:'\"',apos:\"'\",Agrave:\"À\",Aacute:\"Á\",Acirc:\"Â\",Atilde:\"Ã\",Auml:\"Ä\",Aring:\"Å\",AElig:\"Æ\",Ccedil:\"Ç\",Egrave:\"È\",Eacute:\"É\",Ecirc:\"Ê\",Euml:\"Ë\",Igrave:\"Ì\",Iacute:\"Í\",Icirc:\"Î\",Iuml:\"Ï\",ETH:\"Ð\",Ntilde:\"Ñ\",Ograve:\"Ò\",Oacute:\"Ó\",Ocirc:\"Ô\",Otilde:\"Õ\",Ouml:\"Ö\",Oslash:\"Ø\",Ugrave:\"Ù\",Uacute:\"Ú\",Ucirc:\"Û\",Uuml:\"Ü\",Yacute:\"Ý\",THORN:\"Þ\",szlig:\"ß\",agrave:\"à\",aacute:\"á\",acirc:\"â\",atilde:\"ã\",auml:\"ä\",aring:\"å\",aelig:\"æ\",ccedil:\"ç\",egrave:\"è\",eacute:\"é\",ecirc:\"ê\",euml:\"ë\",igrave:\"ì\",iacute:\"í\",icirc:\"î\",iuml:\"ï\",eth:\"ð\",ntilde:\"ñ\",ograve:\"ò\",oacute:\"ó\",ocirc:\"ô\",otilde:\"õ\",ouml:\"ö\",oslash:\"ø\",ugrave:\"ù\",uacute:\"ú\",ucirc:\"û\",uuml:\"ü\",yacute:\"ý\",thorn:\"þ\",yuml:\"ÿ\",nbsp:\" \",iexcl:\"¡\",cent:\"¢\",pound:\"£\",curren:\"¤\",yen:\"¥\",brvbar:\"¦\",sect:\"§\",uml:\"¨\",copy:\"©\",ordf:\"ª\",laquo:\"«\",not:\"¬\",shy:\"­­\",reg:\"®\",macr:\"¯\",deg:\"°\",plusmn:\"±\",sup2:\"²\",sup3:\"³\",acute:\"´\",micro:\"µ\",para:\"¶\",middot:\"·\",cedil:\"¸\",sup1:\"¹\",ordm:\"º\",raquo:\"»\",frac14:\"¼\",frac12:\"½\",frac34:\"¾\",iquest:\"¿\",times:\"×\",divide:\"÷\",forall:\"∀\",part:\"∂\",exist:\"∃\",empty:\"∅\",nabla:\"∇\",isin:\"∈\",notin:\"∉\",ni:\"∋\",prod:\"∏\",sum:\"∑\",minus:\"−\",lowast:\"∗\",radic:\"√\",prop:\"∝\",infin:\"∞\",ang:\"∠\",and:\"∧\",or:\"∨\",cap:\"∩\",cup:\"∪\",int:\"∫\",there4:\"∴\",sim:\"∼\",cong:\"≅\",asymp:\"≈\",ne:\"≠\",equiv:\"≡\",le:\"≤\",ge:\"≥\",sub:\"⊂\",sup:\"⊃\",nsub:\"⊄\",sube:\"⊆\",supe:\"⊇\",oplus:\"⊕\",otimes:\"⊗\",perp:\"⊥\",sdot:\"⋅\",Alpha:\"Α\",Beta:\"Β\",Gamma:\"Γ\",Delta:\"Δ\",Epsilon:\"Ε\",Zeta:\"Ζ\",Eta:\"Η\",Theta:\"Θ\",Iota:\"Ι\",Kappa:\"Κ\",Lambda:\"Λ\",Mu:\"Μ\",Nu:\"Ν\",Xi:\"Ξ\",Omicron:\"Ο\",Pi:\"Π\",Rho:\"Ρ\",Sigma:\"Σ\",Tau:\"Τ\",Upsilon:\"Υ\",Phi:\"Φ\",Chi:\"Χ\",Psi:\"Ψ\",Omega:\"Ω\",alpha:\"α\",beta:\"β\",gamma:\"γ\",delta:\"δ\",epsilon:\"ε\",zeta:\"ζ\",eta:\"η\",theta:\"θ\",iota:\"ι\",kappa:\"κ\",lambda:\"λ\",mu:\"μ\",nu:\"ν\",xi:\"ξ\",omicron:\"ο\",pi:\"π\",rho:\"ρ\",sigmaf:\"ς\",sigma:\"σ\",tau:\"τ\",upsilon:\"υ\",phi:\"φ\",chi:\"χ\",psi:\"ψ\",omega:\"ω\",thetasym:\"ϑ\",upsih:\"ϒ\",piv:\"ϖ\",OElig:\"Œ\",oelig:\"œ\",Scaron:\"Š\",scaron:\"š\",Yuml:\"Ÿ\",fnof:\"ƒ\",circ:\"ˆ\",tilde:\"˜\",ensp:\" \",emsp:\" \",thinsp:\" \",zwnj:\"‌\",zwj:\"‍\",lrm:\"‎\",rlm:\"‏\",ndash:\"–\",mdash:\"—\",lsquo:\"‘\",rsquo:\"’\",sbquo:\"‚\",ldquo:\"“\",rdquo:\"”\",bdquo:\"„\",dagger:\"†\",Dagger:\"‡\",bull:\"•\",hellip:\"…\",permil:\"‰\",prime:\"′\",Prime:\"″\",lsaquo:\"‹\",rsaquo:\"›\",oline:\"‾\",euro:\"€\",trade:\"™\",larr:\"←\",uarr:\"↑\",rarr:\"→\",darr:\"↓\",harr:\"↔\",crarr:\"↵\",lceil:\"⌈\",rceil:\"⌉\",lfloor:\"⌊\",rfloor:\"⌋\",loz:\"◊\",spades:\"♠\",clubs:\"♣\",hearts:\"♥\",diams:\"♦\"}),e.entityMap=e.HTML_ENTITIES},function(t,e,i){var n=i(14).NAMESPACE,s=/[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/,r=new RegExp(\"[\\\\-\\\\.0-9\"+s.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\"),o=new RegExp(\"^\"+s.source+r.source+\"*(?::\"+s.source+r.source+\"*)?$\");function a(t,e){this.message=t,this.locator=e,Error.captureStackTrace&&Error.captureStackTrace(this,a)}function h(){}function l(t,e){return e.lineNumber=t.lineNumber,e.columnNumber=t.columnNumber,e}function c(t,e,i,s,r,o){function a(t,e,n){i.attributeNames.hasOwnProperty(t)&&o.fatalError(\"Attribute \"+t+\" redefined\"),i.addValue(t,e,n)}for(var h,l=++e,c=0;;){var u=t.charAt(l);switch(u){case\"=\":if(1===c)h=t.slice(e,l),c=3;else{if(2!==c)throw new Error(\"attribute equal must after attrName\");c=3}break;case\"'\":case'\"':if(3===c||1===c){if(1===c&&(o.warning('attribute value must after \"=\"'),h=t.slice(e,l)),e=l+1,!((l=t.indexOf(u,e))>0))throw new Error(\"attribute value no end '\"+u+\"' match\");a(h,d=t.slice(e,l).replace(/&#?\\w+;/g,r),e-1),c=5}else{if(4!=c)throw new Error('attribute value must after \"=\"');a(h,d=t.slice(e,l).replace(/&#?\\w+;/g,r),e),o.warning('attribute \"'+h+'\" missed start quot('+u+\")!!\"),e=l+1,c=5}break;case\"/\":switch(c){case 0:i.setTagName(t.slice(e,l));case 5:case 6:case 7:c=7,i.closed=!0;case 4:case 1:case 2:break;default:throw new Error(\"attribute invalid close char('/')\")}break;case\"\":return o.error(\"unexpected end of input\"),0==c&&i.setTagName(t.slice(e,l)),l;case\">\":switch(c){case 0:i.setTagName(t.slice(e,l));case 5:case 6:case 7:break;case 4:case 1:\"/\"===(d=t.slice(e,l)).slice(-1)&&(i.closed=!0,d=d.slice(0,-1));case 2:2===c&&(d=h),4==c?(o.warning('attribute \"'+d+'\" missed quot(\")!'),a(h,d.replace(/&#?\\w+;/g,r),e)):(n.isHTML(s[\"\"])&&d.match(/^(?:disabled|checked|selected)$/i)||o.warning('attribute \"'+d+'\" missed value!! \"'+d+'\" instead!!'),a(d,d,e));break;case 3:throw new Error(\"attribute value missed!!\")}return l;case\"€\":u=\" \";default:if(u<=\" \")switch(c){case 0:i.setTagName(t.slice(e,l)),c=6;break;case 1:h=t.slice(e,l),c=2;break;case 4:var d=t.slice(e,l).replace(/&#?\\w+;/g,r);o.warning('attribute \"'+d+'\" missed quot(\")!!'),a(h,d,e);case 5:c=6}else switch(c){case 2:i.tagName;n.isHTML(s[\"\"])&&h.match(/^(?:disabled|checked|selected)$/i)||o.warning('attribute \"'+h+'\" missed value!! \"'+h+'\" instead2!!'),a(h,h,e),e=l,c=1;break;case 5:o.warning('attribute space is required\"'+h+'\"!!');case 6:c=1,e=l;break;case 3:c=4,e=l;break;case 7:throw new Error(\"elements closed character '/' and '>' must be connected to\")}}l++}}function u(t,e,i){for(var s=t.tagName,r=null,o=t.length;o--;){var a=t[o],h=a.qName,l=a.value;if((f=h.indexOf(\":\"))>0)var c=a.prefix=h.slice(0,f),u=h.slice(f+1),d=\"xmlns\"===c&&u;else u=h,c=null,d=\"xmlns\"===h&&\"\";a.localName=u,!1!==d&&(null==r&&(r={},p(i,i={})),i[d]=r[d]=l,a.uri=n.XMLNS,e.startPrefixMapping(d,l))}for(o=t.length;o--;){(c=(a=t[o]).prefix)&&(\"xml\"===c&&(a.uri=n.XML),\"xmlns\"!==c&&(a.uri=i[c||\"\"]))}var f;(f=s.indexOf(\":\"))>0?(c=t.prefix=s.slice(0,f),u=t.localName=s.slice(f+1)):(c=null,u=t.localName=s);var g=t.uri=i[c||\"\"];if(e.startElement(g,u,s,t),!t.closed)return t.currentNSMap=i,t.localNSMap=r,!0;if(e.endElement(g,u,s),r)for(c in r)e.endPrefixMapping(c)}function d(t,e,i,n,s){if(/^(?:script|textarea)$/i.test(i)){var r=t.indexOf(\"</\"+i+\">\",e),o=t.substring(e+1,r);if(/[&<]/.test(o))return/^script$/i.test(i)?(s.characters(o,0,o.length),r):(o=o.replace(/&#?\\w+;/g,n),s.characters(o,0,o.length),r)}return e+1}function f(t,e,i,n){var s=n[i];return null==s&&((s=t.lastIndexOf(\"</\"+i+\">\"))<e&&(s=t.lastIndexOf(\"</\"+i)),n[i]=s),s<e}function p(t,e){for(var i in t)e[i]=t[i]}function g(t,e,i,n){switch(t.charAt(e+2)){case\"-\":return\"-\"===t.charAt(e+3)?(s=t.indexOf(\"--\\x3e\",e+4))>e?(i.comment(t,e+4,s-e-4),s+3):(n.error(\"Unclosed comment\"),-1):-1;default:if(\"CDATA[\"==t.substr(e+3,6)){var s=t.indexOf(\"]]>\",e+9);return i.startCDATA(),i.characters(t,e+9,s-e-9),i.endCDATA(),s+3}var r=function(t,e){var i,n=[],s=/'[^']+'|\"[^\"]+\"|[^\\s<>\\/=]+=?|(\\/?\\s*>|<)/g;s.lastIndex=e,s.exec(t);for(;i=s.exec(t);)if(n.push(i),i[1])return n}(t,e),o=r.length;if(o>1&&/!doctype/i.test(r[0][0])){var a=r[1][0],h=!1,l=!1;o>3&&(/^public$/i.test(r[2][0])?(h=r[3][0],l=o>4&&r[4][0]):/^system$/i.test(r[2][0])&&(l=r[3][0]));var c=r[o-1];return i.startDTD(a,h,l),i.endDTD(),c.index+c[0].length}}return-1}function m(t,e,i){var n=t.indexOf(\"?>\",e);if(n){var s=t.substring(e,n).match(/^<\\?(\\S*)\\s*([\\s\\S]*?)\\s*$/);if(s){s[0].length;return i.processingInstruction(s[1],s[2]),n+2}return-1}return-1}function v(){this.attributeNames={}}a.prototype=new Error,a.prototype.name=a.name,h.prototype={parse:function(t,e,i){var s=this.domBuilder;s.startDocument(),p(e,e={}),function(t,e,i,s,r){function o(t){var e=t.slice(1,-1);return e in i?i[e]:\"#\"===e.charAt(0)?function(t){if(t>65535){var e=55296+((t-=65536)>>10),i=56320+(1023&t);return String.fromCharCode(e,i)}return String.fromCharCode(t)}(parseInt(e.substr(1).replace(\"x\",\"0x\"))):(r.error(\"entity not found:\"+t),t)}function h(e){if(e>N){var i=t.substring(N,e).replace(/&#?\\w+;/g,o);x&&p(N),s.characters(i,0,e-N),N=e}}function p(e,i){for(;e>=b&&(i=w.exec(t));)y=i.index,b=y+i[0].length,x.lineNumber++;x.columnNumber=e-y+1}var y=0,b=0,w=/.*(?:\\r\\n?|\\n)|.*$/g,x=s.locator,E=[{currentNSMap:e}],S={},N=0;for(;;){try{var _=t.indexOf(\"<\",N);if(_<0){if(!t.substr(N).match(/^\\s*$/)){var T=s.doc,C=T.createTextNode(t.substr(N));T.appendChild(C),s.currentElement=C}return}switch(_>N&&h(_),t.charAt(_+1)){case\"/\":var O=t.indexOf(\">\",_+3),I=t.substring(_+2,O).replace(/[ \\t\\n\\r]+$/g,\"\"),R=E.pop();O<0?(I=t.substring(_+2).replace(/[\\s<].*/,\"\"),r.error(\"end tag name: \"+I+\" is not complete:\"+R.tagName),O=_+1+I.length):I.match(/\\s</)&&(I=I.replace(/[\\s<].*/,\"\"),r.error(\"end tag name: \"+I+\" maybe not complete\"),O=_+1+I.length);var k=R.localNSMap,A=R.tagName==I;if(A||R.tagName&&R.tagName.toLowerCase()==I.toLowerCase()){if(s.endElement(R.uri,R.localName,I),k)for(var L in k)s.endPrefixMapping(L);A||r.fatalError(\"end tag name: \"+I+\" is not match the current start tagName:\"+R.tagName)}else E.push(R);O++;break;case\"?\":x&&p(_),O=m(t,_,s);break;case\"!\":x&&p(_),O=g(t,_,s,r);break;default:x&&p(_);var j=new v,D=E[E.length-1].currentNSMap,P=(O=c(t,_,j,D,o,r),j.length);if(!j.closed&&f(t,O,j.tagName,S)&&(j.closed=!0,i.nbsp||r.warning(\"unclosed xml attribute\")),x&&P){for(var M=l(x,{}),z=0;z<P;z++){var B=j[z];p(B.offset),B.locator=l(x,{})}s.locator=M,u(j,s,D)&&E.push(j),s.locator=x}else u(j,s,D)&&E.push(j);n.isHTML(j.uri)&&!j.closed?O=d(t,O,j.tagName,o,s):O++}}catch(t){if(t instanceof a)throw t;r.error(\"element parse error: \"+t),O=-1}O>N?N=O:h(Math.max(_,N)+1)}}(t,e,i,s,this.errorHandler),s.endDocument()}},v.prototype={setTagName:function(t){if(!o.test(t))throw new Error(\"invalid tagName:\"+t);this.tagName=t},addValue:function(t,e,i){if(!o.test(t))throw new Error(\"invalid attribute:\"+t);this.attributeNames[t]=this.length,this[this.length++]={qName:t,value:e,offset:i}},length:0,getLocalName:function(t){return this[t].localName},getLocator:function(t){return this[t].locator},getQName:function(t){return this[t].qName},getURI:function(t){return this[t].uri},getValue:function(t){return this[t].value}},e.XMLReader=h,e.ParseError=a},function(t,e,i){\"use strict\";function n(t){return document.createElementNS(\"http://www.w3.org/2000/svg\",t)}Object.defineProperty(e,\"__esModule\",{value:!0}),e.createElement=n,e.default={createElement:n}},function(t,e,i){\"use strict\";function n(t,e){function i(i){for(var n=e.length-1;n>=0;n--){var o=e[n],a=i.clientX,h=i.clientY;if(i.touches&&i.touches.length&&(a=i.touches[0].clientX,h=i.touches[0].clientY),r(o,t,a,h)){o.dispatchEvent(s(i));break}}}if(\"iframe\"===t.nodeName||\"IFRAME\"===t.nodeName)try{this.target=t.contentDocument}catch(e){this.target=t}else this.target=t;for(var n=[\"mouseup\",\"mousedown\",\"click\",\"touchstart\"],o=0;o<n.length;o++){var a=n[o];this.target.addEventListener(a,(function(t){return i(t)}),!1)}}function s(t){var e=Object.assign({},t,{bubbles:!1});try{return new MouseEvent(t.type,e)}catch(n){var i=document.createEvent(\"MouseEvents\");return i.initMouseEvent(t.type,!1,e.cancelable,e.view,e.detail,e.screenX,e.screenY,e.clientX,e.clientY,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.button,e.relatedTarget),i}}function r(t,e,i,n){var s=e.getBoundingClientRect();function r(t,e,i){var n=t.top-s.top,r=t.left-s.left,o=n+t.height,a=r+t.width;return n<=i&&r<=e&&o>i&&a>e}if(!r(t.getBoundingClientRect(),i,n))return!1;for(var o=t.getClientRects(),a=0,h=o.length;a<h;a++)if(r(o[a],i,n))return!0;return!1}Object.defineProperty(e,\"__esModule\",{value:!0}),e.proxyMouse=n,e.clone=s,e.default={proxyMouse:n}},function(t,e,i){var n=i(26);t.exports=function(){return n.Date.now()}},function(t,e,i){(function(e){var i=\"object\"==typeof e&&e&&e.Object===Object&&e;t.exports=i}).call(this,i(17))},function(t,e,i){var n=i(54),s=i(19),r=i(56),o=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,h=/^0o[0-7]+$/i,l=parseInt;t.exports=function(t){if(\"number\"==typeof t)return t;if(r(t))return NaN;if(s(t)){var e=\"function\"==typeof t.valueOf?t.valueOf():t;t=s(e)?e+\"\":e}if(\"string\"!=typeof t)return 0===t?t:+t;t=n(t);var i=a.test(t);return i||h.test(t)?l(t.slice(2),i?2:8):o.test(t)?NaN:+t}},function(t,e,i){var n=i(55),s=/^\\s+/;t.exports=function(t){return t?t.slice(0,n(t)+1).replace(s,\"\"):t}},function(t,e){var i=/\\s/;t.exports=function(t){for(var e=t.length;e--&&i.test(t.charAt(e)););return e}},function(t,e,i){var n=i(57),s=i(60);t.exports=function(t){return\"symbol\"==typeof t||s(t)&&\"[object Symbol]\"==n(t)}},function(t,e,i){var n=i(27),s=i(58),r=i(59),o=n?n.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?\"[object Undefined]\":\"[object Null]\":o&&o in Object(t)?s(t):r(t)}},function(t,e,i){var n=i(27),s=Object.prototype,r=s.hasOwnProperty,o=s.toString,a=n?n.toStringTag:void 0;t.exports=function(t){var e=r.call(t,a),i=t[a];try{t[a]=void 0;var n=!0}catch(t){}var s=o.call(t);return n&&(e?t[a]=i:delete t[a]),s}},function(t,e){var i=Object.prototype.toString;t.exports=function(t){return i.call(t)}},function(t,e){t.exports=function(t){return null!=t&&\"object\"==typeof t}}]).default}));\r\n </script>\r\n <script>\r\n(function () {\r\n const viewer = document.getElementById('viewer');\r\n const DEFAULT_FONT_SIZE = 16;\r\n const TEXT_PAGE_CHUNK = 1600;\r\n\r\n let currentType = null;\r\n let book = null;\r\n let rendition = null;\r\n let spineItems = [];\r\n let textPages = [];\r\n let textContainer = null;\r\n let currentPage = 1;\r\n let pageCount = 0;\r\n let zoom = 1.0;\r\n\r\n const sendMessage = (payload) => {\r\n if (window.ReactNativeWebView && window.ReactNativeWebView.postMessage) {\r\n window.ReactNativeWebView.postMessage(JSON.stringify(payload));\r\n return;\r\n }\r\n if (window.parent && window.parent !== window) {\r\n window.parent.postMessage(payload, '*');\r\n }\r\n };\r\n\r\n const sendResponse = (id, ok, data, error) => {\r\n sendMessage({ type: 'response', id, ok, data, error });\r\n };\r\n\r\n const sendState = (extra) => {\r\n sendMessage({\r\n type: 'state',\r\n payload: {\r\n pageCount,\r\n currentPage,\r\n zoom,\r\n ...(extra || {}),\r\n },\r\n });\r\n };\r\n\r\n const sendEvent = (name, payload) => {\r\n sendMessage({ type: 'event', name, payload });\r\n };\r\n\r\n const log = (...args) => {\r\n sendEvent('RUNTIME_LOG', { message: args.map((value) => String(value)).join(' ') });\r\n };\r\n\r\n const reportError = (error, context) => {\r\n const message = error && error.message ? error.message : String(error);\r\n const stack = error && error.stack ? error.stack : null;\r\n sendEvent('RUNTIME_ERROR', { message, context, stack });\r\n };\r\n\r\n const withTimeout = async (promise, ms, label) => {\r\n let timer = null;\r\n try {\r\n return await Promise.race([\r\n promise,\r\n new Promise((_, reject) => {\r\n timer = setTimeout(() => reject(new Error(`Timeout: ${label}`)), ms);\r\n }),\r\n ]);\r\n } finally {\r\n if (timer) {\r\n clearTimeout(timer);\r\n }\r\n }\r\n };\r\n\r\n const shouldIgnoreError = (error) => {\n const message = error && error.message ? error.message : String(error || '');\n return message.includes('ResizeObserver loop');\n };\n\n window.addEventListener('error', (event) => {\n const error = event.error || event.message;\n if (shouldIgnoreError(error)) return;\n reportError(error, 'window.error');\n });\n\n window.addEventListener('unhandledrejection', (event) => {\n if (shouldIgnoreError(event.reason)) return;\n reportError(event.reason, 'unhandledrejection');\n });\n\r\n const clearViewer = () => {\r\n while (viewer.firstChild) {\r\n viewer.removeChild(viewer.firstChild);\r\n }\r\n };\r\n\r\n const decodeBase64 = (value) => {\r\n const clean = value.replace(/\\s/g, '');\r\n const binary = atob(clean);\r\n const len = binary.length;\r\n const bytes = new Uint8Array(len);\r\n for (let i = 0; i < len; i += 1) {\r\n bytes[i] = binary.charCodeAt(i);\r\n }\r\n return bytes;\r\n };\r\n\r\n const decodeBase64ToText = (value) => {\r\n const bytes = decodeBase64(value);\r\n return new TextDecoder('utf-8').decode(bytes);\r\n };\r\n\r\n const normalizeHref = (href) => {\r\n if (!href) return '';\r\n return href.split('#')[0];\r\n };\r\n\r\n const getSpineIndexByHref = (href) => {\r\n const normalized = normalizeHref(href);\r\n if (!normalized) return -1;\r\n return spineItems.findIndex((item) => normalizeHref(item.href) === normalized);\r\n };\r\n\r\n const buildOutline = async () => {\r\n if (!book || !book.loaded || !book.loaded.navigation) return [];\r\n const nav = await book.loaded.navigation;\r\n const toc = nav && nav.toc ? nav.toc : [];\r\n\r\n const mapItem = (item) => {\r\n const title = item.label || item.title || '';\r\n const pageIndex = getSpineIndexByHref(item.href || '');\r\n const children = Array.isArray(item.subitems) ? item.subitems.map(mapItem) : [];\r\n const outlineItem = { title, pageIndex };\r\n if (children.length > 0) outlineItem.children = children;\r\n return outlineItem;\r\n };\r\n\r\n return toc.map(mapItem);\r\n };\r\n\r\n const applyEpubZoom = () => {\r\n if (!rendition || !rendition.themes) return;\r\n const fontSize = `${Math.round(zoom * 100)}%`;\r\n if (typeof rendition.themes.fontSize === 'function') {\r\n rendition.themes.fontSize(fontSize);\r\n } else if (typeof rendition.themes.override === 'function') {\r\n rendition.themes.override('font-size', fontSize);\r\n }\r\n };\r\n\r\n const applyTextZoom = () => {\r\n if (!textContainer) return;\r\n const fontSize = Math.max(12, Math.round(DEFAULT_FONT_SIZE * zoom));\r\n textContainer.style.fontSize = `${fontSize}px`;\r\n };\r\n\r\n const renderTextPage = (pageIndex) => {\r\n const text = textPages[pageIndex] || '';\r\n if (!textContainer) {\r\n textContainer = document.createElement('div');\r\n textContainer.style.padding = '24px';\r\n textContainer.style.lineHeight = '1.6';\r\n textContainer.style.whiteSpace = 'pre-wrap';\r\n textContainer.style.fontFamily = 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace';\r\n viewer.appendChild(textContainer);\r\n }\r\n textContainer.textContent = text;\r\n applyTextZoom();\r\n };\r\n\r\n const paginateText = (text) => {\r\n const pages = [];\r\n for (let i = 0; i < text.length; i += TEXT_PAGE_CHUNK) {\r\n pages.push(text.slice(i, i + TEXT_PAGE_CHUNK));\r\n }\r\n return pages.length > 0 ? pages : [''];\r\n };\r\n\r\n const loadText = async (source) => {\r\n let text = '';\r\n if (source.kind === 'uri') {\r\n const res = await fetch(source.uri);\r\n text = await res.text();\r\n } else if (source.kind === 'base64') {\r\n text = decodeBase64ToText(source.data);\r\n } else if (source.kind === 'text') {\r\n text = source.text || '';\r\n }\r\n\r\n clearViewer();\r\n textPages = paginateText(text);\r\n pageCount = textPages.length;\r\n currentPage = 1;\r\n textContainer = null;\r\n renderTextPage(0);\r\n return { pageCount };\r\n };\r\n\r\n const loadEpub = async (source) => {\r\n log('epub.load:start', source.kind);\r\n if (rendition && typeof rendition.destroy === 'function') {\r\n rendition.destroy();\r\n }\r\n if (book && typeof book.destroy === 'function') {\r\n book.destroy();\r\n }\r\n\r\n if (source.kind === 'base64') {\r\n book = ePub();\r\n await withTimeout(book.open(source.data, 'base64'), 15000, 'epub.open');\r\n } else {\r\n let data = null;\r\n if (source.kind === 'uri') {\r\n data = source.uri;\r\n } else if (source.kind === 'text') {\r\n const encoder = new TextEncoder();\r\n data = encoder.encode(source.text || '').buffer;\r\n }\r\n const input = data instanceof Uint8Array ? data.buffer : data;\r\n book = ePub(input, { openAs: 'epub' });\r\n }\r\n await withTimeout(book.ready, 15000, 'epub.ready');\r\n log('epub.load:ready');\r\n\r\n spineItems = book.spine && book.spine.items ? book.spine.items : [];\r\n pageCount = spineItems.length;\r\n currentPage = 1;\r\n\r\n clearViewer();\r\n rendition = book.renderTo(viewer, {\r\n width: '100%',\r\n height: '100%',\r\n flow: 'paginated',\r\n spread: 'none',\r\n });\r\n\r\n if (rendition && rendition.hooks && rendition.hooks.content) {\r\n rendition.hooks.content.register((contents) => {\r\n const frame = contents && contents.document ? contents.document.defaultView.frameElement : null;\r\n if (frame) {\r\n frame.setAttribute('sandbox', 'allow-scripts allow-same-origin');\r\n }\r\n });\r\n }\r\n\r\n if (rendition && typeof rendition.on === 'function') {\r\n rendition.on('selected', (cfiRange, contents) => {\r\n const selection = contents && contents.window ? contents.window.getSelection() : null;\r\n const text = selection ? selection.toString().trim() : '';\r\n if (text) {\r\n sendEvent('TEXT_SELECTED', { text, pageIndex: Math.max(0, currentPage - 1) });\r\n }\r\n if (rendition && rendition.annotations && typeof rendition.annotations.remove === 'function') {\r\n rendition.annotations.remove(cfiRange, 'highlight');\r\n }\r\n });\r\n }\r\n\r\n try {\r\n await withTimeout(displayEpubPage(0), 8000, 'epub.display');\r\n log('epub.load:displayed');\r\n } catch (err) {\r\n reportError(err, 'epub.display');\r\n }\r\n applyEpubZoom();\r\n\r\n const outline = await buildOutline();\r\n log('epub.load:outline', outline.length);\r\n return { pageCount, outline };\r\n };\r\n\r\n const displayEpubPage = async (pageIndex) => {\r\n if (!rendition) return;\r\n const item = spineItems[pageIndex];\r\n if (!item) return;\r\n const target = item.href || item.idref || item.cfiBase || pageIndex;\r\n await rendition.display(target);\r\n currentPage = pageIndex + 1;\r\n sendState();\r\n };\r\n\r\n const getTextContent = async (pageIndex) => {\r\n if (currentType === 'text') {\r\n const text = textPages[pageIndex] || '';\r\n return [{\r\n str: text,\r\n dir: 'ltr',\r\n width: 0,\r\n height: 0,\r\n transform: [1, 0, 0, 1, 0, 0],\r\n fontName: 'default',\r\n }];\r\n }\r\n\r\n if (currentType === 'epub') {\r\n if (!book) return [];\r\n const item = spineItems[pageIndex];\r\n if (!item) return [];\r\n try {\r\n const section = book.spine.get(item.idref || item.href);\r\n const text = section && typeof section.text === 'function' ? await section.text() : '';\r\n if (!text) return [];\r\n return [{\r\n str: text,\r\n dir: 'ltr',\r\n width: 0,\r\n height: 0,\r\n transform: [1, 0, 0, 1, 0, 0],\r\n fontName: 'default',\r\n }];\r\n } catch (err) {\r\n return [];\r\n }\r\n }\r\n\r\n return [];\r\n };\r\n\r\n const getPageText = async (pageIndex) => {\r\n const items = await getTextContent(pageIndex);\r\n return items.map((item) => item.str).join(' ');\r\n };\r\n\r\n const searchText = async (query) => {\r\n const normalized = query.toLowerCase();\r\n const results = [];\r\n\r\n for (let i = 0; i < pageCount; i += 1) {\r\n const text = await getPageText(i);\r\n if (!text) continue;\r\n const lower = text.toLowerCase();\r\n let pos = lower.indexOf(normalized, 0);\r\n let matchIndex = 0;\r\n while (pos !== -1) {\r\n const start = Math.max(0, pos - 20);\r\n const end = Math.min(text.length, pos + query.length + 20);\r\n results.push({ pageIndex: i, text: text.substring(start, end), matchIndex });\r\n matchIndex += 1;\r\n pos = lower.indexOf(normalized, pos + 1);\r\n }\r\n }\r\n\r\n return results;\r\n };\r\n\r\n const getPageDimensions = () => ({\r\n width: viewer.clientWidth || 0,\r\n height: viewer.clientHeight || 0,\r\n });\r\n\r\n const getPageIndex = (dest) => {\r\n if (!dest) return null;\r\n if (typeof dest === 'string') return getSpineIndexByHref(dest);\r\n if (typeof dest !== 'object') return null;\r\n if (dest.kind === 'href') return getSpineIndexByHref(dest.value);\r\n if (dest.kind === 'pageIndex') return dest.value;\r\n if (dest.kind === 'pageNumber') return Math.max(0, dest.value - 1);\r\n return null;\r\n };\r\n\r\n const selectText = async (pageIndex) => {\r\n const text = await getPageText(pageIndex);\r\n if (!text) return null;\r\n return {\r\n text,\r\n rects: [{ x: 0, y: 0, width: 1, height: 1 }],\r\n };\r\n };\r\n\r\n const applyZoom = () => {\r\n if (currentType === 'text') {\r\n applyTextZoom();\r\n } else if (currentType === 'epub') {\r\n applyEpubZoom();\r\n }\r\n };\r\n\r\n const handleCommand = async (message) => {\r\n const { id, kind, payload } = message;\r\n log('command', kind);\r\n\r\n try {\r\n if (kind === 'load') {\r\n currentType = payload.type;\r\n zoom = 1.0;\r\n\r\n if (currentType === 'text') {\r\n const result = await loadText(payload.source);\r\n sendState();\r\n sendResponse(id, true, result);\r\n return;\r\n }\r\n\r\n if (currentType === 'epub') {\r\n const result = await loadEpub(payload.source);\r\n sendState({ outline: result.outline || [] });\r\n sendResponse(id, true, result);\r\n return;\r\n }\r\n\r\n throw new Error('Unsupported document type');\r\n }\r\n\r\n if (kind === 'go-to-page') {\r\n const page = Math.max(1, payload.page || 1);\r\n if (currentType === 'text') {\r\n currentPage = page;\r\n renderTextPage(page - 1);\r\n sendState();\r\n } else if (currentType === 'epub') {\r\n await displayEpubPage(page - 1);\r\n }\r\n sendResponse(id, true, { currentPage });\r\n return;\r\n }\r\n\r\n if (kind === 'set-zoom') {\r\n zoom = Math.max(0.5, Math.min(4.0, payload.zoom || 1.0));\r\n applyZoom();\r\n sendState();\r\n sendResponse(id, true, { zoom });\r\n return;\r\n }\r\n\r\n if (kind === 'set-rotation') {\r\n sendResponse(id, true, {});\r\n return;\r\n }\r\n\r\n if (kind === 'get-text-content') {\r\n const items = await getTextContent(payload.pageIndex || 0);\r\n sendResponse(id, true, items);\r\n return;\r\n }\r\n\r\n if (kind === 'get-page-dimensions') {\r\n sendResponse(id, true, getPageDimensions());\r\n return;\r\n }\r\n\r\n if (kind === 'search-text') {\r\n const results = await searchText(payload.query || '');\r\n sendResponse(id, true, results);\r\n return;\r\n }\r\n\r\n if (kind === 'select-text') {\r\n const selection = await selectText(payload.pageIndex || 0);\r\n sendResponse(id, true, selection);\r\n return;\r\n }\r\n\r\n if (kind === 'get-outline') {\r\n const outline = await buildOutline();\r\n sendResponse(id, true, outline);\r\n return;\r\n }\r\n\r\n if (kind === 'get-page-index') {\r\n const index = getPageIndex(payload.dest);\r\n sendResponse(id, true, index);\r\n return;\r\n }\r\n\r\n if (kind === 'destroy') {\r\n clearViewer();\r\n sendResponse(id, true, {});\r\n return;\r\n }\r\n\r\n sendResponse(id, false, null, 'Unknown command');\r\n } catch (err) {\r\n sendResponse(id, false, null, err && err.message ? err.message : String(err));\r\n }\r\n };\r\n\r\n const onMessage = (event) => {\n let message = null;\n const raw = event && typeof event === 'object' ? event.data : null;\n\n if (raw && typeof raw === 'object' && raw.kind && raw.id) {\n message = raw;\n } else if (typeof raw === 'string') {\n if (raw.startsWith('setImmediate$')) {\n return;\n }\n const trimmed = raw.trim();\n if (!trimmed || (!trimmed.startsWith('{') && !trimmed.startsWith('['))) {\n return;\n }\n try {\n message = JSON.parse(trimmed);\n } catch (err) {\n sendEvent('RUNTIME_ERROR', {\r\n message: 'Failed to parse message',\r\n context: 'runtime.onMessage',\r\n stack: err && err.stack ? err.stack : null,\r\n preview: trimmed.slice(0, 200),\r\n });\r\n return;\r\n }\r\n } else {\n return;\n }\n\r\n if (!message || !message.kind || message.id == null) return;\r\n handleCommand(message);\r\n };\r\n\r\n window.addEventListener('message', onMessage);\r\n document.addEventListener('message', onMessage);\r\n\r\n sendMessage({ type: 'ready' });\r\n})();\r\n\r\n </script>\r\n </body>\r\n</html>\r\n\r\n","export { default as Viewer } from './components/Viewer';\nexport { default as PageRenderer } from './components/PageRenderer';\nexport { default as Topbar } from './components/Topbar';\nexport { default as ToolDock } from './components/ToolDock';\nexport { default as RightSheet } from './components/RightSheet';\nexport { default as AnnotationEditor } from './components/AnnotationEditor';\nexport { default as BottomBar } from './components/BottomBar';\nexport { default as SettingsSheet } from './components/SettingsSheet';\nexport { default as CoverPreview } from './components/CoverPreview';\n","import React, { useMemo, useRef, useEffect, useCallback } from 'react';\r\nimport { FlatList, ScrollView, StyleSheet, View, useWindowDimensions, type ViewToken } from 'react-native';\r\nimport { useViewerStore } from '@papyrus-sdk/core';\r\nimport { DocumentEngine } from '@papyrus-sdk/types';\r\nimport PageRenderer from './PageRenderer';\r\nimport WebViewViewer from './WebViewViewer';\r\n\r\ninterface ViewerProps {\r\n engine: DocumentEngine;\r\n}\r\n\r\nconst Viewer: React.FC<ViewerProps> = ({ engine }) => {\r\n const { pageCount, currentPage, scrollToPageSignal, setDocumentState, uiTheme, viewMode } = useViewerStore();\r\n const listRef = useRef<FlatList<any>>(null);\r\n const isDark = uiTheme === 'dark';\r\n const { width: windowWidth } = useWindowDimensions();\r\n const isDouble = viewMode === 'double';\r\n const isSingle = viewMode === 'single';\r\n const renderTargetType = engine.getRenderTargetType?.() ?? 'canvas';\r\n const isWebView = renderTargetType === 'webview';\r\n\r\n const pages = useMemo(() => Array.from({ length: pageCount }).map((_, i) => i), [pageCount]);\r\n const rows = useMemo(() => {\r\n if (!isDouble) return [];\r\n const result: Array<{ left: number; right: number | null }> = [];\r\n for (let i = 0; i < pageCount; i += 2) {\r\n result.push({ left: i, right: i + 1 < pageCount ? i + 1 : null });\r\n }\r\n return result;\r\n }, [isDouble, pageCount]);\r\n\r\n useEffect(() => {\r\n if (isWebView) {\r\n if (scrollToPageSignal === null) return;\r\n if (pageCount === 0) return;\r\n if (scrollToPageSignal < 0 || scrollToPageSignal >= pageCount) return;\r\n const nextPage = scrollToPageSignal + 1;\r\n engine.goToPage(nextPage);\r\n setDocumentState({ currentPage: nextPage, scrollToPageSignal: null });\r\n return;\r\n }\r\n\r\n if (scrollToPageSignal === null) return;\r\n if (pageCount === 0) return;\r\n if (scrollToPageSignal < 0 || scrollToPageSignal >= pageCount) return;\r\n if (isSingle) {\r\n setDocumentState({ currentPage: scrollToPageSignal + 1, scrollToPageSignal: null });\r\n return;\r\n }\r\n const targetIndex = isDouble ? Math.floor(scrollToPageSignal / 2) : scrollToPageSignal;\r\n listRef.current?.scrollToIndex({ index: targetIndex, animated: true });\r\n setDocumentState({ scrollToPageSignal: null });\r\n }, [scrollToPageSignal, pageCount, setDocumentState, isDouble, isSingle, isWebView, engine]);\r\n\r\n const onViewableItemsChanged = useCallback(\r\n ({ viewableItems }: { viewableItems: Array<ViewToken> }) => {\r\n const first = viewableItems[0];\r\n if (!first) return;\r\n if (isDouble) {\r\n const item = first.item as { left: number; right: number | null } | undefined;\r\n if (!item) return;\r\n const page = item.left + 1;\r\n if (page !== currentPage) {\r\n setDocumentState({ currentPage: page });\r\n }\r\n return;\r\n }\r\n\r\n if (first.index !== null && first.index !== undefined) {\r\n const page = first.index + 1;\r\n if (page !== currentPage) {\r\n setDocumentState({ currentPage: page });\r\n }\r\n }\r\n },\r\n [currentPage, isDouble, setDocumentState]\r\n );\r\n\r\n if (isWebView) {\r\n return (\r\n <View style={[styles.container, isDark && styles.containerDark]}>\r\n <WebViewViewer engine={engine} />\r\n </View>\r\n );\r\n }\r\n\r\n if (isSingle) {\r\n return (\r\n <View style={[styles.container, isDark && styles.containerDark]}>\r\n <ScrollView\r\n contentContainerStyle={styles.singleContent}\r\n showsVerticalScrollIndicator={false}\r\n scrollEnabled\r\n >\r\n <PageRenderer engine={engine} pageIndex={Math.max(0, currentPage - 1)} spacing={32} />\r\n </ScrollView>\r\n </View>\r\n );\r\n }\r\n\r\n const columnGap = 12;\r\n const horizontalPadding = 16;\r\n const columnWidth = isDouble\r\n ? (windowWidth - horizontalPadding * 2 - columnGap) / 2\r\n : windowWidth;\r\n\r\n return (\r\n <View style={[styles.container, isDark && styles.containerDark]}>\r\n <FlatList\r\n ref={listRef}\r\n data={isDouble ? rows : pages}\r\n keyExtractor={(item) => (isDouble ? `row-${item.left}` : `page-${item}`)}\r\n contentContainerStyle={styles.listContent}\r\n renderItem={({ item }) =>\r\n isDouble ? (\r\n <View style={[styles.row, { paddingHorizontal: horizontalPadding }]}>\r\n <View style={{ width: columnWidth }}>\r\n <PageRenderer\r\n engine={engine}\r\n pageIndex={item.left}\r\n availableWidth={columnWidth}\r\n horizontalPadding={8}\r\n spacing={20}\r\n />\r\n </View>\r\n {item.right !== null ? (\r\n <View style={{ width: columnWidth }}>\r\n <PageRenderer\r\n engine={engine}\r\n pageIndex={item.right}\r\n availableWidth={columnWidth}\r\n horizontalPadding={8}\r\n spacing={20}\r\n />\r\n </View>\r\n ) : (\r\n <View style={{ width: columnWidth }} />\r\n )}\r\n </View>\r\n ) : (\r\n <PageRenderer engine={engine} pageIndex={item} spacing={28} />\r\n )\r\n }\r\n onViewableItemsChanged={onViewableItemsChanged}\r\n viewabilityConfig={{ itemVisiblePercentThreshold: 60 }}\r\n scrollEnabled\r\n onScrollToIndexFailed={({ index, averageItemLength }) => {\r\n if (index < 0 || index >= pageCount) return;\r\n const offset = Math.max(0, averageItemLength * index);\r\n listRef.current?.scrollToOffset({ offset, animated: true });\r\n }}\r\n showsVerticalScrollIndicator={false}\r\n />\r\n </View>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n flex: 1,\r\n backgroundColor: '#e9ecef',\r\n },\r\n containerDark: {\r\n backgroundColor: '#0f1115',\r\n },\r\n listContent: {\r\n paddingTop: 18,\r\n paddingBottom: 120,\r\n },\r\n singleContent: {\r\n paddingTop: 18,\r\n paddingBottom: 140,\r\n },\r\n row: {\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n },\r\n});\r\n\r\nexport default Viewer;\r\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\r\nimport {\r\n View,\r\n StyleSheet,\r\n Pressable,\r\n ScrollView,\r\n PanResponder,\r\n Platform,\r\n findNodeHandle,\r\n useWindowDimensions,\r\n type LayoutChangeEvent,\r\n type GestureResponderEvent,\r\n} from 'react-native';\r\nimport { useViewerStore } from '@papyrus-sdk/core';\r\nimport { Annotation, DocumentEngine, TextSelection } from '@papyrus-sdk/types';\r\nimport { PapyrusPageView, type PapyrusPageViewProps } from '@papyrus-sdk/engine-native';\r\n\r\ntype PageViewComponentType = React.ComponentType<PapyrusPageViewProps & React.RefAttributes<any>>;\r\n\r\ninterface PageRendererProps {\r\n engine: DocumentEngine;\r\n pageIndex: number;\r\n scale?: number;\r\n PageViewComponent?: PageViewComponentType;\r\n availableWidth?: number;\r\n horizontalPadding?: number;\r\n spacing?: number;\r\n}\r\n\r\nconst PageRenderer: React.FC<PageRendererProps> = ({\r\n engine,\r\n pageIndex,\r\n scale = 1,\r\n PageViewComponent = PapyrusPageView as PageViewComponentType,\r\n availableWidth,\r\n horizontalPadding = 16,\r\n spacing = 24,\r\n}) => {\r\n const viewRef = useRef<any>(null);\r\n const [layout, setLayout] = useState({ width: 0, height: 0 });\r\n const [pageSize, setPageSize] = useState<{ width: number; height: number } | null>(null);\r\n const { width: windowWidth } = useWindowDimensions();\r\n const isAndroid = Platform.OS === 'android';\r\n const isNative = Platform.OS === 'android' || Platform.OS === 'ios';\r\n\r\n const {\r\n zoom,\r\n rotation,\r\n pageTheme,\r\n annotations,\r\n annotationColor,\r\n addAnnotation,\r\n setDocumentState,\r\n accentColor,\r\n selectedAnnotationId,\r\n setSelectedAnnotation,\r\n removeAnnotation,\r\n searchResults,\r\n activeSearchIndex,\r\n setSelectionActive,\r\n } = useViewerStore();\r\n\r\n const pageAnnotations = useMemo(\r\n () => annotations.filter((ann) => ann.pageIndex === pageIndex),\r\n [annotations, pageIndex]\r\n );\r\n\r\n const pageSearchHits = useMemo(\r\n () =>\r\n searchResults\r\n .map((result, index) => ({ result, index }))\r\n .filter(({ result }) => result.pageIndex === pageIndex),\r\n [searchResults, pageIndex]\r\n );\r\n\r\n const [selectionRect, setSelectionRect] = useState<{ x: number; y: number; width: number; height: number } | null>(null);\r\n const [selectionRects, setSelectionRects] = useState<Array<{ x: number; y: number; width: number; height: number }>>([]);\r\n const [selectionBounds, setSelectionBounds] = useState<{ x: number; y: number; width: number; height: number } | null>(null);\r\n const [selectionText, setSelectionText] = useState('');\r\n const [isSelecting, setIsSelecting] = useState(false);\r\n const selectionStart = useRef<{ x: number; y: number } | null>(null);\r\n const selectionRectRef = useRef<{ x: number; y: number; width: number; height: number } | null>(null);\r\n const selectionBoundsRef = useRef<{ x: number; y: number; width: number; height: number } | null>(null);\r\n const selectionBoundsStart = useRef<{ x: number; y: number; width: number; height: number } | null>(null);\r\n const lastTapRef = useRef<{ time: number; x: number; y: number } | null>(null);\r\n const pinchRef = useRef<{ distance: number; zoom: number } | null>(null);\r\n\r\n useEffect(() => {\r\n if (!layout.width || !layout.height) return;\r\n const viewTag = findNodeHandle(viewRef.current);\r\n if (viewTag) {\r\n const renderScale = isNative ? scale / Math.max(zoom, 0.5) : scale;\r\n void engine.renderPage(pageIndex, viewTag, renderScale);\r\n }\r\n }, [engine, pageIndex, scale, zoom, rotation, layout.width, layout.height, isNative]);\r\n\r\n useEffect(() => {\r\n let active = true;\r\n const loadDimensions = async () => {\r\n const dims = await engine.getPageDimensions(pageIndex);\r\n if (!active) return;\r\n if (dims.width > 0 && dims.height > 0) {\r\n setPageSize({ width: dims.width, height: dims.height });\r\n }\r\n };\r\n void loadDimensions();\r\n return () => {\r\n active = false;\r\n };\r\n }, [engine, pageIndex]);\r\n\r\n const handleLayout = (event: LayoutChangeEvent) => {\r\n const { width, height } = event.nativeEvent.layout;\r\n if (width !== layout.width || height !== layout.height) {\r\n setLayout({ width, height });\r\n }\r\n };\r\n\r\n const addAnnotationAt = (x: number, y: number, width: number, height: number, type: Annotation['type']) => {\r\n addAnnotation({\r\n id: Math.random().toString(36).slice(2, 9),\r\n pageIndex,\r\n type,\r\n rect: { x, y, width, height },\r\n color: annotationColor,\r\n content: type === 'text' || type === 'comment' ? '' : undefined,\r\n createdAt: Date.now(),\r\n });\r\n };\r\n\r\n const clamp = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value));\r\n\r\n const getBoundsFromRects = (rects: Array<{ x: number; y: number; width: number; height: number }>) => {\r\n let minX = 1;\r\n let minY = 1;\r\n let maxX = 0;\r\n let maxY = 0;\r\n rects.forEach((rect) => {\r\n minX = Math.min(minX, rect.x);\r\n minY = Math.min(minY, rect.y);\r\n maxX = Math.max(maxX, rect.x + rect.width);\r\n maxY = Math.max(maxY, rect.y + rect.height);\r\n });\r\n if (maxX <= minX || maxY <= minY) return null;\r\n return {\r\n x: clamp(minX, 0, 1),\r\n y: clamp(minY, 0, 1),\r\n width: clamp(maxX - minX, 0, 1),\r\n height: clamp(maxY - minY, 0, 1),\r\n };\r\n };\r\n\r\n const clearSelection = () => {\r\n setSelectionRect(null);\r\n selectionRectRef.current = null;\r\n setSelectionRects([]);\r\n setSelectionBounds(null);\r\n selectionBoundsRef.current = null;\r\n setSelectionText('');\r\n setIsSelecting(false);\r\n selectionStart.current = null;\r\n selectionBoundsStart.current = null;\r\n setSelectionActive(false);\r\n };\r\n\r\n const applySelectionResult = (selection: TextSelection | null) => {\r\n if (!selection || !selection.rects || selection.rects.length === 0) {\r\n clearSelection();\r\n return;\r\n }\r\n setSelectionRects(selection.rects);\r\n setSelectionText(selection.text || '');\r\n const bounds = getBoundsFromRects(selection.rects);\r\n if (!bounds) {\r\n clearSelection();\r\n return;\r\n }\r\n setSelectionBounds(bounds);\r\n selectionBoundsRef.current = bounds;\r\n setSelectionActive(true);\r\n };\r\n\r\n const selectFromBounds = async (bounds: { x: number; y: number; width: number; height: number }) => {\r\n const selection = await engine.selectText?.(pageIndex, bounds);\r\n applySelectionResult(selection ?? null);\r\n };\r\n\r\n const selectAtPoint = async (x: number, y: number) => {\r\n if (!layout.width || !layout.height) return;\r\n const size = 26;\r\n const half = size / 2;\r\n const left = clamp(x - half, 0, Math.max(0, layout.width - size));\r\n const top = clamp(y - half, 0, Math.max(0, layout.height - size));\r\n const bounds = {\r\n x: left / layout.width,\r\n y: top / layout.height,\r\n width: size / layout.width,\r\n height: size / layout.height,\r\n };\r\n await selectFromBounds(bounds);\r\n };\r\n\r\n const getTouchDistance = (touches: Array<{ pageX: number; pageY: number }>) => {\r\n if (touches.length < 2) return 0;\r\n const [a, b] = touches;\r\n return Math.hypot(b.pageX - a.pageX, b.pageY - a.pageY);\r\n };\r\n\r\n const shouldHandlePinch = (touches: Array<{ pageX: number; pageY: number }>) => isNative && touches.length === 2;\r\n\r\n const handlePinchStart = (touches: Array<{ pageX: number; pageY: number }>) => {\r\n if (!shouldHandlePinch(touches)) return;\r\n pinchRef.current = { distance: getTouchDistance(touches), zoom };\r\n };\r\n\r\n const handlePinchMove = (touches: Array<{ pageX: number; pageY: number }>) => {\r\n if (!shouldHandlePinch(touches) || !pinchRef.current) return;\r\n const distance = getTouchDistance(touches);\r\n if (!distance) return;\r\n const scale = distance / pinchRef.current.distance;\r\n const nextZoom = clamp(pinchRef.current.zoom * scale, 0.5, 4.0);\r\n setDocumentState({ zoom: nextZoom });\r\n engine.setZoom(nextZoom);\r\n };\r\n\r\n const handlePinchEnd = () => {\r\n pinchRef.current = null;\r\n };\r\n\r\n const handlePress = (event: GestureResponderEvent) => {\r\n if (!layout.width || !layout.height) return;\r\n if (selectionRects.length > 0 || selectionBounds) {\r\n clearSelection();\r\n return;\r\n }\r\n setSelectedAnnotation(null);\r\n if (!isNative) return;\r\n\r\n const { locationX, locationY } = event.nativeEvent;\r\n const now = Date.now();\r\n const lastTap = lastTapRef.current;\r\n lastTapRef.current = { time: now, x: locationX, y: locationY };\r\n\r\n if (!lastTap) return;\r\n const timeDelta = now - lastTap.time;\r\n const distance = Math.hypot(locationX - lastTap.x, locationY - lastTap.y);\r\n if (timeDelta < 280 && distance < 24) {\r\n void selectAtPoint(locationX, locationY);\r\n }\r\n };\r\n\r\n const selectionEnabled = Platform.OS === 'web';\r\n void selectionText;\r\n\r\n const panResponder = useMemo(\r\n () =>\r\n PanResponder.create({\r\n onStartShouldSetPanResponder: () => selectionEnabled,\r\n onMoveShouldSetPanResponder: () => selectionEnabled,\r\n onPanResponderGrant: (event) => {\r\n if (!selectionEnabled || !layout.width || !layout.height) return;\r\n const { locationX, locationY } = event.nativeEvent;\r\n selectionStart.current = { x: locationX, y: locationY };\r\n setIsSelecting(true);\r\n const rect = { x: locationX, y: locationY, width: 0, height: 0 };\r\n selectionRectRef.current = rect;\r\n setSelectionRect(rect);\r\n },\r\n onPanResponderMove: (_, gestureState) => {\r\n if (!selectionEnabled || !selectionStart.current) return;\r\n const start = selectionStart.current;\r\n const currentX = start.x + gestureState.dx;\r\n const currentY = start.y + gestureState.dy;\r\n const left = Math.max(0, Math.min(start.x, currentX));\r\n const top = Math.max(0, Math.min(start.y, currentY));\r\n const right = Math.min(layout.width, Math.max(start.x, currentX));\r\n const bottom = Math.min(layout.height, Math.max(start.y, currentY));\r\n const rect = { x: left, y: top, width: right - left, height: bottom - top };\r\n selectionRectRef.current = rect;\r\n setSelectionRect(rect);\r\n },\r\n onPanResponderRelease: async () => {\r\n const rect = selectionRectRef.current;\r\n if (!selectionEnabled || !rect || !layout.width || !layout.height) {\r\n setIsSelecting(false);\r\n selectionStart.current = null;\r\n return;\r\n }\r\n setIsSelecting(false);\r\n selectionStart.current = null;\r\n\r\n const minSize = 6;\r\n if (rect.width < minSize || rect.height < minSize) {\r\n clearSelection();\r\n return;\r\n }\r\n\r\n const normalized = {\r\n x: rect.x / layout.width,\r\n y: rect.y / layout.height,\r\n width: rect.width / layout.width,\r\n height: rect.height / layout.height,\r\n };\r\n\r\n await selectFromBounds(normalized);\r\n setSelectionRect(null);\r\n },\r\n }),\r\n [selectionEnabled, layout.width, layout.height, engine, pageIndex]\r\n );\r\n\r\n const selectionBoundsPx = useMemo(() => {\r\n if (!selectionBounds || !layout.width || !layout.height) return null;\r\n return {\r\n x: selectionBounds.x * layout.width,\r\n y: selectionBounds.y * layout.height,\r\n width: selectionBounds.width * layout.width,\r\n height: selectionBounds.height * layout.height,\r\n };\r\n }, [selectionBounds, layout.width, layout.height]);\r\n\r\n const createHandleResponder = (handle: 'start' | 'end') =>\r\n PanResponder.create({\r\n onStartShouldSetPanResponder: () => true,\r\n onMoveShouldSetPanResponder: () => true,\r\n onPanResponderGrant: () => {\r\n selectionBoundsStart.current = selectionBoundsRef.current;\r\n },\r\n onPanResponderMove: (_, gestureState) => {\r\n const start = selectionBoundsStart.current;\r\n if (!start || !layout.width || !layout.height) return;\r\n const dx = gestureState.dx / layout.width;\r\n const dy = gestureState.dy / layout.height;\r\n const minSize = 0.01;\r\n let next = { ...start };\r\n\r\n if (handle === 'start') {\r\n const newX = clamp(start.x + dx, 0, start.x + start.width - minSize);\r\n const newY = clamp(start.y + dy, 0, start.y + start.height - minSize);\r\n next = {\r\n x: newX,\r\n y: newY,\r\n width: start.x + start.width - newX,\r\n height: start.y + start.height - newY,\r\n };\r\n } else {\r\n const maxX = clamp(start.x + start.width + dx, start.x + minSize, 1);\r\n const maxY = clamp(start.y + start.height + dy, start.y + minSize, 1);\r\n next = {\r\n x: start.x,\r\n y: start.y,\r\n width: maxX - start.x,\r\n height: maxY - start.y,\r\n };\r\n }\r\n\r\n selectionBoundsRef.current = next;\r\n setSelectionBounds(next);\r\n },\r\n onPanResponderRelease: async () => {\r\n const next = selectionBoundsRef.current;\r\n selectionBoundsStart.current = null;\r\n if (!next) return;\r\n await selectFromBounds(next);\r\n },\r\n onPanResponderTerminate: () => {\r\n selectionBoundsStart.current = null;\r\n },\r\n });\r\n\r\n const startHandleResponder = useMemo(\r\n () => createHandleResponder('start'),\r\n [layout.width, layout.height, engine, pageIndex]\r\n );\r\n\r\n const endHandleResponder = useMemo(\r\n () => createHandleResponder('end'),\r\n [layout.width, layout.height, engine, pageIndex]\r\n );\r\n\r\n const applySelection = (type: 'highlight' | 'strikeout' | 'comment') => {\r\n if (selectionRects.length === 0) return;\r\n\r\n if (type === 'comment') {\r\n const first = selectionRects[0];\r\n addAnnotationAt(first.x, first.y, Math.max(0.08, first.width), Math.max(0.06, first.height), 'comment');\r\n clearSelection();\r\n return;\r\n }\r\n\r\n selectionRects.forEach((rect) => {\r\n addAnnotationAt(rect.x, rect.y, rect.width, rect.height, type);\r\n });\r\n clearSelection();\r\n };\r\n\r\n const themeOverlayStyle = useMemo(() => {\r\n switch (pageTheme) {\r\n case 'sepia':\r\n return styles.themeSepia;\r\n case 'dark':\r\n return styles.themeDark;\r\n case 'high-contrast':\r\n return styles.themeContrast;\r\n default:\r\n return styles.themeNone;\r\n }\r\n }, [pageTheme]);\r\n\r\n const aspectRatio =\r\n pageSize && pageSize.width > 0 && pageSize.height > 0 ? pageSize.width / pageSize.height : 0.77;\r\n const containerWidth = availableWidth ?? windowWidth;\r\n const baseWidth = containerWidth * 0.92;\r\n const pageWidth = isNative ? baseWidth * zoom : baseWidth;\r\n const pageHeight = pageWidth / aspectRatio;\r\n const hasActiveSelection = selectionRects.length > 0 || !!selectionBounds || isSelecting;\r\n const scrollEnabled = isNative && zoom > 1 && !hasActiveSelection;\r\n\r\n return (\r\n <ScrollView\r\n horizontal\r\n scrollEnabled={scrollEnabled}\r\n showsHorizontalScrollIndicator={false}\r\n contentContainerStyle={[styles.scrollContent, { paddingHorizontal: horizontalPadding }]}\r\n >\r\n <Pressable\r\n {...panResponder.panHandlers}\r\n style={[styles.container, { width: pageWidth, height: pageHeight, marginBottom: spacing }]}\r\n onLayout={handleLayout}\r\n onPress={handlePress}\r\n onStartShouldSetResponder={(event) => shouldHandlePinch(event.nativeEvent.touches)}\r\n onMoveShouldSetResponder={(event) => shouldHandlePinch(event.nativeEvent.touches)}\r\n onResponderGrant={(event) => handlePinchStart(event.nativeEvent.touches)}\r\n onResponderMove={(event) => handlePinchMove(event.nativeEvent.touches)}\r\n onResponderRelease={handlePinchEnd}\r\n onResponderTerminate={handlePinchEnd}\r\n >\r\n <PageViewComponent ref={viewRef} style={styles.page} />\r\n <View pointerEvents=\"none\" style={[styles.themeOverlay, themeOverlayStyle]} />\r\n <View pointerEvents=\"box-none\" style={styles.selectionLayer}>\r\n <View pointerEvents=\"none\">\r\n {selectionRects.map((rect, index) => {\r\n const style = {\r\n left: `${rect.x * 100}%`,\r\n top: `${rect.y * 100}%`,\r\n width: `${rect.width * 100}%`,\r\n height: `${rect.height * 100}%`,\r\n } as const;\r\n return <View key={`sel-${index}`} style={[styles.selectionHighlight, style]} />;\r\n })}\r\n </View>\r\n {selectionBoundsPx ? (\r\n <View\r\n pointerEvents=\"box-none\"\r\n style={[\r\n styles.selectionOutline,\r\n {\r\n left: selectionBoundsPx.x,\r\n top: selectionBoundsPx.y,\r\n width: selectionBoundsPx.width,\r\n height: selectionBoundsPx.height,\r\n borderColor: accentColor,\r\n },\r\n ]}\r\n >\r\n <View\r\n {...startHandleResponder.panHandlers}\r\n style={[styles.selectionHandle, { left: -8, top: -8, borderColor: accentColor }]}\r\n />\r\n <View\r\n {...endHandleResponder.panHandlers}\r\n style={[styles.selectionHandle, { right: -8, bottom: -8, borderColor: accentColor }]}\r\n />\r\n </View>\r\n ) : null}\r\n {isSelecting && selectionRect ? (\r\n <View\r\n pointerEvents=\"none\"\r\n style={[\r\n styles.selectionOutline,\r\n {\r\n left: selectionRect.x,\r\n top: selectionRect.y,\r\n width: selectionRect.width,\r\n height: selectionRect.height,\r\n borderColor: accentColor,\r\n },\r\n ]}\r\n />\r\n ) : null}\r\n </View>\r\n <View pointerEvents=\"none\" style={styles.searchLayer}>\r\n {pageSearchHits.map(({ result, index }) => {\r\n if (!result.rects || result.rects.length === 0) return null;\r\n return result.rects.map((rect, rectIndex) => {\r\n if (rect.width <= 0 || rect.height <= 0) return null;\r\n const isActive = index === activeSearchIndex;\r\n const highlightStyle = {\r\n left: `${rect.x * 100}%`,\r\n top: `${rect.y * 100}%`,\r\n width: `${rect.width * 100}%`,\r\n height: `${rect.height * 100}%`,\r\n } as const;\r\n return (\r\n <View\r\n key={`${index}-${rectIndex}`}\r\n style={[\r\n styles.searchHighlight,\r\n { borderColor: accentColor, backgroundColor: `${accentColor}26` },\r\n isActive && styles.searchHighlightActive,\r\n isActive && { borderColor: accentColor, backgroundColor: `${accentColor}40` },\r\n highlightStyle,\r\n ]}\r\n />\r\n );\r\n });\r\n })}\r\n </View>\r\n <View pointerEvents=\"box-none\" style={styles.annotationLayer}>\r\n {pageAnnotations.map((ann) => {\r\n const isSelected = selectedAnnotationId === ann.id;\r\n const style = {\r\n left: `${ann.rect.x * 100}%`,\r\n top: `${ann.rect.y * 100}%`,\r\n width: `${ann.rect.width * 100}%`,\r\n height: `${ann.rect.height * 100}%`,\r\n backgroundColor: ann.type === 'highlight' ? `${ann.color}66` : 'transparent',\r\n borderBottomWidth: ann.type === 'strikeout' ? 3 : 0,\r\n borderBottomColor: ann.type === 'strikeout' ? ann.color : 'transparent',\r\n } as const;\r\n\r\n return (\r\n <Pressable\r\n key={ann.id}\r\n onPress={() => setSelectedAnnotation(ann.id)}\r\n style={[\r\n styles.annotation,\r\n style,\r\n isSelected && styles.annotationSelected,\r\n isSelected && { borderColor: accentColor },\r\n ]}\r\n >\r\n {(ann.type === 'comment' || ann.type === 'text') && (\r\n <View style={[styles.annotationBadge, { borderColor: ann.color }]}>\r\n <View style={[styles.annotationDot, { backgroundColor: ann.color }]} />\r\n </View>\r\n )}\r\n {isSelected && (\r\n <Pressable onPress={() => removeAnnotation(ann.id)} style={styles.deleteButton}>\r\n <View style={styles.deleteDot} />\r\n </Pressable>\r\n )}\r\n </Pressable>\r\n );\r\n })}\r\n </View>\r\n {selectionRects.length > 0 && selectionBoundsPx ? (\r\n <View\r\n pointerEvents=\"box-none\"\r\n style={[\r\n styles.selectionToolbar,\r\n {\r\n left: selectionBoundsPx.x,\r\n top:\r\n selectionBoundsPx.y + selectionBoundsPx.height + 8 > layout.height - 56\r\n ? Math.max(8, selectionBoundsPx.y - 52)\r\n : selectionBoundsPx.y + selectionBoundsPx.height + 8,\r\n },\r\n ]}\r\n >\r\n <Pressable onPress={() => applySelection('comment')} style={styles.selectionAction}>\r\n <View style={styles.selectionActionDot} />\r\n </Pressable>\r\n <Pressable onPress={() => applySelection('highlight')} style={styles.selectionAction}>\r\n <View style={[styles.selectionSwatch, { backgroundColor: annotationColor }]} />\r\n </Pressable>\r\n <Pressable onPress={() => applySelection('strikeout')} style={[styles.selectionAction, styles.selectionActionLast]}>\r\n <View style={[styles.selectionStrike, { backgroundColor: annotationColor }]} />\r\n </Pressable>\r\n </View>\r\n ) : null}\r\n </Pressable>\r\n </ScrollView>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n scrollContent: {\r\n alignItems: 'center',\r\n },\r\n container: {\r\n alignSelf: 'center',\r\n borderRadius: 14,\r\n backgroundColor: '#ffffff',\r\n shadowColor: '#000000',\r\n shadowOpacity: 0.12,\r\n shadowRadius: 12,\r\n shadowOffset: { width: 0, height: 6 },\r\n elevation: 4,\r\n },\r\n page: {\r\n ...StyleSheet.absoluteFillObject,\r\n backgroundColor: '#ffffff',\r\n borderRadius: 14,\r\n overflow: 'hidden',\r\n },\r\n annotationLayer: {\r\n position: 'absolute',\r\n left: 0,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n },\r\n searchLayer: {\r\n position: 'absolute',\r\n left: 0,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n },\r\n selectionLayer: {\r\n position: 'absolute',\r\n left: 0,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n },\r\n selectionHighlight: {\r\n position: 'absolute',\r\n backgroundColor: 'rgba(245, 158, 11, 0.28)',\r\n borderRadius: 4,\r\n },\r\n selectionOutline: {\r\n position: 'absolute',\r\n borderWidth: 2,\r\n borderStyle: 'dashed',\r\n borderColor: 'rgba(37, 99, 235, 0.9)',\r\n borderRadius: 6,\r\n },\r\n selectionHandle: {\r\n position: 'absolute',\r\n width: 16,\r\n height: 16,\r\n borderRadius: 8,\r\n backgroundColor: '#ffffff',\r\n borderWidth: 2,\r\n borderColor: '#2563eb',\r\n },\r\n searchHighlight: {\r\n position: 'absolute',\r\n backgroundColor: 'rgba(59, 130, 246, 0.2)',\r\n borderWidth: 1,\r\n borderColor: 'rgba(59, 130, 246, 0.35)',\r\n borderRadius: 4,\r\n },\r\n searchHighlightActive: {\r\n backgroundColor: 'rgba(59, 130, 246, 0.35)',\r\n borderColor: '#3b82f6',\r\n },\r\n themeOverlay: {\r\n ...StyleSheet.absoluteFillObject,\r\n borderRadius: 14,\r\n },\r\n themeNone: {\r\n backgroundColor: 'transparent',\r\n },\r\n themeSepia: {\r\n backgroundColor: 'rgba(244, 236, 216, 0.35)',\r\n },\r\n themeDark: {\r\n backgroundColor: 'rgba(0, 0, 0, 0.2)',\r\n },\r\n themeContrast: {\r\n backgroundColor: 'rgba(0, 0, 0, 0.35)',\r\n },\r\n annotation: {\r\n position: 'absolute',\r\n },\r\n annotationSelected: {\r\n borderWidth: 1,\r\n borderColor: '#3b82f6',\r\n },\r\n annotationBadge: {\r\n position: 'absolute',\r\n left: 4,\r\n top: 4,\r\n width: 14,\r\n height: 14,\r\n borderRadius: 7,\r\n borderWidth: 1,\r\n backgroundColor: '#ffffff',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n annotationDot: {\r\n width: 6,\r\n height: 6,\r\n borderRadius: 3,\r\n },\r\n deleteButton: {\r\n position: 'absolute',\r\n right: -8,\r\n top: -8,\r\n width: 20,\r\n height: 20,\r\n borderRadius: 10,\r\n backgroundColor: '#ef4444',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n deleteDot: {\r\n width: 8,\r\n height: 2,\r\n backgroundColor: '#ffffff',\r\n borderRadius: 2,\r\n },\r\n selectionToolbar: {\r\n position: 'absolute',\r\n paddingHorizontal: 10,\r\n paddingVertical: 8,\r\n borderRadius: 14,\r\n backgroundColor: '#111827',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n },\r\n selectionAction: {\r\n width: 28,\r\n height: 28,\r\n borderRadius: 10,\r\n backgroundColor: '#1f2937',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginRight: 10,\r\n },\r\n selectionActionLast: {\r\n marginRight: 0,\r\n },\r\n selectionActionDot: {\r\n width: 8,\r\n height: 8,\r\n borderRadius: 4,\r\n backgroundColor: '#f9fafb',\r\n },\r\n selectionSwatch: {\r\n width: 14,\r\n height: 14,\r\n borderRadius: 7,\r\n borderWidth: 1,\r\n borderColor: '#ffffff',\r\n },\r\n selectionStrike: {\r\n width: 14,\r\n height: 3,\r\n borderRadius: 3,\r\n },\r\n});\r\n\r\nexport default PageRenderer;\r\n","import React, { useEffect, useMemo, useRef } from 'react';\r\nimport { Image, StyleSheet, View } from 'react-native';\r\nimport WebView, { type WebViewMessageEvent, type WebViewErrorEvent } from 'react-native-webview';\r\nimport { useViewerStore } from '@papyrus-sdk/core';\r\nimport { DocumentEngine } from '@papyrus-sdk/types';\r\n\r\nconst runtimeAsset = require('../runtime/index.html');\r\nconst runtimeSource = (() => {\r\n if (typeof runtimeAsset === 'string') {\r\n return { html: runtimeAsset };\r\n }\r\n if (typeof runtimeAsset === 'number') {\r\n const resolved = Image.resolveAssetSource(runtimeAsset);\r\n if (resolved?.uri) {\r\n return { uri: resolved.uri };\r\n }\r\n }\r\n if (runtimeAsset && typeof runtimeAsset === 'object' && 'uri' in runtimeAsset) {\r\n const uri = (runtimeAsset as { uri?: string }).uri;\r\n if (uri) return { uri };\r\n }\r\n return { html: '' };\r\n})();\r\n\r\ntype WebViewBridge = {\r\n postMessage: (message: string) => void;\r\n};\r\n\r\ntype WebViewBridgeEngine = DocumentEngine & {\r\n attachWebView?: (bridge: WebViewBridge) => void;\r\n handleWebViewMessage?: (data: string) => void;\r\n};\r\n\r\ninterface WebViewViewerProps {\r\n engine: DocumentEngine;\r\n}\r\n\r\nconst WebViewViewer: React.FC<WebViewViewerProps> = ({ engine }) => {\r\n const webViewRef = useRef<WebView>(null);\r\n const { pageTheme } = useViewerStore();\r\n\r\n useEffect(() => {\r\n const bridgeEngine = engine as WebViewBridgeEngine;\r\n bridgeEngine.attachWebView?.({\r\n postMessage: (message: string) => {\r\n if (__DEV__) {\r\n const preview = message.length > 200 ? `${message.slice(0, 200)}…` : message;\r\n console.log('[Papyrus WebView] send', preview);\r\n }\r\n webViewRef.current?.postMessage(message);\r\n },\r\n });\r\n }, [engine]);\r\n\r\n const handleMessage = (event: WebViewMessageEvent) => {\r\n const bridgeEngine = engine as WebViewBridgeEngine;\r\n if (__DEV__) {\r\n console.log('[Papyrus WebView] message', event.nativeEvent.data);\r\n }\r\n bridgeEngine.handleWebViewMessage?.(event.nativeEvent.data);\r\n };\r\n\r\n const handleLoadEnd = () => {\r\n if (__DEV__) {\r\n console.log('[Papyrus WebView] loaded');\r\n }\r\n };\r\n\r\n const handleError = (event: WebViewErrorEvent) => {\r\n if (__DEV__) {\r\n console.warn('[Papyrus WebView] error', event.nativeEvent);\r\n }\r\n };\r\n\r\n const themeOverlayStyle = useMemo(() => {\r\n switch (pageTheme) {\r\n case 'sepia':\r\n return styles.themeSepia;\r\n case 'dark':\r\n return styles.themeDark;\r\n case 'high-contrast':\r\n return styles.themeContrast;\r\n default:\r\n return styles.themeNone;\r\n }\r\n }, [pageTheme]);\r\n\r\n return (\r\n <View style={styles.container}>\r\n <WebView\r\n ref={webViewRef}\r\n source={runtimeSource}\r\n originWhitelist={['*']}\r\n onMessage={handleMessage}\r\n onLoadEnd={handleLoadEnd}\r\n onError={handleError}\r\n javaScriptEnabled\r\n domStorageEnabled\r\n allowFileAccess\r\n allowUniversalAccessFromFileURLs\r\n style={styles.webview}\r\n />\r\n <View pointerEvents=\"none\" style={[styles.themeOverlay, themeOverlayStyle]} />\r\n </View>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n flex: 1,\r\n backgroundColor: '#ffffff',\r\n },\r\n webview: {\r\n flex: 1,\r\n backgroundColor: 'transparent',\r\n },\r\n themeOverlay: {\r\n ...StyleSheet.absoluteFillObject,\r\n },\r\n themeNone: {\r\n backgroundColor: 'transparent',\r\n },\r\n themeSepia: {\r\n backgroundColor: 'rgba(244, 236, 216, 0.35)',\r\n },\r\n themeDark: {\r\n backgroundColor: 'rgba(0, 0, 0, 0.2)',\r\n },\r\n themeContrast: {\r\n backgroundColor: 'rgba(0, 0, 0, 0.35)',\r\n },\r\n});\r\n\r\nexport default WebViewViewer;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { View, Text, Pressable, StyleSheet } from 'react-native';\r\nimport { useViewerStore } from '@papyrus-sdk/core';\r\nimport { IconSettings, IconChevronLeft, IconChevronRight } from '../icons';\r\nimport { DocumentEngine } from '@papyrus-sdk/types';\r\n\r\ninterface TopbarProps {\r\n engine: DocumentEngine;\r\n onOpenSettings?: () => void;\r\n}\r\n\r\nconst Topbar: React.FC<TopbarProps> = ({ engine, onOpenSettings }) => {\r\n const {\r\n currentPage,\r\n pageCount,\r\n uiTheme,\r\n setDocumentState,\r\n triggerScrollToPage,\r\n accentColor,\r\n } = useViewerStore();\r\n const [pageLabel, setPageLabel] = useState(`${currentPage}`);\r\n const isDark = uiTheme === 'dark';\r\n const navIconColor = isDark ? '#e5e7eb' : '#111827';\r\n\r\n useEffect(() => {\r\n setPageLabel(`${currentPage}`);\r\n }, [currentPage]);\r\n\r\n const handlePageChange = (delta: number) => {\r\n const next = Math.max(1, Math.min(pageCount, currentPage + delta));\r\n engine.goToPage(next);\r\n setDocumentState({ currentPage: next });\r\n triggerScrollToPage(next - 1);\r\n };\r\n\r\n return (\r\n <View style={[styles.container, isDark && styles.containerDark]}>\r\n <View style={styles.leftGroup}>\r\n <View style={[styles.logoBadge, { backgroundColor: accentColor }]}>\r\n <Text style={styles.logoText}>P</Text>\r\n </View>\r\n <Text style={[styles.brandText, isDark && styles.brandTextDark]}>Papyrus</Text>\r\n </View>\r\n\r\n <View style={styles.pageGroup}>\r\n <Pressable onPress={() => handlePageChange(-1)} style={[styles.pageButton, isDark && styles.pageButtonDark]}>\r\n <IconChevronLeft size={16} color={navIconColor} />\r\n </Pressable>\r\n <Text style={[styles.pageIndicator, isDark && styles.pageIndicatorDark]}>\r\n {pageLabel}/{pageCount}\r\n </Text>\r\n <Pressable onPress={() => handlePageChange(1)} style={[styles.pageButton, isDark && styles.pageButtonDark]}>\r\n <IconChevronRight size={16} color={navIconColor} />\r\n </Pressable>\r\n </View>\r\n\r\n <View style={styles.rightGroup}>\r\n <Pressable\r\n onPress={() => onOpenSettings?.()}\r\n style={[styles.iconButton, isDark && styles.iconButtonDark]}\r\n >\r\n <IconSettings size={16} color={isDark ? '#e5e7eb' : '#111827'} />\r\n </Pressable>\r\n </View>\r\n </View>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n paddingHorizontal: 14,\r\n paddingVertical: 8,\r\n backgroundColor: '#ffffff',\r\n borderBottomWidth: 1,\r\n borderBottomColor: '#e5e7eb',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n },\r\n containerDark: {\r\n backgroundColor: '#0f1115',\r\n borderBottomColor: '#1f2937',\r\n },\r\n leftGroup: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n flex: 1,\r\n },\r\n logoBadge: {\r\n width: 26,\r\n height: 26,\r\n borderRadius: 8,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: '#2563eb',\r\n marginRight: 8,\r\n },\r\n logoText: {\r\n color: '#ffffff',\r\n fontWeight: '800',\r\n fontSize: 13,\r\n },\r\n brandText: {\r\n fontSize: 14,\r\n fontWeight: '800',\r\n color: '#111827',\r\n },\r\n brandTextDark: {\r\n color: '#f9fafb',\r\n },\r\n pageGroup: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n flex: 1,\r\n justifyContent: 'center',\r\n },\r\n pageButton: {\r\n width: 26,\r\n height: 26,\r\n borderRadius: 10,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: '#f3f4f6',\r\n },\r\n pageButtonDark: {\r\n backgroundColor: '#111827',\r\n },\r\n pageButtonText: {\r\n fontSize: 11,\r\n fontWeight: '600',\r\n color: '#111827',\r\n },\r\n pageButtonTextDark: {\r\n color: '#e5e7eb',\r\n },\r\n pageIndicator: {\r\n fontSize: 12,\r\n color: '#374151',\r\n minWidth: 52,\r\n textAlign: 'center',\r\n marginHorizontal: 6,\r\n fontWeight: '700',\r\n },\r\n pageIndicatorDark: {\r\n color: '#d1d5db',\r\n },\r\n rightGroup: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n flex: 1,\r\n },\r\n iconButton: {\r\n paddingHorizontal: 10,\r\n paddingVertical: 6,\r\n borderRadius: 10,\r\n backgroundColor: '#f3f4f6',\r\n marginLeft: 6,\r\n },\r\n iconButtonDark: {\r\n backgroundColor: '#111827',\r\n },\r\n iconButtonActive: {\r\n backgroundColor: '#2563eb',\r\n },\r\n iconButtonText: {\r\n fontSize: 11,\r\n fontWeight: '700',\r\n color: '#111827',\r\n },\r\n iconButtonTextDark: {\r\n color: '#e5e7eb',\r\n },\r\n iconButtonTextActive: {\r\n color: '#ffffff',\r\n },\r\n iconRow: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n },\r\n iconRowSpacer: {\r\n width: 6,\r\n },\r\n});\r\n\r\nexport default Topbar;\r\n","import React from 'react';\nimport Svg, { Path } from 'react-native-svg';\n\ntype IconProps = {\n size?: number;\n color?: string;\n strokeWidth?: number;\n};\n\nconst defaultColor = '#111827';\n\nexport const IconDocument: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M10 3v4a1 1 0 0 1-1 1H5m14-4v16a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V7.914a1 1 0 0 1 .293-.707l3.914-3.914A1 1 0 0 1 9.914 3H18a1 1 0 0 1 1 1Z\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconGrid: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M9.143 4H4.857A.857.857 0 0 0 4 4.857v4.286c0 .473.384.857.857.857h4.286A.857.857 0 0 0 10 9.143V4.857A.857.857 0 0 0 9.143 4Zm10 0h-4.286a.857.857 0 0 0-.857.857v4.286c0 .473.384.857.857.857h4.286A.857.857 0 0 0 20 9.143V4.857A.857.857 0 0 0 19.143 4Zm-10 10H4.857a.857.857 0 0 0-.857.857v4.286c0 .473.384.857.857.857h4.286a.857.857 0 0 0 .857-.857v-4.286A.857.857 0 0 0 9.143 14Zm10 0h-4.286a.857.857 0 0 0-.857.857v4.286c0 .473.384.857.857.857h4.286a.857.857 0 0 0 .857-.857v-4.286a.857.857 0 0 0-.857-.857Z\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconSearch: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"m21 21-3.5-3.5M17 10a7 7 0 1 1-14 0 7 7 0 0 1 14 0Z\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n />\n </Svg>\n);\n\nexport const IconZoomIn: React.FC<IconProps> = ({ size = 18, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path d=\"M5 12h14m-7 7V5\" stroke={color} strokeWidth={strokeWidth} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </Svg>\n);\n\nexport const IconZoomOut: React.FC<IconProps> = ({ size = 18, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path d=\"M5 12h14\" stroke={color} strokeWidth={strokeWidth} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </Svg>\n);\n\nexport const IconSettings: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M21 13v-2a1 1 0 0 0-1-1h-.757l-.707-1.707.535-.536a1 1 0 0 0 0-1.414l-1.414-1.414a1 1 0 0 0-1.414 0l-.536.535L14 4.757V4a1 1 0 0 0-1-1h-2a1 1 0 0 0-1 1v.757l-1.707.707-.536-.535a1 1 0 0 0-1.414 0L4.929 6.343a1 1 0 0 0 0 1.414l.536.536L4.757 10H4a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h.757l.707 1.707-.535.536a1 1 0 0 0 0 1.414l1.414 1.414a1 1 0 0 0 1.414 0l.536-.535 1.707.707V20a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-.757l1.707-.708.536.536a1 1 0 0 0 1.414 0l1.414-1.414a1 1 0 0 0 0-1.414l-.535-.536.707-1.707H20a1 1 0 0 0 1-1Z\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconComment: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M7.556 8.5h8m-8 3.5H12m7.111-7H4.89a.896.896 0 0 0-.629.256.868.868 0 0 0-.26.619v9.25c0 .232.094.455.26.619A.896.896 0 0 0 4.89 16H9l3 4 3-4h4.111a.896.896 0 0 0 .629-.256.868.868 0 0 0 .26-.619v-9.25a.868.868 0 0 0-.26-.619.896.896 0 0 0-.63-.256Z\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconCursor: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M9 20H5.5c-.27614 0-.5-.2239-.5-.5v-3c0-.2761.22386-.5.5-.5h13c.2761 0 .5.2239.5.5v3c0 .2761-.2239.5-.5.5H18m-6-1 1.42 1.8933c.04.0534.12.0534.16 0L15 19m-7-6 3.9072-9.76789c.0335-.08381.1521-.08381.1856 0L16 13m-8 0H7m1 0h1.5m6.5 0h-1.5m1.5 0h1m-7-3.00001h4\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n />\n </Svg>\n);\n\nexport const IconPalette: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M12 7h.01m3.486 1.513h.01m-6.978 0h.01M6.99 12H7m9 4h2.706a1.957 1.957 0 0 0 1.883-1.325A9 9 0 1 0 3.043 12.89 9.1 9.1 0 0 0 8.2 20.1a8.62 8.62 0 0 0 3.769.9 2.013 2.013 0 0 0 2.03-2v-.857A2.036 2.036 0 0 1 16 16Z\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconTrash: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M5 7h14m-9 3v8m4-8v8M10 3h4a1 1 0 0 1 1 1v3H9V4a1 1 0 0 1 1-1ZM6 7h12v13a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V7Z\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconLink: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M13.213 9.787a3.391 3.391 0 0 0-4.795 0l-3.425 3.426a3.39 3.39 0 0 0 4.795 4.794l.321-.304m-.321-4.49a3.39 3.39 0 0 0 4.795 0l3.424-3.426a3.39 3.39 0 0 0-4.794-4.795l-1.028.961\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconEdit: React.FC<{ size?: number; color?: string }> = ({ size = 18, color = defaultColor }) => (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d=\"M5 1a2 2 0 0 0-2 2v9.998a2 2 0 0 0 2 2h1.046l.25-1H5a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3v2.5A1.5 1.5 0 0 0 9.498 6h2.5v1.44a2.535 2.535 0 0 1 1-.405V5.413a1.5 1.5 0 0 0-.44-1.06L9.645 1.439A1.5 1.5 0 0 0 8.585 1H5Zm6.791 4H9.5a.5.5 0 0 1-.5-.5V2.206l2.792 2.792Zm1.207 3.06a1.56 1.56 0 0 0-.662.394L8.05 12.74a2.777 2.777 0 0 0-.722 1.257l-.009.033l-.302 1.211a.61.61 0 0 0 .738.74l1.211-.303a2.776 2.776 0 0 0 1.29-.73l4.288-4.288a1.56 1.56 0 0 0-1.545-2.6Z\"\n fill={color}\n />\n </Svg>\n);\n\nexport const IconChevronRight: React.FC<IconProps> = ({ size = 18, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"m9 5 7 7-7 7\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconChevronLeft: React.FC<IconProps> = ({ size = 18, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"m15 19-7-7 7-7\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconHand: React.FC<{ size?: number; color?: string }> = ({ size = 20, color = '#111827' }) => (\n <Svg width={size} height={size} viewBox=\"0 0 56 56\" fill=\"none\">\n <Path\n d=\"M25.129 53.512c8.25 0 14.039-4.477 17.156-13.266l4.125-11.602c1.031-2.93.094-5.343-2.344-6.234c-2.18-.797-4.336.14-5.367 2.555l-1.523 3.75c-.047.094-.117.164-.211.164c-.117 0-.164-.094-.164-.211V9.871c0-2.742-1.711-4.453-4.336-4.453c-.961 0-1.828.328-2.485.938c-.304-2.391-1.851-3.868-4.171-3.868c-2.274 0-3.868 1.524-4.22 3.82c-.585-.585-1.429-.89-2.273-.89c-2.437 0-4.054 1.688-4.054 4.29v2.6c-.633-.656-1.57-1.007-2.578-1.007c-2.438 0-4.125 1.804-4.125 4.43v20.132c0 10.969 6.656 17.649 16.57 17.649m-.117-3.258c-8.297 0-13.36-5.32-13.36-14.766v-19.43c0-.984.633-1.687 1.618-1.687c.96 0 1.664.703 1.664 1.688v11.976c0 .867.703 1.453 1.453 1.453c.797 0 1.523-.586 1.523-1.453V10.13c0-1.008.633-1.688 1.594-1.688c.984 0 1.664.68 1.664 1.688v16.71c0 .868.703 1.454 1.477 1.454c.796 0 1.523-.586 1.523-1.453V7.223c0-.985.656-1.711 1.64-1.711c.938 0 1.618.726 1.618 1.71V26.84c0 .82.656 1.453 1.476 1.453c.797 0 1.5-.633 1.5-1.453V10.129c0-1.008.68-1.688 1.641-1.688c.984 0 1.64.68 1.64 1.688V33.19c0 1.078.68 1.852 1.665 1.852c.843 0 1.547-.375 2.086-1.547l3.187-7.125c.422-1.008 1.266-1.523 2.133-1.195c.937.375 1.266 1.265.82 2.484l-4.148 11.578c-2.86 7.993-7.875 11.016-14.414 11.016\"\n fill={color}\n />\n </Svg>\n);\n","import React from 'react';\r\nimport { View, Text, Pressable, StyleSheet } from 'react-native';\r\nimport { useViewerStore } from '@papyrus-sdk/core';\r\nimport { getStrings } from '../strings';\r\n\r\nconst COLOR_SWATCHES = [\r\n '#fbbf24',\r\n '#f97316',\r\n '#ef4444',\r\n '#10b981',\r\n '#22d3ee',\r\n '#3b82f6',\r\n '#8b5cf6',\r\n '#ec4899',\r\n '#f3f4f6',\r\n '#111827',\r\n];\r\n\r\nconst ToolDock: React.FC = () => {\r\n const { selectionActive, uiTheme, locale, annotationColor, setAnnotationColor, accentColor } = useViewerStore();\r\n const isDark = uiTheme === 'dark';\r\n const isVisible = selectionActive;\r\n const t = getStrings(locale);\r\n\r\n if (!isVisible) return null;\r\n\r\n return (\r\n <View style={[styles.container, isDark && styles.containerDark]}>\r\n <Text style={[styles.title, isDark && styles.titleDark]}>{t.highlight}</Text>\r\n <View style={styles.paletteRow}>\r\n {COLOR_SWATCHES.map((color) => {\r\n const isSelected = annotationColor === color;\r\n return (\r\n <Pressable\r\n key={color}\r\n onPress={() => setAnnotationColor(color)}\r\n style={[\r\n styles.swatch,\r\n { backgroundColor: color },\r\n isSelected && styles.swatchSelected,\r\n isSelected && { borderColor: accentColor },\r\n ]}\r\n />\r\n );\r\n })}\r\n </View>\r\n </View>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n position: 'absolute',\r\n left: 16,\r\n right: 16,\r\n bottom: 72,\r\n paddingVertical: 10,\r\n paddingHorizontal: 12,\r\n borderRadius: 16,\r\n backgroundColor: '#ffffff',\r\n borderWidth: 1,\r\n borderColor: '#e5e7eb',\r\n shadowColor: '#000000',\r\n shadowOpacity: 0.15,\r\n shadowRadius: 14,\r\n shadowOffset: { width: 0, height: 6 },\r\n elevation: 6,\r\n },\r\n containerDark: {\r\n backgroundColor: '#0f1115',\r\n borderColor: '#1f2937',\r\n },\r\n title: {\r\n fontSize: 11,\r\n fontWeight: '800',\r\n color: '#111827',\r\n marginBottom: 8,\r\n },\r\n titleDark: {\r\n color: '#e5e7eb',\r\n },\r\n paletteRow: {\r\n flexDirection: 'row',\r\n flexWrap: 'wrap',\r\n },\r\n swatch: {\r\n width: 20,\r\n height: 20,\r\n borderRadius: 10,\r\n marginRight: 8,\r\n marginBottom: 8,\r\n borderWidth: 1,\r\n borderColor: '#e5e7eb',\r\n },\r\n swatchSelected: {\r\n borderColor: '#2563eb',\r\n borderWidth: 2,\r\n },\r\n});\r\n\r\nexport default ToolDock;\r\n","import { Locale } from '@papyrus-sdk/types';\r\n\r\ntype Strings = {\r\n pages: string;\r\n search: string;\r\n notes: string;\r\n read: string;\r\n edit: string;\r\n done: string;\r\n page: string;\r\n summary: string;\r\n pagesTab: string;\r\n summaryTab: string;\r\n searchPlaceholder: string;\r\n searchGo: string;\r\n results: string;\r\n searching: string;\r\n noResults: string;\r\n noSummary: string;\r\n noAnnotations: string;\r\n untitled: string;\r\n pageTransition: string;\r\n continuous: string;\r\n pageByPage: string;\r\n layout: string;\r\n singlePage: string;\r\n doublePage: string;\r\n rotate: string;\r\n clockwise: string;\r\n counterclockwise: string;\r\n zoom: string;\r\n highlight: string;\r\n strike: string;\r\n text: string;\r\n note: string;\r\n editNote: string;\r\n notePlaceholder: string;\r\n cancel: string;\r\n save: string;\r\n language: string;\r\n english: string;\r\n portuguese: string;\r\n appearance: string;\r\n light: string;\r\n dark: string;\r\n pageTheme: string;\r\n themeOriginal: string;\r\n themeSepia: string;\r\n themeDark: string;\r\n themeContrast: string;\r\n};\r\n\r\nconst STRINGS: Record<Locale, Strings> = {\r\n en: {\r\n pages: 'Pages',\r\n search: 'Search',\r\n notes: 'Notes',\r\n read: 'Read',\r\n edit: 'Edit',\r\n done: 'Done',\r\n page: 'Page',\r\n summary: 'Summary',\r\n pagesTab: 'Pages',\r\n summaryTab: 'Summary',\r\n searchPlaceholder: 'Search text...',\r\n searchGo: 'Go',\r\n results: 'results',\r\n searching: 'Searching...',\r\n noResults: 'No results yet.',\r\n noSummary: 'No summary available.',\r\n noAnnotations: 'No annotations yet.',\r\n untitled: 'Untitled',\r\n pageTransition: 'Page transition',\r\n continuous: 'Continuous',\r\n pageByPage: 'Page by page',\r\n layout: 'Layout',\r\n singlePage: 'Single page',\r\n doublePage: 'Double page',\r\n rotate: 'Rotate',\r\n clockwise: 'Clockwise',\r\n counterclockwise: 'Counterclockwise',\r\n zoom: 'Zoom',\r\n highlight: 'Highlight',\r\n strike: 'Strike',\r\n text: 'Text',\r\n note: 'Note',\r\n editNote: 'Edit note',\r\n notePlaceholder: 'Write your note...',\r\n cancel: 'Cancel',\r\n save: 'Save',\r\n language: 'Language',\r\n english: 'English',\r\n portuguese: 'Portuguese (BR)',\r\n appearance: 'Appearance',\r\n light: 'Light',\r\n dark: 'Dark',\r\n pageTheme: 'Page theme',\r\n themeOriginal: 'Original',\r\n themeSepia: 'Sepia',\r\n themeDark: 'Dark',\r\n themeContrast: 'High contrast',\r\n },\r\n 'pt-BR': {\r\n pages: 'Paginas',\r\n search: 'Buscar',\r\n notes: 'Notas',\r\n read: 'Ler',\r\n edit: 'Editar',\r\n done: 'Concluir',\r\n page: 'Pagina',\r\n summary: 'Sumario',\r\n pagesTab: 'Paginas',\r\n summaryTab: 'Sumario',\r\n searchPlaceholder: 'Pesquisar texto...',\r\n searchGo: 'Buscar',\r\n results: 'resultados',\r\n searching: 'Pesquisando...',\r\n noResults: 'Nenhum resultado.',\r\n noSummary: 'Sem sumario.',\r\n noAnnotations: 'Sem anotacoes.',\r\n untitled: 'Sem titulo',\r\n pageTransition: 'Transicao de pagina',\r\n continuous: 'Continuo',\r\n pageByPage: 'Pagina por pagina',\r\n layout: 'Layout',\r\n singlePage: 'Pagina unica',\r\n doublePage: 'Pagina dupla',\r\n rotate: 'Girar',\r\n clockwise: 'Sentido horario',\r\n counterclockwise: 'Sentido anti-horario',\r\n zoom: 'Zoom',\r\n highlight: 'Marca texto',\r\n strike: 'Risco',\r\n text: 'Texto',\r\n note: 'Nota',\r\n editNote: 'Editar nota',\r\n notePlaceholder: 'Escreva sua nota...',\r\n cancel: 'Cancelar',\r\n save: 'Salvar',\r\n language: 'Idioma',\r\n english: 'Ingles',\r\n portuguese: 'Portugues (BR)',\r\n appearance: 'Aparencia',\r\n light: 'Claro',\r\n dark: 'Escuro',\r\n pageTheme: 'Tema da pagina',\r\n themeOriginal: 'Original',\r\n themeSepia: 'Sepia',\r\n themeDark: 'Escuro',\r\n themeContrast: 'Contraste',\r\n },\r\n};\r\n\r\nexport const getStrings = (locale: Locale | undefined) => STRINGS[locale ?? 'en'] ?? STRINGS.en;\r\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\r\nimport {\r\n Modal,\r\n View,\r\n Text,\r\n Pressable,\r\n TextInput,\r\n StyleSheet,\r\n ScrollView,\r\n ActivityIndicator,\n FlatList,\n Dimensions,\n Platform,\n UIManager,\n findNodeHandle,\n type LayoutChangeEvent,\n} from 'react-native';\nimport { useViewerStore, SearchService } from '@papyrus-sdk/core';\r\nimport { DocumentEngine, OutlineItem } from '@papyrus-sdk/types';\r\nimport { PapyrusPageView } from '@papyrus-sdk/engine-native';\r\nimport { getStrings } from '../strings';\r\nimport { IconChevronLeft, IconChevronRight } from '../icons';\r\n\r\ninterface RightSheetProps {\r\n engine: DocumentEngine;\r\n}\r\n\r\nconst withAlpha = (hex: string, alpha: number) => {\r\n const normalized = hex.replace('#', '').trim();\r\n const value =\r\n normalized.length === 3\r\n ? normalized\r\n .split('')\r\n .map((c) => c + c)\r\n .join('')\r\n : normalized;\r\n if (value.length !== 6) return hex;\r\n const r = parseInt(value.slice(0, 2), 16);\r\n const g = parseInt(value.slice(2, 4), 16);\r\n const b = parseInt(value.slice(4, 6), 16);\r\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\r\n};\r\n\r\nconst PageThumbnail: React.FC<{\r\n engine: DocumentEngine;\r\n pageIndex: number;\r\n isActive: boolean;\r\n isDark: boolean;\r\n zoom: number;\r\n cardWidth: number;\r\n frameWidth: number;\n frameHeight: number;\n accentColor: string;\n useNativePreview: boolean;\n onPress: () => void;\n}> = ({\n engine,\n pageIndex,\n isActive,\n isDark,\n zoom,\n cardWidth,\n frameWidth,\n frameHeight,\n accentColor,\n useNativePreview,\n onPress,\n}) => {\n const viewRef = useRef<any>(null);\n const [layoutReady, setLayoutReady] = useState(false);\n\n useEffect(() => {\n if (!layoutReady || !useNativePreview) return;\n const viewTag = findNodeHandle(viewRef.current);\n if (!viewTag) return;\n const isNative = Platform.OS === 'android' || Platform.OS === 'ios';\n const renderScale = isNative ? 2.0 / Math.max(zoom, 0.5) : 2.0;\n void engine.renderPage(pageIndex, viewTag, renderScale);\n }, [engine, pageIndex, layoutReady, useNativePreview, zoom]);\n\r\n const handleLayout = (event: LayoutChangeEvent) => {\r\n if (event.nativeEvent.layout.width && event.nativeEvent.layout.height) {\r\n setLayoutReady(true);\r\n }\r\n };\r\n\r\n return (\r\n <Pressable\r\n onPress={onPress}\r\n style={[\r\n styles.thumbCard,\r\n { width: cardWidth },\r\n isDark && styles.thumbCardDark,\r\n isActive && styles.thumbCardActive,\r\n isActive && { borderColor: accentColor },\r\n ]}\n >\n <View onLayout={handleLayout} style={[styles.thumbFrame, { width: frameWidth, height: frameHeight }]}>\n {useNativePreview ? (\n <PapyrusPageView ref={viewRef} style={styles.thumbView} />\n ) : (\n <View style={[styles.thumbFallback, isDark && styles.thumbFallbackDark]}>\n <Text style={[styles.thumbFallbackText, isDark && styles.thumbFallbackTextDark]}>\n {pageIndex + 1}\n </Text>\n </View>\n )}\n </View>\n <Text style={[styles.thumbLabel, isDark && styles.thumbLabelDark]}>{pageIndex + 1}</Text>\n </Pressable>\n );\n};\n\r\nconst OutlineNode: React.FC<{\r\n item: OutlineItem;\r\n depth?: number;\r\n isDark: boolean;\r\n onSelect: (pageIndex: number) => void;\r\n untitledLabel: string;\r\n}> = ({ item, depth = 0, isDark, onSelect, untitledLabel }) => {\r\n const hasChildren = item.children && item.children.length > 0;\r\n const isClickable = item.pageIndex >= 0;\r\n\r\n return (\r\n <View>\r\n <Pressable\r\n onPress={() => {\r\n if (isClickable) onSelect(item.pageIndex);\r\n }}\r\n style={[styles.outlineRow, { paddingLeft: 12 + depth * 12 }]}\r\n >\r\n <Text\r\n style={[\r\n styles.outlineText,\r\n isDark && styles.outlineTextDark,\r\n !isClickable && styles.outlineTextMuted,\r\n ]}\r\n numberOfLines={2}\r\n >\r\n {item.title || untitledLabel}\r\n </Text>\r\n </Pressable>\r\n {hasChildren &&\r\n item.children!.map((child, index) => (\r\n <OutlineNode\r\n key={`${child.title}-${index}`}\r\n item={child}\r\n depth={depth + 1}\r\n isDark={isDark}\r\n onSelect={onSelect}\r\n untitledLabel={untitledLabel}\r\n />\r\n ))}\r\n </View>\r\n );\r\n};\r\n\r\nconst RightSheet: React.FC<RightSheetProps> = ({ engine }) => {\r\n const {\r\n sidebarRightOpen,\r\n sidebarRightTab,\r\n toggleSidebarRight,\r\n outline,\r\n searchResults,\r\n searchQuery,\r\n activeSearchIndex,\r\n nextSearchResult,\r\n prevSearchResult,\r\n annotations,\r\n uiTheme,\r\n setSearch,\r\n setDocumentState,\r\n triggerScrollToPage,\r\n setSelectedAnnotation,\r\n pageCount,\r\n currentPage,\r\n zoom,\r\n locale,\r\n accentColor,\r\n } = useViewerStore();\r\n const [pagesMode, setPagesMode] = useState<'thumbnails' | 'summary'>('thumbnails');\r\n const [query, setQuery] = useState('');\r\n const [isSearching, setIsSearching] = useState(false);\r\n const searchService = useMemo(() => new SearchService(engine), [engine]);\r\n const isDark = uiTheme === 'dark';\r\n const accentSoft = withAlpha(accentColor, 0.2);\r\n const accentStrong = withAlpha(accentColor, 0.35);\r\n const t = getStrings(locale);\n const sheetHeight = Math.min(640, Dimensions.get('window').height * 0.72);\n const windowWidth = Dimensions.get('window').width;\n const gridGutter = 12;\n const gridPadding = 16;\n const cardWidth = (windowWidth - gridPadding * 2 - gridGutter) / 2;\n const frameWidth = cardWidth - 16;\n const frameHeight = frameWidth * 1.28;\n const renderTarget = engine.getRenderTargetType?.();\n const hasNativePageView = Boolean(UIManager.getViewManagerConfig?.('PapyrusPageView'));\n const useNativePreview = renderTarget !== 'webview' && hasNativePageView;\n\r\n const closeSheet = () => toggleSidebarRight();\r\n\r\n const handleSearch = async () => {\r\n const trimmed = query.trim();\r\n if (!trimmed) {\r\n setSearch('', []);\r\n return;\r\n }\r\n setIsSearching(true);\r\n try {\r\n const results = await searchService.search(trimmed);\r\n setSearch(trimmed, results);\r\n } finally {\r\n setIsSearching(false);\r\n }\r\n };\r\n\r\n const pages = useMemo(() => Array.from({ length: pageCount }, (_, i) => i), [pageCount]);\r\n\r\n const renderHighlightedSnippet = (text: string, isActive: boolean) => {\r\n const trimmedQuery = searchQuery.trim();\r\n if (trimmedQuery.length < 2) {\r\n return (\r\n <Text\r\n style={[\r\n styles.resultText,\r\n isDark && styles.resultTextDark,\r\n isActive && styles.resultTextActive,\r\n isActive && { color: accentColor },\r\n ]}\r\n >\r\n ...{text}...\r\n </Text>\r\n );\r\n }\r\n\r\n const lowerText = text.toLowerCase();\r\n const lowerQuery = trimmedQuery.toLowerCase();\r\n const parts: Array<{ text: string; match: boolean }> = [];\r\n let cursor = 0;\r\n\r\n while (cursor < text.length) {\r\n const index = lowerText.indexOf(lowerQuery, cursor);\r\n if (index === -1) {\r\n parts.push({ text: text.slice(cursor), match: false });\r\n break;\r\n }\r\n if (index > cursor) {\r\n parts.push({ text: text.slice(cursor, index), match: false });\r\n }\r\n parts.push({ text: text.slice(index, index + trimmedQuery.length), match: true });\r\n cursor = index + trimmedQuery.length;\r\n }\r\n\r\n return (\r\n <Text\r\n style={[\r\n styles.resultText,\r\n isDark && styles.resultTextDark,\r\n isActive && styles.resultTextActive,\r\n isActive && { color: accentColor },\r\n ]}\r\n >\r\n {parts.map((part, idx) => (\r\n <Text\r\n key={`${idx}-${part.text}`}\r\n style={[\r\n part.match && styles.matchText,\r\n part.match && isDark && styles.matchTextDark,\r\n part.match && isActive && styles.matchTextActive,\r\n part.match && isActive && { backgroundColor: accentStrong, color: accentColor },\r\n ]}\r\n >\r\n {part.text}\r\n </Text>\r\n ))}\r\n </Text>\r\n );\r\n };\r\n\r\n if (!sidebarRightOpen) return null;\r\n\r\n return (\r\n <Modal visible transparent animationType=\"slide\" onRequestClose={closeSheet}>\r\n <View style={styles.modalRoot}>\r\n <Pressable style={styles.backdrop} onPress={closeSheet} />\r\n <View style={[styles.sheet, { height: sheetHeight }, isDark && styles.sheetDark]}>\r\n <View style={[styles.handle, isDark && styles.handleDark]} />\r\n <View style={styles.tabs}>\r\n {['pages', 'search', 'annotations'].map((tab) => (\r\n <Pressable\r\n key={tab}\r\n onPress={() => toggleSidebarRight(tab as 'pages' | 'search' | 'annotations')}\r\n style={[\r\n styles.tabButton,\r\n isDark && styles.tabButtonDark,\r\n sidebarRightTab === tab && styles.tabButtonActive,\r\n sidebarRightTab === tab && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.tabText,\r\n isDark && styles.tabTextDark,\r\n sidebarRightTab === tab && styles.tabTextActive,\r\n ]}\r\n >\r\n {tab === 'pages' ? t.pages : tab === 'search' ? t.search : t.notes}\r\n </Text>\r\n </Pressable>\r\n ))}\r\n </View>\r\n\r\n {sidebarRightTab === 'pages' ? (\r\n <View style={styles.pagesContent}>\r\n <View style={styles.pageHeader}>\r\n <Text style={[styles.pageStatus, isDark && styles.pageStatusDark]}>\r\n {t.page} {currentPage} / {pageCount}\r\n </Text>\r\n <View style={[styles.segmented, isDark && styles.segmentedDark]}>\r\n <Pressable\r\n onPress={() => setPagesMode('thumbnails')}\r\n style={[\r\n styles.segmentButton,\r\n pagesMode === 'thumbnails' && styles.segmentButtonActive,\r\n pagesMode === 'thumbnails' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.segmentText,\r\n isDark && styles.segmentTextDark,\r\n pagesMode === 'thumbnails' && styles.segmentTextActive,\r\n ]}\r\n >\r\n {t.pagesTab}\r\n </Text>\r\n </Pressable>\r\n <Pressable\r\n onPress={() => setPagesMode('summary')}\r\n style={[\r\n styles.segmentButton,\r\n pagesMode === 'summary' && styles.segmentButtonActive,\r\n pagesMode === 'summary' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.segmentText,\r\n isDark && styles.segmentTextDark,\r\n pagesMode === 'summary' && styles.segmentTextActive,\r\n ]}\r\n >\r\n {t.summaryTab}\r\n </Text>\r\n </Pressable>\r\n </View>\r\n </View>\r\n {pagesMode === 'thumbnails' ? (\r\n <FlatList\r\n data={pages}\r\n keyExtractor={(item) => `thumb-${item}`}\r\n numColumns={2}\r\n contentContainerStyle={styles.thumbGrid}\r\n columnWrapperStyle={styles.thumbRow}\r\n showsVerticalScrollIndicator={false}\r\n initialNumToRender={6}\r\n renderItem={({ item }) => (\r\n <PageThumbnail\r\n engine={engine}\r\n pageIndex={item}\r\n isActive={item + 1 === currentPage}\r\n isDark={isDark}\r\n zoom={zoom}\n cardWidth={cardWidth}\n frameWidth={frameWidth}\n frameHeight={frameHeight}\n accentColor={accentColor}\n useNativePreview={useNativePreview}\n onPress={() => {\n engine.goToPage(item + 1);\n setDocumentState({ currentPage: item + 1 });\n triggerScrollToPage(item);\n closeSheet();\r\n }}\r\n />\r\n )}\r\n />\r\n ) : (\r\n <ScrollView contentContainerStyle={styles.summaryContent} showsVerticalScrollIndicator={false}>\r\n {outline.length === 0 ? (\r\n <Text style={[styles.emptyText, isDark && styles.emptyTextDark]}>\r\n {t.noSummary}\r\n </Text>\r\n ) : (\r\n outline.map((item, index) => (\r\n <OutlineNode\r\n key={`${item.title}-${index}`}\r\n item={item}\r\n isDark={isDark}\r\n untitledLabel={t.untitled}\r\n onSelect={(pageIndex) => {\r\n engine.goToPage(pageIndex + 1);\r\n setDocumentState({ currentPage: pageIndex + 1 });\r\n triggerScrollToPage(pageIndex);\r\n closeSheet();\r\n }}\r\n />\r\n ))\r\n )}\r\n </ScrollView>\r\n )}\r\n </View>\r\n ) : (\r\n <ScrollView contentContainerStyle={styles.content} showsVerticalScrollIndicator={false}>\r\n {sidebarRightTab === 'search' ? (\r\n <View>\r\n <View style={[styles.searchBox, isDark && styles.searchBoxDark]}>\r\n <TextInput\r\n value={query}\r\n onChangeText={setQuery}\r\n placeholder={t.searchPlaceholder}\r\n placeholderTextColor={isDark ? '#9ca3af' : '#6b7280'}\r\n style={[styles.searchInput, isDark && styles.searchInputDark]}\r\n onSubmitEditing={handleSearch}\r\n returnKeyType=\"search\"\r\n />\r\n <Pressable onPress={handleSearch} style={[styles.searchButton, { backgroundColor: accentColor }]}>\r\n <Text style={styles.searchButtonText}>{t.searchGo}</Text>\r\n </Pressable>\r\n </View>\r\n\r\n <View style={styles.searchMeta}>\r\n <Text style={[styles.searchCount, isDark && styles.searchCountDark, { color: accentColor }]}>\r\n {searchResults.length} {t.results}\r\n </Text>\r\n <View style={styles.searchNav}>\r\n <Pressable\r\n onPress={prevSearchResult}\r\n disabled={searchResults.length === 0}\r\n style={[\r\n styles.searchNavButton,\r\n isDark && styles.searchNavButtonDark,\r\n searchResults.length === 0 && styles.searchNavButtonDisabled,\r\n ]}\r\n >\r\n <IconChevronLeft size={14} color={isDark ? '#e5e7eb' : '#111827'} />\r\n </Pressable>\r\n <Pressable\r\n onPress={nextSearchResult}\r\n disabled={searchResults.length === 0}\r\n style={[\r\n styles.searchNavButton,\r\n isDark && styles.searchNavButtonDark,\r\n searchResults.length === 0 && styles.searchNavButtonDisabled,\r\n ]}\r\n >\r\n <IconChevronRight size={14} color={isDark ? '#e5e7eb' : '#111827'} />\r\n </Pressable>\r\n </View>\r\n </View>\r\n\r\n {isSearching && (\r\n <View style={styles.searchStatus}>\r\n <ActivityIndicator size=\"small\" color={accentColor} />\r\n <Text style={[styles.searchStatusText, isDark && styles.searchStatusTextDark]}>\r\n {t.searching}\r\n </Text>\r\n </View>\r\n )}\r\n\r\n {!isSearching && searchResults.length === 0 && (\r\n <Text style={[styles.emptyText, isDark && styles.emptyTextDark]}>\r\n {t.noResults}\r\n </Text>\r\n )}\r\n\r\n {!isSearching &&\r\n searchResults.map((res, idx) => {\r\n const isActive = idx === activeSearchIndex;\r\n return (\r\n <Pressable\r\n key={`${res.pageIndex}-${idx}`}\r\n onPress={() => {\r\n setDocumentState({ activeSearchIndex: idx });\r\n triggerScrollToPage(res.pageIndex);\r\n closeSheet();\r\n }}\r\n style={[\r\n styles.resultCard,\r\n isDark && styles.resultCardDark,\r\n isActive && styles.resultCardActive,\r\n isActive && { borderColor: accentColor },\r\n ]}\r\n >\r\n <Text style={[styles.resultPage, isDark && styles.resultPageDark, { color: accentColor }]}>\r\n {t.page} {res.pageIndex + 1}\r\n </Text>\r\n {renderHighlightedSnippet(res.text, isActive)}\r\n </Pressable>\r\n );\r\n })}\r\n </View>\r\n ) : (\r\n <View>\r\n {annotations.length === 0 ? (\r\n <Text style={[styles.emptyText, isDark && styles.emptyTextDark]}>\r\n {t.noAnnotations}\r\n </Text>\r\n ) : (\r\n annotations.map((ann) => (\r\n <Pressable\r\n key={ann.id}\r\n onPress={() => {\r\n setSelectedAnnotation(ann.id);\r\n triggerScrollToPage(ann.pageIndex);\r\n closeSheet();\r\n }}\r\n style={[styles.noteCard, isDark && styles.noteCardDark]}\r\n >\r\n <View style={styles.noteHeader}>\r\n <View style={[styles.noteDot, { backgroundColor: ann.color }]} />\r\n <Text style={[styles.noteTitle, isDark && styles.noteTitleDark]}>\r\n {t.page} {ann.pageIndex + 1}\r\n </Text>\r\n </View>\r\n <Text style={[styles.noteType, isDark && styles.noteTypeDark, { color: accentColor }]}>\r\n {ann.type === 'comment' || ann.type === 'text' ? t.note.toUpperCase() : ann.type.toUpperCase()}\r\n </Text>\r\n {ann.content ? (\r\n <Text style={[styles.noteContent, isDark && styles.noteContentDark]}>\r\n {ann.content}\r\n </Text>\r\n ) : null}\r\n </Pressable>\r\n ))\r\n )}\r\n </View>\r\n )}\r\n </ScrollView>\r\n )}\r\n </View>\r\n </View>\r\n </Modal>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n modalRoot: {\r\n flex: 1,\r\n backgroundColor: 'transparent',\r\n },\r\n backdrop: {\r\n ...StyleSheet.absoluteFillObject,\r\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\r\n },\r\n sheet: {\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundColor: '#ffffff',\r\n borderTopLeftRadius: 20,\r\n borderTopRightRadius: 20,\r\n borderTopWidth: 1,\r\n borderTopColor: '#e5e7eb',\r\n paddingBottom: 16,\r\n },\r\n sheetDark: {\r\n backgroundColor: '#0f1115',\r\n borderTopColor: '#1f2937',\r\n },\r\n handle: {\r\n width: 44,\r\n height: 4,\r\n borderRadius: 999,\r\n backgroundColor: '#cbd5f5',\r\n alignSelf: 'center',\r\n marginTop: 10,\r\n marginBottom: 12,\r\n },\r\n handleDark: {\r\n backgroundColor: '#374151',\r\n },\r\n tabs: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n paddingHorizontal: 16,\r\n marginBottom: 10,\r\n },\r\n tabButton: {\r\n paddingVertical: 6,\r\n paddingHorizontal: 14,\r\n borderRadius: 999,\r\n marginRight: 8,\r\n backgroundColor: '#e5e7eb',\r\n },\r\n tabButtonDark: {\r\n backgroundColor: '#111827',\r\n },\r\n tabButtonActive: {\r\n backgroundColor: '#2563eb',\r\n },\r\n tabText: {\r\n fontSize: 12,\r\n fontWeight: '700',\r\n color: '#111827',\r\n },\r\n tabTextDark: {\r\n color: '#e5e7eb',\r\n },\r\n tabTextActive: {\r\n color: '#ffffff',\r\n },\r\n pagesContent: {\r\n paddingHorizontal: 16,\r\n flex: 1,\r\n },\r\n pageHeader: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n marginBottom: 10,\r\n },\r\n pageStatus: {\r\n fontSize: 12,\r\n fontWeight: '700',\r\n color: '#111827',\r\n },\r\n pageStatusDark: {\r\n color: '#e5e7eb',\r\n },\r\n segmented: {\r\n flexDirection: 'row',\r\n backgroundColor: '#e5e7eb',\r\n borderRadius: 999,\r\n padding: 2,\r\n },\r\n segmentedDark: {\r\n backgroundColor: '#111827',\r\n },\r\n segmentButton: {\r\n paddingHorizontal: 10,\r\n paddingVertical: 5,\r\n borderRadius: 999,\r\n },\r\n segmentButtonActive: {\r\n backgroundColor: '#2563eb',\r\n },\r\n segmentText: {\r\n fontSize: 11,\r\n fontWeight: '700',\r\n color: '#111827',\r\n },\r\n segmentTextDark: {\r\n color: '#e5e7eb',\r\n },\r\n segmentTextActive: {\r\n color: '#ffffff',\r\n },\r\n thumbGrid: {\r\n paddingHorizontal: 16,\r\n paddingBottom: 16,\r\n },\r\n thumbRow: {\r\n justifyContent: 'space-between',\r\n marginBottom: 12,\r\n },\r\n thumbCard: {\r\n padding: 8,\r\n borderRadius: 14,\r\n backgroundColor: '#f9fafb',\r\n borderWidth: 1,\r\n borderColor: '#e5e7eb',\r\n alignItems: 'center',\r\n },\r\n thumbCardDark: {\r\n backgroundColor: '#111827',\r\n borderColor: '#1f2937',\r\n },\r\n thumbCardActive: {\r\n borderColor: '#2563eb',\r\n },\r\n thumbFrame: {\r\n borderRadius: 10,\r\n backgroundColor: '#ffffff',\r\n overflow: 'hidden',\r\n },\r\n thumbView: {\n width: '100%',\n height: '100%',\n },\n thumbFallback: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#ffffff',\n },\n thumbFallbackDark: {\n backgroundColor: '#0b0f14',\n },\n thumbFallbackText: {\n fontSize: 18,\n fontWeight: '800',\n color: '#1f2937',\n },\n thumbFallbackTextDark: {\n color: '#e5e7eb',\n },\n thumbLabel: {\r\n marginTop: 6,\r\n fontSize: 11,\r\n fontWeight: '700',\r\n color: '#111827',\r\n },\r\n thumbLabelDark: {\r\n color: '#e5e7eb',\r\n },\r\n content: {\r\n paddingHorizontal: 16,\r\n paddingBottom: 16,\r\n },\r\n summaryContent: {\r\n paddingBottom: 24,\r\n },\r\n outlineRow: {\r\n paddingVertical: 8,\r\n borderBottomWidth: 1,\r\n borderBottomColor: 'rgba(148, 163, 184, 0.18)',\r\n },\r\n outlineText: {\r\n fontSize: 12,\r\n fontWeight: '600',\r\n color: '#111827',\r\n },\r\n outlineTextDark: {\r\n color: '#e5e7eb',\r\n },\r\n outlineTextMuted: {\r\n color: '#9ca3af',\r\n },\r\n searchBox: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n borderRadius: 10,\r\n backgroundColor: '#f3f4f6',\r\n paddingHorizontal: 12,\r\n paddingVertical: 8,\r\n borderWidth: 1,\r\n borderColor: '#e5e7eb',\r\n },\r\n searchBoxDark: {\r\n backgroundColor: '#111827',\r\n borderColor: '#1f2937',\r\n },\r\n searchInput: {\r\n flex: 1,\r\n fontSize: 12,\r\n color: '#111827',\r\n },\r\n searchInputDark: {\r\n color: '#e5e7eb',\r\n },\r\n searchButton: {\r\n paddingHorizontal: 10,\r\n paddingVertical: 4,\r\n borderRadius: 6,\r\n backgroundColor: '#2563eb',\r\n },\r\n searchButtonText: {\r\n fontSize: 11,\r\n fontWeight: '700',\r\n color: '#ffffff',\r\n },\r\n searchStatus: {\r\n marginTop: 12,\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n },\r\n searchStatusText: {\r\n marginLeft: 8,\r\n fontSize: 11,\r\n color: '#4b5563',\r\n },\r\n searchStatusTextDark: {\r\n color: '#9ca3af',\r\n },\r\n searchMeta: {\r\n marginTop: 12,\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n },\r\n searchCount: {\r\n fontSize: 11,\r\n fontWeight: '700',\r\n color: '#2563eb',\r\n },\r\n searchCountDark: {\r\n color: '#60a5fa',\r\n },\r\n searchNav: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n },\r\n searchNavButton: {\r\n width: 28,\r\n height: 28,\r\n borderRadius: 10,\r\n backgroundColor: '#e5e7eb',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginLeft: 6,\r\n },\r\n searchNavButtonDark: {\r\n backgroundColor: '#111827',\r\n },\r\n searchNavButtonDisabled: {\r\n opacity: 0.5,\r\n },\r\n emptyText: {\r\n marginTop: 16,\r\n fontSize: 12,\r\n color: '#6b7280',\r\n },\r\n emptyTextDark: {\r\n color: '#9ca3af',\r\n },\r\n resultCard: {\r\n marginTop: 12,\r\n padding: 12,\r\n borderRadius: 12,\r\n backgroundColor: '#f9fafb',\r\n borderWidth: 1,\r\n borderColor: '#e5e7eb',\r\n },\r\n resultCardDark: {\r\n backgroundColor: '#111827',\r\n borderColor: '#1f2937',\r\n },\r\n resultCardActive: {\r\n borderColor: '#2563eb',\r\n },\r\n resultPage: {\r\n fontSize: 10,\r\n fontWeight: '800',\r\n color: '#2563eb',\r\n marginBottom: 6,\r\n },\r\n resultPageDark: {\r\n color: '#60a5fa',\r\n },\r\n resultText: {\r\n fontSize: 11,\r\n color: '#374151',\r\n },\r\n resultTextDark: {\r\n color: '#d1d5db',\r\n },\r\n resultTextActive: {\r\n color: '#1d4ed8',\r\n },\r\n matchText: {\r\n backgroundColor: 'rgba(245, 158, 11, 0.3)',\r\n color: '#111827',\r\n fontWeight: '700',\r\n },\r\n matchTextDark: {\r\n backgroundColor: 'rgba(245, 158, 11, 0.25)',\r\n color: '#fde68a',\r\n },\r\n matchTextActive: {\r\n backgroundColor: 'rgba(59, 130, 246, 0.35)',\r\n color: '#1d4ed8',\r\n },\r\n noteCard: {\r\n padding: 12,\r\n borderRadius: 12,\r\n backgroundColor: '#f9fafb',\r\n borderWidth: 1,\r\n borderColor: '#e5e7eb',\r\n marginBottom: 12,\r\n },\r\n noteCardDark: {\r\n backgroundColor: '#111827',\r\n borderColor: '#1f2937',\r\n },\r\n noteHeader: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n marginBottom: 6,\r\n },\r\n noteDot: {\r\n width: 8,\r\n height: 8,\r\n borderRadius: 4,\r\n marginRight: 6,\r\n },\r\n noteTitle: {\r\n fontSize: 11,\r\n fontWeight: '700',\r\n color: '#111827',\r\n },\r\n noteTitleDark: {\r\n color: '#e5e7eb',\r\n },\r\n noteType: {\r\n fontSize: 10,\r\n fontWeight: '800',\r\n color: '#2563eb',\r\n },\r\n noteTypeDark: {\r\n color: '#60a5fa',\r\n },\r\n noteContent: {\r\n marginTop: 6,\r\n fontSize: 11,\r\n color: '#4b5563',\r\n },\r\n noteContentDark: {\r\n color: '#9ca3af',\r\n },\r\n});\r\n\r\nexport default RightSheet;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Modal, View, Text, TextInput, Pressable, StyleSheet } from 'react-native';\r\nimport { useViewerStore } from '@papyrus-sdk/core';\r\nimport { getStrings } from '../strings';\r\n\r\nconst AnnotationEditor: React.FC = () => {\r\n const { annotations, selectedAnnotationId, updateAnnotation, setSelectedAnnotation, uiTheme, locale, accentColor } =\r\n useViewerStore();\r\n const annotation = annotations.find((ann) => ann.id === selectedAnnotationId);\r\n const isEditable = annotation && (annotation.type === 'text' || annotation.type === 'comment');\r\n const [draft, setDraft] = useState('');\r\n const isDark = uiTheme === 'dark';\r\n const t = getStrings(locale);\r\n\r\n useEffect(() => {\r\n if (isEditable) {\r\n setDraft(annotation?.content ?? '');\r\n }\r\n }, [annotation?.id, isEditable]);\r\n\r\n if (!isEditable || !annotation) return null;\r\n\r\n const handleClose = () => setSelectedAnnotation(null);\r\n const handleSave = () => {\r\n updateAnnotation(annotation.id, { content: draft });\r\n setSelectedAnnotation(null);\r\n };\r\n\r\n return (\r\n <Modal visible transparent animationType=\"fade\" onRequestClose={handleClose}>\r\n <View style={styles.overlay}>\r\n <View style={[styles.card, isDark && styles.cardDark]}>\r\n <Text style={[styles.title, isDark && styles.titleDark]}>{t.editNote}</Text>\r\n <TextInput\r\n style={[styles.input, isDark && styles.inputDark]}\r\n value={draft}\r\n onChangeText={setDraft}\r\n placeholder={t.notePlaceholder}\r\n placeholderTextColor={isDark ? '#9ca3af' : '#6b7280'}\r\n multiline\r\n />\r\n <View style={styles.actions}>\r\n <Pressable onPress={handleClose} style={[styles.actionButton, styles.actionCancel]}>\r\n <Text style={styles.actionText}>{t.cancel}</Text>\r\n </Pressable>\r\n <Pressable onPress={handleSave} style={[styles.actionButton, styles.actionSave, { backgroundColor: accentColor }]}>\r\n <Text style={[styles.actionText, styles.actionTextLight]}>{t.save}</Text>\r\n </Pressable>\r\n </View>\r\n </View>\r\n </View>\r\n </Modal>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n overlay: {\r\n flex: 1,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\r\n padding: 24,\r\n },\r\n card: {\r\n width: '100%',\r\n borderRadius: 16,\r\n padding: 16,\r\n backgroundColor: '#ffffff',\r\n borderWidth: 1,\r\n borderColor: '#e5e7eb',\r\n },\r\n cardDark: {\r\n backgroundColor: '#0f1115',\r\n borderColor: '#1f2937',\r\n },\r\n title: {\r\n fontSize: 14,\r\n fontWeight: '700',\r\n color: '#111827',\r\n marginBottom: 12,\r\n },\r\n titleDark: {\r\n color: '#f9fafb',\r\n },\r\n input: {\r\n minHeight: 100,\r\n borderRadius: 12,\r\n padding: 12,\r\n backgroundColor: '#f3f4f6',\r\n color: '#111827',\r\n fontSize: 12,\r\n },\r\n inputDark: {\r\n backgroundColor: '#111827',\r\n color: '#e5e7eb',\r\n },\r\n actions: {\r\n marginTop: 16,\r\n flexDirection: 'row',\r\n justifyContent: 'flex-end',\r\n },\r\n actionButton: {\r\n paddingHorizontal: 12,\r\n paddingVertical: 8,\r\n borderRadius: 8,\r\n marginLeft: 8,\r\n },\r\n actionCancel: {\r\n backgroundColor: '#e5e7eb',\r\n },\r\n actionSave: {\r\n backgroundColor: '#2563eb',\r\n },\r\n actionText: {\r\n fontSize: 11,\r\n fontWeight: '700',\r\n color: '#111827',\r\n },\r\n actionTextLight: {\r\n color: '#ffffff',\r\n },\r\n});\r\n\r\nexport default AnnotationEditor;\r\n","import React from 'react';\r\nimport { View, Text, Pressable, StyleSheet } from 'react-native';\r\nimport { useViewerStore } from '@papyrus-sdk/core';\r\nimport { getStrings } from '../strings';\r\nimport { IconDocument, IconGrid, IconSearch, IconComment } from '../icons';\r\n\r\nconst BottomBar: React.FC = () => {\r\n const { sidebarRightOpen, sidebarRightTab, toggleSidebarRight, setDocumentState, uiTheme, locale, accentColor } = useViewerStore();\r\n const isDark = uiTheme === 'dark';\r\n const t = getStrings(locale);\r\n\r\n const isActive = (tab: 'pages' | 'search' | 'annotations') =>\r\n sidebarRightOpen && sidebarRightTab === tab;\r\n\r\n const iconColor = (active: boolean) => {\r\n if (active) return '#ffffff';\r\n return isDark ? '#e5e7eb' : '#111827';\r\n };\r\n\r\n return (\r\n <View style={[styles.container, isDark && styles.containerDark]}>\r\n <Pressable\r\n onPress={() => toggleSidebarRight('pages')}\r\n style={[styles.item, isActive('pages') && styles.itemActive]}\r\n >\r\n <View\r\n style={[\r\n styles.itemIcon,\r\n isDark && styles.itemIconDark,\r\n isActive('pages') && styles.itemIconActive,\r\n isActive('pages') && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <IconGrid size={16} color={iconColor(isActive('pages'))} />\r\n </View>\r\n <Text\r\n style={[\r\n styles.itemLabel,\r\n isDark && styles.itemLabelDark,\r\n isActive('pages') && styles.itemLabelActive,\r\n isActive('pages') && { color: accentColor },\r\n ]}\r\n >\r\n {t.pages}\r\n </Text>\r\n </Pressable>\r\n\r\n <Pressable\r\n onPress={() => toggleSidebarRight('search')}\r\n style={[styles.item, isActive('search') && styles.itemActive]}\r\n >\r\n <View\r\n style={[\r\n styles.itemIcon,\r\n isDark && styles.itemIconDark,\r\n isActive('search') && styles.itemIconActive,\r\n isActive('search') && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <IconSearch size={16} color={iconColor(isActive('search'))} />\r\n </View>\r\n <Text\r\n style={[\r\n styles.itemLabel,\r\n isDark && styles.itemLabelDark,\r\n isActive('search') && styles.itemLabelActive,\r\n isActive('search') && { color: accentColor },\r\n ]}\r\n >\r\n {t.search}\r\n </Text>\r\n </Pressable>\r\n\r\n <Pressable\r\n onPress={() => setDocumentState({ sidebarRightOpen: false })}\r\n style={[styles.item, !sidebarRightOpen && styles.itemActive]}\r\n >\r\n <View\r\n style={[\r\n styles.itemIcon,\r\n isDark && styles.itemIconDark,\r\n !sidebarRightOpen && styles.itemIconActive,\r\n !sidebarRightOpen && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <IconDocument size={16} color={iconColor(!sidebarRightOpen)} />\r\n </View>\r\n <Text\r\n style={[\r\n styles.itemLabel,\r\n isDark && styles.itemLabelDark,\r\n !sidebarRightOpen && styles.itemLabelActive,\r\n !sidebarRightOpen && { color: accentColor },\r\n ]}\r\n >\r\n {t.read}\r\n </Text>\r\n </Pressable>\r\n\r\n <Pressable\r\n onPress={() => toggleSidebarRight('annotations')}\r\n style={[styles.item, isActive('annotations') && styles.itemActive]}\r\n >\r\n <View\r\n style={[\r\n styles.itemIcon,\r\n isDark && styles.itemIconDark,\r\n isActive('annotations') && styles.itemIconActive,\r\n isActive('annotations') && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <IconComment size={16} color={iconColor(isActive('annotations'))} />\r\n </View>\r\n <Text\r\n style={[\r\n styles.itemLabel,\r\n isDark && styles.itemLabelDark,\r\n isActive('annotations') && styles.itemLabelActive,\r\n isActive('annotations') && { color: accentColor },\r\n ]}\r\n >\r\n {t.notes}\r\n </Text>\r\n </Pressable>\r\n </View>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n flexDirection: 'row',\r\n justifyContent: 'space-around',\r\n alignItems: 'center',\r\n paddingVertical: 10,\r\n paddingHorizontal: 12,\r\n backgroundColor: '#ffffff',\r\n borderTopWidth: 1,\r\n borderTopColor: '#e5e7eb',\r\n },\r\n containerDark: {\r\n backgroundColor: '#0f1115',\r\n borderTopColor: '#1f2937',\r\n },\r\n item: {\r\n alignItems: 'center',\r\n paddingHorizontal: 6,\r\n },\r\n itemActive: {\r\n transform: [{ translateY: -2 }],\r\n },\r\n itemIcon: {\r\n width: 28,\r\n height: 28,\r\n borderRadius: 10,\r\n backgroundColor: '#e5e7eb',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginBottom: 4,\r\n },\r\n itemIconDark: {\r\n backgroundColor: '#111827',\r\n color: '#e5e7eb',\r\n },\r\n itemIconActive: {\r\n backgroundColor: '#2563eb',\r\n color: '#ffffff',\r\n },\r\n itemLabel: {\r\n fontSize: 10,\r\n fontWeight: '700',\r\n color: '#6b7280',\r\n },\r\n itemLabelDark: {\r\n color: '#9ca3af',\r\n },\r\n itemLabelActive: {\r\n color: '#2563eb',\r\n },\r\n});\r\n\r\nexport default BottomBar;\r\n","import React from 'react';\r\nimport { Modal, View, Text, Pressable, StyleSheet } from 'react-native';\r\nimport { useViewerStore } from '@papyrus-sdk/core';\r\nimport { DocumentEngine } from '@papyrus-sdk/types';\r\nimport { getStrings } from '../strings';\r\nimport { IconZoomIn, IconZoomOut } from '../icons';\r\n\r\ninterface SettingsSheetProps {\r\n engine: DocumentEngine;\r\n visible: boolean;\r\n onClose: () => void;\r\n}\r\n\r\nconst SettingsSheet: React.FC<SettingsSheetProps> = ({ engine, visible, onClose }) => {\r\n const { viewMode, uiTheme, zoom, setDocumentState, locale, accentColor, pageTheme } = useViewerStore();\r\n const isDark = uiTheme === 'dark';\r\n const isPaged = viewMode === 'single';\r\n const isDouble = viewMode === 'double';\r\n const t = getStrings(locale);\r\n\r\n const handleTransition = (mode: 'continuous' | 'paged') => {\r\n if (mode === 'paged') {\r\n setDocumentState({ viewMode: 'single' });\r\n return;\r\n }\r\n setDocumentState({ viewMode: isDouble ? 'double' : 'continuous' });\r\n };\r\n\r\n const handleLayout = (layout: 'single' | 'double') => {\r\n if (layout === 'double') {\r\n setDocumentState({ viewMode: 'double' });\r\n return;\r\n }\r\n if (viewMode === 'double') {\r\n setDocumentState({ viewMode: 'continuous' });\r\n }\r\n };\r\n\r\n const handleRotate = (direction: 'clockwise' | 'counterclockwise') => {\r\n engine.rotate(direction);\r\n setDocumentState({ rotation: engine.getRotation() });\r\n };\r\n\r\n const handleZoom = (delta: number) => {\r\n const next = Math.max(0.5, Math.min(4, zoom + delta));\r\n engine.setZoom(next);\r\n setDocumentState({ zoom: next });\r\n };\r\n\r\n if (!visible) return null;\r\n\r\n return (\r\n <Modal visible transparent animationType=\"slide\" onRequestClose={onClose}>\r\n <View style={styles.modalRoot}>\r\n <Pressable style={styles.backdrop} onPress={onClose} />\r\n <View style={[styles.sheet, isDark && styles.sheetDark]}>\r\n <View style={[styles.handle, isDark && styles.handleDark]} />\r\n\r\n <View style={styles.section}>\r\n <Text style={[styles.sectionTitle, isDark && styles.sectionTitleDark]}>{t.appearance}</Text>\r\n <View style={styles.optionRow}>\r\n <Pressable\r\n onPress={() => setDocumentState({ uiTheme: 'light' })}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n uiTheme === 'light' && styles.optionButtonActive,\r\n uiTheme === 'light' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n uiTheme === 'light' && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.light}\r\n </Text>\r\n </Pressable>\r\n <Pressable\r\n onPress={() => setDocumentState({ uiTheme: 'dark' })}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n uiTheme === 'dark' && styles.optionButtonActive,\r\n uiTheme === 'dark' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n uiTheme === 'dark' && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.dark}\r\n </Text>\r\n </Pressable>\r\n </View>\r\n </View>\r\n\r\n <View style={styles.section}>\r\n <Text style={[styles.sectionTitle, isDark && styles.sectionTitleDark]}>{t.pageTheme}</Text>\r\n <View style={styles.optionRow}>\r\n <Pressable\r\n onPress={() => setDocumentState({ pageTheme: 'normal' })}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n pageTheme === 'normal' && styles.optionButtonActive,\r\n pageTheme === 'normal' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n pageTheme === 'normal' && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.themeOriginal}\r\n </Text>\r\n </Pressable>\r\n <Pressable\r\n onPress={() => setDocumentState({ pageTheme: 'sepia' })}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n pageTheme === 'sepia' && styles.optionButtonActive,\r\n pageTheme === 'sepia' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n pageTheme === 'sepia' && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.themeSepia}\r\n </Text>\r\n </Pressable>\r\n <Pressable\r\n onPress={() => setDocumentState({ pageTheme: 'dark' })}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n pageTheme === 'dark' && styles.optionButtonActive,\r\n pageTheme === 'dark' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n pageTheme === 'dark' && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.themeDark}\r\n </Text>\r\n </Pressable>\r\n <Pressable\r\n onPress={() => setDocumentState({ pageTheme: 'high-contrast' })}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n pageTheme === 'high-contrast' && styles.optionButtonActive,\r\n pageTheme === 'high-contrast' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n pageTheme === 'high-contrast' && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.themeContrast}\r\n </Text>\r\n </Pressable>\r\n </View>\r\n </View>\r\n\r\n <View style={styles.section}>\r\n <Text style={[styles.sectionTitle, isDark && styles.sectionTitleDark]}>{t.pageTransition}</Text>\r\n <View style={styles.optionRow}>\r\n <Pressable\r\n onPress={() => handleTransition('continuous')}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n (!isPaged || isDouble) && styles.optionButtonActive,\r\n (!isPaged || isDouble) && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n (!isPaged || isDouble) && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.continuous}\r\n </Text>\r\n </Pressable>\r\n <Pressable\r\n onPress={() => handleTransition('paged')}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n isPaged && styles.optionButtonActive,\r\n isPaged && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n isPaged && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.pageByPage}\r\n </Text>\r\n </Pressable>\r\n </View>\r\n </View>\r\n\r\n <View style={styles.section}>\r\n <Text style={[styles.sectionTitle, isDark && styles.sectionTitleDark]}>{t.layout}</Text>\r\n <View style={styles.optionRow}>\r\n <Pressable\r\n onPress={() => handleLayout('single')}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n !isDouble && styles.optionButtonActive,\r\n !isDouble && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n !isDouble && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.singlePage}\r\n </Text>\r\n </Pressable>\r\n <Pressable\r\n onPress={() => handleLayout('double')}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n isDouble && styles.optionButtonActive,\r\n isDouble && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n isDouble && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.doublePage}\r\n </Text>\r\n </Pressable>\r\n </View>\r\n </View>\r\n\r\n <View style={styles.section}>\r\n <Text style={[styles.sectionTitle, isDark && styles.sectionTitleDark]}>{t.rotate}</Text>\r\n <View style={styles.optionRow}>\r\n <Pressable\r\n onPress={() => handleRotate('counterclockwise')}\r\n style={[styles.optionButton, isDark && styles.optionButtonDark]}\r\n >\r\n <Text style={[styles.optionText, isDark && styles.optionTextDark]}>{t.counterclockwise}</Text>\r\n </Pressable>\r\n <Pressable\r\n onPress={() => handleRotate('clockwise')}\r\n style={[styles.optionButton, isDark && styles.optionButtonDark]}\r\n >\r\n <Text style={[styles.optionText, isDark && styles.optionTextDark]}>{t.clockwise}</Text>\r\n </Pressable>\r\n </View>\r\n </View>\r\n\r\n <View style={styles.section}>\r\n <Text style={[styles.sectionTitle, isDark && styles.sectionTitleDark]}>{t.zoom}</Text>\r\n <View style={styles.optionRow}>\r\n <Pressable onPress={() => handleZoom(-0.1)} style={[styles.optionButton, isDark && styles.optionButtonDark]}>\r\n <IconZoomOut size={16} color={isDark ? '#e5e7eb' : '#111827'} />\r\n </Pressable>\r\n <View style={styles.zoomValue}>\r\n <Text style={[styles.zoomText, isDark && styles.zoomTextDark]}>\r\n {Math.round(zoom * 100)}%\r\n </Text>\r\n </View>\r\n <Pressable onPress={() => handleZoom(0.1)} style={[styles.optionButton, isDark && styles.optionButtonDark]}>\r\n <IconZoomIn size={16} color={isDark ? '#e5e7eb' : '#111827'} />\r\n </Pressable>\r\n </View>\r\n </View>\r\n\r\n <View style={styles.section}>\r\n <Text style={[styles.sectionTitle, isDark && styles.sectionTitleDark]}>{t.language}</Text>\r\n <View style={styles.optionRow}>\r\n <Pressable\r\n onPress={() => setDocumentState({ locale: 'en' })}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n locale === 'en' && styles.optionButtonActive,\r\n locale === 'en' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n locale === 'en' && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.english}\r\n </Text>\r\n </Pressable>\r\n <Pressable\r\n onPress={() => setDocumentState({ locale: 'pt-BR' })}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n locale === 'pt-BR' && styles.optionButtonActive,\r\n locale === 'pt-BR' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n locale === 'pt-BR' && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.portuguese}\r\n </Text>\r\n </Pressable>\r\n </View>\r\n </View>\r\n </View>\r\n </View>\r\n </Modal>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n modalRoot: {\r\n flex: 1,\r\n backgroundColor: 'transparent',\r\n },\r\n backdrop: {\r\n ...StyleSheet.absoluteFillObject,\r\n backgroundColor: 'rgba(0, 0, 0, 0.45)',\r\n },\r\n sheet: {\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n paddingHorizontal: 18,\r\n paddingBottom: 24,\r\n backgroundColor: '#ffffff',\r\n borderTopLeftRadius: 24,\r\n borderTopRightRadius: 24,\r\n borderTopWidth: 1,\r\n borderTopColor: '#e5e7eb',\r\n },\r\n sheetDark: {\r\n backgroundColor: '#0f1115',\r\n borderTopColor: '#1f2937',\r\n },\r\n handle: {\r\n width: 44,\r\n height: 4,\r\n borderRadius: 999,\r\n backgroundColor: '#cbd5f5',\r\n alignSelf: 'center',\r\n marginTop: 10,\r\n marginBottom: 12,\r\n },\r\n handleDark: {\r\n backgroundColor: '#374151',\r\n },\r\n section: {\r\n marginBottom: 16,\r\n },\r\n sectionTitle: {\r\n fontSize: 12,\r\n fontWeight: '800',\r\n color: '#111827',\r\n marginBottom: 8,\r\n },\r\n sectionTitleDark: {\r\n color: '#e5e7eb',\r\n },\r\n optionRow: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n flexWrap: 'wrap',\r\n },\r\n optionButton: {\r\n paddingHorizontal: 12,\r\n paddingVertical: 8,\r\n borderRadius: 12,\r\n backgroundColor: '#e5e7eb',\r\n marginRight: 8,\r\n marginBottom: 8,\r\n },\r\n optionButtonDark: {\r\n backgroundColor: '#111827',\r\n },\r\n optionButtonActive: {\r\n backgroundColor: '#2563eb',\r\n },\r\n optionText: {\r\n fontSize: 11,\r\n fontWeight: '700',\r\n color: '#111827',\r\n },\r\n optionTextDark: {\r\n color: '#e5e7eb',\r\n },\r\n optionTextActive: {\r\n color: '#ffffff',\r\n },\r\n zoomValue: {\r\n minWidth: 52,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n zoomText: {\r\n fontSize: 12,\r\n fontWeight: '700',\r\n color: '#111827',\r\n },\r\n zoomTextDark: {\r\n color: '#e5e7eb',\r\n },\r\n});\r\n\r\nexport default SettingsSheet;\r\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport {\n ActivityIndicator,\n StyleSheet,\n Text,\n UIManager,\n View,\n findNodeHandle,\n type LayoutChangeEvent,\n type StyleProp,\n type ViewStyle,\n} from 'react-native';\nimport { DocumentSource, DocumentType } from '@papyrus-sdk/types';\nimport { MobileDocumentEngine, PapyrusPageView } from '@papyrus-sdk/engine-native';\nimport WebViewViewer from './WebViewViewer';\n\ntype CoverPreviewProps = {\n source: DocumentSource;\n type?: DocumentType;\n pageIndex?: number;\n visible?: boolean;\n keepAlive?: boolean;\n allowInteraction?: boolean;\n renderScale?: number;\n showLoading?: boolean;\n loadingIndicator?: React.ReactNode;\n placeholder?: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n onLoadStart?: () => void;\n onLoadEnd?: () => void;\n onError?: (error: Error) => void;\n};\n\nconst parseDataUri = (value: string): { mime: string } | null => {\n const match = /^data:([^;,]+)?(;base64)?,/.exec(value);\n if (!match) return null;\n return { mime: match[1] ?? '' };\n};\n\nconst inferDocumentType = (source: DocumentSource, explicitType?: DocumentType): DocumentType => {\n if (explicitType) return explicitType;\n if (typeof source === 'string') {\n const dataUri = parseDataUri(source);\n if (dataUri?.mime) {\n const mime = dataUri.mime.toLowerCase();\n if (mime.includes('epub')) return 'epub';\n if (mime.includes('text')) return 'text';\n if (mime.includes('pdf')) return 'pdf';\n }\n const clean = source.split('?')[0].split('#')[0];\n const ext = clean.includes('.') ? clean.split('.').pop()?.toLowerCase() : undefined;\n if (ext === 'epub') return 'epub';\n if (ext === 'txt') return 'text';\n if (ext === 'pdf') return 'pdf';\n return 'pdf';\n }\n if (typeof source === 'object' && source !== null && 'uri' in source) {\n const clean = source.uri.split('?')[0].split('#')[0];\n const ext = clean.includes('.') ? clean.split('.').pop()?.toLowerCase() : undefined;\n if (ext === 'epub') return 'epub';\n if (ext === 'txt') return 'text';\n if (ext === 'pdf') return 'pdf';\n }\n return 'pdf';\n};\n\nconst CoverPreview: React.FC<CoverPreviewProps> = ({\n source,\n type,\n pageIndex = 0,\n visible = true,\n keepAlive = false,\n allowInteraction = false,\n renderScale = 2,\n showLoading = true,\n loadingIndicator,\n placeholder,\n style,\n onLoadStart,\n onLoadEnd,\n onError,\n}) => {\n const [engine, setEngine] = useState<MobileDocumentEngine | null>(null);\n const [layoutReady, setLayoutReady] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const viewRef = useRef<any>(null);\n\n const resolvedType = useMemo(() => inferDocumentType(source, type), [source, type]);\n const isPdf = resolvedType === 'pdf';\n const hasNativePageView = Boolean(UIManager.getViewManagerConfig?.('PapyrusPageView'));\n const canRender = !isPdf || hasNativePageView;\n const shouldRender = Boolean(visible);\n\n useEffect(() => {\n if (!shouldRender) {\n if (!keepAlive) {\n setEngine(null);\n setLoaded(false);\n setError(null);\n }\n return;\n }\n if (!engine && canRender) {\n setEngine(new MobileDocumentEngine());\n }\n }, [shouldRender, keepAlive, engine, canRender]);\n\n useEffect(() => {\n if (!engine || !shouldRender || !canRender) return;\n let active = true;\n setLoading(true);\n setLoaded(false);\n setError(null);\n onLoadStart?.();\n const loadInput = type ? { type, source } : source;\n engine\n .load(loadInput)\n .then(() => {\n if (!active) return;\n if (!isPdf && pageIndex > 0) {\n engine.goToPage(pageIndex + 1);\n }\n setLoaded(true);\n setLoading(false);\n onLoadEnd?.();\n })\n .catch((err) => {\n if (!active) return;\n const errorValue = err instanceof Error ? err : new Error('[Papyrus] Failed to load document');\n setError(errorValue);\n setLoading(false);\n onError?.(errorValue);\n });\n return () => {\n active = false;\n };\n }, [engine, shouldRender, canRender, source, type, pageIndex, isPdf, onLoadStart, onLoadEnd, onError]);\n\n useEffect(() => {\n if (!engine || !isPdf || !loaded || !layoutReady || !shouldRender || !canRender) return;\n const viewTag = findNodeHandle(viewRef.current);\n if (!viewTag) return;\n engine.renderPage(pageIndex, viewTag, renderScale);\n }, [engine, isPdf, loaded, layoutReady, shouldRender, canRender, pageIndex, renderScale]);\n\n useEffect(() => {\n return () => {\n engine?.destroy();\n };\n }, [engine]);\n\n const handleLayout = (event: LayoutChangeEvent) => {\n const { width, height } = event.nativeEvent.layout;\n if (width > 0 && height > 0) {\n setLayoutReady(true);\n }\n };\n\n if (!shouldRender || !canRender) {\n return (\n <View style={[styles.container, style]}>\n {placeholder ?? (\n <View style={styles.placeholder}>\n <Text style={styles.placeholderText}>Preview</Text>\n </View>\n )}\n </View>\n );\n }\n\n return (\n <View style={[styles.container, style]} onLayout={handleLayout}>\n <View style={styles.previewFrame} pointerEvents={allowInteraction ? 'auto' : 'none'}>\n {isPdf ? (\n <PapyrusPageView ref={viewRef} style={styles.pageView} />\n ) : (\n engine && <WebViewViewer engine={engine} />\n )}\n </View>\n {showLoading && loading && (\n <View pointerEvents=\"none\" style={styles.loadingOverlay}>\n {loadingIndicator ?? <ActivityIndicator size=\"small\" color=\"#2563eb\" />}\n </View>\n )}\n {error && (\n <View pointerEvents=\"none\" style={styles.errorOverlay}>\n <Text style={styles.errorText}>Preview unavailable</Text>\n </View>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n backgroundColor: '#f8fafc',\n borderRadius: 12,\n overflow: 'hidden',\n },\n previewFrame: {\n flex: 1,\n backgroundColor: '#ffffff',\n },\n pageView: {\n width: '100%',\n height: '100%',\n backgroundColor: 'transparent',\n },\n loadingOverlay: {\n ...StyleSheet.absoluteFillObject,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'rgba(15, 23, 42, 0.15)',\n },\n errorOverlay: {\n ...StyleSheet.absoluteFillObject,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'rgba(15, 23, 42, 0.4)',\n },\n errorText: {\n fontSize: 12,\n fontWeight: '600',\n color: '#f8fafc',\n },\n placeholder: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#e2e8f0',\n },\n placeholderText: {\n fontSize: 12,\n fontWeight: '600',\n color: '#475569',\n },\n});\n\nexport default CoverPreview;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,uBAAAA,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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","names":["exports","module","import_react","import_react_native","import_core","scale","import_react","import_react_native","import_core","import_jsx_runtime","styles","WebView","import_jsx_runtime","styles","import_react","import_react_native","import_core","import_jsx_runtime","Svg","Svg","import_jsx_runtime","styles","import_react_native","import_core","import_jsx_runtime","styles","import_react","import_react_native","import_core","import_engine_native","import_jsx_runtime","styles","import_react","import_react_native","import_core","import_jsx_runtime","styles","import_react_native","import_core","import_jsx_runtime","styles","import_react_native","import_core","import_jsx_runtime","styles","import_react","import_react_native","import_engine_native","import_jsx_runtime","styles"]}
1
+ {"version":3,"sources":["../runtime/index.html","../index.ts","../components/Viewer.tsx","../components/PageRenderer.tsx","../perf/mobilePerf.ts","../components/WebViewViewer.tsx","../components/Topbar.tsx","../icons.tsx","../components/ToolDock.tsx","../strings.ts","../components/RightSheet.tsx","../components/AnnotationEditor.tsx","../components/BottomBar.tsx","../components/SettingsSheet.tsx","../components/CoverPreview.tsx"],"sourcesContent":["<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>Papyrus Mobile Runtime</title>\n <style>\n html,\n body {\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n background: #ffffff;\n overflow: hidden;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n }\n\n #viewer {\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n background: #ffffff;\n }\n </style>\n </head>\n <body>\n <div id=\"viewer\"></div>\n <script>\n /*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n !(function (e) {\n if (\"object\" == typeof exports && \"undefined\" != typeof module)\n module.exports = e();\n else if (\"function\" == typeof define && define.amd) define([], e);\n else {\n (\"undefined\" != typeof window\n ? window\n : \"undefined\" != typeof global\n ? global\n : \"undefined\" != typeof self\n ? self\n : this\n ).JSZip = e();\n }\n })(function () {\n return (function s(a, o, h) {\n function u(r, e) {\n if (!o[r]) {\n if (!a[r]) {\n var t = \"function\" == typeof require && require;\n if (!e && t) return t(r, !0);\n if (l) return l(r, !0);\n var n = new Error(\"Cannot find module '\" + r + \"'\");\n throw ((n.code = \"MODULE_NOT_FOUND\"), n);\n }\n var i = (o[r] = { exports: {} });\n a[r][0].call(\n i.exports,\n function (e) {\n var t = a[r][1][e];\n return u(t || e);\n },\n i,\n i.exports,\n s,\n a,\n o,\n h\n );\n }\n return o[r].exports;\n }\n for (\n var l = \"function\" == typeof require && require, e = 0;\n e < h.length;\n e++\n )\n u(h[e]);\n return u;\n })(\n {\n 1: [\n function (e, t, r) {\n \"use strict\";\n var d = e(\"./utils\"),\n c = e(\"./support\"),\n p =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n (r.encode = function (e) {\n for (\n var t,\n r,\n n,\n i,\n s,\n a,\n o,\n h = [],\n u = 0,\n l = e.length,\n f = l,\n c = \"string\" !== d.getTypeOf(e);\n u < e.length;\n\n )\n (f = l - u),\n (n = c\n ? ((t = e[u++]),\n (r = u < l ? e[u++] : 0),\n u < l ? e[u++] : 0)\n : ((t = e.charCodeAt(u++)),\n (r = u < l ? e.charCodeAt(u++) : 0),\n u < l ? e.charCodeAt(u++) : 0)),\n (i = t >> 2),\n (s = ((3 & t) << 4) | (r >> 4)),\n (a = 1 < f ? ((15 & r) << 2) | (n >> 6) : 64),\n (o = 2 < f ? 63 & n : 64),\n h.push(\n p.charAt(i) + p.charAt(s) + p.charAt(a) + p.charAt(o)\n );\n return h.join(\"\");\n }),\n (r.decode = function (e) {\n var t,\n r,\n n,\n i,\n s,\n a,\n o = 0,\n h = 0,\n u = \"data:\";\n if (e.substr(0, u.length) === u)\n throw new Error(\n \"Invalid base64 input, it looks like a data url.\"\n );\n var l,\n f =\n (3 * (e = e.replace(/[^A-Za-z0-9+/=]/g, \"\")).length) /\n 4;\n if (\n (e.charAt(e.length - 1) === p.charAt(64) && f--,\n e.charAt(e.length - 2) === p.charAt(64) && f--,\n f % 1 != 0)\n )\n throw new Error(\n \"Invalid base64 input, bad content length.\"\n );\n for (\n l = c.uint8array\n ? new Uint8Array(0 | f)\n : new Array(0 | f);\n o < e.length;\n\n )\n (t =\n (p.indexOf(e.charAt(o++)) << 2) |\n ((i = p.indexOf(e.charAt(o++))) >> 4)),\n (r =\n ((15 & i) << 4) |\n ((s = p.indexOf(e.charAt(o++))) >> 2)),\n (n = ((3 & s) << 6) | (a = p.indexOf(e.charAt(o++)))),\n (l[h++] = t),\n 64 !== s && (l[h++] = r),\n 64 !== a && (l[h++] = n);\n return l;\n });\n },\n { \"./support\": 30, \"./utils\": 32 },\n ],\n 2: [\n function (e, t, r) {\n \"use strict\";\n var n = e(\"./external\"),\n i = e(\"./stream/DataWorker\"),\n s = e(\"./stream/Crc32Probe\"),\n a = e(\"./stream/DataLengthProbe\");\n function o(e, t, r, n, i) {\n (this.compressedSize = e),\n (this.uncompressedSize = t),\n (this.crc32 = r),\n (this.compression = n),\n (this.compressedContent = i);\n }\n (o.prototype = {\n getContentWorker: function () {\n var e = new i(n.Promise.resolve(this.compressedContent))\n .pipe(this.compression.uncompressWorker())\n .pipe(new a(\"data_length\")),\n t = this;\n return (\n e.on(\"end\", function () {\n if (this.streamInfo.data_length !== t.uncompressedSize)\n throw new Error(\n \"Bug : uncompressed data size mismatch\"\n );\n }),\n e\n );\n },\n getCompressedWorker: function () {\n return new i(n.Promise.resolve(this.compressedContent))\n .withStreamInfo(\"compressedSize\", this.compressedSize)\n .withStreamInfo(\"uncompressedSize\", this.uncompressedSize)\n .withStreamInfo(\"crc32\", this.crc32)\n .withStreamInfo(\"compression\", this.compression);\n },\n }),\n (o.createWorkerFrom = function (e, t, r) {\n return e\n .pipe(new s())\n .pipe(new a(\"uncompressedSize\"))\n .pipe(t.compressWorker(r))\n .pipe(new a(\"compressedSize\"))\n .withStreamInfo(\"compression\", t);\n }),\n (t.exports = o);\n },\n {\n \"./external\": 6,\n \"./stream/Crc32Probe\": 25,\n \"./stream/DataLengthProbe\": 26,\n \"./stream/DataWorker\": 27,\n },\n ],\n 3: [\n function (e, t, r) {\n \"use strict\";\n var n = e(\"./stream/GenericWorker\");\n (r.STORE = {\n magic: \"\\0\\0\",\n compressWorker: function () {\n return new n(\"STORE compression\");\n },\n uncompressWorker: function () {\n return new n(\"STORE decompression\");\n },\n }),\n (r.DEFLATE = e(\"./flate\"));\n },\n { \"./flate\": 7, \"./stream/GenericWorker\": 28 },\n ],\n 4: [\n function (e, t, r) {\n \"use strict\";\n var n = e(\"./utils\");\n var o = (function () {\n for (var e, t = [], r = 0; r < 256; r++) {\n e = r;\n for (var n = 0; n < 8; n++)\n e = 1 & e ? 3988292384 ^ (e >>> 1) : e >>> 1;\n t[r] = e;\n }\n return t;\n })();\n t.exports = function (e, t) {\n return void 0 !== e && e.length\n ? \"string\" !== n.getTypeOf(e)\n ? (function (e, t, r, n) {\n var i = o,\n s = n + r;\n e ^= -1;\n for (var a = n; a < s; a++)\n e = (e >>> 8) ^ i[255 & (e ^ t[a])];\n return -1 ^ e;\n })(0 | t, e, e.length, 0)\n : (function (e, t, r, n) {\n var i = o,\n s = n + r;\n e ^= -1;\n for (var a = n; a < s; a++)\n e = (e >>> 8) ^ i[255 & (e ^ t.charCodeAt(a))];\n return -1 ^ e;\n })(0 | t, e, e.length, 0)\n : 0;\n };\n },\n { \"./utils\": 32 },\n ],\n 5: [\n function (e, t, r) {\n \"use strict\";\n (r.base64 = !1),\n (r.binary = !1),\n (r.dir = !1),\n (r.createFolders = !0),\n (r.date = null),\n (r.compression = null),\n (r.compressionOptions = null),\n (r.comment = null),\n (r.unixPermissions = null),\n (r.dosPermissions = null);\n },\n {},\n ],\n 6: [\n function (e, t, r) {\n \"use strict\";\n var n = null;\n (n = \"undefined\" != typeof Promise ? Promise : e(\"lie\")),\n (t.exports = { Promise: n });\n },\n { lie: 37 },\n ],\n 7: [\n function (e, t, r) {\n \"use strict\";\n var n =\n \"undefined\" != typeof Uint8Array &&\n \"undefined\" != typeof Uint16Array &&\n \"undefined\" != typeof Uint32Array,\n i = e(\"pako\"),\n s = e(\"./utils\"),\n a = e(\"./stream/GenericWorker\"),\n o = n ? \"uint8array\" : \"array\";\n function h(e, t) {\n a.call(this, \"FlateWorker/\" + e),\n (this._pako = null),\n (this._pakoAction = e),\n (this._pakoOptions = t),\n (this.meta = {});\n }\n (r.magic = \"\\b\\0\"),\n s.inherits(h, a),\n (h.prototype.processChunk = function (e) {\n (this.meta = e.meta),\n null === this._pako && this._createPako(),\n this._pako.push(s.transformTo(o, e.data), !1);\n }),\n (h.prototype.flush = function () {\n a.prototype.flush.call(this),\n null === this._pako && this._createPako(),\n this._pako.push([], !0);\n }),\n (h.prototype.cleanUp = function () {\n a.prototype.cleanUp.call(this), (this._pako = null);\n }),\n (h.prototype._createPako = function () {\n this._pako = new i[this._pakoAction]({\n raw: !0,\n level: this._pakoOptions.level || -1,\n });\n var t = this;\n this._pako.onData = function (e) {\n t.push({ data: e, meta: t.meta });\n };\n }),\n (r.compressWorker = function (e) {\n return new h(\"Deflate\", e);\n }),\n (r.uncompressWorker = function () {\n return new h(\"Inflate\", {});\n });\n },\n { \"./stream/GenericWorker\": 28, \"./utils\": 32, pako: 38 },\n ],\n 8: [\n function (e, t, r) {\n \"use strict\";\n function A(e, t) {\n var r,\n n = \"\";\n for (r = 0; r < t; r++)\n (n += String.fromCharCode(255 & e)), (e >>>= 8);\n return n;\n }\n function n(e, t, r, n, i, s) {\n var a,\n o,\n h = e.file,\n u = e.compression,\n l = s !== O.utf8encode,\n f = I.transformTo(\"string\", s(h.name)),\n c = I.transformTo(\"string\", O.utf8encode(h.name)),\n d = h.comment,\n p = I.transformTo(\"string\", s(d)),\n m = I.transformTo(\"string\", O.utf8encode(d)),\n _ = c.length !== h.name.length,\n g = m.length !== d.length,\n b = \"\",\n v = \"\",\n y = \"\",\n w = h.dir,\n k = h.date,\n x = { crc32: 0, compressedSize: 0, uncompressedSize: 0 };\n (t && !r) ||\n ((x.crc32 = e.crc32),\n (x.compressedSize = e.compressedSize),\n (x.uncompressedSize = e.uncompressedSize));\n var S = 0;\n t && (S |= 8), l || (!_ && !g) || (S |= 2048);\n var z = 0,\n C = 0;\n w && (z |= 16),\n \"UNIX\" === i\n ? ((C = 798),\n (z |= (function (e, t) {\n var r = e;\n return (\n e || (r = t ? 16893 : 33204), (65535 & r) << 16\n );\n })(h.unixPermissions, w)))\n : ((C = 20),\n (z |= (function (e) {\n return 63 & (e || 0);\n })(h.dosPermissions))),\n (a = k.getUTCHours()),\n (a <<= 6),\n (a |= k.getUTCMinutes()),\n (a <<= 5),\n (a |= k.getUTCSeconds() / 2),\n (o = k.getUTCFullYear() - 1980),\n (o <<= 4),\n (o |= k.getUTCMonth() + 1),\n (o <<= 5),\n (o |= k.getUTCDate()),\n _ &&\n ((v = A(1, 1) + A(B(f), 4) + c),\n (b += \"up\" + A(v.length, 2) + v)),\n g &&\n ((y = A(1, 1) + A(B(p), 4) + m),\n (b += \"uc\" + A(y.length, 2) + y));\n var E = \"\";\n return (\n (E += \"\\n\\0\"),\n (E += A(S, 2)),\n (E += u.magic),\n (E += A(a, 2)),\n (E += A(o, 2)),\n (E += A(x.crc32, 4)),\n (E += A(x.compressedSize, 4)),\n (E += A(x.uncompressedSize, 4)),\n (E += A(f.length, 2)),\n (E += A(b.length, 2)),\n {\n fileRecord: R.LOCAL_FILE_HEADER + E + f + b,\n dirRecord:\n R.CENTRAL_FILE_HEADER +\n A(C, 2) +\n E +\n A(p.length, 2) +\n \"\\0\\0\\0\\0\" +\n A(z, 4) +\n A(n, 4) +\n f +\n b +\n p,\n }\n );\n }\n var I = e(\"../utils\"),\n i = e(\"../stream/GenericWorker\"),\n O = e(\"../utf8\"),\n B = e(\"../crc32\"),\n R = e(\"../signature\");\n function s(e, t, r, n) {\n i.call(this, \"ZipFileWorker\"),\n (this.bytesWritten = 0),\n (this.zipComment = t),\n (this.zipPlatform = r),\n (this.encodeFileName = n),\n (this.streamFiles = e),\n (this.accumulate = !1),\n (this.contentBuffer = []),\n (this.dirRecords = []),\n (this.currentSourceOffset = 0),\n (this.entriesCount = 0),\n (this.currentFile = null),\n (this._sources = []);\n }\n I.inherits(s, i),\n (s.prototype.push = function (e) {\n var t = e.meta.percent || 0,\n r = this.entriesCount,\n n = this._sources.length;\n this.accumulate\n ? this.contentBuffer.push(e)\n : ((this.bytesWritten += e.data.length),\n i.prototype.push.call(this, {\n data: e.data,\n meta: {\n currentFile: this.currentFile,\n percent: r ? (t + 100 * (r - n - 1)) / r : 100,\n },\n }));\n }),\n (s.prototype.openedSource = function (e) {\n (this.currentSourceOffset = this.bytesWritten),\n (this.currentFile = e.file.name);\n var t = this.streamFiles && !e.file.dir;\n if (t) {\n var r = n(\n e,\n t,\n !1,\n this.currentSourceOffset,\n this.zipPlatform,\n this.encodeFileName\n );\n this.push({ data: r.fileRecord, meta: { percent: 0 } });\n } else this.accumulate = !0;\n }),\n (s.prototype.closedSource = function (e) {\n this.accumulate = !1;\n var t = this.streamFiles && !e.file.dir,\n r = n(\n e,\n t,\n !0,\n this.currentSourceOffset,\n this.zipPlatform,\n this.encodeFileName\n );\n if ((this.dirRecords.push(r.dirRecord), t))\n this.push({\n data: (function (e) {\n return (\n R.DATA_DESCRIPTOR +\n A(e.crc32, 4) +\n A(e.compressedSize, 4) +\n A(e.uncompressedSize, 4)\n );\n })(e),\n meta: { percent: 100 },\n });\n else\n for (\n this.push({ data: r.fileRecord, meta: { percent: 0 } });\n this.contentBuffer.length;\n\n )\n this.push(this.contentBuffer.shift());\n this.currentFile = null;\n }),\n (s.prototype.flush = function () {\n for (\n var e = this.bytesWritten, t = 0;\n t < this.dirRecords.length;\n t++\n )\n this.push({\n data: this.dirRecords[t],\n meta: { percent: 100 },\n });\n var r = this.bytesWritten - e,\n n = (function (e, t, r, n, i) {\n var s = I.transformTo(\"string\", i(n));\n return (\n R.CENTRAL_DIRECTORY_END +\n \"\\0\\0\\0\\0\" +\n A(e, 2) +\n A(e, 2) +\n A(t, 4) +\n A(r, 4) +\n A(s.length, 2) +\n s\n );\n })(\n this.dirRecords.length,\n r,\n e,\n this.zipComment,\n this.encodeFileName\n );\n this.push({ data: n, meta: { percent: 100 } });\n }),\n (s.prototype.prepareNextSource = function () {\n (this.previous = this._sources.shift()),\n this.openedSource(this.previous.streamInfo),\n this.isPaused\n ? this.previous.pause()\n : this.previous.resume();\n }),\n (s.prototype.registerPrevious = function (e) {\n this._sources.push(e);\n var t = this;\n return (\n e.on(\"data\", function (e) {\n t.processChunk(e);\n }),\n e.on(\"end\", function () {\n t.closedSource(t.previous.streamInfo),\n t._sources.length ? t.prepareNextSource() : t.end();\n }),\n e.on(\"error\", function (e) {\n t.error(e);\n }),\n this\n );\n }),\n (s.prototype.resume = function () {\n return (\n !!i.prototype.resume.call(this) &&\n (!this.previous && this._sources.length\n ? (this.prepareNextSource(), !0)\n : this.previous ||\n this._sources.length ||\n this.generatedError\n ? void 0\n : (this.end(), !0))\n );\n }),\n (s.prototype.error = function (e) {\n var t = this._sources;\n if (!i.prototype.error.call(this, e)) return !1;\n for (var r = 0; r < t.length; r++)\n try {\n t[r].error(e);\n } catch (e) {}\n return !0;\n }),\n (s.prototype.lock = function () {\n i.prototype.lock.call(this);\n for (var e = this._sources, t = 0; t < e.length; t++)\n e[t].lock();\n }),\n (t.exports = s);\n },\n {\n \"../crc32\": 4,\n \"../signature\": 23,\n \"../stream/GenericWorker\": 28,\n \"../utf8\": 31,\n \"../utils\": 32,\n },\n ],\n 9: [\n function (e, t, r) {\n \"use strict\";\n var u = e(\"../compressions\"),\n n = e(\"./ZipFileWorker\");\n r.generateWorker = function (e, a, t) {\n var o = new n(a.streamFiles, t, a.platform, a.encodeFileName),\n h = 0;\n try {\n e.forEach(function (e, t) {\n h++;\n var r = (function (e, t) {\n var r = e || t,\n n = u[r];\n if (!n)\n throw new Error(\n r + \" is not a valid compression method !\"\n );\n return n;\n })(t.options.compression, a.compression),\n n =\n t.options.compressionOptions ||\n a.compressionOptions ||\n {},\n i = t.dir,\n s = t.date;\n t._compressWorker(r, n)\n .withStreamInfo(\"file\", {\n name: e,\n dir: i,\n date: s,\n comment: t.comment || \"\",\n unixPermissions: t.unixPermissions,\n dosPermissions: t.dosPermissions,\n })\n .pipe(o);\n }),\n (o.entriesCount = h);\n } catch (e) {\n o.error(e);\n }\n return o;\n };\n },\n { \"../compressions\": 3, \"./ZipFileWorker\": 8 },\n ],\n 10: [\n function (e, t, r) {\n \"use strict\";\n function n() {\n if (!(this instanceof n)) return new n();\n if (arguments.length)\n throw new Error(\n \"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\"\n );\n (this.files = Object.create(null)),\n (this.comment = null),\n (this.root = \"\"),\n (this.clone = function () {\n var e = new n();\n for (var t in this)\n \"function\" != typeof this[t] && (e[t] = this[t]);\n return e;\n });\n }\n ((n.prototype = e(\"./object\")).loadAsync = e(\"./load\")),\n (n.support = e(\"./support\")),\n (n.defaults = e(\"./defaults\")),\n (n.version = \"3.10.1\"),\n (n.loadAsync = function (e, t) {\n return new n().loadAsync(e, t);\n }),\n (n.external = e(\"./external\")),\n (t.exports = n);\n },\n {\n \"./defaults\": 5,\n \"./external\": 6,\n \"./load\": 11,\n \"./object\": 15,\n \"./support\": 30,\n },\n ],\n 11: [\n function (e, t, r) {\n \"use strict\";\n var u = e(\"./utils\"),\n i = e(\"./external\"),\n n = e(\"./utf8\"),\n s = e(\"./zipEntries\"),\n a = e(\"./stream/Crc32Probe\"),\n l = e(\"./nodejsUtils\");\n function f(n) {\n return new i.Promise(function (e, t) {\n var r = n.decompressed.getContentWorker().pipe(new a());\n r.on(\"error\", function (e) {\n t(e);\n })\n .on(\"end\", function () {\n r.streamInfo.crc32 !== n.decompressed.crc32\n ? t(new Error(\"Corrupted zip : CRC32 mismatch\"))\n : e();\n })\n .resume();\n });\n }\n t.exports = function (e, o) {\n var h = this;\n return (\n (o = u.extend(o || {}, {\n base64: !1,\n checkCRC32: !1,\n optimizedBinaryString: !1,\n createFolders: !1,\n decodeFileName: n.utf8decode,\n })),\n l.isNode && l.isStream(e)\n ? i.Promise.reject(\n new Error(\n \"JSZip can't accept a stream when loading a zip file.\"\n )\n )\n : u\n .prepareContent(\n \"the loaded zip file\",\n e,\n !0,\n o.optimizedBinaryString,\n o.base64\n )\n .then(function (e) {\n var t = new s(o);\n return t.load(e), t;\n })\n .then(function (e) {\n var t = [i.Promise.resolve(e)],\n r = e.files;\n if (o.checkCRC32)\n for (var n = 0; n < r.length; n++)\n t.push(f(r[n]));\n return i.Promise.all(t);\n })\n .then(function (e) {\n for (\n var t = e.shift(), r = t.files, n = 0;\n n < r.length;\n n++\n ) {\n var i = r[n],\n s = i.fileNameStr,\n a = u.resolve(i.fileNameStr);\n h.file(a, i.decompressed, {\n binary: !0,\n optimizedBinaryString: !0,\n date: i.date,\n dir: i.dir,\n comment: i.fileCommentStr.length\n ? i.fileCommentStr\n : null,\n unixPermissions: i.unixPermissions,\n dosPermissions: i.dosPermissions,\n createFolders: o.createFolders,\n }),\n i.dir || (h.file(a).unsafeOriginalName = s);\n }\n return (\n t.zipComment.length && (h.comment = t.zipComment),\n h\n );\n })\n );\n };\n },\n {\n \"./external\": 6,\n \"./nodejsUtils\": 14,\n \"./stream/Crc32Probe\": 25,\n \"./utf8\": 31,\n \"./utils\": 32,\n \"./zipEntries\": 33,\n },\n ],\n 12: [\n function (e, t, r) {\n \"use strict\";\n var n = e(\"../utils\"),\n i = e(\"../stream/GenericWorker\");\n function s(e, t) {\n i.call(this, \"Nodejs stream input adapter for \" + e),\n (this._upstreamEnded = !1),\n this._bindStream(t);\n }\n n.inherits(s, i),\n (s.prototype._bindStream = function (e) {\n var t = this;\n (this._stream = e).pause(),\n e\n .on(\"data\", function (e) {\n t.push({ data: e, meta: { percent: 0 } });\n })\n .on(\"error\", function (e) {\n t.isPaused ? (this.generatedError = e) : t.error(e);\n })\n .on(\"end\", function () {\n t.isPaused ? (t._upstreamEnded = !0) : t.end();\n });\n }),\n (s.prototype.pause = function () {\n return (\n !!i.prototype.pause.call(this) &&\n (this._stream.pause(), !0)\n );\n }),\n (s.prototype.resume = function () {\n return (\n !!i.prototype.resume.call(this) &&\n (this._upstreamEnded ? this.end() : this._stream.resume(),\n !0)\n );\n }),\n (t.exports = s);\n },\n { \"../stream/GenericWorker\": 28, \"../utils\": 32 },\n ],\n 13: [\n function (e, t, r) {\n \"use strict\";\n var i = e(\"readable-stream\").Readable;\n function n(e, t, r) {\n i.call(this, t), (this._helper = e);\n var n = this;\n e.on(\"data\", function (e, t) {\n n.push(e) || n._helper.pause(), r && r(t);\n })\n .on(\"error\", function (e) {\n n.emit(\"error\", e);\n })\n .on(\"end\", function () {\n n.push(null);\n });\n }\n e(\"../utils\").inherits(n, i),\n (n.prototype._read = function () {\n this._helper.resume();\n }),\n (t.exports = n);\n },\n { \"../utils\": 32, \"readable-stream\": 16 },\n ],\n 14: [\n function (e, t, r) {\n \"use strict\";\n t.exports = {\n isNode: \"undefined\" != typeof Buffer,\n newBufferFrom: function (e, t) {\n if (Buffer.from && Buffer.from !== Uint8Array.from)\n return Buffer.from(e, t);\n if (\"number\" == typeof e)\n throw new Error(\n 'The \"data\" argument must not be a number'\n );\n return new Buffer(e, t);\n },\n allocBuffer: function (e) {\n if (Buffer.alloc) return Buffer.alloc(e);\n var t = new Buffer(e);\n return t.fill(0), t;\n },\n isBuffer: function (e) {\n return Buffer.isBuffer(e);\n },\n isStream: function (e) {\n return (\n e &&\n \"function\" == typeof e.on &&\n \"function\" == typeof e.pause &&\n \"function\" == typeof e.resume\n );\n },\n };\n },\n {},\n ],\n 15: [\n function (e, t, r) {\n \"use strict\";\n function s(e, t, r) {\n var n,\n i = u.getTypeOf(t),\n s = u.extend(r || {}, f);\n (s.date = s.date || new Date()),\n null !== s.compression &&\n (s.compression = s.compression.toUpperCase()),\n \"string\" == typeof s.unixPermissions &&\n (s.unixPermissions = parseInt(s.unixPermissions, 8)),\n s.unixPermissions &&\n 16384 & s.unixPermissions &&\n (s.dir = !0),\n s.dosPermissions && 16 & s.dosPermissions && (s.dir = !0),\n s.dir && (e = g(e)),\n s.createFolders && (n = _(e)) && b.call(this, n, !0);\n var a = \"string\" === i && !1 === s.binary && !1 === s.base64;\n (r && void 0 !== r.binary) || (s.binary = !a),\n ((t instanceof c && 0 === t.uncompressedSize) ||\n s.dir ||\n !t ||\n 0 === t.length) &&\n ((s.base64 = !1),\n (s.binary = !0),\n (t = \"\"),\n (s.compression = \"STORE\"),\n (i = \"string\"));\n var o = null;\n o =\n t instanceof c || t instanceof l\n ? t\n : p.isNode && p.isStream(t)\n ? new m(e, t)\n : u.prepareContent(\n e,\n t,\n s.binary,\n s.optimizedBinaryString,\n s.base64\n );\n var h = new d(e, o, s);\n this.files[e] = h;\n }\n var i = e(\"./utf8\"),\n u = e(\"./utils\"),\n l = e(\"./stream/GenericWorker\"),\n a = e(\"./stream/StreamHelper\"),\n f = e(\"./defaults\"),\n c = e(\"./compressedObject\"),\n d = e(\"./zipObject\"),\n o = e(\"./generate\"),\n p = e(\"./nodejsUtils\"),\n m = e(\"./nodejs/NodejsStreamInputAdapter\"),\n _ = function (e) {\n \"/\" === e.slice(-1) && (e = e.substring(0, e.length - 1));\n var t = e.lastIndexOf(\"/\");\n return 0 < t ? e.substring(0, t) : \"\";\n },\n g = function (e) {\n return \"/\" !== e.slice(-1) && (e += \"/\"), e;\n },\n b = function (e, t) {\n return (\n (t = void 0 !== t ? t : f.createFolders),\n (e = g(e)),\n this.files[e] ||\n s.call(this, e, null, { dir: !0, createFolders: t }),\n this.files[e]\n );\n };\n function h(e) {\n return (\n \"[object RegExp]\" === Object.prototype.toString.call(e)\n );\n }\n var n = {\n load: function () {\n throw new Error(\n \"This method has been removed in JSZip 3.0, please check the upgrade guide.\"\n );\n },\n forEach: function (e) {\n var t, r, n;\n for (t in this.files)\n (n = this.files[t]),\n (r = t.slice(this.root.length, t.length)) &&\n t.slice(0, this.root.length) === this.root &&\n e(r, n);\n },\n filter: function (r) {\n var n = [];\n return (\n this.forEach(function (e, t) {\n r(e, t) && n.push(t);\n }),\n n\n );\n },\n file: function (e, t, r) {\n if (1 !== arguments.length)\n return (e = this.root + e), s.call(this, e, t, r), this;\n if (h(e)) {\n var n = e;\n return this.filter(function (e, t) {\n return !t.dir && n.test(e);\n });\n }\n var i = this.files[this.root + e];\n return i && !i.dir ? i : null;\n },\n folder: function (r) {\n if (!r) return this;\n if (h(r))\n return this.filter(function (e, t) {\n return t.dir && r.test(e);\n });\n var e = this.root + r,\n t = b.call(this, e),\n n = this.clone();\n return (n.root = t.name), n;\n },\n remove: function (r) {\n r = this.root + r;\n var e = this.files[r];\n if (\n (e ||\n (\"/\" !== r.slice(-1) && (r += \"/\"),\n (e = this.files[r])),\n e && !e.dir)\n )\n delete this.files[r];\n else\n for (\n var t = this.filter(function (e, t) {\n return t.name.slice(0, r.length) === r;\n }),\n n = 0;\n n < t.length;\n n++\n )\n delete this.files[t[n].name];\n return this;\n },\n generate: function () {\n throw new Error(\n \"This method has been removed in JSZip 3.0, please check the upgrade guide.\"\n );\n },\n generateInternalStream: function (e) {\n var t,\n r = {};\n try {\n if (\n (((r = u.extend(e || {}, {\n streamFiles: !1,\n compression: \"STORE\",\n compressionOptions: null,\n type: \"\",\n platform: \"DOS\",\n comment: null,\n mimeType: \"application/zip\",\n encodeFileName: i.utf8encode,\n })).type = r.type.toLowerCase()),\n (r.compression = r.compression.toUpperCase()),\n \"binarystring\" === r.type && (r.type = \"string\"),\n !r.type)\n )\n throw new Error(\"No output type specified.\");\n u.checkSupport(r.type),\n (\"darwin\" !== r.platform &&\n \"freebsd\" !== r.platform &&\n \"linux\" !== r.platform &&\n \"sunos\" !== r.platform) ||\n (r.platform = \"UNIX\"),\n \"win32\" === r.platform && (r.platform = \"DOS\");\n var n = r.comment || this.comment || \"\";\n t = o.generateWorker(this, r, n);\n } catch (e) {\n (t = new l(\"error\")).error(e);\n }\n return new a(t, r.type || \"string\", r.mimeType);\n },\n generateAsync: function (e, t) {\n return this.generateInternalStream(e).accumulate(t);\n },\n generateNodeStream: function (e, t) {\n return (\n (e = e || {}).type || (e.type = \"nodebuffer\"),\n this.generateInternalStream(e).toNodejsStream(t)\n );\n },\n };\n t.exports = n;\n },\n {\n \"./compressedObject\": 2,\n \"./defaults\": 5,\n \"./generate\": 9,\n \"./nodejs/NodejsStreamInputAdapter\": 12,\n \"./nodejsUtils\": 14,\n \"./stream/GenericWorker\": 28,\n \"./stream/StreamHelper\": 29,\n \"./utf8\": 31,\n \"./utils\": 32,\n \"./zipObject\": 35,\n },\n ],\n 16: [\n function (e, t, r) {\n \"use strict\";\n t.exports = e(\"stream\");\n },\n { stream: void 0 },\n ],\n 17: [\n function (e, t, r) {\n \"use strict\";\n var n = e(\"./DataReader\");\n function i(e) {\n n.call(this, e);\n for (var t = 0; t < this.data.length; t++) e[t] = 255 & e[t];\n }\n e(\"../utils\").inherits(i, n),\n (i.prototype.byteAt = function (e) {\n return this.data[this.zero + e];\n }),\n (i.prototype.lastIndexOfSignature = function (e) {\n for (\n var t = e.charCodeAt(0),\n r = e.charCodeAt(1),\n n = e.charCodeAt(2),\n i = e.charCodeAt(3),\n s = this.length - 4;\n 0 <= s;\n --s\n )\n if (\n this.data[s] === t &&\n this.data[s + 1] === r &&\n this.data[s + 2] === n &&\n this.data[s + 3] === i\n )\n return s - this.zero;\n return -1;\n }),\n (i.prototype.readAndCheckSignature = function (e) {\n var t = e.charCodeAt(0),\n r = e.charCodeAt(1),\n n = e.charCodeAt(2),\n i = e.charCodeAt(3),\n s = this.readData(4);\n return t === s[0] && r === s[1] && n === s[2] && i === s[3];\n }),\n (i.prototype.readData = function (e) {\n if ((this.checkOffset(e), 0 === e)) return [];\n var t = this.data.slice(\n this.zero + this.index,\n this.zero + this.index + e\n );\n return (this.index += e), t;\n }),\n (t.exports = i);\n },\n { \"../utils\": 32, \"./DataReader\": 18 },\n ],\n 18: [\n function (e, t, r) {\n \"use strict\";\n var n = e(\"../utils\");\n function i(e) {\n (this.data = e),\n (this.length = e.length),\n (this.index = 0),\n (this.zero = 0);\n }\n (i.prototype = {\n checkOffset: function (e) {\n this.checkIndex(this.index + e);\n },\n checkIndex: function (e) {\n if (this.length < this.zero + e || e < 0)\n throw new Error(\n \"End of data reached (data length = \" +\n this.length +\n \", asked index = \" +\n e +\n \"). Corrupted zip ?\"\n );\n },\n setIndex: function (e) {\n this.checkIndex(e), (this.index = e);\n },\n skip: function (e) {\n this.setIndex(this.index + e);\n },\n byteAt: function () {},\n readInt: function (e) {\n var t,\n r = 0;\n for (\n this.checkOffset(e), t = this.index + e - 1;\n t >= this.index;\n t--\n )\n r = (r << 8) + this.byteAt(t);\n return (this.index += e), r;\n },\n readString: function (e) {\n return n.transformTo(\"string\", this.readData(e));\n },\n readData: function () {},\n lastIndexOfSignature: function () {},\n readAndCheckSignature: function () {},\n readDate: function () {\n var e = this.readInt(4);\n return new Date(\n Date.UTC(\n 1980 + ((e >> 25) & 127),\n ((e >> 21) & 15) - 1,\n (e >> 16) & 31,\n (e >> 11) & 31,\n (e >> 5) & 63,\n (31 & e) << 1\n )\n );\n },\n }),\n (t.exports = i);\n },\n { \"../utils\": 32 },\n ],\n 19: [\n function (e, t, r) {\n \"use strict\";\n var n = e(\"./Uint8ArrayReader\");\n function i(e) {\n n.call(this, e);\n }\n e(\"../utils\").inherits(i, n),\n (i.prototype.readData = function (e) {\n this.checkOffset(e);\n var t = this.data.slice(\n this.zero + this.index,\n this.zero + this.index + e\n );\n return (this.index += e), t;\n }),\n (t.exports = i);\n },\n { \"../utils\": 32, \"./Uint8ArrayReader\": 21 },\n ],\n 20: [\n function (e, t, r) {\n \"use strict\";\n var n = e(\"./DataReader\");\n function i(e) {\n n.call(this, e);\n }\n e(\"../utils\").inherits(i, n),\n (i.prototype.byteAt = function (e) {\n return this.data.charCodeAt(this.zero + e);\n }),\n (i.prototype.lastIndexOfSignature = function (e) {\n return this.data.lastIndexOf(e) - this.zero;\n }),\n (i.prototype.readAndCheckSignature = function (e) {\n return e === this.readData(4);\n }),\n (i.prototype.readData = function (e) {\n this.checkOffset(e);\n var t = this.data.slice(\n this.zero + this.index,\n this.zero + this.index + e\n );\n return (this.index += e), t;\n }),\n (t.exports = i);\n },\n { \"../utils\": 32, \"./DataReader\": 18 },\n ],\n 21: [\n function (e, t, r) {\n \"use strict\";\n var n = e(\"./ArrayReader\");\n function i(e) {\n n.call(this, e);\n }\n e(\"../utils\").inherits(i, n),\n (i.prototype.readData = function (e) {\n if ((this.checkOffset(e), 0 === e))\n return new Uint8Array(0);\n var t = this.data.subarray(\n this.zero + this.index,\n this.zero + this.index + e\n );\n return (this.index += e), t;\n }),\n (t.exports = i);\n },\n { \"../utils\": 32, \"./ArrayReader\": 17 },\n ],\n 22: [\n function (e, t, r) {\n \"use strict\";\n var n = e(\"../utils\"),\n i = e(\"../support\"),\n s = e(\"./ArrayReader\"),\n a = e(\"./StringReader\"),\n o = e(\"./NodeBufferReader\"),\n h = e(\"./Uint8ArrayReader\");\n t.exports = function (e) {\n var t = n.getTypeOf(e);\n return (\n n.checkSupport(t),\n \"string\" !== t || i.uint8array\n ? \"nodebuffer\" === t\n ? new o(e)\n : i.uint8array\n ? new h(n.transformTo(\"uint8array\", e))\n : new s(n.transformTo(\"array\", e))\n : new a(e)\n );\n };\n },\n {\n \"../support\": 30,\n \"../utils\": 32,\n \"./ArrayReader\": 17,\n \"./NodeBufferReader\": 19,\n \"./StringReader\": 20,\n \"./Uint8ArrayReader\": 21,\n },\n ],\n 23: [\n function (e, t, r) {\n \"use strict\";\n (r.LOCAL_FILE_HEADER = \"PK\u0003\u0004\"),\n (r.CENTRAL_FILE_HEADER = \"PK\u0001\u0002\"),\n (r.CENTRAL_DIRECTORY_END = \"PK\u0005\u0006\"),\n (r.ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\u0006\u0007\"),\n (r.ZIP64_CENTRAL_DIRECTORY_END = \"PK\u0006\u0006\"),\n (r.DATA_DESCRIPTOR = \"PK\u0007\\b\");\n },\n {},\n ],\n 24: [\n function (e, t, r) {\n \"use strict\";\n var n = e(\"./GenericWorker\"),\n i = e(\"../utils\");\n function s(e) {\n n.call(this, \"ConvertWorker to \" + e), (this.destType = e);\n }\n i.inherits(s, n),\n (s.prototype.processChunk = function (e) {\n this.push({\n data: i.transformTo(this.destType, e.data),\n meta: e.meta,\n });\n }),\n (t.exports = s);\n },\n { \"../utils\": 32, \"./GenericWorker\": 28 },\n ],\n 25: [\n function (e, t, r) {\n \"use strict\";\n var n = e(\"./GenericWorker\"),\n i = e(\"../crc32\");\n function s() {\n n.call(this, \"Crc32Probe\"), this.withStreamInfo(\"crc32\", 0);\n }\n e(\"../utils\").inherits(s, n),\n (s.prototype.processChunk = function (e) {\n (this.streamInfo.crc32 = i(\n e.data,\n this.streamInfo.crc32 || 0\n )),\n this.push(e);\n }),\n (t.exports = s);\n },\n { \"../crc32\": 4, \"../utils\": 32, \"./GenericWorker\": 28 },\n ],\n 26: [\n function (e, t, r) {\n \"use strict\";\n var n = e(\"../utils\"),\n i = e(\"./GenericWorker\");\n function s(e) {\n i.call(this, \"DataLengthProbe for \" + e),\n (this.propName = e),\n this.withStreamInfo(e, 0);\n }\n n.inherits(s, i),\n (s.prototype.processChunk = function (e) {\n if (e) {\n var t = this.streamInfo[this.propName] || 0;\n this.streamInfo[this.propName] = t + e.data.length;\n }\n i.prototype.processChunk.call(this, e);\n }),\n (t.exports = s);\n },\n { \"../utils\": 32, \"./GenericWorker\": 28 },\n ],\n 27: [\n function (e, t, r) {\n \"use strict\";\n var n = e(\"../utils\"),\n i = e(\"./GenericWorker\");\n function s(e) {\n i.call(this, \"DataWorker\");\n var t = this;\n (this.dataIsReady = !1),\n (this.index = 0),\n (this.max = 0),\n (this.data = null),\n (this.type = \"\"),\n (this._tickScheduled = !1),\n e.then(\n function (e) {\n (t.dataIsReady = !0),\n (t.data = e),\n (t.max = (e && e.length) || 0),\n (t.type = n.getTypeOf(e)),\n t.isPaused || t._tickAndRepeat();\n },\n function (e) {\n t.error(e);\n }\n );\n }\n n.inherits(s, i),\n (s.prototype.cleanUp = function () {\n i.prototype.cleanUp.call(this), (this.data = null);\n }),\n (s.prototype.resume = function () {\n return (\n !!i.prototype.resume.call(this) &&\n (!this._tickScheduled &&\n this.dataIsReady &&\n ((this._tickScheduled = !0),\n n.delay(this._tickAndRepeat, [], this)),\n !0)\n );\n }),\n (s.prototype._tickAndRepeat = function () {\n (this._tickScheduled = !1),\n this.isPaused ||\n this.isFinished ||\n (this._tick(),\n this.isFinished ||\n (n.delay(this._tickAndRepeat, [], this),\n (this._tickScheduled = !0)));\n }),\n (s.prototype._tick = function () {\n if (this.isPaused || this.isFinished) return !1;\n var e = null,\n t = Math.min(this.max, this.index + 16384);\n if (this.index >= this.max) return this.end();\n switch (this.type) {\n case \"string\":\n e = this.data.substring(this.index, t);\n break;\n case \"uint8array\":\n e = this.data.subarray(this.index, t);\n break;\n case \"array\":\n case \"nodebuffer\":\n e = this.data.slice(this.index, t);\n }\n return (\n (this.index = t),\n this.push({\n data: e,\n meta: {\n percent: this.max ? (this.index / this.max) * 100 : 0,\n },\n })\n );\n }),\n (t.exports = s);\n },\n { \"../utils\": 32, \"./GenericWorker\": 28 },\n ],\n 28: [\n function (e, t, r) {\n \"use strict\";\n function n(e) {\n (this.name = e || \"default\"),\n (this.streamInfo = {}),\n (this.generatedError = null),\n (this.extraStreamInfo = {}),\n (this.isPaused = !0),\n (this.isFinished = !1),\n (this.isLocked = !1),\n (this._listeners = { data: [], end: [], error: [] }),\n (this.previous = null);\n }\n (n.prototype = {\n push: function (e) {\n this.emit(\"data\", e);\n },\n end: function () {\n if (this.isFinished) return !1;\n this.flush();\n try {\n this.emit(\"end\"), this.cleanUp(), (this.isFinished = !0);\n } catch (e) {\n this.emit(\"error\", e);\n }\n return !0;\n },\n error: function (e) {\n return (\n !this.isFinished &&\n (this.isPaused\n ? (this.generatedError = e)\n : ((this.isFinished = !0),\n this.emit(\"error\", e),\n this.previous && this.previous.error(e),\n this.cleanUp()),\n !0)\n );\n },\n on: function (e, t) {\n return this._listeners[e].push(t), this;\n },\n cleanUp: function () {\n (this.streamInfo =\n this.generatedError =\n this.extraStreamInfo =\n null),\n (this._listeners = []);\n },\n emit: function (e, t) {\n if (this._listeners[e])\n for (var r = 0; r < this._listeners[e].length; r++)\n this._listeners[e][r].call(this, t);\n },\n pipe: function (e) {\n return e.registerPrevious(this);\n },\n registerPrevious: function (e) {\n if (this.isLocked)\n throw new Error(\n \"The stream '\" + this + \"' has already been used.\"\n );\n (this.streamInfo = e.streamInfo),\n this.mergeStreamInfo(),\n (this.previous = e);\n var t = this;\n return (\n e.on(\"data\", function (e) {\n t.processChunk(e);\n }),\n e.on(\"end\", function () {\n t.end();\n }),\n e.on(\"error\", function (e) {\n t.error(e);\n }),\n this\n );\n },\n pause: function () {\n return (\n !this.isPaused &&\n !this.isFinished &&\n ((this.isPaused = !0),\n this.previous && this.previous.pause(),\n !0)\n );\n },\n resume: function () {\n if (!this.isPaused || this.isFinished) return !1;\n var e = (this.isPaused = !1);\n return (\n this.generatedError &&\n (this.error(this.generatedError), (e = !0)),\n this.previous && this.previous.resume(),\n !e\n );\n },\n flush: function () {},\n processChunk: function (e) {\n this.push(e);\n },\n withStreamInfo: function (e, t) {\n return (\n (this.extraStreamInfo[e] = t),\n this.mergeStreamInfo(),\n this\n );\n },\n mergeStreamInfo: function () {\n for (var e in this.extraStreamInfo)\n Object.prototype.hasOwnProperty.call(\n this.extraStreamInfo,\n e\n ) && (this.streamInfo[e] = this.extraStreamInfo[e]);\n },\n lock: function () {\n if (this.isLocked)\n throw new Error(\n \"The stream '\" + this + \"' has already been used.\"\n );\n (this.isLocked = !0), this.previous && this.previous.lock();\n },\n toString: function () {\n var e = \"Worker \" + this.name;\n return this.previous ? this.previous + \" -> \" + e : e;\n },\n }),\n (t.exports = n);\n },\n {},\n ],\n 29: [\n function (e, t, r) {\n \"use strict\";\n var h = e(\"../utils\"),\n i = e(\"./ConvertWorker\"),\n s = e(\"./GenericWorker\"),\n u = e(\"../base64\"),\n n = e(\"../support\"),\n a = e(\"../external\"),\n o = null;\n if (n.nodestream)\n try {\n o = e(\"../nodejs/NodejsStreamOutputAdapter\");\n } catch (e) {}\n function l(e, o) {\n return new a.Promise(function (t, r) {\n var n = [],\n i = e._internalType,\n s = e._outputType,\n a = e._mimeType;\n e.on(\"data\", function (e, t) {\n n.push(e), o && o(t);\n })\n .on(\"error\", function (e) {\n (n = []), r(e);\n })\n .on(\"end\", function () {\n try {\n var e = (function (e, t, r) {\n switch (e) {\n case \"blob\":\n return h.newBlob(\n h.transformTo(\"arraybuffer\", t),\n r\n );\n case \"base64\":\n return u.encode(t);\n default:\n return h.transformTo(e, t);\n }\n })(\n s,\n (function (e, t) {\n var r,\n n = 0,\n i = null,\n s = 0;\n for (r = 0; r < t.length; r++) s += t[r].length;\n switch (e) {\n case \"string\":\n return t.join(\"\");\n case \"array\":\n return Array.prototype.concat.apply([], t);\n case \"uint8array\":\n for (\n i = new Uint8Array(s), r = 0;\n r < t.length;\n r++\n )\n i.set(t[r], n), (n += t[r].length);\n return i;\n case \"nodebuffer\":\n return Buffer.concat(t);\n default:\n throw new Error(\n \"concat : unsupported type '\" + e + \"'\"\n );\n }\n })(i, n),\n a\n );\n t(e);\n } catch (e) {\n r(e);\n }\n n = [];\n })\n .resume();\n });\n }\n function f(e, t, r) {\n var n = t;\n switch (t) {\n case \"blob\":\n case \"arraybuffer\":\n n = \"uint8array\";\n break;\n case \"base64\":\n n = \"string\";\n }\n try {\n (this._internalType = n),\n (this._outputType = t),\n (this._mimeType = r),\n h.checkSupport(n),\n (this._worker = e.pipe(new i(n))),\n e.lock();\n } catch (e) {\n (this._worker = new s(\"error\")), this._worker.error(e);\n }\n }\n (f.prototype = {\n accumulate: function (e) {\n return l(this, e);\n },\n on: function (e, t) {\n var r = this;\n return (\n \"data\" === e\n ? this._worker.on(e, function (e) {\n t.call(r, e.data, e.meta);\n })\n : this._worker.on(e, function () {\n h.delay(t, arguments, r);\n }),\n this\n );\n },\n resume: function () {\n return h.delay(this._worker.resume, [], this._worker), this;\n },\n pause: function () {\n return this._worker.pause(), this;\n },\n toNodejsStream: function (e) {\n if (\n (h.checkSupport(\"nodestream\"),\n \"nodebuffer\" !== this._outputType)\n )\n throw new Error(\n this._outputType + \" is not supported by this method\"\n );\n return new o(\n this,\n { objectMode: \"nodebuffer\" !== this._outputType },\n e\n );\n },\n }),\n (t.exports = f);\n },\n {\n \"../base64\": 1,\n \"../external\": 6,\n \"../nodejs/NodejsStreamOutputAdapter\": 13,\n \"../support\": 30,\n \"../utils\": 32,\n \"./ConvertWorker\": 24,\n \"./GenericWorker\": 28,\n },\n ],\n 30: [\n function (e, t, r) {\n \"use strict\";\n if (\n ((r.base64 = !0),\n (r.array = !0),\n (r.string = !0),\n (r.arraybuffer =\n \"undefined\" != typeof ArrayBuffer &&\n \"undefined\" != typeof Uint8Array),\n (r.nodebuffer = \"undefined\" != typeof Buffer),\n (r.uint8array = \"undefined\" != typeof Uint8Array),\n \"undefined\" == typeof ArrayBuffer)\n )\n r.blob = !1;\n else {\n var n = new ArrayBuffer(0);\n try {\n r.blob =\n 0 === new Blob([n], { type: \"application/zip\" }).size;\n } catch (e) {\n try {\n var i = new (self.BlobBuilder ||\n self.WebKitBlobBuilder ||\n self.MozBlobBuilder ||\n self.MSBlobBuilder)();\n i.append(n),\n (r.blob = 0 === i.getBlob(\"application/zip\").size);\n } catch (e) {\n r.blob = !1;\n }\n }\n }\n try {\n r.nodestream = !!e(\"readable-stream\").Readable;\n } catch (e) {\n r.nodestream = !1;\n }\n },\n { \"readable-stream\": 16 },\n ],\n 31: [\n function (e, t, s) {\n \"use strict\";\n for (\n var o = e(\"./utils\"),\n h = e(\"./support\"),\n r = e(\"./nodejsUtils\"),\n n = e(\"./stream/GenericWorker\"),\n u = new Array(256),\n i = 0;\n i < 256;\n i++\n )\n u[i] =\n 252 <= i\n ? 6\n : 248 <= i\n ? 5\n : 240 <= i\n ? 4\n : 224 <= i\n ? 3\n : 192 <= i\n ? 2\n : 1;\n u[254] = u[254] = 1;\n function a() {\n n.call(this, \"utf-8 decode\"), (this.leftOver = null);\n }\n function l() {\n n.call(this, \"utf-8 encode\");\n }\n (s.utf8encode = function (e) {\n return h.nodebuffer\n ? r.newBufferFrom(e, \"utf-8\")\n : (function (e) {\n var t,\n r,\n n,\n i,\n s,\n a = e.length,\n o = 0;\n for (i = 0; i < a; i++)\n 55296 == (64512 & (r = e.charCodeAt(i))) &&\n i + 1 < a &&\n 56320 == (64512 & (n = e.charCodeAt(i + 1))) &&\n ((r = 65536 + ((r - 55296) << 10) + (n - 56320)),\n i++),\n (o +=\n r < 128 ? 1 : r < 2048 ? 2 : r < 65536 ? 3 : 4);\n for (\n t = h.uint8array ? new Uint8Array(o) : new Array(o),\n i = s = 0;\n s < o;\n i++\n )\n 55296 == (64512 & (r = e.charCodeAt(i))) &&\n i + 1 < a &&\n 56320 == (64512 & (n = e.charCodeAt(i + 1))) &&\n ((r = 65536 + ((r - 55296) << 10) + (n - 56320)),\n i++),\n r < 128\n ? (t[s++] = r)\n : (r < 2048\n ? (t[s++] = 192 | (r >>> 6))\n : (r < 65536\n ? (t[s++] = 224 | (r >>> 12))\n : ((t[s++] = 240 | (r >>> 18)),\n (t[s++] = 128 | ((r >>> 12) & 63))),\n (t[s++] = 128 | ((r >>> 6) & 63))),\n (t[s++] = 128 | (63 & r)));\n return t;\n })(e);\n }),\n (s.utf8decode = function (e) {\n return h.nodebuffer\n ? o.transformTo(\"nodebuffer\", e).toString(\"utf-8\")\n : (function (e) {\n var t,\n r,\n n,\n i,\n s = e.length,\n a = new Array(2 * s);\n for (t = r = 0; t < s; )\n if ((n = e[t++]) < 128) a[r++] = n;\n else if (4 < (i = u[n]))\n (a[r++] = 65533), (t += i - 1);\n else {\n for (\n n &= 2 === i ? 31 : 3 === i ? 15 : 7;\n 1 < i && t < s;\n\n )\n (n = (n << 6) | (63 & e[t++])), i--;\n 1 < i\n ? (a[r++] = 65533)\n : n < 65536\n ? (a[r++] = n)\n : ((n -= 65536),\n (a[r++] = 55296 | ((n >> 10) & 1023)),\n (a[r++] = 56320 | (1023 & n)));\n }\n return (\n a.length !== r &&\n (a.subarray\n ? (a = a.subarray(0, r))\n : (a.length = r)),\n o.applyFromCharCode(a)\n );\n })(\n (e = o.transformTo(\n h.uint8array ? \"uint8array\" : \"array\",\n e\n ))\n );\n }),\n o.inherits(a, n),\n (a.prototype.processChunk = function (e) {\n var t = o.transformTo(\n h.uint8array ? \"uint8array\" : \"array\",\n e.data\n );\n if (this.leftOver && this.leftOver.length) {\n if (h.uint8array) {\n var r = t;\n (t = new Uint8Array(\n r.length + this.leftOver.length\n )).set(this.leftOver, 0),\n t.set(r, this.leftOver.length);\n } else t = this.leftOver.concat(t);\n this.leftOver = null;\n }\n var n = (function (e, t) {\n var r;\n for (\n (t = t || e.length) > e.length && (t = e.length),\n r = t - 1;\n 0 <= r && 128 == (192 & e[r]);\n\n )\n r--;\n return r < 0\n ? t\n : 0 === r\n ? t\n : r + u[e[r]] > t\n ? r\n : t;\n })(t),\n i = t;\n n !== t.length &&\n (h.uint8array\n ? ((i = t.subarray(0, n)),\n (this.leftOver = t.subarray(n, t.length)))\n : ((i = t.slice(0, n)),\n (this.leftOver = t.slice(n, t.length)))),\n this.push({ data: s.utf8decode(i), meta: e.meta });\n }),\n (a.prototype.flush = function () {\n this.leftOver &&\n this.leftOver.length &&\n (this.push({\n data: s.utf8decode(this.leftOver),\n meta: {},\n }),\n (this.leftOver = null));\n }),\n (s.Utf8DecodeWorker = a),\n o.inherits(l, n),\n (l.prototype.processChunk = function (e) {\n this.push({ data: s.utf8encode(e.data), meta: e.meta });\n }),\n (s.Utf8EncodeWorker = l);\n },\n {\n \"./nodejsUtils\": 14,\n \"./stream/GenericWorker\": 28,\n \"./support\": 30,\n \"./utils\": 32,\n },\n ],\n 32: [\n function (e, t, a) {\n \"use strict\";\n var o = e(\"./support\"),\n h = e(\"./base64\"),\n r = e(\"./nodejsUtils\"),\n u = e(\"./external\");\n function n(e) {\n return e;\n }\n function l(e, t) {\n for (var r = 0; r < e.length; ++r)\n t[r] = 255 & e.charCodeAt(r);\n return t;\n }\n e(\"setimmediate\"),\n (a.newBlob = function (t, r) {\n a.checkSupport(\"blob\");\n try {\n return new Blob([t], { type: r });\n } catch (e) {\n try {\n var n = new (self.BlobBuilder ||\n self.WebKitBlobBuilder ||\n self.MozBlobBuilder ||\n self.MSBlobBuilder)();\n return n.append(t), n.getBlob(r);\n } catch (e) {\n throw new Error(\"Bug : can't construct the Blob.\");\n }\n }\n });\n var i = {\n stringifyByChunk: function (e, t, r) {\n var n = [],\n i = 0,\n s = e.length;\n if (s <= r) return String.fromCharCode.apply(null, e);\n for (; i < s; )\n \"array\" === t || \"nodebuffer\" === t\n ? n.push(\n String.fromCharCode.apply(\n null,\n e.slice(i, Math.min(i + r, s))\n )\n )\n : n.push(\n String.fromCharCode.apply(\n null,\n e.subarray(i, Math.min(i + r, s))\n )\n ),\n (i += r);\n return n.join(\"\");\n },\n stringifyByChar: function (e) {\n for (var t = \"\", r = 0; r < e.length; r++)\n t += String.fromCharCode(e[r]);\n return t;\n },\n applyCanBeUsed: {\n uint8array: (function () {\n try {\n return (\n o.uint8array &&\n 1 ===\n String.fromCharCode.apply(null, new Uint8Array(1))\n .length\n );\n } catch (e) {\n return !1;\n }\n })(),\n nodebuffer: (function () {\n try {\n return (\n o.nodebuffer &&\n 1 ===\n String.fromCharCode.apply(null, r.allocBuffer(1))\n .length\n );\n } catch (e) {\n return !1;\n }\n })(),\n },\n };\n function s(e) {\n var t = 65536,\n r = a.getTypeOf(e),\n n = !0;\n if (\n (\"uint8array\" === r\n ? (n = i.applyCanBeUsed.uint8array)\n : \"nodebuffer\" === r && (n = i.applyCanBeUsed.nodebuffer),\n n)\n )\n for (; 1 < t; )\n try {\n return i.stringifyByChunk(e, r, t);\n } catch (e) {\n t = Math.floor(t / 2);\n }\n return i.stringifyByChar(e);\n }\n function f(e, t) {\n for (var r = 0; r < e.length; r++) t[r] = e[r];\n return t;\n }\n a.applyFromCharCode = s;\n var c = {};\n (c.string = {\n string: n,\n array: function (e) {\n return l(e, new Array(e.length));\n },\n arraybuffer: function (e) {\n return c.string.uint8array(e).buffer;\n },\n uint8array: function (e) {\n return l(e, new Uint8Array(e.length));\n },\n nodebuffer: function (e) {\n return l(e, r.allocBuffer(e.length));\n },\n }),\n (c.array = {\n string: s,\n array: n,\n arraybuffer: function (e) {\n return new Uint8Array(e).buffer;\n },\n uint8array: function (e) {\n return new Uint8Array(e);\n },\n nodebuffer: function (e) {\n return r.newBufferFrom(e);\n },\n }),\n (c.arraybuffer = {\n string: function (e) {\n return s(new Uint8Array(e));\n },\n array: function (e) {\n return f(new Uint8Array(e), new Array(e.byteLength));\n },\n arraybuffer: n,\n uint8array: function (e) {\n return new Uint8Array(e);\n },\n nodebuffer: function (e) {\n return r.newBufferFrom(new Uint8Array(e));\n },\n }),\n (c.uint8array = {\n string: s,\n array: function (e) {\n return f(e, new Array(e.length));\n },\n arraybuffer: function (e) {\n return e.buffer;\n },\n uint8array: n,\n nodebuffer: function (e) {\n return r.newBufferFrom(e);\n },\n }),\n (c.nodebuffer = {\n string: s,\n array: function (e) {\n return f(e, new Array(e.length));\n },\n arraybuffer: function (e) {\n return c.nodebuffer.uint8array(e).buffer;\n },\n uint8array: function (e) {\n return f(e, new Uint8Array(e.length));\n },\n nodebuffer: n,\n }),\n (a.transformTo = function (e, t) {\n if (((t = t || \"\"), !e)) return t;\n a.checkSupport(e);\n var r = a.getTypeOf(t);\n return c[r][e](t);\n }),\n (a.resolve = function (e) {\n for (\n var t = e.split(\"/\"), r = [], n = 0;\n n < t.length;\n n++\n ) {\n var i = t[n];\n \".\" === i ||\n (\"\" === i && 0 !== n && n !== t.length - 1) ||\n (\"..\" === i ? r.pop() : r.push(i));\n }\n return r.join(\"/\");\n }),\n (a.getTypeOf = function (e) {\n return \"string\" == typeof e\n ? \"string\"\n : \"[object Array]\" === Object.prototype.toString.call(e)\n ? \"array\"\n : o.nodebuffer && r.isBuffer(e)\n ? \"nodebuffer\"\n : o.uint8array && e instanceof Uint8Array\n ? \"uint8array\"\n : o.arraybuffer && e instanceof ArrayBuffer\n ? \"arraybuffer\"\n : void 0;\n }),\n (a.checkSupport = function (e) {\n if (!o[e.toLowerCase()])\n throw new Error(e + \" is not supported by this platform\");\n }),\n (a.MAX_VALUE_16BITS = 65535),\n (a.MAX_VALUE_32BITS = -1),\n (a.pretty = function (e) {\n var t,\n r,\n n = \"\";\n for (r = 0; r < (e || \"\").length; r++)\n n +=\n \"\\\\x\" +\n ((t = e.charCodeAt(r)) < 16 ? \"0\" : \"\") +\n t.toString(16).toUpperCase();\n return n;\n }),\n (a.delay = function (e, t, r) {\n setImmediate(function () {\n e.apply(r || null, t || []);\n });\n }),\n (a.inherits = function (e, t) {\n function r() {}\n (r.prototype = t.prototype), (e.prototype = new r());\n }),\n (a.extend = function () {\n var e,\n t,\n r = {};\n for (e = 0; e < arguments.length; e++)\n for (t in arguments[e])\n Object.prototype.hasOwnProperty.call(arguments[e], t) &&\n void 0 === r[t] &&\n (r[t] = arguments[e][t]);\n return r;\n }),\n (a.prepareContent = function (r, e, n, i, s) {\n return u.Promise.resolve(e)\n .then(function (n) {\n return o.blob &&\n (n instanceof Blob ||\n -1 !==\n [\"[object File]\", \"[object Blob]\"].indexOf(\n Object.prototype.toString.call(n)\n )) &&\n \"undefined\" != typeof FileReader\n ? new u.Promise(function (t, r) {\n var e = new FileReader();\n (e.onload = function (e) {\n t(e.target.result);\n }),\n (e.onerror = function (e) {\n r(e.target.error);\n }),\n e.readAsArrayBuffer(n);\n })\n : n;\n })\n .then(function (e) {\n var t = a.getTypeOf(e);\n return t\n ? (\"arraybuffer\" === t\n ? (e = a.transformTo(\"uint8array\", e))\n : \"string\" === t &&\n (s\n ? (e = h.decode(e))\n : n &&\n !0 !== i &&\n (e = (function (e) {\n return l(\n e,\n o.uint8array\n ? new Uint8Array(e.length)\n : new Array(e.length)\n );\n })(e))),\n e)\n : u.Promise.reject(\n new Error(\n \"Can't read the data of '\" +\n r +\n \"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\"\n )\n );\n });\n });\n },\n {\n \"./base64\": 1,\n \"./external\": 6,\n \"./nodejsUtils\": 14,\n \"./support\": 30,\n setimmediate: 54,\n },\n ],\n 33: [\n function (e, t, r) {\n \"use strict\";\n var n = e(\"./reader/readerFor\"),\n i = e(\"./utils\"),\n s = e(\"./signature\"),\n a = e(\"./zipEntry\"),\n o = e(\"./support\");\n function h(e) {\n (this.files = []), (this.loadOptions = e);\n }\n (h.prototype = {\n checkSignature: function (e) {\n if (!this.reader.readAndCheckSignature(e)) {\n this.reader.index -= 4;\n var t = this.reader.readString(4);\n throw new Error(\n \"Corrupted zip or bug: unexpected signature (\" +\n i.pretty(t) +\n \", expected \" +\n i.pretty(e) +\n \")\"\n );\n }\n },\n isSignature: function (e, t) {\n var r = this.reader.index;\n this.reader.setIndex(e);\n var n = this.reader.readString(4) === t;\n return this.reader.setIndex(r), n;\n },\n readBlockEndOfCentral: function () {\n (this.diskNumber = this.reader.readInt(2)),\n (this.diskWithCentralDirStart = this.reader.readInt(2)),\n (this.centralDirRecordsOnThisDisk =\n this.reader.readInt(2)),\n (this.centralDirRecords = this.reader.readInt(2)),\n (this.centralDirSize = this.reader.readInt(4)),\n (this.centralDirOffset = this.reader.readInt(4)),\n (this.zipCommentLength = this.reader.readInt(2));\n var e = this.reader.readData(this.zipCommentLength),\n t = o.uint8array ? \"uint8array\" : \"array\",\n r = i.transformTo(t, e);\n this.zipComment = this.loadOptions.decodeFileName(r);\n },\n readBlockZip64EndOfCentral: function () {\n (this.zip64EndOfCentralSize = this.reader.readInt(8)),\n this.reader.skip(4),\n (this.diskNumber = this.reader.readInt(4)),\n (this.diskWithCentralDirStart = this.reader.readInt(4)),\n (this.centralDirRecordsOnThisDisk =\n this.reader.readInt(8)),\n (this.centralDirRecords = this.reader.readInt(8)),\n (this.centralDirSize = this.reader.readInt(8)),\n (this.centralDirOffset = this.reader.readInt(8)),\n (this.zip64ExtensibleData = {});\n for (\n var e, t, r, n = this.zip64EndOfCentralSize - 44;\n 0 < n;\n\n )\n (e = this.reader.readInt(2)),\n (t = this.reader.readInt(4)),\n (r = this.reader.readData(t)),\n (this.zip64ExtensibleData[e] = {\n id: e,\n length: t,\n value: r,\n });\n },\n readBlockZip64EndOfCentralLocator: function () {\n if (\n ((this.diskWithZip64CentralDirStart =\n this.reader.readInt(4)),\n (this.relativeOffsetEndOfZip64CentralDir =\n this.reader.readInt(8)),\n (this.disksCount = this.reader.readInt(4)),\n 1 < this.disksCount)\n )\n throw new Error(\"Multi-volumes zip are not supported\");\n },\n readLocalFiles: function () {\n var e, t;\n for (e = 0; e < this.files.length; e++)\n (t = this.files[e]),\n this.reader.setIndex(t.localHeaderOffset),\n this.checkSignature(s.LOCAL_FILE_HEADER),\n t.readLocalPart(this.reader),\n t.handleUTF8(),\n t.processAttributes();\n },\n readCentralDir: function () {\n var e;\n for (\n this.reader.setIndex(this.centralDirOffset);\n this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);\n\n )\n (e = new a(\n { zip64: this.zip64 },\n this.loadOptions\n )).readCentralPart(this.reader),\n this.files.push(e);\n if (\n this.centralDirRecords !== this.files.length &&\n 0 !== this.centralDirRecords &&\n 0 === this.files.length\n )\n throw new Error(\n \"Corrupted zip or bug: expected \" +\n this.centralDirRecords +\n \" records in central dir, got \" +\n this.files.length\n );\n },\n readEndOfCentral: function () {\n var e = this.reader.lastIndexOfSignature(\n s.CENTRAL_DIRECTORY_END\n );\n if (e < 0)\n throw !this.isSignature(0, s.LOCAL_FILE_HEADER)\n ? new Error(\n \"Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\"\n )\n : new Error(\n \"Corrupted zip: can't find end of central directory\"\n );\n this.reader.setIndex(e);\n var t = e;\n if (\n (this.checkSignature(s.CENTRAL_DIRECTORY_END),\n this.readBlockEndOfCentral(),\n this.diskNumber === i.MAX_VALUE_16BITS ||\n this.diskWithCentralDirStart === i.MAX_VALUE_16BITS ||\n this.centralDirRecordsOnThisDisk ===\n i.MAX_VALUE_16BITS ||\n this.centralDirRecords === i.MAX_VALUE_16BITS ||\n this.centralDirSize === i.MAX_VALUE_32BITS ||\n this.centralDirOffset === i.MAX_VALUE_32BITS)\n ) {\n if (\n ((this.zip64 = !0),\n (e = this.reader.lastIndexOfSignature(\n s.ZIP64_CENTRAL_DIRECTORY_LOCATOR\n )) < 0)\n )\n throw new Error(\n \"Corrupted zip: can't find the ZIP64 end of central directory locator\"\n );\n if (\n (this.reader.setIndex(e),\n this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),\n this.readBlockZip64EndOfCentralLocator(),\n !this.isSignature(\n this.relativeOffsetEndOfZip64CentralDir,\n s.ZIP64_CENTRAL_DIRECTORY_END\n ) &&\n ((this.relativeOffsetEndOfZip64CentralDir =\n this.reader.lastIndexOfSignature(\n s.ZIP64_CENTRAL_DIRECTORY_END\n )),\n this.relativeOffsetEndOfZip64CentralDir < 0))\n )\n throw new Error(\n \"Corrupted zip: can't find the ZIP64 end of central directory\"\n );\n this.reader.setIndex(\n this.relativeOffsetEndOfZip64CentralDir\n ),\n this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),\n this.readBlockZip64EndOfCentral();\n }\n var r = this.centralDirOffset + this.centralDirSize;\n this.zip64 &&\n ((r += 20), (r += 12 + this.zip64EndOfCentralSize));\n var n = t - r;\n if (0 < n)\n this.isSignature(t, s.CENTRAL_FILE_HEADER) ||\n (this.reader.zero = n);\n else if (n < 0)\n throw new Error(\n \"Corrupted zip: missing \" + Math.abs(n) + \" bytes.\"\n );\n },\n prepareReader: function (e) {\n this.reader = n(e);\n },\n load: function (e) {\n this.prepareReader(e),\n this.readEndOfCentral(),\n this.readCentralDir(),\n this.readLocalFiles();\n },\n }),\n (t.exports = h);\n },\n {\n \"./reader/readerFor\": 22,\n \"./signature\": 23,\n \"./support\": 30,\n \"./utils\": 32,\n \"./zipEntry\": 34,\n },\n ],\n 34: [\n function (e, t, r) {\n \"use strict\";\n var n = e(\"./reader/readerFor\"),\n s = e(\"./utils\"),\n i = e(\"./compressedObject\"),\n a = e(\"./crc32\"),\n o = e(\"./utf8\"),\n h = e(\"./compressions\"),\n u = e(\"./support\");\n function l(e, t) {\n (this.options = e), (this.loadOptions = t);\n }\n (l.prototype = {\n isEncrypted: function () {\n return 1 == (1 & this.bitFlag);\n },\n useUTF8: function () {\n return 2048 == (2048 & this.bitFlag);\n },\n readLocalPart: function (e) {\n var t, r;\n if (\n (e.skip(22),\n (this.fileNameLength = e.readInt(2)),\n (r = e.readInt(2)),\n (this.fileName = e.readData(this.fileNameLength)),\n e.skip(r),\n -1 === this.compressedSize ||\n -1 === this.uncompressedSize)\n )\n throw new Error(\n \"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)\"\n );\n if (\n null ===\n (t = (function (e) {\n for (var t in h)\n if (\n Object.prototype.hasOwnProperty.call(h, t) &&\n h[t].magic === e\n )\n return h[t];\n return null;\n })(this.compressionMethod))\n )\n throw new Error(\n \"Corrupted zip : compression \" +\n s.pretty(this.compressionMethod) +\n \" unknown (inner file : \" +\n s.transformTo(\"string\", this.fileName) +\n \")\"\n );\n this.decompressed = new i(\n this.compressedSize,\n this.uncompressedSize,\n this.crc32,\n t,\n e.readData(this.compressedSize)\n );\n },\n readCentralPart: function (e) {\n (this.versionMadeBy = e.readInt(2)),\n e.skip(2),\n (this.bitFlag = e.readInt(2)),\n (this.compressionMethod = e.readString(2)),\n (this.date = e.readDate()),\n (this.crc32 = e.readInt(4)),\n (this.compressedSize = e.readInt(4)),\n (this.uncompressedSize = e.readInt(4));\n var t = e.readInt(2);\n if (\n ((this.extraFieldsLength = e.readInt(2)),\n (this.fileCommentLength = e.readInt(2)),\n (this.diskNumberStart = e.readInt(2)),\n (this.internalFileAttributes = e.readInt(2)),\n (this.externalFileAttributes = e.readInt(4)),\n (this.localHeaderOffset = e.readInt(4)),\n this.isEncrypted())\n )\n throw new Error(\"Encrypted zip are not supported\");\n e.skip(t),\n this.readExtraFields(e),\n this.parseZIP64ExtraField(e),\n (this.fileComment = e.readData(this.fileCommentLength));\n },\n processAttributes: function () {\n (this.unixPermissions = null), (this.dosPermissions = null);\n var e = this.versionMadeBy >> 8;\n (this.dir = !!(16 & this.externalFileAttributes)),\n 0 == e &&\n (this.dosPermissions =\n 63 & this.externalFileAttributes),\n 3 == e &&\n (this.unixPermissions =\n (this.externalFileAttributes >> 16) & 65535),\n this.dir ||\n \"/\" !== this.fileNameStr.slice(-1) ||\n (this.dir = !0);\n },\n parseZIP64ExtraField: function () {\n if (this.extraFields[1]) {\n var e = n(this.extraFields[1].value);\n this.uncompressedSize === s.MAX_VALUE_32BITS &&\n (this.uncompressedSize = e.readInt(8)),\n this.compressedSize === s.MAX_VALUE_32BITS &&\n (this.compressedSize = e.readInt(8)),\n this.localHeaderOffset === s.MAX_VALUE_32BITS &&\n (this.localHeaderOffset = e.readInt(8)),\n this.diskNumberStart === s.MAX_VALUE_32BITS &&\n (this.diskNumberStart = e.readInt(4));\n }\n },\n readExtraFields: function (e) {\n var t,\n r,\n n,\n i = e.index + this.extraFieldsLength;\n for (\n this.extraFields || (this.extraFields = {});\n e.index + 4 < i;\n\n )\n (t = e.readInt(2)),\n (r = e.readInt(2)),\n (n = e.readData(r)),\n (this.extraFields[t] = { id: t, length: r, value: n });\n e.setIndex(i);\n },\n handleUTF8: function () {\n var e = u.uint8array ? \"uint8array\" : \"array\";\n if (this.useUTF8())\n (this.fileNameStr = o.utf8decode(this.fileName)),\n (this.fileCommentStr = o.utf8decode(this.fileComment));\n else {\n var t = this.findExtraFieldUnicodePath();\n if (null !== t) this.fileNameStr = t;\n else {\n var r = s.transformTo(e, this.fileName);\n this.fileNameStr = this.loadOptions.decodeFileName(r);\n }\n var n = this.findExtraFieldUnicodeComment();\n if (null !== n) this.fileCommentStr = n;\n else {\n var i = s.transformTo(e, this.fileComment);\n this.fileCommentStr =\n this.loadOptions.decodeFileName(i);\n }\n }\n },\n findExtraFieldUnicodePath: function () {\n var e = this.extraFields[28789];\n if (e) {\n var t = n(e.value);\n return 1 !== t.readInt(1)\n ? null\n : a(this.fileName) !== t.readInt(4)\n ? null\n : o.utf8decode(t.readData(e.length - 5));\n }\n return null;\n },\n findExtraFieldUnicodeComment: function () {\n var e = this.extraFields[25461];\n if (e) {\n var t = n(e.value);\n return 1 !== t.readInt(1)\n ? null\n : a(this.fileComment) !== t.readInt(4)\n ? null\n : o.utf8decode(t.readData(e.length - 5));\n }\n return null;\n },\n }),\n (t.exports = l);\n },\n {\n \"./compressedObject\": 2,\n \"./compressions\": 3,\n \"./crc32\": 4,\n \"./reader/readerFor\": 22,\n \"./support\": 30,\n \"./utf8\": 31,\n \"./utils\": 32,\n },\n ],\n 35: [\n function (e, t, r) {\n \"use strict\";\n function n(e, t, r) {\n (this.name = e),\n (this.dir = r.dir),\n (this.date = r.date),\n (this.comment = r.comment),\n (this.unixPermissions = r.unixPermissions),\n (this.dosPermissions = r.dosPermissions),\n (this._data = t),\n (this._dataBinary = r.binary),\n (this.options = {\n compression: r.compression,\n compressionOptions: r.compressionOptions,\n });\n }\n var s = e(\"./stream/StreamHelper\"),\n i = e(\"./stream/DataWorker\"),\n a = e(\"./utf8\"),\n o = e(\"./compressedObject\"),\n h = e(\"./stream/GenericWorker\");\n n.prototype = {\n internalStream: function (e) {\n var t = null,\n r = \"string\";\n try {\n if (!e) throw new Error(\"No output type specified.\");\n var n =\n \"string\" === (r = e.toLowerCase()) || \"text\" === r;\n (\"binarystring\" !== r && \"text\" !== r) || (r = \"string\"),\n (t = this._decompressWorker());\n var i = !this._dataBinary;\n i && !n && (t = t.pipe(new a.Utf8EncodeWorker())),\n !i && n && (t = t.pipe(new a.Utf8DecodeWorker()));\n } catch (e) {\n (t = new h(\"error\")).error(e);\n }\n return new s(t, r, \"\");\n },\n async: function (e, t) {\n return this.internalStream(e).accumulate(t);\n },\n nodeStream: function (e, t) {\n return this.internalStream(\n e || \"nodebuffer\"\n ).toNodejsStream(t);\n },\n _compressWorker: function (e, t) {\n if (\n this._data instanceof o &&\n this._data.compression.magic === e.magic\n )\n return this._data.getCompressedWorker();\n var r = this._decompressWorker();\n return (\n this._dataBinary ||\n (r = r.pipe(new a.Utf8EncodeWorker())),\n o.createWorkerFrom(r, e, t)\n );\n },\n _decompressWorker: function () {\n return this._data instanceof o\n ? this._data.getContentWorker()\n : this._data instanceof h\n ? this._data\n : new i(this._data);\n },\n };\n for (\n var u = [\n \"asText\",\n \"asBinary\",\n \"asNodeBuffer\",\n \"asUint8Array\",\n \"asArrayBuffer\",\n ],\n l = function () {\n throw new Error(\n \"This method has been removed in JSZip 3.0, please check the upgrade guide.\"\n );\n },\n f = 0;\n f < u.length;\n f++\n )\n n.prototype[u[f]] = l;\n t.exports = n;\n },\n {\n \"./compressedObject\": 2,\n \"./stream/DataWorker\": 27,\n \"./stream/GenericWorker\": 28,\n \"./stream/StreamHelper\": 29,\n \"./utf8\": 31,\n },\n ],\n 36: [\n function (e, l, t) {\n (function (t) {\n \"use strict\";\n var r,\n n,\n e = t.MutationObserver || t.WebKitMutationObserver;\n if (e) {\n var i = 0,\n s = new e(u),\n a = t.document.createTextNode(\"\");\n s.observe(a, { characterData: !0 }),\n (r = function () {\n a.data = i = ++i % 2;\n });\n } else if (t.setImmediate || void 0 === t.MessageChannel)\n r =\n \"document\" in t &&\n \"onreadystatechange\" in t.document.createElement(\"script\")\n ? function () {\n var e = t.document.createElement(\"script\");\n (e.onreadystatechange = function () {\n u(),\n (e.onreadystatechange = null),\n e.parentNode.removeChild(e),\n (e = null);\n }),\n t.document.documentElement.appendChild(e);\n }\n : function () {\n setTimeout(u, 0);\n };\n else {\n var o = new t.MessageChannel();\n (o.port1.onmessage = u),\n (r = function () {\n o.port2.postMessage(0);\n });\n }\n var h = [];\n function u() {\n var e, t;\n n = !0;\n for (var r = h.length; r; ) {\n for (t = h, h = [], e = -1; ++e < r; ) t[e]();\n r = h.length;\n }\n n = !1;\n }\n l.exports = function (e) {\n 1 !== h.push(e) || n || r();\n };\n }).call(\n this,\n \"undefined\" != typeof global\n ? global\n : \"undefined\" != typeof self\n ? self\n : \"undefined\" != typeof window\n ? window\n : {}\n );\n },\n {},\n ],\n 37: [\n function (e, t, r) {\n \"use strict\";\n var i = e(\"immediate\");\n function u() {}\n var l = {},\n s = [\"REJECTED\"],\n a = [\"FULFILLED\"],\n n = [\"PENDING\"];\n function o(e) {\n if (\"function\" != typeof e)\n throw new TypeError(\"resolver must be a function\");\n (this.state = n),\n (this.queue = []),\n (this.outcome = void 0),\n e !== u && d(this, e);\n }\n function h(e, t, r) {\n (this.promise = e),\n \"function\" == typeof t &&\n ((this.onFulfilled = t),\n (this.callFulfilled = this.otherCallFulfilled)),\n \"function\" == typeof r &&\n ((this.onRejected = r),\n (this.callRejected = this.otherCallRejected));\n }\n function f(t, r, n) {\n i(function () {\n var e;\n try {\n e = r(n);\n } catch (e) {\n return l.reject(t, e);\n }\n e === t\n ? l.reject(\n t,\n new TypeError(\"Cannot resolve promise with itself\")\n )\n : l.resolve(t, e);\n });\n }\n function c(e) {\n var t = e && e.then;\n if (\n e &&\n (\"object\" == typeof e || \"function\" == typeof e) &&\n \"function\" == typeof t\n )\n return function () {\n t.apply(e, arguments);\n };\n }\n function d(t, e) {\n var r = !1;\n function n(e) {\n r || ((r = !0), l.reject(t, e));\n }\n function i(e) {\n r || ((r = !0), l.resolve(t, e));\n }\n var s = p(function () {\n e(i, n);\n });\n \"error\" === s.status && n(s.value);\n }\n function p(e, t) {\n var r = {};\n try {\n (r.value = e(t)), (r.status = \"success\");\n } catch (e) {\n (r.status = \"error\"), (r.value = e);\n }\n return r;\n }\n ((t.exports = o).prototype.finally = function (t) {\n if (\"function\" != typeof t) return this;\n var r = this.constructor;\n return this.then(\n function (e) {\n return r.resolve(t()).then(function () {\n return e;\n });\n },\n function (e) {\n return r.resolve(t()).then(function () {\n throw e;\n });\n }\n );\n }),\n (o.prototype.catch = function (e) {\n return this.then(null, e);\n }),\n (o.prototype.then = function (e, t) {\n if (\n (\"function\" != typeof e && this.state === a) ||\n (\"function\" != typeof t && this.state === s)\n )\n return this;\n var r = new this.constructor(u);\n this.state !== n\n ? f(r, this.state === a ? e : t, this.outcome)\n : this.queue.push(new h(r, e, t));\n return r;\n }),\n (h.prototype.callFulfilled = function (e) {\n l.resolve(this.promise, e);\n }),\n (h.prototype.otherCallFulfilled = function (e) {\n f(this.promise, this.onFulfilled, e);\n }),\n (h.prototype.callRejected = function (e) {\n l.reject(this.promise, e);\n }),\n (h.prototype.otherCallRejected = function (e) {\n f(this.promise, this.onRejected, e);\n }),\n (l.resolve = function (e, t) {\n var r = p(c, t);\n if (\"error\" === r.status) return l.reject(e, r.value);\n var n = r.value;\n if (n) d(e, n);\n else {\n (e.state = a), (e.outcome = t);\n for (var i = -1, s = e.queue.length; ++i < s; )\n e.queue[i].callFulfilled(t);\n }\n return e;\n }),\n (l.reject = function (e, t) {\n (e.state = s), (e.outcome = t);\n for (var r = -1, n = e.queue.length; ++r < n; )\n e.queue[r].callRejected(t);\n return e;\n }),\n (o.resolve = function (e) {\n if (e instanceof this) return e;\n return l.resolve(new this(u), e);\n }),\n (o.reject = function (e) {\n var t = new this(u);\n return l.reject(t, e);\n }),\n (o.all = function (e) {\n var r = this;\n if (\"[object Array]\" !== Object.prototype.toString.call(e))\n return this.reject(new TypeError(\"must be an array\"));\n var n = e.length,\n i = !1;\n if (!n) return this.resolve([]);\n var s = new Array(n),\n a = 0,\n t = -1,\n o = new this(u);\n for (; ++t < n; ) h(e[t], t);\n return o;\n function h(e, t) {\n r.resolve(e).then(\n function (e) {\n (s[t] = e),\n ++a !== n || i || ((i = !0), l.resolve(o, s));\n },\n function (e) {\n i || ((i = !0), l.reject(o, e));\n }\n );\n }\n }),\n (o.race = function (e) {\n var t = this;\n if (\"[object Array]\" !== Object.prototype.toString.call(e))\n return this.reject(new TypeError(\"must be an array\"));\n var r = e.length,\n n = !1;\n if (!r) return this.resolve([]);\n var i = -1,\n s = new this(u);\n for (; ++i < r; )\n (a = e[i]),\n t.resolve(a).then(\n function (e) {\n n || ((n = !0), l.resolve(s, e));\n },\n function (e) {\n n || ((n = !0), l.reject(s, e));\n }\n );\n var a;\n return s;\n });\n },\n { immediate: 36 },\n ],\n 38: [\n function (e, t, r) {\n \"use strict\";\n var n = {};\n (0, e(\"./lib/utils/common\").assign)(\n n,\n e(\"./lib/deflate\"),\n e(\"./lib/inflate\"),\n e(\"./lib/zlib/constants\")\n ),\n (t.exports = n);\n },\n {\n \"./lib/deflate\": 39,\n \"./lib/inflate\": 40,\n \"./lib/utils/common\": 41,\n \"./lib/zlib/constants\": 44,\n },\n ],\n 39: [\n function (e, t, r) {\n \"use strict\";\n var a = e(\"./zlib/deflate\"),\n o = e(\"./utils/common\"),\n h = e(\"./utils/strings\"),\n i = e(\"./zlib/messages\"),\n s = e(\"./zlib/zstream\"),\n u = Object.prototype.toString,\n l = 0,\n f = -1,\n c = 0,\n d = 8;\n function p(e) {\n if (!(this instanceof p)) return new p(e);\n this.options = o.assign(\n {\n level: f,\n method: d,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: c,\n to: \"\",\n },\n e || {}\n );\n var t = this.options;\n t.raw && 0 < t.windowBits\n ? (t.windowBits = -t.windowBits)\n : t.gzip &&\n 0 < t.windowBits &&\n t.windowBits < 16 &&\n (t.windowBits += 16),\n (this.err = 0),\n (this.msg = \"\"),\n (this.ended = !1),\n (this.chunks = []),\n (this.strm = new s()),\n (this.strm.avail_out = 0);\n var r = a.deflateInit2(\n this.strm,\n t.level,\n t.method,\n t.windowBits,\n t.memLevel,\n t.strategy\n );\n if (r !== l) throw new Error(i[r]);\n if (\n (t.header && a.deflateSetHeader(this.strm, t.header),\n t.dictionary)\n ) {\n var n;\n if (\n ((n =\n \"string\" == typeof t.dictionary\n ? h.string2buf(t.dictionary)\n : \"[object ArrayBuffer]\" === u.call(t.dictionary)\n ? new Uint8Array(t.dictionary)\n : t.dictionary),\n (r = a.deflateSetDictionary(this.strm, n)) !== l)\n )\n throw new Error(i[r]);\n this._dict_set = !0;\n }\n }\n function n(e, t) {\n var r = new p(t);\n if ((r.push(e, !0), r.err)) throw r.msg || i[r.err];\n return r.result;\n }\n (p.prototype.push = function (e, t) {\n var r,\n n,\n i = this.strm,\n s = this.options.chunkSize;\n if (this.ended) return !1;\n (n = t === ~~t ? t : !0 === t ? 4 : 0),\n \"string\" == typeof e\n ? (i.input = h.string2buf(e))\n : \"[object ArrayBuffer]\" === u.call(e)\n ? (i.input = new Uint8Array(e))\n : (i.input = e),\n (i.next_in = 0),\n (i.avail_in = i.input.length);\n do {\n if (\n (0 === i.avail_out &&\n ((i.output = new o.Buf8(s)),\n (i.next_out = 0),\n (i.avail_out = s)),\n 1 !== (r = a.deflate(i, n)) && r !== l)\n )\n return this.onEnd(r), !(this.ended = !0);\n (0 !== i.avail_out &&\n (0 !== i.avail_in || (4 !== n && 2 !== n))) ||\n (\"string\" === this.options.to\n ? this.onData(\n h.buf2binstring(o.shrinkBuf(i.output, i.next_out))\n )\n : this.onData(o.shrinkBuf(i.output, i.next_out)));\n } while ((0 < i.avail_in || 0 === i.avail_out) && 1 !== r);\n return 4 === n\n ? ((r = a.deflateEnd(this.strm)),\n this.onEnd(r),\n (this.ended = !0),\n r === l)\n : 2 !== n || (this.onEnd(l), !(i.avail_out = 0));\n }),\n (p.prototype.onData = function (e) {\n this.chunks.push(e);\n }),\n (p.prototype.onEnd = function (e) {\n e === l &&\n (\"string\" === this.options.to\n ? (this.result = this.chunks.join(\"\"))\n : (this.result = o.flattenChunks(this.chunks))),\n (this.chunks = []),\n (this.err = e),\n (this.msg = this.strm.msg);\n }),\n (r.Deflate = p),\n (r.deflate = n),\n (r.deflateRaw = function (e, t) {\n return ((t = t || {}).raw = !0), n(e, t);\n }),\n (r.gzip = function (e, t) {\n return ((t = t || {}).gzip = !0), n(e, t);\n });\n },\n {\n \"./utils/common\": 41,\n \"./utils/strings\": 42,\n \"./zlib/deflate\": 46,\n \"./zlib/messages\": 51,\n \"./zlib/zstream\": 53,\n },\n ],\n 40: [\n function (e, t, r) {\n \"use strict\";\n var c = e(\"./zlib/inflate\"),\n d = e(\"./utils/common\"),\n p = e(\"./utils/strings\"),\n m = e(\"./zlib/constants\"),\n n = e(\"./zlib/messages\"),\n i = e(\"./zlib/zstream\"),\n s = e(\"./zlib/gzheader\"),\n _ = Object.prototype.toString;\n function a(e) {\n if (!(this instanceof a)) return new a(e);\n this.options = d.assign(\n { chunkSize: 16384, windowBits: 0, to: \"\" },\n e || {}\n );\n var t = this.options;\n t.raw &&\n 0 <= t.windowBits &&\n t.windowBits < 16 &&\n ((t.windowBits = -t.windowBits),\n 0 === t.windowBits && (t.windowBits = -15)),\n !(0 <= t.windowBits && t.windowBits < 16) ||\n (e && e.windowBits) ||\n (t.windowBits += 32),\n 15 < t.windowBits &&\n t.windowBits < 48 &&\n 0 == (15 & t.windowBits) &&\n (t.windowBits |= 15),\n (this.err = 0),\n (this.msg = \"\"),\n (this.ended = !1),\n (this.chunks = []),\n (this.strm = new i()),\n (this.strm.avail_out = 0);\n var r = c.inflateInit2(this.strm, t.windowBits);\n if (r !== m.Z_OK) throw new Error(n[r]);\n (this.header = new s()),\n c.inflateGetHeader(this.strm, this.header);\n }\n function o(e, t) {\n var r = new a(t);\n if ((r.push(e, !0), r.err)) throw r.msg || n[r.err];\n return r.result;\n }\n (a.prototype.push = function (e, t) {\n var r,\n n,\n i,\n s,\n a,\n o,\n h = this.strm,\n u = this.options.chunkSize,\n l = this.options.dictionary,\n f = !1;\n if (this.ended) return !1;\n (n = t === ~~t ? t : !0 === t ? m.Z_FINISH : m.Z_NO_FLUSH),\n \"string\" == typeof e\n ? (h.input = p.binstring2buf(e))\n : \"[object ArrayBuffer]\" === _.call(e)\n ? (h.input = new Uint8Array(e))\n : (h.input = e),\n (h.next_in = 0),\n (h.avail_in = h.input.length);\n do {\n if (\n (0 === h.avail_out &&\n ((h.output = new d.Buf8(u)),\n (h.next_out = 0),\n (h.avail_out = u)),\n (r = c.inflate(h, m.Z_NO_FLUSH)) === m.Z_NEED_DICT &&\n l &&\n ((o =\n \"string\" == typeof l\n ? p.string2buf(l)\n : \"[object ArrayBuffer]\" === _.call(l)\n ? new Uint8Array(l)\n : l),\n (r = c.inflateSetDictionary(this.strm, o))),\n r === m.Z_BUF_ERROR &&\n !0 === f &&\n ((r = m.Z_OK), (f = !1)),\n r !== m.Z_STREAM_END && r !== m.Z_OK)\n )\n return this.onEnd(r), !(this.ended = !0);\n h.next_out &&\n ((0 !== h.avail_out &&\n r !== m.Z_STREAM_END &&\n (0 !== h.avail_in ||\n (n !== m.Z_FINISH && n !== m.Z_SYNC_FLUSH))) ||\n (\"string\" === this.options.to\n ? ((i = p.utf8border(h.output, h.next_out)),\n (s = h.next_out - i),\n (a = p.buf2string(h.output, i)),\n (h.next_out = s),\n (h.avail_out = u - s),\n s && d.arraySet(h.output, h.output, i, s, 0),\n this.onData(a))\n : this.onData(d.shrinkBuf(h.output, h.next_out)))),\n 0 === h.avail_in && 0 === h.avail_out && (f = !0);\n } while (\n (0 < h.avail_in || 0 === h.avail_out) &&\n r !== m.Z_STREAM_END\n );\n return (\n r === m.Z_STREAM_END && (n = m.Z_FINISH),\n n === m.Z_FINISH\n ? ((r = c.inflateEnd(this.strm)),\n this.onEnd(r),\n (this.ended = !0),\n r === m.Z_OK)\n : n !== m.Z_SYNC_FLUSH ||\n (this.onEnd(m.Z_OK), !(h.avail_out = 0))\n );\n }),\n (a.prototype.onData = function (e) {\n this.chunks.push(e);\n }),\n (a.prototype.onEnd = function (e) {\n e === m.Z_OK &&\n (\"string\" === this.options.to\n ? (this.result = this.chunks.join(\"\"))\n : (this.result = d.flattenChunks(this.chunks))),\n (this.chunks = []),\n (this.err = e),\n (this.msg = this.strm.msg);\n }),\n (r.Inflate = a),\n (r.inflate = o),\n (r.inflateRaw = function (e, t) {\n return ((t = t || {}).raw = !0), o(e, t);\n }),\n (r.ungzip = o);\n },\n {\n \"./utils/common\": 41,\n \"./utils/strings\": 42,\n \"./zlib/constants\": 44,\n \"./zlib/gzheader\": 47,\n \"./zlib/inflate\": 49,\n \"./zlib/messages\": 51,\n \"./zlib/zstream\": 53,\n },\n ],\n 41: [\n function (e, t, r) {\n \"use strict\";\n var n =\n \"undefined\" != typeof Uint8Array &&\n \"undefined\" != typeof Uint16Array &&\n \"undefined\" != typeof Int32Array;\n (r.assign = function (e) {\n for (\n var t = Array.prototype.slice.call(arguments, 1);\n t.length;\n\n ) {\n var r = t.shift();\n if (r) {\n if (\"object\" != typeof r)\n throw new TypeError(r + \"must be non-object\");\n for (var n in r) r.hasOwnProperty(n) && (e[n] = r[n]);\n }\n }\n return e;\n }),\n (r.shrinkBuf = function (e, t) {\n return e.length === t\n ? e\n : e.subarray\n ? e.subarray(0, t)\n : ((e.length = t), e);\n });\n var i = {\n arraySet: function (e, t, r, n, i) {\n if (t.subarray && e.subarray)\n e.set(t.subarray(r, r + n), i);\n else for (var s = 0; s < n; s++) e[i + s] = t[r + s];\n },\n flattenChunks: function (e) {\n var t, r, n, i, s, a;\n for (t = n = 0, r = e.length; t < r; t++)\n n += e[t].length;\n for (\n a = new Uint8Array(n), t = i = 0, r = e.length;\n t < r;\n t++\n )\n (s = e[t]), a.set(s, i), (i += s.length);\n return a;\n },\n },\n s = {\n arraySet: function (e, t, r, n, i) {\n for (var s = 0; s < n; s++) e[i + s] = t[r + s];\n },\n flattenChunks: function (e) {\n return [].concat.apply([], e);\n },\n };\n (r.setTyped = function (e) {\n e\n ? ((r.Buf8 = Uint8Array),\n (r.Buf16 = Uint16Array),\n (r.Buf32 = Int32Array),\n r.assign(r, i))\n : ((r.Buf8 = Array),\n (r.Buf16 = Array),\n (r.Buf32 = Array),\n r.assign(r, s));\n }),\n r.setTyped(n);\n },\n {},\n ],\n 42: [\n function (e, t, r) {\n \"use strict\";\n var h = e(\"./common\"),\n i = !0,\n s = !0;\n try {\n String.fromCharCode.apply(null, [0]);\n } catch (e) {\n i = !1;\n }\n try {\n String.fromCharCode.apply(null, new Uint8Array(1));\n } catch (e) {\n s = !1;\n }\n for (var u = new h.Buf8(256), n = 0; n < 256; n++)\n u[n] =\n 252 <= n\n ? 6\n : 248 <= n\n ? 5\n : 240 <= n\n ? 4\n : 224 <= n\n ? 3\n : 192 <= n\n ? 2\n : 1;\n function l(e, t) {\n if (t < 65537 && ((e.subarray && s) || (!e.subarray && i)))\n return String.fromCharCode.apply(null, h.shrinkBuf(e, t));\n for (var r = \"\", n = 0; n < t; n++)\n r += String.fromCharCode(e[n]);\n return r;\n }\n (u[254] = u[254] = 1),\n (r.string2buf = function (e) {\n var t,\n r,\n n,\n i,\n s,\n a = e.length,\n o = 0;\n for (i = 0; i < a; i++)\n 55296 == (64512 & (r = e.charCodeAt(i))) &&\n i + 1 < a &&\n 56320 == (64512 & (n = e.charCodeAt(i + 1))) &&\n ((r = 65536 + ((r - 55296) << 10) + (n - 56320)), i++),\n (o += r < 128 ? 1 : r < 2048 ? 2 : r < 65536 ? 3 : 4);\n for (t = new h.Buf8(o), i = s = 0; s < o; i++)\n 55296 == (64512 & (r = e.charCodeAt(i))) &&\n i + 1 < a &&\n 56320 == (64512 & (n = e.charCodeAt(i + 1))) &&\n ((r = 65536 + ((r - 55296) << 10) + (n - 56320)), i++),\n r < 128\n ? (t[s++] = r)\n : (r < 2048\n ? (t[s++] = 192 | (r >>> 6))\n : (r < 65536\n ? (t[s++] = 224 | (r >>> 12))\n : ((t[s++] = 240 | (r >>> 18)),\n (t[s++] = 128 | ((r >>> 12) & 63))),\n (t[s++] = 128 | ((r >>> 6) & 63))),\n (t[s++] = 128 | (63 & r)));\n return t;\n }),\n (r.buf2binstring = function (e) {\n return l(e, e.length);\n }),\n (r.binstring2buf = function (e) {\n for (\n var t = new h.Buf8(e.length), r = 0, n = t.length;\n r < n;\n r++\n )\n t[r] = e.charCodeAt(r);\n return t;\n }),\n (r.buf2string = function (e, t) {\n var r,\n n,\n i,\n s,\n a = t || e.length,\n o = new Array(2 * a);\n for (r = n = 0; r < a; )\n if ((i = e[r++]) < 128) o[n++] = i;\n else if (4 < (s = u[i])) (o[n++] = 65533), (r += s - 1);\n else {\n for (\n i &= 2 === s ? 31 : 3 === s ? 15 : 7;\n 1 < s && r < a;\n\n )\n (i = (i << 6) | (63 & e[r++])), s--;\n 1 < s\n ? (o[n++] = 65533)\n : i < 65536\n ? (o[n++] = i)\n : ((i -= 65536),\n (o[n++] = 55296 | ((i >> 10) & 1023)),\n (o[n++] = 56320 | (1023 & i)));\n }\n return l(o, n);\n }),\n (r.utf8border = function (e, t) {\n var r;\n for (\n (t = t || e.length) > e.length && (t = e.length),\n r = t - 1;\n 0 <= r && 128 == (192 & e[r]);\n\n )\n r--;\n return r < 0 ? t : 0 === r ? t : r + u[e[r]] > t ? r : t;\n });\n },\n { \"./common\": 41 },\n ],\n 43: [\n function (e, t, r) {\n \"use strict\";\n t.exports = function (e, t, r, n) {\n for (\n var i = (65535 & e) | 0,\n s = ((e >>> 16) & 65535) | 0,\n a = 0;\n 0 !== r;\n\n ) {\n for (\n r -= a = 2e3 < r ? 2e3 : r;\n (s = (s + (i = (i + t[n++]) | 0)) | 0), --a;\n\n );\n (i %= 65521), (s %= 65521);\n }\n return i | (s << 16) | 0;\n };\n },\n {},\n ],\n 44: [\n function (e, t, r) {\n \"use strict\";\n t.exports = {\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_BUF_ERROR: -5,\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n Z_BINARY: 0,\n Z_TEXT: 1,\n Z_UNKNOWN: 2,\n Z_DEFLATED: 8,\n };\n },\n {},\n ],\n 45: [\n function (e, t, r) {\n \"use strict\";\n var o = (function () {\n for (var e, t = [], r = 0; r < 256; r++) {\n e = r;\n for (var n = 0; n < 8; n++)\n e = 1 & e ? 3988292384 ^ (e >>> 1) : e >>> 1;\n t[r] = e;\n }\n return t;\n })();\n t.exports = function (e, t, r, n) {\n var i = o,\n s = n + r;\n e ^= -1;\n for (var a = n; a < s; a++)\n e = (e >>> 8) ^ i[255 & (e ^ t[a])];\n return -1 ^ e;\n };\n },\n {},\n ],\n 46: [\n function (e, t, r) {\n \"use strict\";\n var h,\n c = e(\"../utils/common\"),\n u = e(\"./trees\"),\n d = e(\"./adler32\"),\n p = e(\"./crc32\"),\n n = e(\"./messages\"),\n l = 0,\n f = 4,\n m = 0,\n _ = -2,\n g = -1,\n b = 4,\n i = 2,\n v = 8,\n y = 9,\n s = 286,\n a = 30,\n o = 19,\n w = 2 * s + 1,\n k = 15,\n x = 3,\n S = 258,\n z = S + x + 1,\n C = 42,\n E = 113,\n A = 1,\n I = 2,\n O = 3,\n B = 4;\n function R(e, t) {\n return (e.msg = n[t]), t;\n }\n function T(e) {\n return (e << 1) - (4 < e ? 9 : 0);\n }\n function D(e) {\n for (var t = e.length; 0 <= --t; ) e[t] = 0;\n }\n function F(e) {\n var t = e.state,\n r = t.pending;\n r > e.avail_out && (r = e.avail_out),\n 0 !== r &&\n (c.arraySet(\n e.output,\n t.pending_buf,\n t.pending_out,\n r,\n e.next_out\n ),\n (e.next_out += r),\n (t.pending_out += r),\n (e.total_out += r),\n (e.avail_out -= r),\n (t.pending -= r),\n 0 === t.pending && (t.pending_out = 0));\n }\n function N(e, t) {\n u._tr_flush_block(\n e,\n 0 <= e.block_start ? e.block_start : -1,\n e.strstart - e.block_start,\n t\n ),\n (e.block_start = e.strstart),\n F(e.strm);\n }\n function U(e, t) {\n e.pending_buf[e.pending++] = t;\n }\n function P(e, t) {\n (e.pending_buf[e.pending++] = (t >>> 8) & 255),\n (e.pending_buf[e.pending++] = 255 & t);\n }\n function L(e, t) {\n var r,\n n,\n i = e.max_chain_length,\n s = e.strstart,\n a = e.prev_length,\n o = e.nice_match,\n h =\n e.strstart > e.w_size - z\n ? e.strstart - (e.w_size - z)\n : 0,\n u = e.window,\n l = e.w_mask,\n f = e.prev,\n c = e.strstart + S,\n d = u[s + a - 1],\n p = u[s + a];\n e.prev_length >= e.good_match && (i >>= 2),\n o > e.lookahead && (o = e.lookahead);\n do {\n if (\n u[(r = t) + a] === p &&\n u[r + a - 1] === d &&\n u[r] === u[s] &&\n u[++r] === u[s + 1]\n ) {\n (s += 2), r++;\n do {} while (\n u[++s] === u[++r] &&\n u[++s] === u[++r] &&\n u[++s] === u[++r] &&\n u[++s] === u[++r] &&\n u[++s] === u[++r] &&\n u[++s] === u[++r] &&\n u[++s] === u[++r] &&\n u[++s] === u[++r] &&\n s < c\n );\n if (((n = S - (c - s)), (s = c - S), a < n)) {\n if (((e.match_start = t), o <= (a = n))) break;\n (d = u[s + a - 1]), (p = u[s + a]);\n }\n }\n } while ((t = f[t & l]) > h && 0 != --i);\n return a <= e.lookahead ? a : e.lookahead;\n }\n function j(e) {\n var t,\n r,\n n,\n i,\n s,\n a,\n o,\n h,\n u,\n l,\n f = e.w_size;\n do {\n if (\n ((i = e.window_size - e.lookahead - e.strstart),\n e.strstart >= f + (f - z))\n ) {\n for (\n c.arraySet(e.window, e.window, f, f, 0),\n e.match_start -= f,\n e.strstart -= f,\n e.block_start -= f,\n t = r = e.hash_size;\n (n = e.head[--t]),\n (e.head[t] = f <= n ? n - f : 0),\n --r;\n\n );\n for (\n t = r = f;\n (n = e.prev[--t]),\n (e.prev[t] = f <= n ? n - f : 0),\n --r;\n\n );\n i += f;\n }\n if (0 === e.strm.avail_in) break;\n if (\n ((a = e.strm),\n (o = e.window),\n (h = e.strstart + e.lookahead),\n (u = i),\n (l = void 0),\n (l = a.avail_in),\n u < l && (l = u),\n (r =\n 0 === l\n ? 0\n : ((a.avail_in -= l),\n c.arraySet(o, a.input, a.next_in, l, h),\n 1 === a.state.wrap\n ? (a.adler = d(a.adler, o, l, h))\n : 2 === a.state.wrap &&\n (a.adler = p(a.adler, o, l, h)),\n (a.next_in += l),\n (a.total_in += l),\n l)),\n (e.lookahead += r),\n e.lookahead + e.insert >= x)\n )\n for (\n s = e.strstart - e.insert,\n e.ins_h = e.window[s],\n e.ins_h =\n ((e.ins_h << e.hash_shift) ^ e.window[s + 1]) &\n e.hash_mask;\n e.insert &&\n ((e.ins_h =\n ((e.ins_h << e.hash_shift) ^ e.window[s + x - 1]) &\n e.hash_mask),\n (e.prev[s & e.w_mask] = e.head[e.ins_h]),\n (e.head[e.ins_h] = s),\n s++,\n e.insert--,\n !(e.lookahead + e.insert < x));\n\n );\n } while (e.lookahead < z && 0 !== e.strm.avail_in);\n }\n function Z(e, t) {\n for (var r, n; ; ) {\n if (e.lookahead < z) {\n if ((j(e), e.lookahead < z && t === l)) return A;\n if (0 === e.lookahead) break;\n }\n if (\n ((r = 0),\n e.lookahead >= x &&\n ((e.ins_h =\n ((e.ins_h << e.hash_shift) ^\n e.window[e.strstart + x - 1]) &\n e.hash_mask),\n (r = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h]),\n (e.head[e.ins_h] = e.strstart)),\n 0 !== r &&\n e.strstart - r <= e.w_size - z &&\n (e.match_length = L(e, r)),\n e.match_length >= x)\n )\n if (\n ((n = u._tr_tally(\n e,\n e.strstart - e.match_start,\n e.match_length - x\n )),\n (e.lookahead -= e.match_length),\n e.match_length <= e.max_lazy_match && e.lookahead >= x)\n ) {\n for (\n e.match_length--;\n e.strstart++,\n (e.ins_h =\n ((e.ins_h << e.hash_shift) ^\n e.window[e.strstart + x - 1]) &\n e.hash_mask),\n (r = e.prev[e.strstart & e.w_mask] =\n e.head[e.ins_h]),\n (e.head[e.ins_h] = e.strstart),\n 0 != --e.match_length;\n\n );\n e.strstart++;\n } else\n (e.strstart += e.match_length),\n (e.match_length = 0),\n (e.ins_h = e.window[e.strstart]),\n (e.ins_h =\n ((e.ins_h << e.hash_shift) ^\n e.window[e.strstart + 1]) &\n e.hash_mask);\n else\n (n = u._tr_tally(e, 0, e.window[e.strstart])),\n e.lookahead--,\n e.strstart++;\n if (n && (N(e, !1), 0 === e.strm.avail_out)) return A;\n }\n return (\n (e.insert = e.strstart < x - 1 ? e.strstart : x - 1),\n t === f\n ? (N(e, !0), 0 === e.strm.avail_out ? O : B)\n : e.last_lit && (N(e, !1), 0 === e.strm.avail_out)\n ? A\n : I\n );\n }\n function W(e, t) {\n for (var r, n, i; ; ) {\n if (e.lookahead < z) {\n if ((j(e), e.lookahead < z && t === l)) return A;\n if (0 === e.lookahead) break;\n }\n if (\n ((r = 0),\n e.lookahead >= x &&\n ((e.ins_h =\n ((e.ins_h << e.hash_shift) ^\n e.window[e.strstart + x - 1]) &\n e.hash_mask),\n (r = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h]),\n (e.head[e.ins_h] = e.strstart)),\n (e.prev_length = e.match_length),\n (e.prev_match = e.match_start),\n (e.match_length = x - 1),\n 0 !== r &&\n e.prev_length < e.max_lazy_match &&\n e.strstart - r <= e.w_size - z &&\n ((e.match_length = L(e, r)),\n e.match_length <= 5 &&\n (1 === e.strategy ||\n (e.match_length === x &&\n 4096 < e.strstart - e.match_start)) &&\n (e.match_length = x - 1)),\n e.prev_length >= x && e.match_length <= e.prev_length)\n ) {\n for (\n i = e.strstart + e.lookahead - x,\n n = u._tr_tally(\n e,\n e.strstart - 1 - e.prev_match,\n e.prev_length - x\n ),\n e.lookahead -= e.prev_length - 1,\n e.prev_length -= 2;\n ++e.strstart <= i &&\n ((e.ins_h =\n ((e.ins_h << e.hash_shift) ^\n e.window[e.strstart + x - 1]) &\n e.hash_mask),\n (r = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h]),\n (e.head[e.ins_h] = e.strstart)),\n 0 != --e.prev_length;\n\n );\n if (\n ((e.match_available = 0),\n (e.match_length = x - 1),\n e.strstart++,\n n && (N(e, !1), 0 === e.strm.avail_out))\n )\n return A;\n } else if (e.match_available) {\n if (\n ((n = u._tr_tally(e, 0, e.window[e.strstart - 1])) &&\n N(e, !1),\n e.strstart++,\n e.lookahead--,\n 0 === e.strm.avail_out)\n )\n return A;\n } else (e.match_available = 1), e.strstart++, e.lookahead--;\n }\n return (\n e.match_available &&\n ((n = u._tr_tally(e, 0, e.window[e.strstart - 1])),\n (e.match_available = 0)),\n (e.insert = e.strstart < x - 1 ? e.strstart : x - 1),\n t === f\n ? (N(e, !0), 0 === e.strm.avail_out ? O : B)\n : e.last_lit && (N(e, !1), 0 === e.strm.avail_out)\n ? A\n : I\n );\n }\n function M(e, t, r, n, i) {\n (this.good_length = e),\n (this.max_lazy = t),\n (this.nice_length = r),\n (this.max_chain = n),\n (this.func = i);\n }\n function H() {\n (this.strm = null),\n (this.status = 0),\n (this.pending_buf = null),\n (this.pending_buf_size = 0),\n (this.pending_out = 0),\n (this.pending = 0),\n (this.wrap = 0),\n (this.gzhead = null),\n (this.gzindex = 0),\n (this.method = v),\n (this.last_flush = -1),\n (this.w_size = 0),\n (this.w_bits = 0),\n (this.w_mask = 0),\n (this.window = null),\n (this.window_size = 0),\n (this.prev = null),\n (this.head = null),\n (this.ins_h = 0),\n (this.hash_size = 0),\n (this.hash_bits = 0),\n (this.hash_mask = 0),\n (this.hash_shift = 0),\n (this.block_start = 0),\n (this.match_length = 0),\n (this.prev_match = 0),\n (this.match_available = 0),\n (this.strstart = 0),\n (this.match_start = 0),\n (this.lookahead = 0),\n (this.prev_length = 0),\n (this.max_chain_length = 0),\n (this.max_lazy_match = 0),\n (this.level = 0),\n (this.strategy = 0),\n (this.good_match = 0),\n (this.nice_match = 0),\n (this.dyn_ltree = new c.Buf16(2 * w)),\n (this.dyn_dtree = new c.Buf16(2 * (2 * a + 1))),\n (this.bl_tree = new c.Buf16(2 * (2 * o + 1))),\n D(this.dyn_ltree),\n D(this.dyn_dtree),\n D(this.bl_tree),\n (this.l_desc = null),\n (this.d_desc = null),\n (this.bl_desc = null),\n (this.bl_count = new c.Buf16(k + 1)),\n (this.heap = new c.Buf16(2 * s + 1)),\n D(this.heap),\n (this.heap_len = 0),\n (this.heap_max = 0),\n (this.depth = new c.Buf16(2 * s + 1)),\n D(this.depth),\n (this.l_buf = 0),\n (this.lit_bufsize = 0),\n (this.last_lit = 0),\n (this.d_buf = 0),\n (this.opt_len = 0),\n (this.static_len = 0),\n (this.matches = 0),\n (this.insert = 0),\n (this.bi_buf = 0),\n (this.bi_valid = 0);\n }\n function G(e) {\n var t;\n return e && e.state\n ? ((e.total_in = e.total_out = 0),\n (e.data_type = i),\n ((t = e.state).pending = 0),\n (t.pending_out = 0),\n t.wrap < 0 && (t.wrap = -t.wrap),\n (t.status = t.wrap ? C : E),\n (e.adler = 2 === t.wrap ? 0 : 1),\n (t.last_flush = l),\n u._tr_init(t),\n m)\n : R(e, _);\n }\n function K(e) {\n var t = G(e);\n return (\n t === m &&\n (function (e) {\n (e.window_size = 2 * e.w_size),\n D(e.head),\n (e.max_lazy_match = h[e.level].max_lazy),\n (e.good_match = h[e.level].good_length),\n (e.nice_match = h[e.level].nice_length),\n (e.max_chain_length = h[e.level].max_chain),\n (e.strstart = 0),\n (e.block_start = 0),\n (e.lookahead = 0),\n (e.insert = 0),\n (e.match_length = e.prev_length = x - 1),\n (e.match_available = 0),\n (e.ins_h = 0);\n })(e.state),\n t\n );\n }\n function Y(e, t, r, n, i, s) {\n if (!e) return _;\n var a = 1;\n if (\n (t === g && (t = 6),\n n < 0\n ? ((a = 0), (n = -n))\n : 15 < n && ((a = 2), (n -= 16)),\n i < 1 ||\n y < i ||\n r !== v ||\n n < 8 ||\n 15 < n ||\n t < 0 ||\n 9 < t ||\n s < 0 ||\n b < s)\n )\n return R(e, _);\n 8 === n && (n = 9);\n var o = new H();\n return (\n ((e.state = o).strm = e),\n (o.wrap = a),\n (o.gzhead = null),\n (o.w_bits = n),\n (o.w_size = 1 << o.w_bits),\n (o.w_mask = o.w_size - 1),\n (o.hash_bits = i + 7),\n (o.hash_size = 1 << o.hash_bits),\n (o.hash_mask = o.hash_size - 1),\n (o.hash_shift = ~~((o.hash_bits + x - 1) / x)),\n (o.window = new c.Buf8(2 * o.w_size)),\n (o.head = new c.Buf16(o.hash_size)),\n (o.prev = new c.Buf16(o.w_size)),\n (o.lit_bufsize = 1 << (i + 6)),\n (o.pending_buf_size = 4 * o.lit_bufsize),\n (o.pending_buf = new c.Buf8(o.pending_buf_size)),\n (o.d_buf = 1 * o.lit_bufsize),\n (o.l_buf = 3 * o.lit_bufsize),\n (o.level = t),\n (o.strategy = s),\n (o.method = r),\n K(e)\n );\n }\n (h = [\n new M(0, 0, 0, 0, function (e, t) {\n var r = 65535;\n for (\n r > e.pending_buf_size - 5 &&\n (r = e.pending_buf_size - 5);\n ;\n\n ) {\n if (e.lookahead <= 1) {\n if ((j(e), 0 === e.lookahead && t === l)) return A;\n if (0 === e.lookahead) break;\n }\n (e.strstart += e.lookahead), (e.lookahead = 0);\n var n = e.block_start + r;\n if (\n (0 === e.strstart || e.strstart >= n) &&\n ((e.lookahead = e.strstart - n),\n (e.strstart = n),\n N(e, !1),\n 0 === e.strm.avail_out)\n )\n return A;\n if (\n e.strstart - e.block_start >= e.w_size - z &&\n (N(e, !1), 0 === e.strm.avail_out)\n )\n return A;\n }\n return (\n (e.insert = 0),\n t === f\n ? (N(e, !0), 0 === e.strm.avail_out ? O : B)\n : (e.strstart > e.block_start &&\n (N(e, !1), e.strm.avail_out),\n A)\n );\n }),\n new M(4, 4, 8, 4, Z),\n new M(4, 5, 16, 8, Z),\n new M(4, 6, 32, 32, Z),\n new M(4, 4, 16, 16, W),\n new M(8, 16, 32, 32, W),\n new M(8, 16, 128, 128, W),\n new M(8, 32, 128, 256, W),\n new M(32, 128, 258, 1024, W),\n new M(32, 258, 258, 4096, W),\n ]),\n (r.deflateInit = function (e, t) {\n return Y(e, t, v, 15, 8, 0);\n }),\n (r.deflateInit2 = Y),\n (r.deflateReset = K),\n (r.deflateResetKeep = G),\n (r.deflateSetHeader = function (e, t) {\n return e && e.state\n ? 2 !== e.state.wrap\n ? _\n : ((e.state.gzhead = t), m)\n : _;\n }),\n (r.deflate = function (e, t) {\n var r, n, i, s;\n if (!e || !e.state || 5 < t || t < 0)\n return e ? R(e, _) : _;\n if (\n ((n = e.state),\n !e.output ||\n (!e.input && 0 !== e.avail_in) ||\n (666 === n.status && t !== f))\n )\n return R(e, 0 === e.avail_out ? -5 : _);\n if (\n ((n.strm = e),\n (r = n.last_flush),\n (n.last_flush = t),\n n.status === C)\n )\n if (2 === n.wrap)\n (e.adler = 0),\n U(n, 31),\n U(n, 139),\n U(n, 8),\n n.gzhead\n ? (U(\n n,\n (n.gzhead.text ? 1 : 0) +\n (n.gzhead.hcrc ? 2 : 0) +\n (n.gzhead.extra ? 4 : 0) +\n (n.gzhead.name ? 8 : 0) +\n (n.gzhead.comment ? 16 : 0)\n ),\n U(n, 255 & n.gzhead.time),\n U(n, (n.gzhead.time >> 8) & 255),\n U(n, (n.gzhead.time >> 16) & 255),\n U(n, (n.gzhead.time >> 24) & 255),\n U(\n n,\n 9 === n.level\n ? 2\n : 2 <= n.strategy || n.level < 2\n ? 4\n : 0\n ),\n U(n, 255 & n.gzhead.os),\n n.gzhead.extra &&\n n.gzhead.extra.length &&\n (U(n, 255 & n.gzhead.extra.length),\n U(n, (n.gzhead.extra.length >> 8) & 255)),\n n.gzhead.hcrc &&\n (e.adler = p(\n e.adler,\n n.pending_buf,\n n.pending,\n 0\n )),\n (n.gzindex = 0),\n (n.status = 69))\n : (U(n, 0),\n U(n, 0),\n U(n, 0),\n U(n, 0),\n U(n, 0),\n U(\n n,\n 9 === n.level\n ? 2\n : 2 <= n.strategy || n.level < 2\n ? 4\n : 0\n ),\n U(n, 3),\n (n.status = E));\n else {\n var a = (v + ((n.w_bits - 8) << 4)) << 8;\n (a |=\n (2 <= n.strategy || n.level < 2\n ? 0\n : n.level < 6\n ? 1\n : 6 === n.level\n ? 2\n : 3) << 6),\n 0 !== n.strstart && (a |= 32),\n (a += 31 - (a % 31)),\n (n.status = E),\n P(n, a),\n 0 !== n.strstart &&\n (P(n, e.adler >>> 16), P(n, 65535 & e.adler)),\n (e.adler = 1);\n }\n if (69 === n.status)\n if (n.gzhead.extra) {\n for (\n i = n.pending;\n n.gzindex < (65535 & n.gzhead.extra.length) &&\n (n.pending !== n.pending_buf_size ||\n (n.gzhead.hcrc &&\n n.pending > i &&\n (e.adler = p(\n e.adler,\n n.pending_buf,\n n.pending - i,\n i\n )),\n F(e),\n (i = n.pending),\n n.pending !== n.pending_buf_size));\n\n )\n U(n, 255 & n.gzhead.extra[n.gzindex]), n.gzindex++;\n n.gzhead.hcrc &&\n n.pending > i &&\n (e.adler = p(\n e.adler,\n n.pending_buf,\n n.pending - i,\n i\n )),\n n.gzindex === n.gzhead.extra.length &&\n ((n.gzindex = 0), (n.status = 73));\n } else n.status = 73;\n if (73 === n.status)\n if (n.gzhead.name) {\n i = n.pending;\n do {\n if (\n n.pending === n.pending_buf_size &&\n (n.gzhead.hcrc &&\n n.pending > i &&\n (e.adler = p(\n e.adler,\n n.pending_buf,\n n.pending - i,\n i\n )),\n F(e),\n (i = n.pending),\n n.pending === n.pending_buf_size)\n ) {\n s = 1;\n break;\n }\n (s =\n n.gzindex < n.gzhead.name.length\n ? 255 & n.gzhead.name.charCodeAt(n.gzindex++)\n : 0),\n U(n, s);\n } while (0 !== s);\n n.gzhead.hcrc &&\n n.pending > i &&\n (e.adler = p(\n e.adler,\n n.pending_buf,\n n.pending - i,\n i\n )),\n 0 === s && ((n.gzindex = 0), (n.status = 91));\n } else n.status = 91;\n if (91 === n.status)\n if (n.gzhead.comment) {\n i = n.pending;\n do {\n if (\n n.pending === n.pending_buf_size &&\n (n.gzhead.hcrc &&\n n.pending > i &&\n (e.adler = p(\n e.adler,\n n.pending_buf,\n n.pending - i,\n i\n )),\n F(e),\n (i = n.pending),\n n.pending === n.pending_buf_size)\n ) {\n s = 1;\n break;\n }\n (s =\n n.gzindex < n.gzhead.comment.length\n ? 255 & n.gzhead.comment.charCodeAt(n.gzindex++)\n : 0),\n U(n, s);\n } while (0 !== s);\n n.gzhead.hcrc &&\n n.pending > i &&\n (e.adler = p(\n e.adler,\n n.pending_buf,\n n.pending - i,\n i\n )),\n 0 === s && (n.status = 103);\n } else n.status = 103;\n if (\n (103 === n.status &&\n (n.gzhead.hcrc\n ? (n.pending + 2 > n.pending_buf_size && F(e),\n n.pending + 2 <= n.pending_buf_size &&\n (U(n, 255 & e.adler),\n U(n, (e.adler >> 8) & 255),\n (e.adler = 0),\n (n.status = E)))\n : (n.status = E)),\n 0 !== n.pending)\n ) {\n if ((F(e), 0 === e.avail_out))\n return (n.last_flush = -1), m;\n } else if (0 === e.avail_in && T(t) <= T(r) && t !== f)\n return R(e, -5);\n if (666 === n.status && 0 !== e.avail_in) return R(e, -5);\n if (\n 0 !== e.avail_in ||\n 0 !== n.lookahead ||\n (t !== l && 666 !== n.status)\n ) {\n var o =\n 2 === n.strategy\n ? (function (e, t) {\n for (var r; ; ) {\n if (\n 0 === e.lookahead &&\n (j(e), 0 === e.lookahead)\n ) {\n if (t === l) return A;\n break;\n }\n if (\n ((e.match_length = 0),\n (r = u._tr_tally(e, 0, e.window[e.strstart])),\n e.lookahead--,\n e.strstart++,\n r && (N(e, !1), 0 === e.strm.avail_out))\n )\n return A;\n }\n return (\n (e.insert = 0),\n t === f\n ? (N(e, !0), 0 === e.strm.avail_out ? O : B)\n : e.last_lit &&\n (N(e, !1), 0 === e.strm.avail_out)\n ? A\n : I\n );\n })(n, t)\n : 3 === n.strategy\n ? (function (e, t) {\n for (var r, n, i, s, a = e.window; ; ) {\n if (e.lookahead <= S) {\n if ((j(e), e.lookahead <= S && t === l))\n return A;\n if (0 === e.lookahead) break;\n }\n if (\n ((e.match_length = 0),\n e.lookahead >= x &&\n 0 < e.strstart &&\n (n = a[(i = e.strstart - 1)]) === a[++i] &&\n n === a[++i] &&\n n === a[++i])\n ) {\n s = e.strstart + S;\n do {} while (\n n === a[++i] &&\n n === a[++i] &&\n n === a[++i] &&\n n === a[++i] &&\n n === a[++i] &&\n n === a[++i] &&\n n === a[++i] &&\n n === a[++i] &&\n i < s\n );\n (e.match_length = S - (s - i)),\n e.match_length > e.lookahead &&\n (e.match_length = e.lookahead);\n }\n if (\n (e.match_length >= x\n ? ((r = u._tr_tally(\n e,\n 1,\n e.match_length - x\n )),\n (e.lookahead -= e.match_length),\n (e.strstart += e.match_length),\n (e.match_length = 0))\n : ((r = u._tr_tally(\n e,\n 0,\n e.window[e.strstart]\n )),\n e.lookahead--,\n e.strstart++),\n r && (N(e, !1), 0 === e.strm.avail_out))\n )\n return A;\n }\n return (\n (e.insert = 0),\n t === f\n ? (N(e, !0), 0 === e.strm.avail_out ? O : B)\n : e.last_lit &&\n (N(e, !1), 0 === e.strm.avail_out)\n ? A\n : I\n );\n })(n, t)\n : h[n.level].func(n, t);\n if (\n ((o !== O && o !== B) || (n.status = 666),\n o === A || o === O)\n )\n return 0 === e.avail_out && (n.last_flush = -1), m;\n if (\n o === I &&\n (1 === t\n ? u._tr_align(n)\n : 5 !== t &&\n (u._tr_stored_block(n, 0, 0, !1),\n 3 === t &&\n (D(n.head),\n 0 === n.lookahead &&\n ((n.strstart = 0),\n (n.block_start = 0),\n (n.insert = 0)))),\n F(e),\n 0 === e.avail_out)\n )\n return (n.last_flush = -1), m;\n }\n return t !== f\n ? m\n : n.wrap <= 0\n ? 1\n : (2 === n.wrap\n ? (U(n, 255 & e.adler),\n U(n, (e.adler >> 8) & 255),\n U(n, (e.adler >> 16) & 255),\n U(n, (e.adler >> 24) & 255),\n U(n, 255 & e.total_in),\n U(n, (e.total_in >> 8) & 255),\n U(n, (e.total_in >> 16) & 255),\n U(n, (e.total_in >> 24) & 255))\n : (P(n, e.adler >>> 16), P(n, 65535 & e.adler)),\n F(e),\n 0 < n.wrap && (n.wrap = -n.wrap),\n 0 !== n.pending ? m : 1);\n }),\n (r.deflateEnd = function (e) {\n var t;\n return e && e.state\n ? (t = e.state.status) !== C &&\n 69 !== t &&\n 73 !== t &&\n 91 !== t &&\n 103 !== t &&\n t !== E &&\n 666 !== t\n ? R(e, _)\n : ((e.state = null), t === E ? R(e, -3) : m)\n : _;\n }),\n (r.deflateSetDictionary = function (e, t) {\n var r,\n n,\n i,\n s,\n a,\n o,\n h,\n u,\n l = t.length;\n if (!e || !e.state) return _;\n if (\n 2 === (s = (r = e.state).wrap) ||\n (1 === s && r.status !== C) ||\n r.lookahead\n )\n return _;\n for (\n 1 === s && (e.adler = d(e.adler, t, l, 0)),\n r.wrap = 0,\n l >= r.w_size &&\n (0 === s &&\n (D(r.head),\n (r.strstart = 0),\n (r.block_start = 0),\n (r.insert = 0)),\n (u = new c.Buf8(r.w_size)),\n c.arraySet(u, t, l - r.w_size, r.w_size, 0),\n (t = u),\n (l = r.w_size)),\n a = e.avail_in,\n o = e.next_in,\n h = e.input,\n e.avail_in = l,\n e.next_in = 0,\n e.input = t,\n j(r);\n r.lookahead >= x;\n\n ) {\n for (\n n = r.strstart, i = r.lookahead - (x - 1);\n (r.ins_h =\n ((r.ins_h << r.hash_shift) ^ r.window[n + x - 1]) &\n r.hash_mask),\n (r.prev[n & r.w_mask] = r.head[r.ins_h]),\n (r.head[r.ins_h] = n),\n n++,\n --i;\n\n );\n (r.strstart = n), (r.lookahead = x - 1), j(r);\n }\n return (\n (r.strstart += r.lookahead),\n (r.block_start = r.strstart),\n (r.insert = r.lookahead),\n (r.lookahead = 0),\n (r.match_length = r.prev_length = x - 1),\n (r.match_available = 0),\n (e.next_in = o),\n (e.input = h),\n (e.avail_in = a),\n (r.wrap = s),\n m\n );\n }),\n (r.deflateInfo = \"pako deflate (from Nodeca project)\");\n },\n {\n \"../utils/common\": 41,\n \"./adler32\": 43,\n \"./crc32\": 45,\n \"./messages\": 51,\n \"./trees\": 52,\n },\n ],\n 47: [\n function (e, t, r) {\n \"use strict\";\n t.exports = function () {\n (this.text = 0),\n (this.time = 0),\n (this.xflags = 0),\n (this.os = 0),\n (this.extra = null),\n (this.extra_len = 0),\n (this.name = \"\"),\n (this.comment = \"\"),\n (this.hcrc = 0),\n (this.done = !1);\n };\n },\n {},\n ],\n 48: [\n function (e, t, r) {\n \"use strict\";\n t.exports = function (e, t) {\n var r,\n n,\n i,\n s,\n a,\n o,\n h,\n u,\n l,\n f,\n c,\n d,\n p,\n m,\n _,\n g,\n b,\n v,\n y,\n w,\n k,\n x,\n S,\n z,\n C;\n (r = e.state),\n (n = e.next_in),\n (z = e.input),\n (i = n + (e.avail_in - 5)),\n (s = e.next_out),\n (C = e.output),\n (a = s - (t - e.avail_out)),\n (o = s + (e.avail_out - 257)),\n (h = r.dmax),\n (u = r.wsize),\n (l = r.whave),\n (f = r.wnext),\n (c = r.window),\n (d = r.hold),\n (p = r.bits),\n (m = r.lencode),\n (_ = r.distcode),\n (g = (1 << r.lenbits) - 1),\n (b = (1 << r.distbits) - 1);\n e: do {\n p < 15 &&\n ((d += z[n++] << p),\n (p += 8),\n (d += z[n++] << p),\n (p += 8)),\n (v = m[d & g]);\n t: for (;;) {\n if (\n ((d >>>= y = v >>> 24),\n (p -= y),\n 0 === (y = (v >>> 16) & 255))\n )\n C[s++] = 65535 & v;\n else {\n if (!(16 & y)) {\n if (0 == (64 & y)) {\n v = m[(65535 & v) + (d & ((1 << y) - 1))];\n continue t;\n }\n if (32 & y) {\n r.mode = 12;\n break e;\n }\n (e.msg = \"invalid literal/length code\"),\n (r.mode = 30);\n break e;\n }\n (w = 65535 & v),\n (y &= 15) &&\n (p < y && ((d += z[n++] << p), (p += 8)),\n (w += d & ((1 << y) - 1)),\n (d >>>= y),\n (p -= y)),\n p < 15 &&\n ((d += z[n++] << p),\n (p += 8),\n (d += z[n++] << p),\n (p += 8)),\n (v = _[d & b]);\n r: for (;;) {\n if (\n ((d >>>= y = v >>> 24),\n (p -= y),\n !(16 & (y = (v >>> 16) & 255)))\n ) {\n if (0 == (64 & y)) {\n v = _[(65535 & v) + (d & ((1 << y) - 1))];\n continue r;\n }\n (e.msg = \"invalid distance code\"), (r.mode = 30);\n break e;\n }\n if (\n ((k = 65535 & v),\n p < (y &= 15) &&\n ((d += z[n++] << p),\n (p += 8) < y && ((d += z[n++] << p), (p += 8))),\n h < (k += d & ((1 << y) - 1)))\n ) {\n (e.msg = \"invalid distance too far back\"),\n (r.mode = 30);\n break e;\n }\n if (((d >>>= y), (p -= y), (y = s - a) < k)) {\n if (l < (y = k - y) && r.sane) {\n (e.msg = \"invalid distance too far back\"),\n (r.mode = 30);\n break e;\n }\n if (((S = c), (x = 0) === f)) {\n if (((x += u - y), y < w)) {\n for (w -= y; (C[s++] = c[x++]), --y; );\n (x = s - k), (S = C);\n }\n } else if (f < y) {\n if (((x += u + f - y), (y -= f) < w)) {\n for (w -= y; (C[s++] = c[x++]), --y; );\n if (((x = 0), f < w)) {\n for (w -= y = f; (C[s++] = c[x++]), --y; );\n (x = s - k), (S = C);\n }\n }\n } else if (((x += f - y), y < w)) {\n for (w -= y; (C[s++] = c[x++]), --y; );\n (x = s - k), (S = C);\n }\n for (; 2 < w; )\n (C[s++] = S[x++]),\n (C[s++] = S[x++]),\n (C[s++] = S[x++]),\n (w -= 3);\n w &&\n ((C[s++] = S[x++]), 1 < w && (C[s++] = S[x++]));\n } else {\n for (\n x = s - k;\n (C[s++] = C[x++]),\n (C[s++] = C[x++]),\n (C[s++] = C[x++]),\n 2 < (w -= 3);\n\n );\n w &&\n ((C[s++] = C[x++]), 1 < w && (C[s++] = C[x++]));\n }\n break;\n }\n }\n break;\n }\n } while (n < i && s < o);\n (n -= w = p >> 3),\n (d &= (1 << (p -= w << 3)) - 1),\n (e.next_in = n),\n (e.next_out = s),\n (e.avail_in = n < i ? i - n + 5 : 5 - (n - i)),\n (e.avail_out = s < o ? o - s + 257 : 257 - (s - o)),\n (r.hold = d),\n (r.bits = p);\n };\n },\n {},\n ],\n 49: [\n function (e, t, r) {\n \"use strict\";\n var I = e(\"../utils/common\"),\n O = e(\"./adler32\"),\n B = e(\"./crc32\"),\n R = e(\"./inffast\"),\n T = e(\"./inftrees\"),\n D = 1,\n F = 2,\n N = 0,\n U = -2,\n P = 1,\n n = 852,\n i = 592;\n function L(e) {\n return (\n ((e >>> 24) & 255) +\n ((e >>> 8) & 65280) +\n ((65280 & e) << 8) +\n ((255 & e) << 24)\n );\n }\n function s() {\n (this.mode = 0),\n (this.last = !1),\n (this.wrap = 0),\n (this.havedict = !1),\n (this.flags = 0),\n (this.dmax = 0),\n (this.check = 0),\n (this.total = 0),\n (this.head = null),\n (this.wbits = 0),\n (this.wsize = 0),\n (this.whave = 0),\n (this.wnext = 0),\n (this.window = null),\n (this.hold = 0),\n (this.bits = 0),\n (this.length = 0),\n (this.offset = 0),\n (this.extra = 0),\n (this.lencode = null),\n (this.distcode = null),\n (this.lenbits = 0),\n (this.distbits = 0),\n (this.ncode = 0),\n (this.nlen = 0),\n (this.ndist = 0),\n (this.have = 0),\n (this.next = null),\n (this.lens = new I.Buf16(320)),\n (this.work = new I.Buf16(288)),\n (this.lendyn = null),\n (this.distdyn = null),\n (this.sane = 0),\n (this.back = 0),\n (this.was = 0);\n }\n function a(e) {\n var t;\n return e && e.state\n ? ((t = e.state),\n (e.total_in = e.total_out = t.total = 0),\n (e.msg = \"\"),\n t.wrap && (e.adler = 1 & t.wrap),\n (t.mode = P),\n (t.last = 0),\n (t.havedict = 0),\n (t.dmax = 32768),\n (t.head = null),\n (t.hold = 0),\n (t.bits = 0),\n (t.lencode = t.lendyn = new I.Buf32(n)),\n (t.distcode = t.distdyn = new I.Buf32(i)),\n (t.sane = 1),\n (t.back = -1),\n N)\n : U;\n }\n function o(e) {\n var t;\n return e && e.state\n ? (((t = e.state).wsize = 0),\n (t.whave = 0),\n (t.wnext = 0),\n a(e))\n : U;\n }\n function h(e, t) {\n var r, n;\n return e && e.state\n ? ((n = e.state),\n t < 0\n ? ((r = 0), (t = -t))\n : ((r = 1 + (t >> 4)), t < 48 && (t &= 15)),\n t && (t < 8 || 15 < t)\n ? U\n : (null !== n.window &&\n n.wbits !== t &&\n (n.window = null),\n (n.wrap = r),\n (n.wbits = t),\n o(e)))\n : U;\n }\n function u(e, t) {\n var r, n;\n return e\n ? ((n = new s()),\n ((e.state = n).window = null),\n (r = h(e, t)) !== N && (e.state = null),\n r)\n : U;\n }\n var l,\n f,\n c = !0;\n function j(e) {\n if (c) {\n var t;\n for (\n l = new I.Buf32(512), f = new I.Buf32(32), t = 0;\n t < 144;\n\n )\n e.lens[t++] = 8;\n for (; t < 256; ) e.lens[t++] = 9;\n for (; t < 280; ) e.lens[t++] = 7;\n for (; t < 288; ) e.lens[t++] = 8;\n for (\n T(D, e.lens, 0, 288, l, 0, e.work, { bits: 9 }), t = 0;\n t < 32;\n\n )\n e.lens[t++] = 5;\n T(F, e.lens, 0, 32, f, 0, e.work, { bits: 5 }), (c = !1);\n }\n (e.lencode = l),\n (e.lenbits = 9),\n (e.distcode = f),\n (e.distbits = 5);\n }\n function Z(e, t, r, n) {\n var i,\n s = e.state;\n return (\n null === s.window &&\n ((s.wsize = 1 << s.wbits),\n (s.wnext = 0),\n (s.whave = 0),\n (s.window = new I.Buf8(s.wsize))),\n n >= s.wsize\n ? (I.arraySet(s.window, t, r - s.wsize, s.wsize, 0),\n (s.wnext = 0),\n (s.whave = s.wsize))\n : (n < (i = s.wsize - s.wnext) && (i = n),\n I.arraySet(s.window, t, r - n, i, s.wnext),\n (n -= i)\n ? (I.arraySet(s.window, t, r - n, n, 0),\n (s.wnext = n),\n (s.whave = s.wsize))\n : ((s.wnext += i),\n s.wnext === s.wsize && (s.wnext = 0),\n s.whave < s.wsize && (s.whave += i))),\n 0\n );\n }\n (r.inflateReset = o),\n (r.inflateReset2 = h),\n (r.inflateResetKeep = a),\n (r.inflateInit = function (e) {\n return u(e, 15);\n }),\n (r.inflateInit2 = u),\n (r.inflate = function (e, t) {\n var r,\n n,\n i,\n s,\n a,\n o,\n h,\n u,\n l,\n f,\n c,\n d,\n p,\n m,\n _,\n g,\n b,\n v,\n y,\n w,\n k,\n x,\n S,\n z,\n C = 0,\n E = new I.Buf8(4),\n A = [\n 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2,\n 14, 1, 15,\n ];\n if (\n !e ||\n !e.state ||\n !e.output ||\n (!e.input && 0 !== e.avail_in)\n )\n return U;\n 12 === (r = e.state).mode && (r.mode = 13),\n (a = e.next_out),\n (i = e.output),\n (h = e.avail_out),\n (s = e.next_in),\n (n = e.input),\n (o = e.avail_in),\n (u = r.hold),\n (l = r.bits),\n (f = o),\n (c = h),\n (x = N);\n e: for (;;)\n switch (r.mode) {\n case P:\n if (0 === r.wrap) {\n r.mode = 13;\n break;\n }\n for (; l < 16; ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n if (2 & r.wrap && 35615 === u) {\n (E[(r.check = 0)] = 255 & u),\n (E[1] = (u >>> 8) & 255),\n (r.check = B(r.check, E, 2, 0)),\n (l = u = 0),\n (r.mode = 2);\n break;\n }\n if (\n ((r.flags = 0),\n r.head && (r.head.done = !1),\n !(1 & r.wrap) || (((255 & u) << 8) + (u >> 8)) % 31)\n ) {\n (e.msg = \"incorrect header check\"), (r.mode = 30);\n break;\n }\n if (8 != (15 & u)) {\n (e.msg = \"unknown compression method\"),\n (r.mode = 30);\n break;\n }\n if (\n ((l -= 4),\n (k = 8 + (15 & (u >>>= 4))),\n 0 === r.wbits)\n )\n r.wbits = k;\n else if (k > r.wbits) {\n (e.msg = \"invalid window size\"), (r.mode = 30);\n break;\n }\n (r.dmax = 1 << k),\n (e.adler = r.check = 1),\n (r.mode = 512 & u ? 10 : 12),\n (l = u = 0);\n break;\n case 2:\n for (; l < 16; ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n if (((r.flags = u), 8 != (255 & r.flags))) {\n (e.msg = \"unknown compression method\"),\n (r.mode = 30);\n break;\n }\n if (57344 & r.flags) {\n (e.msg = \"unknown header flags set\"), (r.mode = 30);\n break;\n }\n r.head && (r.head.text = (u >> 8) & 1),\n 512 & r.flags &&\n ((E[0] = 255 & u),\n (E[1] = (u >>> 8) & 255),\n (r.check = B(r.check, E, 2, 0))),\n (l = u = 0),\n (r.mode = 3);\n case 3:\n for (; l < 32; ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n r.head && (r.head.time = u),\n 512 & r.flags &&\n ((E[0] = 255 & u),\n (E[1] = (u >>> 8) & 255),\n (E[2] = (u >>> 16) & 255),\n (E[3] = (u >>> 24) & 255),\n (r.check = B(r.check, E, 4, 0))),\n (l = u = 0),\n (r.mode = 4);\n case 4:\n for (; l < 16; ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n r.head &&\n ((r.head.xflags = 255 & u), (r.head.os = u >> 8)),\n 512 & r.flags &&\n ((E[0] = 255 & u),\n (E[1] = (u >>> 8) & 255),\n (r.check = B(r.check, E, 2, 0))),\n (l = u = 0),\n (r.mode = 5);\n case 5:\n if (1024 & r.flags) {\n for (; l < 16; ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n (r.length = u),\n r.head && (r.head.extra_len = u),\n 512 & r.flags &&\n ((E[0] = 255 & u),\n (E[1] = (u >>> 8) & 255),\n (r.check = B(r.check, E, 2, 0))),\n (l = u = 0);\n } else r.head && (r.head.extra = null);\n r.mode = 6;\n case 6:\n if (\n 1024 & r.flags &&\n (o < (d = r.length) && (d = o),\n d &&\n (r.head &&\n ((k = r.head.extra_len - r.length),\n r.head.extra ||\n (r.head.extra = new Array(r.head.extra_len)),\n I.arraySet(r.head.extra, n, s, d, k)),\n 512 & r.flags && (r.check = B(r.check, n, d, s)),\n (o -= d),\n (s += d),\n (r.length -= d)),\n r.length)\n )\n break e;\n (r.length = 0), (r.mode = 7);\n case 7:\n if (2048 & r.flags) {\n if (0 === o) break e;\n for (\n d = 0;\n (k = n[s + d++]),\n r.head &&\n k &&\n r.length < 65536 &&\n (r.head.name += String.fromCharCode(k)),\n k && d < o;\n\n );\n if (\n (512 & r.flags && (r.check = B(r.check, n, d, s)),\n (o -= d),\n (s += d),\n k)\n )\n break e;\n } else r.head && (r.head.name = null);\n (r.length = 0), (r.mode = 8);\n case 8:\n if (4096 & r.flags) {\n if (0 === o) break e;\n for (\n d = 0;\n (k = n[s + d++]),\n r.head &&\n k &&\n r.length < 65536 &&\n (r.head.comment += String.fromCharCode(k)),\n k && d < o;\n\n );\n if (\n (512 & r.flags && (r.check = B(r.check, n, d, s)),\n (o -= d),\n (s += d),\n k)\n )\n break e;\n } else r.head && (r.head.comment = null);\n r.mode = 9;\n case 9:\n if (512 & r.flags) {\n for (; l < 16; ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n if (u !== (65535 & r.check)) {\n (e.msg = \"header crc mismatch\"), (r.mode = 30);\n break;\n }\n l = u = 0;\n }\n r.head &&\n ((r.head.hcrc = (r.flags >> 9) & 1),\n (r.head.done = !0)),\n (e.adler = r.check = 0),\n (r.mode = 12);\n break;\n case 10:\n for (; l < 32; ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n (e.adler = r.check = L(u)),\n (l = u = 0),\n (r.mode = 11);\n case 11:\n if (0 === r.havedict)\n return (\n (e.next_out = a),\n (e.avail_out = h),\n (e.next_in = s),\n (e.avail_in = o),\n (r.hold = u),\n (r.bits = l),\n 2\n );\n (e.adler = r.check = 1), (r.mode = 12);\n case 12:\n if (5 === t || 6 === t) break e;\n case 13:\n if (r.last) {\n (u >>>= 7 & l), (l -= 7 & l), (r.mode = 27);\n break;\n }\n for (; l < 3; ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n switch (\n ((r.last = 1 & u), (l -= 1), 3 & (u >>>= 1))\n ) {\n case 0:\n r.mode = 14;\n break;\n case 1:\n if ((j(r), (r.mode = 20), 6 !== t)) break;\n (u >>>= 2), (l -= 2);\n break e;\n case 2:\n r.mode = 17;\n break;\n case 3:\n (e.msg = \"invalid block type\"), (r.mode = 30);\n }\n (u >>>= 2), (l -= 2);\n break;\n case 14:\n for (u >>>= 7 & l, l -= 7 & l; l < 32; ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n if ((65535 & u) != ((u >>> 16) ^ 65535)) {\n (e.msg = \"invalid stored block lengths\"),\n (r.mode = 30);\n break;\n }\n if (\n ((r.length = 65535 & u),\n (l = u = 0),\n (r.mode = 15),\n 6 === t)\n )\n break e;\n case 15:\n r.mode = 16;\n case 16:\n if ((d = r.length)) {\n if ((o < d && (d = o), h < d && (d = h), 0 === d))\n break e;\n I.arraySet(i, n, s, d, a),\n (o -= d),\n (s += d),\n (h -= d),\n (a += d),\n (r.length -= d);\n break;\n }\n r.mode = 12;\n break;\n case 17:\n for (; l < 14; ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n if (\n ((r.nlen = 257 + (31 & u)),\n (u >>>= 5),\n (l -= 5),\n (r.ndist = 1 + (31 & u)),\n (u >>>= 5),\n (l -= 5),\n (r.ncode = 4 + (15 & u)),\n (u >>>= 4),\n (l -= 4),\n 286 < r.nlen || 30 < r.ndist)\n ) {\n (e.msg = \"too many length or distance symbols\"),\n (r.mode = 30);\n break;\n }\n (r.have = 0), (r.mode = 18);\n case 18:\n for (; r.have < r.ncode; ) {\n for (; l < 3; ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n (r.lens[A[r.have++]] = 7 & u), (u >>>= 3), (l -= 3);\n }\n for (; r.have < 19; ) r.lens[A[r.have++]] = 0;\n if (\n ((r.lencode = r.lendyn),\n (r.lenbits = 7),\n (S = { bits: r.lenbits }),\n (x = T(0, r.lens, 0, 19, r.lencode, 0, r.work, S)),\n (r.lenbits = S.bits),\n x)\n ) {\n (e.msg = \"invalid code lengths set\"), (r.mode = 30);\n break;\n }\n (r.have = 0), (r.mode = 19);\n case 19:\n for (; r.have < r.nlen + r.ndist; ) {\n for (\n ;\n (g =\n ((C = r.lencode[u & ((1 << r.lenbits) - 1)]) >>>\n 16) &\n 255),\n (b = 65535 & C),\n !((_ = C >>> 24) <= l);\n\n ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n if (b < 16)\n (u >>>= _), (l -= _), (r.lens[r.have++] = b);\n else {\n if (16 === b) {\n for (z = _ + 2; l < z; ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n if (((u >>>= _), (l -= _), 0 === r.have)) {\n (e.msg = \"invalid bit length repeat\"),\n (r.mode = 30);\n break;\n }\n (k = r.lens[r.have - 1]),\n (d = 3 + (3 & u)),\n (u >>>= 2),\n (l -= 2);\n } else if (17 === b) {\n for (z = _ + 3; l < z; ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n (l -= _),\n (k = 0),\n (d = 3 + (7 & (u >>>= _))),\n (u >>>= 3),\n (l -= 3);\n } else {\n for (z = _ + 7; l < z; ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n (l -= _),\n (k = 0),\n (d = 11 + (127 & (u >>>= _))),\n (u >>>= 7),\n (l -= 7);\n }\n if (r.have + d > r.nlen + r.ndist) {\n (e.msg = \"invalid bit length repeat\"),\n (r.mode = 30);\n break;\n }\n for (; d--; ) r.lens[r.have++] = k;\n }\n }\n if (30 === r.mode) break;\n if (0 === r.lens[256]) {\n (e.msg = \"invalid code -- missing end-of-block\"),\n (r.mode = 30);\n break;\n }\n if (\n ((r.lenbits = 9),\n (S = { bits: r.lenbits }),\n (x = T(\n D,\n r.lens,\n 0,\n r.nlen,\n r.lencode,\n 0,\n r.work,\n S\n )),\n (r.lenbits = S.bits),\n x)\n ) {\n (e.msg = \"invalid literal/lengths set\"),\n (r.mode = 30);\n break;\n }\n if (\n ((r.distbits = 6),\n (r.distcode = r.distdyn),\n (S = { bits: r.distbits }),\n (x = T(\n F,\n r.lens,\n r.nlen,\n r.ndist,\n r.distcode,\n 0,\n r.work,\n S\n )),\n (r.distbits = S.bits),\n x)\n ) {\n (e.msg = \"invalid distances set\"), (r.mode = 30);\n break;\n }\n if (((r.mode = 20), 6 === t)) break e;\n case 20:\n r.mode = 21;\n case 21:\n if (6 <= o && 258 <= h) {\n (e.next_out = a),\n (e.avail_out = h),\n (e.next_in = s),\n (e.avail_in = o),\n (r.hold = u),\n (r.bits = l),\n R(e, c),\n (a = e.next_out),\n (i = e.output),\n (h = e.avail_out),\n (s = e.next_in),\n (n = e.input),\n (o = e.avail_in),\n (u = r.hold),\n (l = r.bits),\n 12 === r.mode && (r.back = -1);\n break;\n }\n for (\n r.back = 0;\n (g =\n ((C = r.lencode[u & ((1 << r.lenbits) - 1)]) >>>\n 16) &\n 255),\n (b = 65535 & C),\n !((_ = C >>> 24) <= l);\n\n ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n if (g && 0 == (240 & g)) {\n for (\n v = _, y = g, w = b;\n (g =\n ((C =\n r.lencode[\n w + ((u & ((1 << (v + y)) - 1)) >> v)\n ]) >>>\n 16) &\n 255),\n (b = 65535 & C),\n !(v + (_ = C >>> 24) <= l);\n\n ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n (u >>>= v), (l -= v), (r.back += v);\n }\n if (\n ((u >>>= _),\n (l -= _),\n (r.back += _),\n (r.length = b),\n 0 === g)\n ) {\n r.mode = 26;\n break;\n }\n if (32 & g) {\n (r.back = -1), (r.mode = 12);\n break;\n }\n if (64 & g) {\n (e.msg = \"invalid literal/length code\"),\n (r.mode = 30);\n break;\n }\n (r.extra = 15 & g), (r.mode = 22);\n case 22:\n if (r.extra) {\n for (z = r.extra; l < z; ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n (r.length += u & ((1 << r.extra) - 1)),\n (u >>>= r.extra),\n (l -= r.extra),\n (r.back += r.extra);\n }\n (r.was = r.length), (r.mode = 23);\n case 23:\n for (\n ;\n (g =\n ((C = r.distcode[u & ((1 << r.distbits) - 1)]) >>>\n 16) &\n 255),\n (b = 65535 & C),\n !((_ = C >>> 24) <= l);\n\n ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n if (0 == (240 & g)) {\n for (\n v = _, y = g, w = b;\n (g =\n ((C =\n r.distcode[\n w + ((u & ((1 << (v + y)) - 1)) >> v)\n ]) >>>\n 16) &\n 255),\n (b = 65535 & C),\n !(v + (_ = C >>> 24) <= l);\n\n ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n (u >>>= v), (l -= v), (r.back += v);\n }\n if (((u >>>= _), (l -= _), (r.back += _), 64 & g)) {\n (e.msg = \"invalid distance code\"), (r.mode = 30);\n break;\n }\n (r.offset = b), (r.extra = 15 & g), (r.mode = 24);\n case 24:\n if (r.extra) {\n for (z = r.extra; l < z; ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n (r.offset += u & ((1 << r.extra) - 1)),\n (u >>>= r.extra),\n (l -= r.extra),\n (r.back += r.extra);\n }\n if (r.offset > r.dmax) {\n (e.msg = \"invalid distance too far back\"),\n (r.mode = 30);\n break;\n }\n r.mode = 25;\n case 25:\n if (0 === h) break e;\n if (((d = c - h), r.offset > d)) {\n if ((d = r.offset - d) > r.whave && r.sane) {\n (e.msg = \"invalid distance too far back\"),\n (r.mode = 30);\n break;\n }\n (p =\n d > r.wnext\n ? ((d -= r.wnext), r.wsize - d)\n : r.wnext - d),\n d > r.length && (d = r.length),\n (m = r.window);\n } else (m = i), (p = a - r.offset), (d = r.length);\n for (\n h < d && (d = h), h -= d, r.length -= d;\n (i[a++] = m[p++]), --d;\n\n );\n 0 === r.length && (r.mode = 21);\n break;\n case 26:\n if (0 === h) break e;\n (i[a++] = r.length), h--, (r.mode = 21);\n break;\n case 27:\n if (r.wrap) {\n for (; l < 32; ) {\n if (0 === o) break e;\n o--, (u |= n[s++] << l), (l += 8);\n }\n if (\n ((c -= h),\n (e.total_out += c),\n (r.total += c),\n c &&\n (e.adler = r.check =\n r.flags\n ? B(r.check, i, c, a - c)\n : O(r.check, i, c, a - c)),\n (c = h),\n (r.flags ? u : L(u)) !== r.check)\n ) {\n (e.msg = \"incorrect data check\"), (r.mode = 30);\n break;\n }\n l = u = 0;\n }\n r.mode = 28;\n case 28:\n if (r.wrap && r.flags) {\n for (; l < 32; ) {\n if (0 === o) break e;\n o--, (u += n[s++] << l), (l += 8);\n }\n if (u !== (4294967295 & r.total)) {\n (e.msg = \"incorrect length check\"), (r.mode = 30);\n break;\n }\n l = u = 0;\n }\n r.mode = 29;\n case 29:\n x = 1;\n break e;\n case 30:\n x = -3;\n break e;\n case 31:\n return -4;\n case 32:\n default:\n return U;\n }\n return (\n (e.next_out = a),\n (e.avail_out = h),\n (e.next_in = s),\n (e.avail_in = o),\n (r.hold = u),\n (r.bits = l),\n (r.wsize ||\n (c !== e.avail_out &&\n r.mode < 30 &&\n (r.mode < 27 || 4 !== t))) &&\n Z(e, e.output, e.next_out, c - e.avail_out)\n ? ((r.mode = 31), -4)\n : ((f -= e.avail_in),\n (c -= e.avail_out),\n (e.total_in += f),\n (e.total_out += c),\n (r.total += c),\n r.wrap &&\n c &&\n (e.adler = r.check =\n r.flags\n ? B(r.check, i, c, e.next_out - c)\n : O(r.check, i, c, e.next_out - c)),\n (e.data_type =\n r.bits +\n (r.last ? 64 : 0) +\n (12 === r.mode ? 128 : 0) +\n (20 === r.mode || 15 === r.mode ? 256 : 0)),\n ((0 == f && 0 === c) || 4 === t) &&\n x === N &&\n (x = -5),\n x)\n );\n }),\n (r.inflateEnd = function (e) {\n if (!e || !e.state) return U;\n var t = e.state;\n return t.window && (t.window = null), (e.state = null), N;\n }),\n (r.inflateGetHeader = function (e, t) {\n var r;\n return e && e.state\n ? 0 == (2 & (r = e.state).wrap)\n ? U\n : (((r.head = t).done = !1), N)\n : U;\n }),\n (r.inflateSetDictionary = function (e, t) {\n var r,\n n = t.length;\n return e && e.state\n ? 0 !== (r = e.state).wrap && 11 !== r.mode\n ? U\n : 11 === r.mode && O(1, t, n, 0) !== r.check\n ? -3\n : Z(e, t, n, n)\n ? ((r.mode = 31), -4)\n : ((r.havedict = 1), N)\n : U;\n }),\n (r.inflateInfo = \"pako inflate (from Nodeca project)\");\n },\n {\n \"../utils/common\": 41,\n \"./adler32\": 43,\n \"./crc32\": 45,\n \"./inffast\": 48,\n \"./inftrees\": 50,\n },\n ],\n 50: [\n function (e, t, r) {\n \"use strict\";\n var D = e(\"../utils/common\"),\n F = [\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35,\n 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0,\n ],\n N = [\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18,\n 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72,\n 78,\n ],\n U = [\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0,\n ],\n P = [\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22,\n 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29,\n 64, 64,\n ];\n t.exports = function (e, t, r, n, i, s, a, o) {\n var h,\n u,\n l,\n f,\n c,\n d,\n p,\n m,\n _,\n g = o.bits,\n b = 0,\n v = 0,\n y = 0,\n w = 0,\n k = 0,\n x = 0,\n S = 0,\n z = 0,\n C = 0,\n E = 0,\n A = null,\n I = 0,\n O = new D.Buf16(16),\n B = new D.Buf16(16),\n R = null,\n T = 0;\n for (b = 0; b <= 15; b++) O[b] = 0;\n for (v = 0; v < n; v++) O[t[r + v]]++;\n for (k = g, w = 15; 1 <= w && 0 === O[w]; w--);\n if ((w < k && (k = w), 0 === w))\n return (\n (i[s++] = 20971520), (i[s++] = 20971520), (o.bits = 1), 0\n );\n for (y = 1; y < w && 0 === O[y]; y++);\n for (k < y && (k = y), b = z = 1; b <= 15; b++)\n if (((z <<= 1), (z -= O[b]) < 0)) return -1;\n if (0 < z && (0 === e || 1 !== w)) return -1;\n for (B[1] = 0, b = 1; b < 15; b++) B[b + 1] = B[b] + O[b];\n for (v = 0; v < n; v++)\n 0 !== t[r + v] && (a[B[t[r + v]]++] = v);\n if (\n ((d =\n 0 === e\n ? ((A = R = a), 19)\n : 1 === e\n ? ((A = F), (I -= 257), (R = N), (T -= 257), 256)\n : ((A = U), (R = P), -1)),\n (b = y),\n (c = s),\n (S = v = E = 0),\n (l = -1),\n (f = (C = 1 << (x = k)) - 1),\n (1 === e && 852 < C) || (2 === e && 592 < C))\n )\n return 1;\n for (;;) {\n for (\n p = b - S,\n _ =\n a[v] < d\n ? ((m = 0), a[v])\n : a[v] > d\n ? ((m = R[T + a[v]]), A[I + a[v]])\n : ((m = 96), 0),\n h = 1 << (b - S),\n y = u = 1 << x;\n (i[c + (E >> S) + (u -= h)] =\n (p << 24) | (m << 16) | _ | 0),\n 0 !== u;\n\n );\n for (h = 1 << (b - 1); E & h; ) h >>= 1;\n if (\n (0 !== h ? ((E &= h - 1), (E += h)) : (E = 0),\n v++,\n 0 == --O[b])\n ) {\n if (b === w) break;\n b = t[r + a[v]];\n }\n if (k < b && (E & f) !== l) {\n for (\n 0 === S && (S = k), c += y, z = 1 << (x = b - S);\n x + S < w && !((z -= O[x + S]) <= 0);\n\n )\n x++, (z <<= 1);\n if (\n ((C += 1 << x),\n (1 === e && 852 < C) || (2 === e && 592 < C))\n )\n return 1;\n i[(l = E & f)] = (k << 24) | (x << 16) | (c - s) | 0;\n }\n }\n return (\n 0 !== E && (i[c + E] = ((b - S) << 24) | (64 << 16) | 0),\n (o.bits = k),\n 0\n );\n };\n },\n { \"../utils/common\": 41 },\n ],\n 51: [\n function (e, t, r) {\n \"use strict\";\n t.exports = {\n 2: \"need dictionary\",\n 1: \"stream end\",\n 0: \"\",\n \"-1\": \"file error\",\n \"-2\": \"stream error\",\n \"-3\": \"data error\",\n \"-4\": \"insufficient memory\",\n \"-5\": \"buffer error\",\n \"-6\": \"incompatible version\",\n };\n },\n {},\n ],\n 52: [\n function (e, t, r) {\n \"use strict\";\n var i = e(\"../utils/common\"),\n o = 0,\n h = 1;\n function n(e) {\n for (var t = e.length; 0 <= --t; ) e[t] = 0;\n }\n var s = 0,\n a = 29,\n u = 256,\n l = u + 1 + a,\n f = 30,\n c = 19,\n _ = 2 * l + 1,\n g = 15,\n d = 16,\n p = 7,\n m = 256,\n b = 16,\n v = 17,\n y = 18,\n w = [\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,\n 4, 4, 4, 4, 5, 5, 5, 5, 0,\n ],\n k = [\n 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,\n 9, 9, 10, 10, 11, 11, 12, 12, 13, 13,\n ],\n x = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7],\n S = [\n 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14,\n 1, 15,\n ],\n z = new Array(2 * (l + 2));\n n(z);\n var C = new Array(2 * f);\n n(C);\n var E = new Array(512);\n n(E);\n var A = new Array(256);\n n(A);\n var I = new Array(a);\n n(I);\n var O,\n B,\n R,\n T = new Array(f);\n function D(e, t, r, n, i) {\n (this.static_tree = e),\n (this.extra_bits = t),\n (this.extra_base = r),\n (this.elems = n),\n (this.max_length = i),\n (this.has_stree = e && e.length);\n }\n function F(e, t) {\n (this.dyn_tree = e),\n (this.max_code = 0),\n (this.stat_desc = t);\n }\n function N(e) {\n return e < 256 ? E[e] : E[256 + (e >>> 7)];\n }\n function U(e, t) {\n (e.pending_buf[e.pending++] = 255 & t),\n (e.pending_buf[e.pending++] = (t >>> 8) & 255);\n }\n function P(e, t, r) {\n e.bi_valid > d - r\n ? ((e.bi_buf |= (t << e.bi_valid) & 65535),\n U(e, e.bi_buf),\n (e.bi_buf = t >> (d - e.bi_valid)),\n (e.bi_valid += r - d))\n : ((e.bi_buf |= (t << e.bi_valid) & 65535),\n (e.bi_valid += r));\n }\n function L(e, t, r) {\n P(e, r[2 * t], r[2 * t + 1]);\n }\n function j(e, t) {\n for (\n var r = 0;\n (r |= 1 & e), (e >>>= 1), (r <<= 1), 0 < --t;\n\n );\n return r >>> 1;\n }\n function Z(e, t, r) {\n var n,\n i,\n s = new Array(g + 1),\n a = 0;\n for (n = 1; n <= g; n++) s[n] = a = (a + r[n - 1]) << 1;\n for (i = 0; i <= t; i++) {\n var o = e[2 * i + 1];\n 0 !== o && (e[2 * i] = j(s[o]++, o));\n }\n }\n function W(e) {\n var t;\n for (t = 0; t < l; t++) e.dyn_ltree[2 * t] = 0;\n for (t = 0; t < f; t++) e.dyn_dtree[2 * t] = 0;\n for (t = 0; t < c; t++) e.bl_tree[2 * t] = 0;\n (e.dyn_ltree[2 * m] = 1),\n (e.opt_len = e.static_len = 0),\n (e.last_lit = e.matches = 0);\n }\n function M(e) {\n 8 < e.bi_valid\n ? U(e, e.bi_buf)\n : 0 < e.bi_valid && (e.pending_buf[e.pending++] = e.bi_buf),\n (e.bi_buf = 0),\n (e.bi_valid = 0);\n }\n function H(e, t, r, n) {\n var i = 2 * t,\n s = 2 * r;\n return e[i] < e[s] || (e[i] === e[s] && n[t] <= n[r]);\n }\n function G(e, t, r) {\n for (\n var n = e.heap[r], i = r << 1;\n i <= e.heap_len &&\n (i < e.heap_len &&\n H(t, e.heap[i + 1], e.heap[i], e.depth) &&\n i++,\n !H(t, n, e.heap[i], e.depth));\n\n )\n (e.heap[r] = e.heap[i]), (r = i), (i <<= 1);\n e.heap[r] = n;\n }\n function K(e, t, r) {\n var n,\n i,\n s,\n a,\n o = 0;\n if (0 !== e.last_lit)\n for (\n ;\n (n =\n (e.pending_buf[e.d_buf + 2 * o] << 8) |\n e.pending_buf[e.d_buf + 2 * o + 1]),\n (i = e.pending_buf[e.l_buf + o]),\n o++,\n 0 === n\n ? L(e, i, t)\n : (L(e, (s = A[i]) + u + 1, t),\n 0 !== (a = w[s]) && P(e, (i -= I[s]), a),\n L(e, (s = N(--n)), r),\n 0 !== (a = k[s]) && P(e, (n -= T[s]), a)),\n o < e.last_lit;\n\n );\n L(e, m, t);\n }\n function Y(e, t) {\n var r,\n n,\n i,\n s = t.dyn_tree,\n a = t.stat_desc.static_tree,\n o = t.stat_desc.has_stree,\n h = t.stat_desc.elems,\n u = -1;\n for (e.heap_len = 0, e.heap_max = _, r = 0; r < h; r++)\n 0 !== s[2 * r]\n ? ((e.heap[++e.heap_len] = u = r), (e.depth[r] = 0))\n : (s[2 * r + 1] = 0);\n for (; e.heap_len < 2; )\n (s[2 * (i = e.heap[++e.heap_len] = u < 2 ? ++u : 0)] = 1),\n (e.depth[i] = 0),\n e.opt_len--,\n o && (e.static_len -= a[2 * i + 1]);\n for (t.max_code = u, r = e.heap_len >> 1; 1 <= r; r--)\n G(e, s, r);\n for (\n i = h;\n (r = e.heap[1]),\n (e.heap[1] = e.heap[e.heap_len--]),\n G(e, s, 1),\n (n = e.heap[1]),\n (e.heap[--e.heap_max] = r),\n (e.heap[--e.heap_max] = n),\n (s[2 * i] = s[2 * r] + s[2 * n]),\n (e.depth[i] =\n (e.depth[r] >= e.depth[n] ? e.depth[r] : e.depth[n]) +\n 1),\n (s[2 * r + 1] = s[2 * n + 1] = i),\n (e.heap[1] = i++),\n G(e, s, 1),\n 2 <= e.heap_len;\n\n );\n (e.heap[--e.heap_max] = e.heap[1]),\n (function (e, t) {\n var r,\n n,\n i,\n s,\n a,\n o,\n h = t.dyn_tree,\n u = t.max_code,\n l = t.stat_desc.static_tree,\n f = t.stat_desc.has_stree,\n c = t.stat_desc.extra_bits,\n d = t.stat_desc.extra_base,\n p = t.stat_desc.max_length,\n m = 0;\n for (s = 0; s <= g; s++) e.bl_count[s] = 0;\n for (\n h[2 * e.heap[e.heap_max] + 1] = 0, r = e.heap_max + 1;\n r < _;\n r++\n )\n p < (s = h[2 * h[2 * (n = e.heap[r]) + 1] + 1] + 1) &&\n ((s = p), m++),\n (h[2 * n + 1] = s),\n u < n ||\n (e.bl_count[s]++,\n (a = 0),\n d <= n && (a = c[n - d]),\n (o = h[2 * n]),\n (e.opt_len += o * (s + a)),\n f && (e.static_len += o * (l[2 * n + 1] + a)));\n if (0 !== m) {\n do {\n for (s = p - 1; 0 === e.bl_count[s]; ) s--;\n e.bl_count[s]--,\n (e.bl_count[s + 1] += 2),\n e.bl_count[p]--,\n (m -= 2);\n } while (0 < m);\n for (s = p; 0 !== s; s--)\n for (n = e.bl_count[s]; 0 !== n; )\n u < (i = e.heap[--r]) ||\n (h[2 * i + 1] !== s &&\n ((e.opt_len += (s - h[2 * i + 1]) * h[2 * i]),\n (h[2 * i + 1] = s)),\n n--);\n }\n })(e, t),\n Z(s, u, e.bl_count);\n }\n function X(e, t, r) {\n var n,\n i,\n s = -1,\n a = t[1],\n o = 0,\n h = 7,\n u = 4;\n for (\n 0 === a && ((h = 138), (u = 3)),\n t[2 * (r + 1) + 1] = 65535,\n n = 0;\n n <= r;\n n++\n )\n (i = a),\n (a = t[2 * (n + 1) + 1]),\n (++o < h && i === a) ||\n (o < u\n ? (e.bl_tree[2 * i] += o)\n : 0 !== i\n ? (i !== s && e.bl_tree[2 * i]++, e.bl_tree[2 * b]++)\n : o <= 10\n ? e.bl_tree[2 * v]++\n : e.bl_tree[2 * y]++,\n (s = i),\n (u =\n (o = 0) === a\n ? ((h = 138), 3)\n : i === a\n ? ((h = 6), 3)\n : ((h = 7), 4)));\n }\n function V(e, t, r) {\n var n,\n i,\n s = -1,\n a = t[1],\n o = 0,\n h = 7,\n u = 4;\n for (0 === a && ((h = 138), (u = 3)), n = 0; n <= r; n++)\n if (\n ((i = a), (a = t[2 * (n + 1) + 1]), !(++o < h && i === a))\n ) {\n if (o < u) for (; L(e, i, e.bl_tree), 0 != --o; );\n else\n 0 !== i\n ? (i !== s && (L(e, i, e.bl_tree), o--),\n L(e, b, e.bl_tree),\n P(e, o - 3, 2))\n : o <= 10\n ? (L(e, v, e.bl_tree), P(e, o - 3, 3))\n : (L(e, y, e.bl_tree), P(e, o - 11, 7));\n (s = i),\n (u =\n (o = 0) === a\n ? ((h = 138), 3)\n : i === a\n ? ((h = 6), 3)\n : ((h = 7), 4));\n }\n }\n n(T);\n var q = !1;\n function J(e, t, r, n) {\n P(e, (s << 1) + (n ? 1 : 0), 3),\n (function (e, t, r, n) {\n M(e),\n n && (U(e, r), U(e, ~r)),\n i.arraySet(e.pending_buf, e.window, t, r, e.pending),\n (e.pending += r);\n })(e, t, r, !0);\n }\n (r._tr_init = function (e) {\n q ||\n ((function () {\n var e,\n t,\n r,\n n,\n i,\n s = new Array(g + 1);\n for (n = r = 0; n < a - 1; n++)\n for (I[n] = r, e = 0; e < 1 << w[n]; e++) A[r++] = n;\n for (A[r - 1] = n, n = i = 0; n < 16; n++)\n for (T[n] = i, e = 0; e < 1 << k[n]; e++) E[i++] = n;\n for (i >>= 7; n < f; n++)\n for (T[n] = i << 7, e = 0; e < 1 << (k[n] - 7); e++)\n E[256 + i++] = n;\n for (t = 0; t <= g; t++) s[t] = 0;\n for (e = 0; e <= 143; ) (z[2 * e + 1] = 8), e++, s[8]++;\n for (; e <= 255; ) (z[2 * e + 1] = 9), e++, s[9]++;\n for (; e <= 279; ) (z[2 * e + 1] = 7), e++, s[7]++;\n for (; e <= 287; ) (z[2 * e + 1] = 8), e++, s[8]++;\n for (Z(z, l + 1, s), e = 0; e < f; e++)\n (C[2 * e + 1] = 5), (C[2 * e] = j(e, 5));\n (O = new D(z, w, u + 1, l, g)),\n (B = new D(C, k, 0, f, g)),\n (R = new D(new Array(0), x, 0, c, p));\n })(),\n (q = !0)),\n (e.l_desc = new F(e.dyn_ltree, O)),\n (e.d_desc = new F(e.dyn_dtree, B)),\n (e.bl_desc = new F(e.bl_tree, R)),\n (e.bi_buf = 0),\n (e.bi_valid = 0),\n W(e);\n }),\n (r._tr_stored_block = J),\n (r._tr_flush_block = function (e, t, r, n) {\n var i,\n s,\n a = 0;\n 0 < e.level\n ? (2 === e.strm.data_type &&\n (e.strm.data_type = (function (e) {\n var t,\n r = 4093624447;\n for (t = 0; t <= 31; t++, r >>>= 1)\n if (1 & r && 0 !== e.dyn_ltree[2 * t]) return o;\n if (\n 0 !== e.dyn_ltree[18] ||\n 0 !== e.dyn_ltree[20] ||\n 0 !== e.dyn_ltree[26]\n )\n return h;\n for (t = 32; t < u; t++)\n if (0 !== e.dyn_ltree[2 * t]) return h;\n return o;\n })(e)),\n Y(e, e.l_desc),\n Y(e, e.d_desc),\n (a = (function (e) {\n var t;\n for (\n X(e, e.dyn_ltree, e.l_desc.max_code),\n X(e, e.dyn_dtree, e.d_desc.max_code),\n Y(e, e.bl_desc),\n t = c - 1;\n 3 <= t && 0 === e.bl_tree[2 * S[t] + 1];\n t--\n );\n return (e.opt_len += 3 * (t + 1) + 5 + 5 + 4), t;\n })(e)),\n (i = (e.opt_len + 3 + 7) >>> 3),\n (s = (e.static_len + 3 + 7) >>> 3) <= i && (i = s))\n : (i = s = r + 5),\n r + 4 <= i && -1 !== t\n ? J(e, t, r, n)\n : 4 === e.strategy || s === i\n ? (P(e, 2 + (n ? 1 : 0), 3), K(e, z, C))\n : (P(e, 4 + (n ? 1 : 0), 3),\n (function (e, t, r, n) {\n var i;\n for (\n P(e, t - 257, 5),\n P(e, r - 1, 5),\n P(e, n - 4, 4),\n i = 0;\n i < n;\n i++\n )\n P(e, e.bl_tree[2 * S[i] + 1], 3);\n V(e, e.dyn_ltree, t - 1), V(e, e.dyn_dtree, r - 1);\n })(\n e,\n e.l_desc.max_code + 1,\n e.d_desc.max_code + 1,\n a + 1\n ),\n K(e, e.dyn_ltree, e.dyn_dtree)),\n W(e),\n n && M(e);\n }),\n (r._tr_tally = function (e, t, r) {\n return (\n (e.pending_buf[e.d_buf + 2 * e.last_lit] =\n (t >>> 8) & 255),\n (e.pending_buf[e.d_buf + 2 * e.last_lit + 1] = 255 & t),\n (e.pending_buf[e.l_buf + e.last_lit] = 255 & r),\n e.last_lit++,\n 0 === t\n ? e.dyn_ltree[2 * r]++\n : (e.matches++,\n t--,\n e.dyn_ltree[2 * (A[r] + u + 1)]++,\n e.dyn_dtree[2 * N(t)]++),\n e.last_lit === e.lit_bufsize - 1\n );\n }),\n (r._tr_align = function (e) {\n P(e, 2, 3),\n L(e, m, z),\n (function (e) {\n 16 === e.bi_valid\n ? (U(e, e.bi_buf), (e.bi_buf = 0), (e.bi_valid = 0))\n : 8 <= e.bi_valid &&\n ((e.pending_buf[e.pending++] = 255 & e.bi_buf),\n (e.bi_buf >>= 8),\n (e.bi_valid -= 8));\n })(e);\n });\n },\n { \"../utils/common\": 41 },\n ],\n 53: [\n function (e, t, r) {\n \"use strict\";\n t.exports = function () {\n (this.input = null),\n (this.next_in = 0),\n (this.avail_in = 0),\n (this.total_in = 0),\n (this.output = null),\n (this.next_out = 0),\n (this.avail_out = 0),\n (this.total_out = 0),\n (this.msg = \"\"),\n (this.state = null),\n (this.data_type = 2),\n (this.adler = 0);\n };\n },\n {},\n ],\n 54: [\n function (e, t, r) {\n (function (e) {\n !(function (r, n) {\n \"use strict\";\n if (!r.setImmediate) {\n var i,\n s,\n t,\n a,\n o = 1,\n h = {},\n u = !1,\n l = r.document,\n e = Object.getPrototypeOf && Object.getPrototypeOf(r);\n (e = e && e.setTimeout ? e : r),\n (i =\n \"[object process]\" === {}.toString.call(r.process)\n ? function (e) {\n process.nextTick(function () {\n c(e);\n });\n }\n : (function () {\n if (r.postMessage && !r.importScripts) {\n var e = !0,\n t = r.onmessage;\n return (\n (r.onmessage = function () {\n e = !1;\n }),\n r.postMessage(\"\", \"*\"),\n (r.onmessage = t),\n e\n );\n }\n })()\n ? ((a = \"setImmediate$\" + Math.random() + \"$\"),\n r.addEventListener\n ? r.addEventListener(\"message\", d, !1)\n : r.attachEvent(\"onmessage\", d),\n function (e) {\n r.postMessage(a + e, \"*\");\n })\n : r.MessageChannel\n ? (((t = new MessageChannel()).port1.onmessage =\n function (e) {\n c(e.data);\n }),\n function (e) {\n t.port2.postMessage(e);\n })\n : l &&\n \"onreadystatechange\" in l.createElement(\"script\")\n ? ((s = l.documentElement),\n function (e) {\n var t = l.createElement(\"script\");\n (t.onreadystatechange = function () {\n c(e),\n (t.onreadystatechange = null),\n s.removeChild(t),\n (t = null);\n }),\n s.appendChild(t);\n })\n : function (e) {\n setTimeout(c, 0, e);\n }),\n (e.setImmediate = function (e) {\n \"function\" != typeof e && (e = new Function(\"\" + e));\n for (\n var t = new Array(arguments.length - 1), r = 0;\n r < t.length;\n r++\n )\n t[r] = arguments[r + 1];\n var n = { callback: e, args: t };\n return (h[o] = n), i(o), o++;\n }),\n (e.clearImmediate = f);\n }\n function f(e) {\n delete h[e];\n }\n function c(e) {\n if (u) setTimeout(c, 0, e);\n else {\n var t = h[e];\n if (t) {\n u = !0;\n try {\n !(function (e) {\n var t = e.callback,\n r = e.args;\n switch (r.length) {\n case 0:\n t();\n break;\n case 1:\n t(r[0]);\n break;\n case 2:\n t(r[0], r[1]);\n break;\n case 3:\n t(r[0], r[1], r[2]);\n break;\n default:\n t.apply(n, r);\n }\n })(t);\n } finally {\n f(e), (u = !1);\n }\n }\n }\n }\n function d(e) {\n e.source === r &&\n \"string\" == typeof e.data &&\n 0 === e.data.indexOf(a) &&\n c(+e.data.slice(a.length));\n }\n })(\n \"undefined\" == typeof self\n ? void 0 === e\n ? this\n : e\n : self\n );\n }).call(\n this,\n \"undefined\" != typeof global\n ? global\n : \"undefined\" != typeof self\n ? self\n : \"undefined\" != typeof window\n ? window\n : {}\n );\n },\n {},\n ],\n },\n {},\n [10]\n )(10);\n });\n </script>\n <script>\n !(function (t, e) {\n \"object\" == typeof exports && \"object\" == typeof module\n ? (module.exports = e(require(\"JSZip\")))\n : \"function\" == typeof define && define.amd\n ? define([\"JSZip\"], e)\n : \"object\" == typeof exports\n ? (exports.ePub = e(require(\"JSZip\")))\n : (t.ePub = e(t.JSZip));\n })(window, function (t) {\n return (function (t) {\n var e = {};\n function i(n) {\n if (e[n]) return e[n].exports;\n var s = (e[n] = { i: n, l: !1, exports: {} });\n return t[n].call(s.exports, s, s.exports, i), (s.l = !0), s.exports;\n }\n return (\n (i.m = t),\n (i.c = e),\n (i.d = function (t, e, n) {\n i.o(t, e) ||\n Object.defineProperty(t, e, { enumerable: !0, get: n });\n }),\n (i.r = function (t) {\n \"undefined\" != typeof Symbol &&\n Symbol.toStringTag &&\n Object.defineProperty(t, Symbol.toStringTag, {\n value: \"Module\",\n }),\n Object.defineProperty(t, \"__esModule\", { value: !0 });\n }),\n (i.t = function (t, e) {\n if ((1 & e && (t = i(t)), 8 & e)) return t;\n if (4 & e && \"object\" == typeof t && t && t.__esModule) return t;\n var n = Object.create(null);\n if (\n (i.r(n),\n Object.defineProperty(n, \"default\", {\n enumerable: !0,\n value: t,\n }),\n 2 & e && \"string\" != typeof t)\n )\n for (var s in t)\n i.d(\n n,\n s,\n function (e) {\n return t[e];\n }.bind(null, s)\n );\n return n;\n }),\n (i.n = function (t) {\n var e =\n t && t.__esModule\n ? function () {\n return t.default;\n }\n : function () {\n return t;\n };\n return i.d(e, \"a\", e), e;\n }),\n (i.o = function (t, e) {\n return Object.prototype.hasOwnProperty.call(t, e);\n }),\n (i.p = \"/dist/\"),\n i((i.s = 30))\n );\n })([\n function (t, e, i) {\n \"use strict\";\n i.r(e),\n i.d(e, \"requestAnimationFrame\", function () {\n return s;\n }),\n i.d(e, \"uuid\", function () {\n return o;\n }),\n i.d(e, \"documentHeight\", function () {\n return a;\n }),\n i.d(e, \"isElement\", function () {\n return h;\n }),\n i.d(e, \"isNumber\", function () {\n return l;\n }),\n i.d(e, \"isFloat\", function () {\n return c;\n }),\n i.d(e, \"prefixed\", function () {\n return u;\n }),\n i.d(e, \"defaults\", function () {\n return d;\n }),\n i.d(e, \"extend\", function () {\n return f;\n }),\n i.d(e, \"insert\", function () {\n return p;\n }),\n i.d(e, \"locationOf\", function () {\n return g;\n }),\n i.d(e, \"indexOfSorted\", function () {\n return m;\n }),\n i.d(e, \"bounds\", function () {\n return v;\n }),\n i.d(e, \"borders\", function () {\n return y;\n }),\n i.d(e, \"nodeBounds\", function () {\n return b;\n }),\n i.d(e, \"windowBounds\", function () {\n return w;\n }),\n i.d(e, \"indexOfNode\", function () {\n return x;\n }),\n i.d(e, \"indexOfTextNode\", function () {\n return E;\n }),\n i.d(e, \"indexOfElementNode\", function () {\n return S;\n }),\n i.d(e, \"isXml\", function () {\n return N;\n }),\n i.d(e, \"createBlob\", function () {\n return _;\n }),\n i.d(e, \"createBlobUrl\", function () {\n return T;\n }),\n i.d(e, \"revokeBlobUrl\", function () {\n return C;\n }),\n i.d(e, \"createBase64Url\", function () {\n return O;\n }),\n i.d(e, \"type\", function () {\n return I;\n }),\n i.d(e, \"parse\", function () {\n return R;\n }),\n i.d(e, \"qs\", function () {\n return k;\n }),\n i.d(e, \"qsa\", function () {\n return A;\n }),\n i.d(e, \"qsp\", function () {\n return L;\n }),\n i.d(e, \"sprint\", function () {\n return j;\n }),\n i.d(e, \"treeWalker\", function () {\n return D;\n }),\n i.d(e, \"walk\", function () {\n return P;\n }),\n i.d(e, \"blob2base64\", function () {\n return M;\n }),\n i.d(e, \"defer\", function () {\n return z;\n }),\n i.d(e, \"querySelectorByType\", function () {\n return B;\n }),\n i.d(e, \"findChildren\", function () {\n return q;\n }),\n i.d(e, \"parents\", function () {\n return F;\n }),\n i.d(e, \"filterChildren\", function () {\n return U;\n }),\n i.d(e, \"getParentByTagName\", function () {\n return W;\n }),\n i.d(e, \"RangeObject\", function () {\n return H;\n });\n var n = i(15);\n const s =\n \"undefined\" != typeof window &&\n (window.requestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.msRequestAnimationFrame),\n r =\n \"undefined\" != typeof URL\n ? URL\n : \"undefined\" != typeof window\n ? window.URL || window.webkitURL || window.mozURL\n : void 0;\n function o() {\n var t = new Date().getTime();\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(\n /[xy]/g,\n function (e) {\n var i = (t + 16 * Math.random()) % 16 | 0;\n return (\n (t = Math.floor(t / 16)),\n (\"x\" == e ? i : (7 & i) | 8).toString(16)\n );\n }\n );\n }\n function a() {\n return Math.max(\n document.documentElement.clientHeight,\n document.body.scrollHeight,\n document.documentElement.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.offsetHeight\n );\n }\n function h(t) {\n return !(!t || 1 != t.nodeType);\n }\n function l(t) {\n return !isNaN(parseFloat(t)) && isFinite(t);\n }\n function c(t) {\n let e = parseFloat(t);\n return (\n !1 !== l(t) &&\n ((\"string\" == typeof t && t.indexOf(\".\") > -1) ||\n Math.floor(e) !== e)\n );\n }\n function u(t) {\n var e = [\"-webkit-\", \"-webkit-\", \"-moz-\", \"-o-\", \"-ms-\"],\n i = t.toLowerCase(),\n n = [\"Webkit\", \"webkit\", \"Moz\", \"O\", \"ms\"].length;\n if (\n \"undefined\" == typeof document ||\n void 0 !== document.body.style[i]\n )\n return t;\n for (var s = 0; s < n; s++)\n if (void 0 !== document.body.style[e[s] + i]) return e[s] + i;\n return t;\n }\n function d(t) {\n for (var e = 1, i = arguments.length; e < i; e++) {\n var n = arguments[e];\n for (var s in n) void 0 === t[s] && (t[s] = n[s]);\n }\n return t;\n }\n function f(t) {\n var e = [].slice.call(arguments, 1);\n return (\n e.forEach(function (e) {\n e &&\n Object.getOwnPropertyNames(e).forEach(function (i) {\n Object.defineProperty(\n t,\n i,\n Object.getOwnPropertyDescriptor(e, i)\n );\n });\n }),\n t\n );\n }\n function p(t, e, i) {\n var n = g(t, e, i);\n return e.splice(n, 0, t), n;\n }\n function g(t, e, i, n, s) {\n var r,\n o = n || 0,\n a = s || e.length,\n h = parseInt(o + (a - o) / 2);\n return (\n i ||\n (i = function (t, e) {\n return t > e ? 1 : t < e ? -1 : t == e ? 0 : void 0;\n }),\n a - o <= 0\n ? h\n : ((r = i(e[h], t)),\n a - o == 1\n ? r >= 0\n ? h\n : h + 1\n : 0 === r\n ? h\n : -1 === r\n ? g(t, e, i, h, a)\n : g(t, e, i, o, h))\n );\n }\n function m(t, e, i, n, s) {\n var r,\n o = n || 0,\n a = s || e.length,\n h = parseInt(o + (a - o) / 2);\n return (\n i ||\n (i = function (t, e) {\n return t > e ? 1 : t < e ? -1 : t == e ? 0 : void 0;\n }),\n a - o <= 0\n ? -1\n : ((r = i(e[h], t)),\n a - o == 1\n ? 0 === r\n ? h\n : -1\n : 0 === r\n ? h\n : -1 === r\n ? m(t, e, i, h, a)\n : m(t, e, i, o, h))\n );\n }\n function v(t) {\n var e = window.getComputedStyle(t),\n i = 0,\n n = 0;\n return (\n [\n \"width\",\n \"paddingRight\",\n \"paddingLeft\",\n \"marginRight\",\n \"marginLeft\",\n \"borderRightWidth\",\n \"borderLeftWidth\",\n ].forEach(function (t) {\n i += parseFloat(e[t]) || 0;\n }),\n [\n \"height\",\n \"paddingTop\",\n \"paddingBottom\",\n \"marginTop\",\n \"marginBottom\",\n \"borderTopWidth\",\n \"borderBottomWidth\",\n ].forEach(function (t) {\n n += parseFloat(e[t]) || 0;\n }),\n { height: n, width: i }\n );\n }\n function y(t) {\n var e = window.getComputedStyle(t),\n i = 0,\n n = 0;\n return (\n [\n \"paddingRight\",\n \"paddingLeft\",\n \"marginRight\",\n \"marginLeft\",\n \"borderRightWidth\",\n \"borderLeftWidth\",\n ].forEach(function (t) {\n i += parseFloat(e[t]) || 0;\n }),\n [\n \"paddingTop\",\n \"paddingBottom\",\n \"marginTop\",\n \"marginBottom\",\n \"borderTopWidth\",\n \"borderBottomWidth\",\n ].forEach(function (t) {\n n += parseFloat(e[t]) || 0;\n }),\n { height: n, width: i }\n );\n }\n function b(t) {\n let e,\n i = t.ownerDocument;\n if (t.nodeType == Node.TEXT_NODE) {\n let n = i.createRange();\n n.selectNodeContents(t), (e = n.getBoundingClientRect());\n } else e = t.getBoundingClientRect();\n return e;\n }\n function w() {\n var t = window.innerWidth,\n e = window.innerHeight;\n return {\n top: 0,\n left: 0,\n right: t,\n bottom: e,\n width: t,\n height: e,\n };\n }\n function x(t, e) {\n for (\n var i, n = t.parentNode.childNodes, s = -1, r = 0;\n r < n.length && ((i = n[r]).nodeType === e && s++, i != t);\n r++\n );\n return s;\n }\n function E(t) {\n return x(t, 3);\n }\n function S(t) {\n return x(t, 1);\n }\n function N(t) {\n return [\"xml\", \"opf\", \"ncx\"].indexOf(t) > -1;\n }\n function _(t, e) {\n return new Blob([t], { type: e });\n }\n function T(t, e) {\n var i = _(t, e);\n return r.createObjectURL(i);\n }\n function C(t) {\n return r.revokeObjectURL(t);\n }\n function O(t, e) {\n if (\"string\" == typeof t)\n return \"data:\" + e + \";base64,\" + btoa(t);\n }\n function I(t) {\n return Object.prototype.toString.call(t).slice(8, -1);\n }\n function R(t, e, i) {\n var s;\n return (\n (s =\n \"undefined\" == typeof DOMParser || i\n ? n.DOMParser\n : DOMParser),\n 65279 === t.charCodeAt(0) && (t = t.slice(1)),\n new s().parseFromString(t, e)\n );\n }\n function k(t, e) {\n var i;\n if (!t) throw new Error(\"No Element Provided\");\n return void 0 !== t.querySelector\n ? t.querySelector(e)\n : (i = t.getElementsByTagName(e)).length\n ? i[0]\n : void 0;\n }\n function A(t, e) {\n return void 0 !== t.querySelector\n ? t.querySelectorAll(e)\n : t.getElementsByTagName(e);\n }\n function L(t, e, i) {\n var n, s;\n if (void 0 !== t.querySelector) {\n for (var r in ((e += \"[\"), i)) e += r + \"~='\" + i[r] + \"'\";\n return (e += \"]\"), t.querySelector(e);\n }\n if (\n ((n = t.getElementsByTagName(e)),\n (s = Array.prototype.slice.call(n, 0).filter(function (t) {\n for (var e in i) if (t.getAttribute(e) === i[e]) return !0;\n return !1;\n })))\n )\n return s[0];\n }\n function j(t, e) {\n void 0 !== (t.ownerDocument || t).createTreeWalker\n ? D(t, e, NodeFilter.SHOW_TEXT)\n : P(t, function (t) {\n t && 3 === t.nodeType && e(t);\n });\n }\n function D(t, e, i) {\n var n = document.createTreeWalker(t, i, null, !1);\n let s;\n for (; (s = n.nextNode()); ) e(s);\n }\n function P(t, e) {\n if (e(t)) return !0;\n if ((t = t.firstChild))\n do {\n if (P(t, e)) return !0;\n t = t.nextSibling;\n } while (t);\n }\n function M(t) {\n return new Promise(function (e, i) {\n var n = new FileReader();\n n.readAsDataURL(t),\n (n.onloadend = function () {\n e(n.result);\n });\n });\n }\n function z() {\n (this.resolve = null),\n (this.reject = null),\n (this.id = o()),\n (this.promise = new Promise((t, e) => {\n (this.resolve = t), (this.reject = e);\n })),\n Object.freeze(this);\n }\n function B(t, e, i) {\n var n;\n if (\n (void 0 !== t.querySelector &&\n (n = t.querySelector(`${e}[*|type=\"${i}\"]`)),\n n && 0 !== n.length)\n )\n return n;\n n = A(t, e);\n for (var s = 0; s < n.length; s++)\n if (\n n[s].getAttributeNS(\n \"http://www.idpf.org/2007/ops\",\n \"type\"\n ) === i ||\n n[s].getAttribute(\"epub:type\") === i\n )\n return n[s];\n }\n function q(t) {\n for (var e = [], i = t.childNodes, n = 0; n < i.length; n++) {\n let t = i[n];\n 1 === t.nodeType && e.push(t);\n }\n return e;\n }\n function F(t) {\n for (var e = [t]; t; t = t.parentNode) e.unshift(t);\n return e;\n }\n function U(t, e, i) {\n for (var n = [], s = t.childNodes, r = 0; r < s.length; r++) {\n let t = s[r];\n if (1 === t.nodeType && t.nodeName.toLowerCase() === e) {\n if (i) return t;\n n.push(t);\n }\n }\n if (!i) return n;\n }\n function W(t, e) {\n let i;\n if (null !== t && \"\" !== e)\n for (i = t.parentNode; 1 === i.nodeType; ) {\n if (i.tagName.toLowerCase() === e) return i;\n i = i.parentNode;\n }\n }\n class H {\n constructor() {\n (this.collapsed = !1),\n (this.commonAncestorContainer = void 0),\n (this.endContainer = void 0),\n (this.endOffset = void 0),\n (this.startContainer = void 0),\n (this.startOffset = void 0);\n }\n setStart(t, e) {\n (this.startContainer = t),\n (this.startOffset = e),\n this.endContainer\n ? (this.commonAncestorContainer =\n this._commonAncestorContainer())\n : this.collapse(!0),\n this._checkCollapsed();\n }\n setEnd(t, e) {\n (this.endContainer = t),\n (this.endOffset = e),\n this.startContainer\n ? ((this.collapsed = !1),\n (this.commonAncestorContainer =\n this._commonAncestorContainer()))\n : this.collapse(!1),\n this._checkCollapsed();\n }\n collapse(t) {\n (this.collapsed = !0),\n t\n ? ((this.endContainer = this.startContainer),\n (this.endOffset = this.startOffset),\n (this.commonAncestorContainer =\n this.startContainer.parentNode))\n : ((this.startContainer = this.endContainer),\n (this.startOffset = this.endOffset),\n (this.commonAncestorContainer =\n this.endOffset.parentNode));\n }\n selectNode(t) {\n let e = t.parentNode,\n i = Array.prototype.indexOf.call(e.childNodes, t);\n this.setStart(e, i), this.setEnd(e, i + 1);\n }\n selectNodeContents(t) {\n t.childNodes[t.childNodes - 1];\n let e =\n 3 === t.nodeType\n ? t.textContent.length\n : parent.childNodes.length;\n this.setStart(t, 0), this.setEnd(t, e);\n }\n _commonAncestorContainer(t, e) {\n var i = F(t || this.startContainer),\n n = F(e || this.endContainer);\n if (i[0] == n[0])\n for (var s = 0; s < i.length; s++)\n if (i[s] != n[s]) return i[s - 1];\n }\n _checkCollapsed() {\n this.startContainer === this.endContainer &&\n this.startOffset === this.endOffset\n ? (this.collapsed = !0)\n : (this.collapsed = !1);\n }\n toString() {}\n }\n },\n function (t, e, i) {\n \"use strict\";\n i.d(e, \"b\", function () {\n return n;\n }),\n i.d(e, \"a\", function () {\n return s;\n }),\n i.d(e, \"c\", function () {\n return r;\n });\n const n = \"0.3\",\n s = [\n \"keydown\",\n \"keyup\",\n \"keypressed\",\n \"mouseup\",\n \"mousedown\",\n \"mousemove\",\n \"click\",\n \"touchend\",\n \"touchstart\",\n \"touchmove\",\n ],\n r = {\n BOOK: { OPEN_FAILED: \"openFailed\" },\n CONTENTS: {\n EXPAND: \"expand\",\n RESIZE: \"resize\",\n SELECTED: \"selected\",\n SELECTED_RANGE: \"selectedRange\",\n LINK_CLICKED: \"linkClicked\",\n },\n LOCATIONS: { CHANGED: \"changed\" },\n MANAGERS: {\n RESIZE: \"resize\",\n RESIZED: \"resized\",\n ORIENTATION_CHANGE: \"orientationchange\",\n ADDED: \"added\",\n SCROLL: \"scroll\",\n SCROLLED: \"scrolled\",\n REMOVED: \"removed\",\n },\n VIEWS: {\n AXIS: \"axis\",\n WRITING_MODE: \"writingMode\",\n LOAD_ERROR: \"loaderror\",\n RENDERED: \"rendered\",\n RESIZED: \"resized\",\n DISPLAYED: \"displayed\",\n SHOWN: \"shown\",\n HIDDEN: \"hidden\",\n MARK_CLICKED: \"markClicked\",\n },\n RENDITION: {\n STARTED: \"started\",\n ATTACHED: \"attached\",\n DISPLAYED: \"displayed\",\n DISPLAY_ERROR: \"displayerror\",\n RENDERED: \"rendered\",\n REMOVED: \"removed\",\n RESIZED: \"resized\",\n ORIENTATION_CHANGE: \"orientationchange\",\n LOCATION_CHANGED: \"locationChanged\",\n RELOCATED: \"relocated\",\n MARK_CLICKED: \"markClicked\",\n SELECTED: \"selected\",\n LAYOUT: \"layout\",\n },\n LAYOUT: { UPDATED: \"updated\" },\n ANNOTATION: { ATTACH: \"attach\", DETACH: \"detach\" },\n };\n },\n function (t, e, i) {\n \"use strict\";\n var n = i(0);\n class s {\n constructor(t, e, i) {\n var r;\n if (\n ((this.str = \"\"),\n (this.base = {}),\n (this.spinePos = 0),\n (this.range = !1),\n (this.path = {}),\n (this.start = null),\n (this.end = null),\n !(this instanceof s))\n )\n return new s(t, e, i);\n if (\n (\"string\" == typeof e\n ? (this.base = this.parseComponent(e))\n : \"object\" == typeof e && e.steps && (this.base = e),\n \"string\" === (r = this.checkType(t)))\n )\n return (this.str = t), Object(n.extend)(this, this.parse(t));\n if (\"range\" === r)\n return Object(n.extend)(\n this,\n this.fromRange(t, this.base, i)\n );\n if (\"node\" === r)\n return Object(n.extend)(this, this.fromNode(t, this.base, i));\n if (\"EpubCFI\" === r && t.path) return t;\n if (t) throw new TypeError(\"not a valid argument for EpubCFI\");\n return this;\n }\n checkType(t) {\n return this.isCfiString(t)\n ? \"string\"\n : !t ||\n \"object\" != typeof t ||\n (\"Range\" !== Object(n.type)(t) &&\n void 0 === t.startContainer)\n ? t && \"object\" == typeof t && void 0 !== t.nodeType\n ? \"node\"\n : !!(t && \"object\" == typeof t && t instanceof s) &&\n \"EpubCFI\"\n : \"range\";\n }\n parse(t) {\n var e,\n i,\n n,\n s = {\n spinePos: -1,\n range: !1,\n base: {},\n path: {},\n start: null,\n end: null,\n };\n return \"string\" != typeof t\n ? { spinePos: -1 }\n : (0 === t.indexOf(\"epubcfi(\") &&\n \")\" === t[t.length - 1] &&\n (t = t.slice(8, t.length - 1)),\n (e = this.getChapterComponent(t))\n ? ((s.base = this.parseComponent(e)),\n (i = this.getPathComponent(t)),\n (s.path = this.parseComponent(i)),\n (n = this.getRange(t)) &&\n ((s.range = !0),\n (s.start = this.parseComponent(n[0])),\n (s.end = this.parseComponent(n[1]))),\n (s.spinePos = s.base.steps[1].index),\n s)\n : { spinePos: -1 });\n }\n parseComponent(t) {\n var e,\n i = {\n steps: [],\n terminal: { offset: null, assertion: null },\n },\n n = t.split(\":\"),\n s = n[0].split(\"/\");\n return (\n n.length > 1 &&\n ((e = n[1]), (i.terminal = this.parseTerminal(e))),\n \"\" === s[0] && s.shift(),\n (i.steps = s.map(\n function (t) {\n return this.parseStep(t);\n }.bind(this)\n )),\n i\n );\n }\n parseStep(t) {\n var e, i, n, s, r;\n if (\n ((s = t.match(/\\[(.*)\\]/)) && s[1] && (r = s[1]),\n (i = parseInt(t)),\n !isNaN(i))\n )\n return (\n i % 2 == 0\n ? ((e = \"element\"), (n = i / 2 - 1))\n : ((e = \"text\"), (n = (i - 1) / 2)),\n { type: e, index: n, id: r || null }\n );\n }\n parseTerminal(t) {\n var e,\n i,\n s = t.match(/\\[(.*)\\]/);\n return (\n s && s[1]\n ? ((e = parseInt(t.split(\"[\")[0])), (i = s[1]))\n : (e = parseInt(t)),\n Object(n.isNumber)(e) || (e = null),\n { offset: e, assertion: i }\n );\n }\n getChapterComponent(t) {\n return t.split(\"!\")[0];\n }\n getPathComponent(t) {\n var e = t.split(\"!\");\n if (e[1]) {\n return e[1].split(\",\")[0];\n }\n }\n getRange(t) {\n var e = t.split(\",\");\n return 3 === e.length && [e[1], e[2]];\n }\n getCharecterOffsetComponent(t) {\n return t.split(\":\")[1] || \"\";\n }\n joinSteps(t) {\n return t\n ? t\n .map(function (t) {\n var e = \"\";\n return (\n \"element\" === t.type && (e += 2 * (t.index + 1)),\n \"text\" === t.type && (e += 1 + 2 * t.index),\n t.id && (e += \"[\" + t.id + \"]\"),\n e\n );\n })\n .join(\"/\")\n : \"\";\n }\n segmentString(t) {\n var e = \"/\";\n return (\n (e += this.joinSteps(t.steps)),\n t.terminal &&\n null != t.terminal.offset &&\n (e += \":\" + t.terminal.offset),\n t.terminal &&\n null != t.terminal.assertion &&\n (e += \"[\" + t.terminal.assertion + \"]\"),\n e\n );\n }\n toString() {\n var t = \"epubcfi(\";\n return (\n (t += this.segmentString(this.base)),\n (t += \"!\"),\n (t += this.segmentString(this.path)),\n this.range &&\n this.start &&\n ((t += \",\"), (t += this.segmentString(this.start))),\n this.range &&\n this.end &&\n ((t += \",\"), (t += this.segmentString(this.end))),\n (t += \")\")\n );\n }\n compare(t, e) {\n var i, n, r, o;\n if (\n (\"string\" == typeof t && (t = new s(t)),\n \"string\" == typeof e && (e = new s(e)),\n t.spinePos > e.spinePos)\n )\n return 1;\n if (t.spinePos < e.spinePos) return -1;\n t.range\n ? ((i = t.path.steps.concat(t.start.steps)),\n (r = t.start.terminal))\n : ((i = t.path.steps), (r = t.path.terminal)),\n e.range\n ? ((n = e.path.steps.concat(e.start.steps)),\n (o = e.start.terminal))\n : ((n = e.path.steps), (o = e.path.terminal));\n for (var a = 0; a < i.length; a++) {\n if (!i[a]) return -1;\n if (!n[a]) return 1;\n if (i[a].index > n[a].index) return 1;\n if (i[a].index < n[a].index) return -1;\n }\n return i.length < n.length\n ? -1\n : r.offset > o.offset\n ? 1\n : r.offset < o.offset\n ? -1\n : 0;\n }\n step(t) {\n var e = 3 === t.nodeType ? \"text\" : \"element\";\n return {\n id: t.id,\n tagName: t.tagName,\n type: e,\n index: this.position(t),\n };\n }\n filteredStep(t, e) {\n var i,\n n = this.filter(t, e);\n if (n)\n return (\n (i = 3 === n.nodeType ? \"text\" : \"element\"),\n {\n id: n.id,\n tagName: n.tagName,\n type: i,\n index: this.filteredPosition(n, e),\n }\n );\n }\n pathTo(t, e, i) {\n for (\n var n,\n s = {\n steps: [],\n terminal: { offset: null, assertion: null },\n },\n r = t;\n r && r.parentNode && 9 != r.parentNode.nodeType;\n\n )\n (n = i ? this.filteredStep(r, i) : this.step(r)) &&\n s.steps.unshift(n),\n (r = r.parentNode);\n return (\n null != e &&\n e >= 0 &&\n ((s.terminal.offset = e),\n \"text\" != s.steps[s.steps.length - 1].type &&\n s.steps.push({ type: \"text\", index: 0 })),\n s\n );\n }\n equalStep(t, e) {\n return (\n !(!t || !e) &&\n t.index === e.index &&\n t.id === e.id &&\n t.type === e.type\n );\n }\n fromRange(t, e, i) {\n var n = {\n range: !1,\n base: {},\n path: {},\n start: null,\n end: null,\n },\n s = t.startContainer,\n r = t.endContainer,\n o = t.startOffset,\n a = t.endOffset,\n h = !1;\n if (\n (i && (h = null != s.ownerDocument.querySelector(\".\" + i)),\n \"string\" == typeof e\n ? ((n.base = this.parseComponent(e)),\n (n.spinePos = n.base.steps[1].index))\n : \"object\" == typeof e && (n.base = e),\n t.collapsed)\n )\n h && (o = this.patchOffset(s, o, i)),\n (n.path = this.pathTo(s, o, i));\n else {\n (n.range = !0),\n h && (o = this.patchOffset(s, o, i)),\n (n.start = this.pathTo(s, o, i)),\n h && (a = this.patchOffset(r, a, i)),\n (n.end = this.pathTo(r, a, i)),\n (n.path = { steps: [], terminal: null });\n var l,\n c = n.start.steps.length;\n for (\n l = 0;\n l < c && this.equalStep(n.start.steps[l], n.end.steps[l]);\n l++\n )\n l === c - 1\n ? n.start.terminal === n.end.terminal &&\n (n.path.steps.push(n.start.steps[l]), (n.range = !1))\n : n.path.steps.push(n.start.steps[l]);\n (n.start.steps = n.start.steps.slice(n.path.steps.length)),\n (n.end.steps = n.end.steps.slice(n.path.steps.length));\n }\n return n;\n }\n fromNode(t, e, i) {\n var n = {\n range: !1,\n base: {},\n path: {},\n start: null,\n end: null,\n };\n return (\n \"string\" == typeof e\n ? ((n.base = this.parseComponent(e)),\n (n.spinePos = n.base.steps[1].index))\n : \"object\" == typeof e && (n.base = e),\n (n.path = this.pathTo(t, null, i)),\n n\n );\n }\n filter(t, e) {\n var i,\n n,\n s,\n r,\n o,\n a = !1;\n return (\n 3 === t.nodeType\n ? ((a = !0),\n (s = t.parentNode),\n (i = t.parentNode.classList.contains(e)))\n : ((a = !1), (i = t.classList.contains(e))),\n i && a\n ? ((r = s.previousSibling),\n (o = s.nextSibling),\n r && 3 === r.nodeType\n ? (n = r)\n : o && 3 === o.nodeType && (n = o),\n n || t)\n : !(i && !a) && t\n );\n }\n patchOffset(t, e, i) {\n if (3 != t.nodeType)\n throw new Error(\"Anchor must be a text node\");\n var n = t,\n s = e;\n for (\n t.parentNode.classList.contains(i) && (n = t.parentNode);\n n.previousSibling;\n\n ) {\n if (1 === n.previousSibling.nodeType) {\n if (!n.previousSibling.classList.contains(i)) break;\n s += n.previousSibling.textContent.length;\n } else s += n.previousSibling.textContent.length;\n n = n.previousSibling;\n }\n return s;\n }\n normalizedMap(t, e, i) {\n var n,\n s,\n r,\n o = {},\n a = -1,\n h = t.length;\n for (n = 0; n < h; n++)\n 1 === (s = t[n].nodeType) &&\n t[n].classList.contains(i) &&\n (s = 3),\n n > 0 && 3 === s && 3 === r\n ? (o[n] = a)\n : e === s && ((a += 1), (o[n] = a)),\n (r = s);\n return o;\n }\n position(t) {\n var e, i;\n return (\n 1 === t.nodeType\n ? ((e = t.parentNode.children) ||\n (e = Object(n.findChildren)(t.parentNode)),\n (i = Array.prototype.indexOf.call(e, t)))\n : (i = (e = this.textNodes(t.parentNode)).indexOf(t)),\n i\n );\n }\n filteredPosition(t, e) {\n var i, n;\n return (\n 1 === t.nodeType\n ? ((i = t.parentNode.children),\n (n = this.normalizedMap(i, 1, e)))\n : ((i = t.parentNode.childNodes),\n t.parentNode.classList.contains(e) &&\n (i = (t = t.parentNode).parentNode.childNodes),\n (n = this.normalizedMap(i, 3, e))),\n n[Array.prototype.indexOf.call(i, t)]\n );\n }\n stepsToXpath(t) {\n var e = [\".\", \"*\"];\n return (\n t.forEach(function (t) {\n var i = t.index + 1;\n t.id\n ? e.push(\"*[position()=\" + i + \" and @id='\" + t.id + \"']\")\n : \"text\" === t.type\n ? e.push(\"text()[\" + i + \"]\")\n : e.push(\"*[\" + i + \"]\");\n }),\n e.join(\"/\")\n );\n }\n stepsToQuerySelector(t) {\n var e = [\"html\"];\n return (\n t.forEach(function (t) {\n var i = t.index + 1;\n t.id\n ? e.push(\"#\" + t.id)\n : \"text\" === t.type || e.push(\"*:nth-child(\" + i + \")\");\n }),\n e.join(\">\")\n );\n }\n textNodes(t, e) {\n return Array.prototype.slice\n .call(t.childNodes)\n .filter(function (t) {\n return (\n 3 === t.nodeType || !(!e || !t.classList.contains(e))\n );\n });\n }\n walkToNode(t, e, i) {\n var s,\n r,\n o = e || document,\n a = o.documentElement,\n h = t.length;\n for (\n r = 0;\n r < h &&\n (\"element\" === (s = t[r]).type\n ? (a = s.id\n ? o.getElementById(s.id)\n : (a.children || Object(n.findChildren)(a))[s.index])\n : \"text\" === s.type && (a = this.textNodes(a, i)[s.index]),\n a);\n r++\n );\n return a;\n }\n findNode(t, e, i) {\n var n,\n s,\n r = e || document;\n return (\n i || void 0 === r.evaluate\n ? (n = i ? this.walkToNode(t, r, i) : this.walkToNode(t, r))\n : ((s = this.stepsToXpath(t)),\n (n = r.evaluate(\n s,\n r,\n null,\n XPathResult.FIRST_ORDERED_NODE_TYPE,\n null\n ).singleNodeValue)),\n n\n );\n }\n fixMiss(t, e, i, n) {\n var s,\n r,\n o = this.findNode(t.slice(0, -1), i, n),\n a = o.childNodes,\n h = this.normalizedMap(a, 3, n),\n l = t[t.length - 1].index;\n for (let t in h) {\n if (!h.hasOwnProperty(t)) return;\n if (h[t] === l) {\n if (!(e > (r = (s = a[t]).textContent.length))) {\n o = 1 === s.nodeType ? s.childNodes[0] : s;\n break;\n }\n e -= r;\n }\n }\n return { container: o, offset: e };\n }\n toRange(t, e) {\n var i,\n s,\n r,\n o,\n a,\n h,\n l,\n c,\n u = t || document,\n d = !!e && null != u.querySelector(\".\" + e);\n if (\n ((i =\n void 0 !== u.createRange\n ? u.createRange()\n : new n.RangeObject()),\n this.range\n ? ((s = this.start),\n (h = this.path.steps.concat(s.steps)),\n (o = this.findNode(h, u, d ? e : null)),\n (r = this.end),\n (l = this.path.steps.concat(r.steps)),\n (a = this.findNode(l, u, d ? e : null)))\n : ((s = this.path),\n (h = this.path.steps),\n (o = this.findNode(this.path.steps, u, d ? e : null))),\n !o)\n )\n return (\n console.log(\"No startContainer found for\", this.toString()),\n null\n );\n try {\n null != s.terminal.offset\n ? i.setStart(o, s.terminal.offset)\n : i.setStart(o, 0);\n } catch (t) {\n (c = this.fixMiss(h, s.terminal.offset, u, d ? e : null)),\n i.setStart(c.container, c.offset);\n }\n if (a)\n try {\n null != r.terminal.offset\n ? i.setEnd(a, r.terminal.offset)\n : i.setEnd(a, 0);\n } catch (t) {\n (c = this.fixMiss(\n l,\n this.end.terminal.offset,\n u,\n d ? e : null\n )),\n i.setEnd(c.container, c.offset);\n }\n return i;\n }\n isCfiString(t) {\n return (\n \"string\" == typeof t &&\n 0 === t.indexOf(\"epubcfi(\") &&\n \")\" === t[t.length - 1]\n );\n }\n generateChapterComponent(t, e, i) {\n var n = \"/\" + 2 * (t + 1) + \"/\";\n return (\n (n += 2 * (parseInt(e) + 1)), i && (n += \"[\" + i + \"]\"), n\n );\n }\n collapse(t) {\n this.range &&\n ((this.range = !1),\n t\n ? ((this.path.steps = this.path.steps.concat(\n this.start.steps\n )),\n (this.path.terminal = this.start.terminal))\n : ((this.path.steps = this.path.steps.concat(\n this.end.steps\n )),\n (this.path.terminal = this.end.terminal)));\n }\n }\n e.a = s;\n },\n function (t, e, i) {\n \"use strict\";\n var n,\n s,\n r,\n o,\n a,\n h,\n l,\n c = i(31),\n u = i(45),\n d = Function.prototype.apply,\n f = Function.prototype.call,\n p = Object.create,\n g = Object.defineProperty,\n m = Object.defineProperties,\n v = Object.prototype.hasOwnProperty,\n y = { configurable: !0, enumerable: !1, writable: !0 };\n (s = function (t, e) {\n var i, s;\n return (\n u(e),\n (s = this),\n n.call(\n this,\n t,\n (i = function () {\n r.call(s, t, i), d.call(e, this, arguments);\n })\n ),\n (i.__eeOnceListener__ = e),\n this\n );\n }),\n (a = {\n on: (n = function (t, e) {\n var i;\n return (\n u(e),\n v.call(this, \"__ee__\")\n ? (i = this.__ee__)\n : ((i = y.value = p(null)),\n g(this, \"__ee__\", y),\n (y.value = null)),\n i[t]\n ? \"object\" == typeof i[t]\n ? i[t].push(e)\n : (i[t] = [i[t], e])\n : (i[t] = e),\n this\n );\n }),\n once: s,\n off: (r = function (t, e) {\n var i, n, s, r;\n if ((u(e), !v.call(this, \"__ee__\"))) return this;\n if (!(i = this.__ee__)[t]) return this;\n if (\"object\" == typeof (n = i[t]))\n for (r = 0; (s = n[r]); ++r)\n (s !== e && s.__eeOnceListener__ !== e) ||\n (2 === n.length\n ? (i[t] = n[r ? 0 : 1])\n : n.splice(r, 1));\n else (n !== e && n.__eeOnceListener__ !== e) || delete i[t];\n return this;\n }),\n emit: (o = function (t) {\n var e, i, n, s, r;\n if (v.call(this, \"__ee__\") && (s = this.__ee__[t]))\n if (\"object\" == typeof s) {\n for (\n i = arguments.length, r = new Array(i - 1), e = 1;\n e < i;\n ++e\n )\n r[e - 1] = arguments[e];\n for (s = s.slice(), e = 0; (n = s[e]); ++e)\n d.call(n, this, r);\n } else\n switch (arguments.length) {\n case 1:\n f.call(s, this);\n break;\n case 2:\n f.call(s, this, arguments[1]);\n break;\n case 3:\n f.call(s, this, arguments[1], arguments[2]);\n break;\n default:\n for (\n i = arguments.length, r = new Array(i - 1), e = 1;\n e < i;\n ++e\n )\n r[e - 1] = arguments[e];\n d.call(s, this, r);\n }\n }),\n }),\n (h = { on: c(n), once: c(s), off: c(r), emit: c(o) }),\n (l = m({}, h)),\n (t.exports = e =\n function (t) {\n return null == t ? p(l) : m(Object(t), h);\n }),\n (e.methods = a);\n },\n function (t, e, i) {\n \"use strict\";\n var n = i(7),\n s = i.n(n);\n e.a = class {\n constructor(t) {\n var e;\n t.indexOf(\"://\") > -1 && (t = new URL(t).pathname),\n (e = this.parse(t)),\n (this.path = t),\n this.isDirectory(t)\n ? (this.directory = t)\n : (this.directory = e.dir + \"/\"),\n (this.filename = e.base),\n (this.extension = e.ext.slice(1));\n }\n parse(t) {\n return s.a.parse(t);\n }\n isAbsolute(t) {\n return s.a.isAbsolute(t || this.path);\n }\n isDirectory(t) {\n return \"/\" === t.charAt(t.length - 1);\n }\n resolve(t) {\n return s.a.resolve(this.directory, t);\n }\n relative(t) {\n return t && t.indexOf(\"://\") > -1\n ? t\n : s.a.relative(this.directory, t);\n }\n splitPath(t) {\n return this.splitPathRe.exec(t).slice(1);\n }\n toString() {\n return this.path;\n }\n };\n },\n function (t, e, i) {\n \"use strict\";\n var n = i(4),\n s = i(7),\n r = i.n(s);\n e.a = class {\n constructor(t, e) {\n var i = t.indexOf(\"://\") > -1,\n s = t;\n if (\n ((this.Url = void 0),\n (this.href = t),\n (this.protocol = \"\"),\n (this.origin = \"\"),\n (this.hash = \"\"),\n (this.hash = \"\"),\n (this.search = \"\"),\n (this.base = e),\n !i &&\n !1 !== e &&\n \"string\" != typeof e &&\n window &&\n window.location &&\n (this.base = window.location.href),\n i || this.base)\n )\n try {\n this.base\n ? (this.Url = new URL(t, this.base))\n : (this.Url = new URL(t)),\n (this.href = this.Url.href),\n (this.protocol = this.Url.protocol),\n (this.origin = this.Url.origin),\n (this.hash = this.Url.hash),\n (this.search = this.Url.search),\n (s =\n this.Url.pathname +\n (this.Url.search ? this.Url.search : \"\"));\n } catch (t) {\n (this.Url = void 0),\n this.base && (s = new n.a(this.base).resolve(s));\n }\n (this.Path = new n.a(s)),\n (this.directory = this.Path.directory),\n (this.filename = this.Path.filename),\n (this.extension = this.Path.extension);\n }\n path() {\n return this.Path;\n }\n resolve(t) {\n var e;\n return t.indexOf(\"://\") > -1\n ? t\n : ((e = r.a.resolve(this.directory, t)), this.origin + e);\n }\n relative(t) {\n return r.a.relative(t, this.directory);\n }\n toString() {\n return this.href;\n }\n };\n },\n function (t, e, i) {\n \"use strict\";\n e.a = class {\n constructor(t) {\n (this.context = t || this), (this.hooks = []);\n }\n register() {\n for (var t = 0; t < arguments.length; ++t)\n if (\"function\" == typeof arguments[t])\n this.hooks.push(arguments[t]);\n else\n for (var e = 0; e < arguments[t].length; ++e)\n this.hooks.push(arguments[t][e]);\n }\n deregister(t) {\n let e;\n for (let i = 0; i < this.hooks.length; i++)\n if (((e = this.hooks[i]), e === t)) {\n this.hooks.splice(i, 1);\n break;\n }\n }\n trigger() {\n var t = arguments,\n e = this.context,\n i = [];\n return (\n this.hooks.forEach(function (n) {\n try {\n var s = n.apply(e, t);\n } catch (t) {\n console.log(t);\n }\n s && \"function\" == typeof s.then && i.push(s);\n }),\n Promise.all(i)\n );\n }\n list() {\n return this.hooks;\n }\n clear() {\n return (this.hooks = []);\n }\n };\n },\n function (t, e, i) {\n \"use strict\";\n if (!n)\n var n = {\n cwd: function () {\n return \"/\";\n },\n };\n function s(t) {\n if (\"string\" != typeof t)\n throw new TypeError(\"Path must be a string. Received \" + t);\n }\n function r(t, e) {\n for (var i, n = \"\", s = -1, r = 0, o = 0; o <= t.length; ++o) {\n if (o < t.length) i = t.charCodeAt(o);\n else {\n if (47 === i) break;\n i = 47;\n }\n if (47 === i) {\n if (s === o - 1 || 1 === r);\n else if (s !== o - 1 && 2 === r) {\n if (\n n.length < 2 ||\n 46 !== n.charCodeAt(n.length - 1) ||\n 46 !== n.charCodeAt(n.length - 2)\n )\n if (n.length > 2) {\n for (\n var a = n.length - 1, h = a;\n h >= 0 && 47 !== n.charCodeAt(h);\n --h\n );\n if (h !== a) {\n (n = -1 === h ? \"\" : n.slice(0, h)), (s = o), (r = 0);\n continue;\n }\n } else if (2 === n.length || 1 === n.length) {\n (n = \"\"), (s = o), (r = 0);\n continue;\n }\n e && (n.length > 0 ? (n += \"/..\") : (n = \"..\"));\n } else\n n.length > 0\n ? (n += \"/\" + t.slice(s + 1, o))\n : (n = t.slice(s + 1, o));\n (s = o), (r = 0);\n } else 46 === i && -1 !== r ? ++r : (r = -1);\n }\n return n;\n }\n var o = {\n resolve: function () {\n for (\n var t, e = \"\", i = !1, o = arguments.length - 1;\n o >= -1 && !i;\n o--\n ) {\n var a;\n o >= 0\n ? (a = arguments[o])\n : (void 0 === t && (t = n.cwd()), (a = t)),\n s(a),\n 0 !== a.length &&\n ((e = a + \"/\" + e), (i = 47 === a.charCodeAt(0)));\n }\n return (\n (e = r(e, !i)),\n i ? (e.length > 0 ? \"/\" + e : \"/\") : e.length > 0 ? e : \".\"\n );\n },\n normalize: function (t) {\n if ((s(t), 0 === t.length)) return \".\";\n var e = 47 === t.charCodeAt(0),\n i = 47 === t.charCodeAt(t.length - 1);\n return (\n 0 !== (t = r(t, !e)).length || e || (t = \".\"),\n t.length > 0 && i && (t += \"/\"),\n e ? \"/\" + t : t\n );\n },\n isAbsolute: function (t) {\n return s(t), t.length > 0 && 47 === t.charCodeAt(0);\n },\n join: function () {\n if (0 === arguments.length) return \".\";\n for (var t, e = 0; e < arguments.length; ++e) {\n var i = arguments[e];\n s(i),\n i.length > 0 && (void 0 === t ? (t = i) : (t += \"/\" + i));\n }\n return void 0 === t ? \".\" : o.normalize(t);\n },\n relative: function (t, e) {\n if ((s(t), s(e), t === e)) return \"\";\n if ((t = o.resolve(t)) === (e = o.resolve(e))) return \"\";\n for (var i = 1; i < t.length && 47 === t.charCodeAt(i); ++i);\n for (\n var n = t.length, r = n - i, a = 1;\n a < e.length && 47 === e.charCodeAt(a);\n ++a\n );\n for (\n var h = e.length - a, l = r < h ? r : h, c = -1, u = 0;\n u <= l;\n ++u\n ) {\n if (u === l) {\n if (h > l) {\n if (47 === e.charCodeAt(a + u)) return e.slice(a + u + 1);\n if (0 === u) return e.slice(a + u);\n } else\n r > l &&\n (47 === t.charCodeAt(i + u)\n ? (c = u)\n : 0 === u && (c = 0));\n break;\n }\n var d = t.charCodeAt(i + u);\n if (d !== e.charCodeAt(a + u)) break;\n 47 === d && (c = u);\n }\n var f = \"\";\n for (u = i + c + 1; u <= n; ++u)\n (u !== n && 47 !== t.charCodeAt(u)) ||\n (0 === f.length ? (f += \"..\") : (f += \"/..\"));\n return f.length > 0\n ? f + e.slice(a + c)\n : ((a += c), 47 === e.charCodeAt(a) && ++a, e.slice(a));\n },\n _makeLong: function (t) {\n return t;\n },\n dirname: function (t) {\n if ((s(t), 0 === t.length)) return \".\";\n for (\n var e = t.charCodeAt(0),\n i = 47 === e,\n n = -1,\n r = !0,\n o = t.length - 1;\n o >= 1;\n --o\n )\n if (47 === (e = t.charCodeAt(o))) {\n if (!r) {\n n = o;\n break;\n }\n } else r = !1;\n return -1 === n\n ? i\n ? \"/\"\n : \".\"\n : i && 1 === n\n ? \"//\"\n : t.slice(0, n);\n },\n basename: function (t, e) {\n if (void 0 !== e && \"string\" != typeof e)\n throw new TypeError('\"ext\" argument must be a string');\n s(t);\n var i,\n n = 0,\n r = -1,\n o = !0;\n if (void 0 !== e && e.length > 0 && e.length <= t.length) {\n if (e.length === t.length && e === t) return \"\";\n var a = e.length - 1,\n h = -1;\n for (i = t.length - 1; i >= 0; --i) {\n var l = t.charCodeAt(i);\n if (47 === l) {\n if (!o) {\n n = i + 1;\n break;\n }\n } else\n -1 === h && ((o = !1), (h = i + 1)),\n a >= 0 &&\n (l === e.charCodeAt(a)\n ? -1 == --a && (r = i)\n : ((a = -1), (r = h)));\n }\n return (\n n === r ? (r = h) : -1 === r && (r = t.length),\n t.slice(n, r)\n );\n }\n for (i = t.length - 1; i >= 0; --i)\n if (47 === t.charCodeAt(i)) {\n if (!o) {\n n = i + 1;\n break;\n }\n } else -1 === r && ((o = !1), (r = i + 1));\n return -1 === r ? \"\" : t.slice(n, r);\n },\n extname: function (t) {\n s(t);\n for (\n var e = -1, i = 0, n = -1, r = !0, o = 0, a = t.length - 1;\n a >= 0;\n --a\n ) {\n var h = t.charCodeAt(a);\n if (47 !== h)\n -1 === n && ((r = !1), (n = a + 1)),\n 46 === h\n ? -1 === e\n ? (e = a)\n : 1 !== o && (o = 1)\n : -1 !== e && (o = -1);\n else if (!r) {\n i = a + 1;\n break;\n }\n }\n return -1 === e ||\n -1 === n ||\n 0 === o ||\n (1 === o && e === n - 1 && e === i + 1)\n ? \"\"\n : t.slice(e, n);\n },\n format: function (t) {\n if (null === t || \"object\" != typeof t)\n throw new TypeError(\n 'Parameter \"pathObject\" must be an object, not ' + typeof t\n );\n return (function (t, e) {\n var i = e.dir || e.root,\n n = e.base || (e.name || \"\") + (e.ext || \"\");\n return i ? (i === e.root ? i + n : i + t + n) : n;\n })(\"/\", t);\n },\n parse: function (t) {\n s(t);\n var e = { root: \"\", dir: \"\", base: \"\", ext: \"\", name: \"\" };\n if (0 === t.length) return e;\n var i,\n n = t.charCodeAt(0),\n r = 47 === n;\n r ? ((e.root = \"/\"), (i = 1)) : (i = 0);\n for (\n var o = -1, a = 0, h = -1, l = !0, c = t.length - 1, u = 0;\n c >= i;\n --c\n )\n if (47 !== (n = t.charCodeAt(c)))\n -1 === h && ((l = !1), (h = c + 1)),\n 46 === n\n ? -1 === o\n ? (o = c)\n : 1 !== u && (u = 1)\n : -1 !== o && (u = -1);\n else if (!l) {\n a = c + 1;\n break;\n }\n return (\n -1 === o ||\n -1 === h ||\n 0 === u ||\n (1 === u && o === h - 1 && o === a + 1)\n ? -1 !== h &&\n (e.base = e.name =\n 0 === a && r ? t.slice(1, h) : t.slice(a, h))\n : (0 === a && r\n ? ((e.name = t.slice(1, o)), (e.base = t.slice(1, h)))\n : ((e.name = t.slice(a, o)), (e.base = t.slice(a, h))),\n (e.ext = t.slice(o, h))),\n a > 0 ? (e.dir = t.slice(0, a - 1)) : r && (e.dir = \"/\"),\n e\n );\n },\n sep: \"/\",\n delimiter: \":\",\n posix: null,\n };\n t.exports = o;\n },\n function (t, e, i) {\n \"use strict\";\n i.d(e, \"a\", function () {\n return r;\n }),\n i.d(e, \"b\", function () {\n return o;\n }),\n i.d(e, \"d\", function () {\n return a;\n }),\n i.d(e, \"c\", function () {\n return h;\n }),\n i.d(e, \"e\", function () {\n return l;\n });\n var n = i(0),\n s = i(5);\n i(4);\n function r(t, e) {\n var i,\n s,\n r = e.url,\n o = r.indexOf(\"://\") > -1;\n t &&\n ((s = Object(n.qs)(t, \"head\")),\n (i = Object(n.qs)(s, \"base\")) ||\n ((i = t.createElement(\"base\")),\n s.insertBefore(i, s.firstChild)),\n !o &&\n window &&\n window.location &&\n (r = window.location.origin + r),\n i.setAttribute(\"href\", r));\n }\n function o(t, e) {\n var i,\n s,\n r = e.canonical;\n t &&\n ((i = Object(n.qs)(t, \"head\")),\n (s = Object(n.qs)(i, \"link[rel='canonical']\"))\n ? s.setAttribute(\"href\", r)\n : ((s = t.createElement(\"link\")).setAttribute(\n \"rel\",\n \"canonical\"\n ),\n s.setAttribute(\"href\", r),\n i.appendChild(s)));\n }\n function a(t, e) {\n var i,\n s,\n r = e.idref;\n t &&\n ((i = Object(n.qs)(t, \"head\")),\n (s = Object(n.qs)(i, \"link[property='dc.identifier']\"))\n ? s.setAttribute(\"content\", r)\n : ((s = t.createElement(\"meta\")).setAttribute(\n \"name\",\n \"dc.identifier\"\n ),\n s.setAttribute(\"content\", r),\n i.appendChild(s)));\n }\n function h(t, e) {\n var i = t.querySelectorAll(\"a[href]\");\n if (i.length)\n for (\n var r = Object(n.qs)(t.ownerDocument, \"base\"),\n o = r ? r.getAttribute(\"href\") : void 0,\n a = function (t) {\n var i = t.getAttribute(\"href\");\n if (0 !== i.indexOf(\"mailto:\"))\n if (i.indexOf(\"://\") > -1)\n t.setAttribute(\"target\", \"_blank\");\n else {\n var n;\n try {\n n = new s.a(i, o);\n } catch (t) {}\n t.onclick = function () {\n return (\n n && n.hash\n ? e(n.Path.path + n.hash)\n : e(n ? n.Path.path : i),\n !1\n );\n };\n }\n }.bind(this),\n h = 0;\n h < i.length;\n h++\n )\n a(i[h]);\n }\n function l(t, e, i) {\n return (\n e.forEach(function (e, n) {\n e &&\n i[n] &&\n ((e = e.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\")),\n (t = t.replace(new RegExp(e, \"g\"), i[n])));\n }),\n t\n );\n }\n },\n function (t, e, i) {\n \"use strict\";\n var n = i(0);\n e.a = class {\n constructor(t) {\n (this._q = []),\n (this.context = t),\n (this.tick = n.requestAnimationFrame),\n (this.running = !1),\n (this.paused = !1);\n }\n enqueue() {\n var t,\n e,\n i = [].shift.call(arguments),\n s = arguments;\n if (!i) throw new Error(\"No Task Provided\");\n return (\n (e =\n \"function\" == typeof i\n ? {\n task: i,\n args: s,\n deferred: (t = new n.defer()),\n promise: t.promise,\n }\n : { promise: i }),\n this._q.push(e),\n 0 != this.paused || this.running || this.run(),\n e.promise\n );\n }\n dequeue() {\n var t, e, i;\n return !this._q.length || this.paused\n ? ((t = new n.defer()).deferred.resolve(), t.promise)\n : (e = (t = this._q.shift()).task)\n ? (i = e.apply(this.context, t.args)) &&\n \"function\" == typeof i.then\n ? i.then(\n function () {\n t.deferred.resolve.apply(this.context, arguments);\n }.bind(this),\n function () {\n t.deferred.reject.apply(this.context, arguments);\n }.bind(this)\n )\n : (t.deferred.resolve.apply(this.context, i), t.promise)\n : t.promise\n ? t.promise\n : void 0;\n }\n dump() {\n for (; this._q.length; ) this.dequeue();\n }\n run() {\n return (\n this.running ||\n ((this.running = !0), (this.defered = new n.defer())),\n this.tick.call(window, () => {\n this._q.length\n ? this.dequeue().then(\n function () {\n this.run();\n }.bind(this)\n )\n : (this.defered.resolve(), (this.running = void 0));\n }),\n 1 == this.paused && (this.paused = !1),\n this.defered.promise\n );\n }\n flush() {\n return this.running\n ? this.running\n : this._q.length\n ? ((this.running = this.dequeue().then(\n function () {\n return (this.running = void 0), this.flush();\n }.bind(this)\n )),\n this.running)\n : void 0;\n }\n clear() {\n this._q = [];\n }\n length() {\n return this._q.length;\n }\n pause() {\n this.paused = !0;\n }\n stop() {\n (this._q = []), (this.running = !1), (this.paused = !0);\n }\n };\n },\n function (t, e, i) {\n \"use strict\";\n var n = i(3),\n s = i.n(n),\n r = i(0);\n function o() {\n var t = \"reverse\",\n e = (function () {\n var t = document.createElement(\"div\");\n (t.dir = \"rtl\"),\n (t.style.position = \"fixed\"),\n (t.style.width = \"1px\"),\n (t.style.height = \"1px\"),\n (t.style.top = \"0px\"),\n (t.style.left = \"0px\"),\n (t.style.overflow = \"hidden\");\n var e = document.createElement(\"div\");\n e.style.width = \"2px\";\n var i = document.createElement(\"span\");\n (i.style.width = \"1px\"), (i.style.display = \"inline-block\");\n var n = document.createElement(\"span\");\n return (\n (n.style.width = \"1px\"),\n (n.style.display = \"inline-block\"),\n e.appendChild(i),\n e.appendChild(n),\n t.appendChild(e),\n t\n );\n })();\n return (\n document.body.appendChild(e),\n e.scrollLeft > 0\n ? (t = \"default\")\n : \"undefined\" != typeof Element &&\n Element.prototype.scrollIntoView\n ? (e.children[0].children[1].scrollIntoView(),\n e.scrollLeft < 0 && (t = \"negative\"))\n : ((e.scrollLeft = 1),\n 0 === e.scrollLeft && (t = \"negative\")),\n document.body.removeChild(e),\n t\n );\n }\n var a = i(11),\n h = i(9),\n l = i(28),\n c = i.n(l);\n var u = class {\n constructor(t) {\n (this.settings = t || {}),\n (this.id = \"epubjs-container-\" + Object(r.uuid)()),\n (this.container = this.create(this.settings)),\n this.settings.hidden &&\n (this.wrapper = this.wrap(this.container));\n }\n create(t) {\n let e = t.height,\n i = t.width,\n n = t.overflow || !1,\n s = t.axis || \"vertical\",\n o = t.direction;\n Object(r.extend)(this.settings, t),\n t.height &&\n Object(r.isNumber)(t.height) &&\n (e = t.height + \"px\"),\n t.width &&\n Object(r.isNumber)(t.width) &&\n (i = t.width + \"px\");\n let a = document.createElement(\"div\");\n return (\n (a.id = this.id),\n a.classList.add(\"epub-container\"),\n (a.style.wordSpacing = \"0\"),\n (a.style.lineHeight = \"0\"),\n (a.style.verticalAlign = \"top\"),\n (a.style.position = \"relative\"),\n \"horizontal\" === s &&\n ((a.style.display = \"flex\"),\n (a.style.flexDirection = \"row\"),\n (a.style.flexWrap = \"nowrap\")),\n i && (a.style.width = i),\n e && (a.style.height = e),\n n &&\n (\"scroll\" === n && \"vertical\" === s\n ? ((a.style[\"overflow-y\"] = n),\n (a.style[\"overflow-x\"] = \"hidden\"))\n : \"scroll\" === n && \"horizontal\" === s\n ? ((a.style[\"overflow-y\"] = \"hidden\"),\n (a.style[\"overflow-x\"] = n))\n : (a.style.overflow = n)),\n o && ((a.dir = o), (a.style.direction = o)),\n o &&\n this.settings.fullsize &&\n (document.body.style.direction = o),\n a\n );\n }\n wrap(t) {\n var e = document.createElement(\"div\");\n return (\n (e.style.visibility = \"hidden\"),\n (e.style.overflow = \"hidden\"),\n (e.style.width = \"0\"),\n (e.style.height = \"0\"),\n e.appendChild(t),\n e\n );\n }\n getElement(t) {\n var e;\n if (\n (Object(r.isElement)(t)\n ? (e = t)\n : \"string\" == typeof t && (e = document.getElementById(t)),\n !e)\n )\n throw new Error(\"Not an Element\");\n return e;\n }\n attachTo(t) {\n var e,\n i = this.getElement(t);\n if (i)\n return (\n (e = this.settings.hidden ? this.wrapper : this.container),\n i.appendChild(e),\n (this.element = i),\n i\n );\n }\n getContainer() {\n return this.container;\n }\n onResize(t) {\n (Object(r.isNumber)(this.settings.width) &&\n Object(r.isNumber)(this.settings.height)) ||\n ((this.resizeFunc = c()(t, 50)),\n window.addEventListener(\"resize\", this.resizeFunc, !1));\n }\n onOrientationChange(t) {\n (this.orientationChangeFunc = t),\n window.addEventListener(\n \"orientationchange\",\n this.orientationChangeFunc,\n !1\n );\n }\n size(t, e) {\n var i;\n let n = t || this.settings.width,\n s = e || this.settings.height;\n null === t\n ? (i = this.element.getBoundingClientRect()).width &&\n ((t = Math.floor(i.width)),\n (this.container.style.width = t + \"px\"))\n : Object(r.isNumber)(t)\n ? (this.container.style.width = t + \"px\")\n : (this.container.style.width = t),\n null === e\n ? (i = i || this.element.getBoundingClientRect()).height &&\n ((e = i.height), (this.container.style.height = e + \"px\"))\n : Object(r.isNumber)(e)\n ? (this.container.style.height = e + \"px\")\n : (this.container.style.height = e),\n Object(r.isNumber)(t) || (t = this.container.clientWidth),\n Object(r.isNumber)(e) || (e = this.container.clientHeight),\n (this.containerStyles = window.getComputedStyle(\n this.container\n )),\n (this.containerPadding = {\n left: parseFloat(this.containerStyles[\"padding-left\"]) || 0,\n right:\n parseFloat(this.containerStyles[\"padding-right\"]) || 0,\n top: parseFloat(this.containerStyles[\"padding-top\"]) || 0,\n bottom:\n parseFloat(this.containerStyles[\"padding-bottom\"]) || 0,\n });\n let o = Object(r.windowBounds)(),\n a = window.getComputedStyle(document.body),\n h = parseFloat(a[\"padding-left\"]) || 0,\n l = parseFloat(a[\"padding-right\"]) || 0,\n c = parseFloat(a[\"padding-top\"]) || 0,\n u = parseFloat(a[\"padding-bottom\"]) || 0;\n return (\n n || (t = o.width - h - l),\n ((this.settings.fullsize && !s) || !s) &&\n (e = o.height - c - u),\n {\n width:\n t -\n this.containerPadding.left -\n this.containerPadding.right,\n height:\n e -\n this.containerPadding.top -\n this.containerPadding.bottom,\n }\n );\n }\n bounds() {\n let t;\n return (\n \"visible\" !== this.container.style.overflow &&\n (t =\n this.container && this.container.getBoundingClientRect()),\n t && t.width && t.height ? t : Object(r.windowBounds)()\n );\n }\n getSheet() {\n var t = document.createElement(\"style\");\n return (\n t.appendChild(document.createTextNode(\"\")),\n document.head.appendChild(t),\n t.sheet\n );\n }\n addStyleRules(t, e) {\n var i = \"#\" + this.id + \" \",\n n = \"\";\n this.sheet || (this.sheet = this.getSheet()),\n e.forEach(function (t) {\n for (var e in t)\n t.hasOwnProperty(e) && (n += e + \":\" + t[e] + \";\");\n }),\n this.sheet.insertRule(i + t + \" {\" + n + \"}\", 0);\n }\n axis(t) {\n \"horizontal\" === t\n ? ((this.container.style.display = \"flex\"),\n (this.container.style.flexDirection = \"row\"),\n (this.container.style.flexWrap = \"nowrap\"))\n : (this.container.style.display = \"block\"),\n (this.settings.axis = t);\n }\n direction(t) {\n this.container &&\n ((this.container.dir = t),\n (this.container.style.direction = t)),\n this.settings.fullsize && (document.body.style.direction = t),\n (this.settings.dir = t);\n }\n overflow(t) {\n this.container &&\n (\"scroll\" === t && \"vertical\" === this.settings.axis\n ? ((this.container.style[\"overflow-y\"] = t),\n (this.container.style[\"overflow-x\"] = \"hidden\"))\n : \"scroll\" === t && \"horizontal\" === this.settings.axis\n ? ((this.container.style[\"overflow-y\"] = \"hidden\"),\n (this.container.style[\"overflow-x\"] = t))\n : (this.container.style.overflow = t)),\n (this.settings.overflow = t);\n }\n destroy() {\n this.element &&\n (this.settings.hidden ? this.wrapper : this.container,\n this.element.contains(this.container) &&\n this.element.removeChild(this.container),\n window.removeEventListener(\"resize\", this.resizeFunc),\n window.removeEventListener(\n \"orientationChange\",\n this.orientationChangeFunc\n ));\n }\n };\n var d = class {\n constructor(t) {\n (this.container = t),\n (this._views = []),\n (this.length = 0),\n (this.hidden = !1);\n }\n all() {\n return this._views;\n }\n first() {\n return this._views[0];\n }\n last() {\n return this._views[this._views.length - 1];\n }\n indexOf(t) {\n return this._views.indexOf(t);\n }\n slice() {\n return this._views.slice.apply(this._views, arguments);\n }\n get(t) {\n return this._views[t];\n }\n append(t) {\n return (\n this._views.push(t),\n this.container && this.container.appendChild(t.element),\n this.length++,\n t\n );\n }\n prepend(t) {\n return (\n this._views.unshift(t),\n this.container &&\n this.container.insertBefore(\n t.element,\n this.container.firstChild\n ),\n this.length++,\n t\n );\n }\n insert(t, e) {\n return (\n this._views.splice(e, 0, t),\n this.container &&\n (e < this.container.children.length\n ? this.container.insertBefore(\n t.element,\n this.container.children[e]\n )\n : this.container.appendChild(t.element)),\n this.length++,\n t\n );\n }\n remove(t) {\n var e = this._views.indexOf(t);\n e > -1 && this._views.splice(e, 1),\n this.destroy(t),\n this.length--;\n }\n destroy(t) {\n t.displayed && t.destroy(),\n this.container && this.container.removeChild(t.element),\n (t = null);\n }\n forEach() {\n return this._views.forEach.apply(this._views, arguments);\n }\n clear() {\n var t,\n e = this.length;\n if (this.length) {\n for (var i = 0; i < e; i++)\n (t = this._views[i]), this.destroy(t);\n (this._views = []), (this.length = 0);\n }\n }\n find(t) {\n for (var e, i = this.length, n = 0; n < i; n++)\n if (\n (e = this._views[n]).displayed &&\n e.section.index == t.index\n )\n return e;\n }\n displayed() {\n for (var t, e = [], i = this.length, n = 0; n < i; n++)\n (t = this._views[n]).displayed && e.push(t);\n return e;\n }\n show() {\n for (var t, e = this.length, i = 0; i < e; i++)\n (t = this._views[i]).displayed && t.show();\n this.hidden = !1;\n }\n hide() {\n for (var t, e = this.length, i = 0; i < e; i++)\n (t = this._views[i]).displayed && t.hide();\n this.hidden = !0;\n }\n },\n f = i(1);\n class p {\n constructor(t) {\n (this.name = \"default\"),\n (this.optsSettings = t.settings),\n (this.View = t.view),\n (this.request = t.request),\n (this.renditionQueue = t.queue),\n (this.q = new h.a(this)),\n (this.settings = Object(r.extend)(this.settings || {}, {\n infinite: !0,\n hidden: !1,\n width: void 0,\n height: void 0,\n axis: void 0,\n writingMode: void 0,\n flow: \"scrolled\",\n ignoreClass: \"\",\n fullsize: void 0,\n allowScriptedContent: !1,\n allowPopups: !1,\n })),\n Object(r.extend)(this.settings, t.settings || {}),\n (this.viewSettings = {\n ignoreClass: this.settings.ignoreClass,\n axis: this.settings.axis,\n flow: this.settings.flow,\n layout: this.layout,\n method: this.settings.method,\n width: 0,\n height: 0,\n forceEvenPages: !0,\n allowScriptedContent: this.settings.allowScriptedContent,\n allowPopups: this.settings.allowPopups,\n }),\n (this.rendered = !1);\n }\n render(t, e) {\n let i = t.tagName;\n void 0 !== this.settings.fullsize ||\n !i ||\n (\"body\" != i.toLowerCase() && \"html\" != i.toLowerCase()) ||\n (this.settings.fullsize = !0),\n this.settings.fullsize &&\n ((this.settings.overflow = \"visible\"),\n (this.overflow = this.settings.overflow)),\n (this.settings.size = e),\n (this.settings.rtlScrollType = o()),\n (this.stage = new u({\n width: e.width,\n height: e.height,\n overflow: this.overflow,\n hidden: this.settings.hidden,\n axis: this.settings.axis,\n fullsize: this.settings.fullsize,\n direction: this.settings.direction,\n })),\n this.stage.attachTo(t),\n (this.container = this.stage.getContainer()),\n (this.views = new d(this.container)),\n (this._bounds = this.bounds()),\n (this._stageSize = this.stage.size()),\n (this.viewSettings.width = this._stageSize.width),\n (this.viewSettings.height = this._stageSize.height),\n this.stage.onResize(this.onResized.bind(this)),\n this.stage.onOrientationChange(\n this.onOrientationChange.bind(this)\n ),\n this.addEventListeners(),\n this.layout && this.updateLayout(),\n (this.rendered = !0);\n }\n addEventListeners() {\n var t;\n window.addEventListener(\n \"unload\",\n function (t) {\n this.destroy();\n }.bind(this)\n ),\n (t = this.settings.fullsize ? window : this.container),\n (this._onScroll = this.onScroll.bind(this)),\n t.addEventListener(\"scroll\", this._onScroll);\n }\n removeEventListeners() {\n (this.settings.fullsize\n ? window\n : this.container\n ).removeEventListener(\"scroll\", this._onScroll),\n (this._onScroll = void 0);\n }\n destroy() {\n clearTimeout(this.orientationTimeout),\n clearTimeout(this.resizeTimeout),\n clearTimeout(this.afterScrolled),\n this.clear(),\n this.removeEventListeners(),\n this.stage.destroy(),\n (this.rendered = !1);\n }\n onOrientationChange(t) {\n let { orientation: e } = window;\n this.optsSettings.resizeOnOrientationChange && this.resize(),\n clearTimeout(this.orientationTimeout),\n (this.orientationTimeout = setTimeout(\n function () {\n (this.orientationTimeout = void 0),\n this.optsSettings.resizeOnOrientationChange &&\n this.resize(),\n this.emit(f.c.MANAGERS.ORIENTATION_CHANGE, e);\n }.bind(this),\n 500\n ));\n }\n onResized(t) {\n this.resize();\n }\n resize(t, e, i) {\n let n = this.stage.size(t, e);\n (this.winBounds = Object(r.windowBounds)()),\n this.orientationTimeout &&\n this.winBounds.width === this.winBounds.height\n ? (this._stageSize = void 0)\n : (this._stageSize &&\n this._stageSize.width === n.width &&\n this._stageSize.height === n.height) ||\n ((this._stageSize = n),\n (this._bounds = this.bounds()),\n this.clear(),\n (this.viewSettings.width = this._stageSize.width),\n (this.viewSettings.height = this._stageSize.height),\n this.updateLayout(),\n this.emit(\n f.c.MANAGERS.RESIZED,\n {\n width: this._stageSize.width,\n height: this._stageSize.height,\n },\n i\n ));\n }\n createView(t, e) {\n return new this.View(\n t,\n Object(r.extend)(this.viewSettings, { forceRight: e })\n );\n }\n handleNextPrePaginated(t, e, i) {\n let n;\n if (\n \"pre-paginated\" === this.layout.name &&\n this.layout.divisor > 1\n ) {\n if (t || 0 === e.index) return;\n if (\n ((n = e.next()),\n n && !n.properties.includes(\"page-spread-left\"))\n )\n return i.call(this, n);\n }\n }\n display(t, e) {\n var i = new r.defer(),\n n = i.promise;\n (e === t.href || Object(r.isNumber)(e)) && (e = void 0);\n var s = this.views.find(t);\n if (s && t && \"pre-paginated\" !== this.layout.name) {\n let t = s.offset();\n if (\"ltr\" === this.settings.direction)\n this.scrollTo(t.left, t.top, !0);\n else {\n let e = s.width();\n this.scrollTo(t.left + e, t.top, !0);\n }\n if (e) {\n let t = s.locationOf(e),\n i = s.width();\n this.moveTo(t, i);\n }\n return i.resolve(), n;\n }\n this.clear();\n let o = !1;\n return (\n \"pre-paginated\" === this.layout.name &&\n 2 === this.layout.divisor &&\n t.properties.includes(\"page-spread-right\") &&\n (o = !0),\n this.add(t, o)\n .then(\n function (t) {\n if (e) {\n let i = t.locationOf(e),\n n = t.width();\n this.moveTo(i, n);\n }\n }.bind(this),\n (t) => {\n i.reject(t);\n }\n )\n .then(\n function () {\n return this.handleNextPrePaginated(o, t, this.add);\n }.bind(this)\n )\n .then(\n function () {\n this.views.show(), i.resolve();\n }.bind(this)\n ),\n n\n );\n }\n afterDisplayed(t) {\n this.emit(f.c.MANAGERS.ADDED, t);\n }\n afterResized(t) {\n this.emit(f.c.MANAGERS.RESIZE, t.section);\n }\n moveTo(t, e) {\n var i = 0,\n n = 0;\n this.isPaginated\n ? ((i =\n Math.floor(t.left / this.layout.delta) *\n this.layout.delta) +\n this.layout.delta >\n this.container.scrollWidth &&\n (i = this.container.scrollWidth - this.layout.delta),\n (n =\n Math.floor(t.top / this.layout.delta) *\n this.layout.delta) +\n this.layout.delta >\n this.container.scrollHeight &&\n (n = this.container.scrollHeight - this.layout.delta))\n : (n = t.top),\n \"rtl\" === this.settings.direction &&\n ((i += this.layout.delta), (i -= e)),\n this.scrollTo(i, n, !0);\n }\n add(t, e) {\n var i = this.createView(t, e);\n return (\n this.views.append(i),\n (i.onDisplayed = this.afterDisplayed.bind(this)),\n (i.onResize = this.afterResized.bind(this)),\n i.on(f.c.VIEWS.AXIS, (t) => {\n this.updateAxis(t);\n }),\n i.on(f.c.VIEWS.WRITING_MODE, (t) => {\n this.updateWritingMode(t);\n }),\n i.display(this.request)\n );\n }\n append(t, e) {\n var i = this.createView(t, e);\n return (\n this.views.append(i),\n (i.onDisplayed = this.afterDisplayed.bind(this)),\n (i.onResize = this.afterResized.bind(this)),\n i.on(f.c.VIEWS.AXIS, (t) => {\n this.updateAxis(t);\n }),\n i.on(f.c.VIEWS.WRITING_MODE, (t) => {\n this.updateWritingMode(t);\n }),\n i.display(this.request)\n );\n }\n prepend(t, e) {\n var i = this.createView(t, e);\n return (\n i.on(f.c.VIEWS.RESIZED, (t) => {\n this.counter(t);\n }),\n this.views.prepend(i),\n (i.onDisplayed = this.afterDisplayed.bind(this)),\n (i.onResize = this.afterResized.bind(this)),\n i.on(f.c.VIEWS.AXIS, (t) => {\n this.updateAxis(t);\n }),\n i.on(f.c.VIEWS.WRITING_MODE, (t) => {\n this.updateWritingMode(t);\n }),\n i.display(this.request)\n );\n }\n counter(t) {\n \"vertical\" === this.settings.axis\n ? this.scrollBy(0, t.heightDelta, !0)\n : this.scrollBy(t.widthDelta, 0, !0);\n }\n next() {\n var t;\n let e = this.settings.direction;\n if (this.views.length) {\n if (\n !this.isPaginated ||\n \"horizontal\" !== this.settings.axis ||\n (e && \"ltr\" !== e)\n )\n if (\n this.isPaginated &&\n \"horizontal\" === this.settings.axis &&\n \"rtl\" === e\n )\n (this.scrollLeft = this.container.scrollLeft),\n \"default\" === this.settings.rtlScrollType\n ? this.container.scrollLeft > 0\n ? this.scrollBy(this.layout.delta, 0, !0)\n : (t = this.views.last().section.next())\n : this.container.scrollLeft + -1 * this.layout.delta >\n -1 * this.container.scrollWidth\n ? this.scrollBy(this.layout.delta, 0, !0)\n : (t = this.views.last().section.next());\n else if (\n this.isPaginated &&\n \"vertical\" === this.settings.axis\n ) {\n (this.scrollTop = this.container.scrollTop),\n this.container.scrollTop + this.container.offsetHeight <\n this.container.scrollHeight\n ? this.scrollBy(0, this.layout.height, !0)\n : (t = this.views.last().section.next());\n } else t = this.views.last().section.next();\n else\n (this.scrollLeft = this.container.scrollLeft),\n this.container.scrollLeft +\n this.container.offsetWidth +\n this.layout.delta <=\n this.container.scrollWidth\n ? this.scrollBy(this.layout.delta, 0, !0)\n : (t = this.views.last().section.next());\n if (t) {\n this.clear(), this.updateLayout();\n let e = !1;\n return (\n \"pre-paginated\" === this.layout.name &&\n 2 === this.layout.divisor &&\n t.properties.includes(\"page-spread-right\") &&\n (e = !0),\n this.append(t, e)\n .then(\n function () {\n return this.handleNextPrePaginated(\n e,\n t,\n this.append\n );\n }.bind(this),\n (t) => t\n )\n .then(\n function () {\n this.isPaginated ||\n \"horizontal\" !== this.settings.axis ||\n \"rtl\" !== this.settings.direction ||\n \"default\" !== this.settings.rtlScrollType ||\n this.scrollTo(this.container.scrollWidth, 0, !0),\n this.views.show();\n }.bind(this)\n )\n );\n }\n }\n }\n prev() {\n var t;\n let e = this.settings.direction;\n if (this.views.length) {\n if (\n !this.isPaginated ||\n \"horizontal\" !== this.settings.axis ||\n (e && \"ltr\" !== e)\n )\n if (\n this.isPaginated &&\n \"horizontal\" === this.settings.axis &&\n \"rtl\" === e\n )\n (this.scrollLeft = this.container.scrollLeft),\n \"default\" === this.settings.rtlScrollType\n ? this.container.scrollLeft +\n this.container.offsetWidth <\n this.container.scrollWidth\n ? this.scrollBy(-this.layout.delta, 0, !0)\n : (t = this.views.first().section.prev())\n : this.container.scrollLeft < 0\n ? this.scrollBy(-this.layout.delta, 0, !0)\n : (t = this.views.first().section.prev());\n else if (\n this.isPaginated &&\n \"vertical\" === this.settings.axis\n ) {\n (this.scrollTop = this.container.scrollTop),\n this.container.scrollTop > 0\n ? this.scrollBy(0, -this.layout.height, !0)\n : (t = this.views.first().section.prev());\n } else t = this.views.first().section.prev();\n else\n (this.scrollLeft = this.container.scrollLeft),\n this.container.scrollLeft > 0\n ? this.scrollBy(-this.layout.delta, 0, !0)\n : (t = this.views.first().section.prev());\n if (t) {\n this.clear(), this.updateLayout();\n let e = !1;\n return (\n \"pre-paginated\" === this.layout.name &&\n 2 === this.layout.divisor &&\n \"object\" != typeof t.prev() &&\n (e = !0),\n this.prepend(t, e)\n .then(\n function () {\n var e;\n if (\n \"pre-paginated\" === this.layout.name &&\n this.layout.divisor > 1 &&\n (e = t.prev())\n )\n return this.prepend(e);\n }.bind(this),\n (t) => t\n )\n .then(\n function () {\n this.isPaginated &&\n \"horizontal\" === this.settings.axis &&\n (\"rtl\" === this.settings.direction\n ? \"default\" === this.settings.rtlScrollType\n ? this.scrollTo(0, 0, !0)\n : this.scrollTo(\n -1 * this.container.scrollWidth +\n this.layout.delta,\n 0,\n !0\n )\n : this.scrollTo(\n this.container.scrollWidth -\n this.layout.delta,\n 0,\n !0\n )),\n this.views.show();\n }.bind(this)\n )\n );\n }\n }\n }\n current() {\n var t = this.visible();\n return t.length ? t[t.length - 1] : null;\n }\n clear() {\n this.views &&\n (this.views.hide(),\n this.scrollTo(0, 0, !0),\n this.views.clear());\n }\n currentLocation() {\n return (\n this.updateLayout(),\n this.isPaginated && \"horizontal\" === this.settings.axis\n ? (this.location = this.paginatedLocation())\n : (this.location = this.scrolledLocation()),\n this.location\n );\n }\n scrolledLocation() {\n let t = this.visible(),\n e = this.container.getBoundingClientRect(),\n i =\n e.height < window.innerHeight\n ? e.height\n : window.innerHeight,\n n = e.width < window.innerWidth ? e.width : window.innerWidth,\n s = \"vertical\" === this.settings.axis,\n r = (this.settings.direction, 0);\n return (\n this.settings.fullsize &&\n (r = s ? window.scrollY : window.scrollX),\n t.map((t) => {\n let o,\n a,\n h,\n l,\n { index: c, href: u } = t.section,\n d = t.position(),\n f = t.width(),\n p = t.height();\n s\n ? ((o = r + e.top - d.top + 0),\n (a = o + i - 0),\n (l = this.layout.count(p, i).pages),\n (h = i))\n : ((o = r + e.left - d.left + 0),\n (a = o + n - 0),\n (l = this.layout.count(f, n).pages),\n (h = n));\n let g = Math.ceil(o / h),\n m = [],\n v = Math.ceil(a / h);\n if (\"rtl\" === this.settings.direction && !s) {\n let t = g;\n (g = l - v), (v = l - t);\n }\n m = [];\n for (var y = g; y <= v; y++) {\n let t = y + 1;\n m.push(t);\n }\n return {\n index: c,\n href: u,\n pages: m,\n totalPages: l,\n mapping: this.mapping.page(\n t.contents,\n t.section.cfiBase,\n o,\n a\n ),\n };\n })\n );\n }\n paginatedLocation() {\n let t = this.visible(),\n e = this.container.getBoundingClientRect(),\n i = 0,\n n = 0;\n return (\n this.settings.fullsize && (i = window.scrollX),\n t.map((t) => {\n let s,\n r,\n o,\n a,\n { index: h, href: l } = t.section,\n c = t.position(),\n u = t.width();\n \"rtl\" === this.settings.direction\n ? ((s = e.right - i),\n (a =\n Math.min(Math.abs(s - c.left), this.layout.width) -\n n),\n (o = c.width - (c.right - s) - n),\n (r = o - a))\n : ((s = e.left + i),\n (a = Math.min(c.right - s, this.layout.width) - n),\n (r = s - c.left + n),\n (o = r + a)),\n (n += a);\n let d = this.mapping.page(\n t.contents,\n t.section.cfiBase,\n r,\n o\n ),\n f = this.layout.count(u).pages,\n p = Math.floor(r / this.layout.pageWidth),\n g = [],\n m = Math.floor(o / this.layout.pageWidth);\n if (\n (p < 0 && ((p = 0), (m += 1)),\n \"rtl\" === this.settings.direction)\n ) {\n let t = p;\n (p = f - m), (m = f - t);\n }\n for (var v = p + 1; v <= m; v++) {\n let t = v;\n g.push(t);\n }\n return {\n index: h,\n href: l,\n pages: g,\n totalPages: f,\n mapping: d,\n };\n })\n );\n }\n isVisible(t, e, i, n) {\n var s = t.position(),\n r = n || this.bounds();\n return (\n (\"horizontal\" === this.settings.axis &&\n s.right > r.left - e &&\n s.left < r.right + i) ||\n (\"vertical\" === this.settings.axis &&\n s.bottom > r.top - e &&\n s.top < r.bottom + i)\n );\n }\n visible() {\n for (\n var t,\n e = this.bounds(),\n i = this.views.displayed(),\n n = i.length,\n s = [],\n r = 0;\n r < n;\n r++\n )\n (t = i[r]), !0 === this.isVisible(t, 0, 0, e) && s.push(t);\n return s;\n }\n scrollBy(t, e, i) {\n let n = \"rtl\" === this.settings.direction ? -1 : 1;\n i && (this.ignore = !0),\n this.settings.fullsize\n ? window.scrollBy(t * n, e * n)\n : (t && (this.container.scrollLeft += t * n),\n e && (this.container.scrollTop += e)),\n (this.scrolled = !0);\n }\n scrollTo(t, e, i) {\n i && (this.ignore = !0),\n this.settings.fullsize\n ? window.scrollTo(t, e)\n : ((this.container.scrollLeft = t),\n (this.container.scrollTop = e)),\n (this.scrolled = !0);\n }\n onScroll() {\n let t, e;\n this.settings.fullsize\n ? ((t = window.scrollY), (e = window.scrollX))\n : ((t = this.container.scrollTop),\n (e = this.container.scrollLeft)),\n (this.scrollTop = t),\n (this.scrollLeft = e),\n this.ignore\n ? (this.ignore = !1)\n : (this.emit(f.c.MANAGERS.SCROLL, { top: t, left: e }),\n clearTimeout(this.afterScrolled),\n (this.afterScrolled = setTimeout(\n function () {\n this.emit(f.c.MANAGERS.SCROLLED, {\n top: this.scrollTop,\n left: this.scrollLeft,\n });\n }.bind(this),\n 20\n )));\n }\n bounds() {\n return this.stage.bounds();\n }\n applyLayout(t) {\n (this.layout = t),\n this.updateLayout(),\n this.views &&\n this.views.length > 0 &&\n \"pre-paginated\" === this.layout.name &&\n this.display(this.views.first().section);\n }\n updateLayout() {\n this.stage &&\n ((this._stageSize = this.stage.size()),\n this.isPaginated\n ? (this.layout.calculate(\n this._stageSize.width,\n this._stageSize.height,\n this.settings.gap\n ),\n (this.settings.offset =\n this.layout.delta / this.layout.divisor))\n : this.layout.calculate(\n this._stageSize.width,\n this._stageSize.height\n ),\n (this.viewSettings.width = this.layout.width),\n (this.viewSettings.height = this.layout.height),\n this.setLayout(this.layout));\n }\n setLayout(t) {\n (this.viewSettings.layout = t),\n (this.mapping = new a.a(\n t.props,\n this.settings.direction,\n this.settings.axis\n )),\n this.views &&\n this.views.forEach(function (e) {\n e && e.setLayout(t);\n });\n }\n updateWritingMode(t) {\n this.writingMode = t;\n }\n updateAxis(t, e) {\n (e || t !== this.settings.axis) &&\n ((this.settings.axis = t),\n this.stage && this.stage.axis(t),\n (this.viewSettings.axis = t),\n this.mapping &&\n (this.mapping = new a.a(\n this.layout.props,\n this.settings.direction,\n this.settings.axis\n )),\n this.layout &&\n (\"vertical\" === t\n ? this.layout.spread(\"none\")\n : this.layout.spread(this.layout.settings.spread)));\n }\n updateFlow(t, e = \"auto\") {\n let i = \"paginated\" === t || \"auto\" === t;\n (this.isPaginated = i),\n \"scrolled-doc\" === t ||\n \"scrolled-continuous\" === t ||\n \"scrolled\" === t\n ? this.updateAxis(\"vertical\")\n : this.updateAxis(\"horizontal\"),\n (this.viewSettings.flow = t),\n this.settings.overflow\n ? (this.overflow = this.settings.overflow)\n : (this.overflow = i ? \"hidden\" : e),\n this.stage && this.stage.overflow(this.overflow),\n this.updateLayout();\n }\n getContents() {\n var t = [];\n return this.views\n ? (this.views.forEach(function (e) {\n const i = e && e.contents;\n i && t.push(i);\n }),\n t)\n : t;\n }\n direction(t = \"ltr\") {\n (this.settings.direction = t),\n this.stage && this.stage.direction(t),\n (this.viewSettings.direction = t),\n this.updateLayout();\n }\n isRendered() {\n return this.rendered;\n }\n }\n s()(p.prototype);\n e.a = p;\n },\n function (t, e, i) {\n \"use strict\";\n var n = i(2),\n s = i(0);\n e.a = class {\n constructor(t, e, i, n = !1) {\n (this.layout = t),\n (this.horizontal = \"horizontal\" === i),\n (this.direction = e || \"ltr\"),\n (this._dev = n);\n }\n section(t) {\n var e = this.findRanges(t);\n return this.rangeListToCfiList(t.section.cfiBase, e);\n }\n page(t, e, i, s) {\n var r,\n o = !(!t || !t.document) && t.document.body;\n if (o) {\n if (\n ((r = this.rangePairToCfiPair(e, {\n start: this.findStart(o, i, s),\n end: this.findEnd(o, i, s),\n })),\n !0 === this._dev)\n ) {\n let e = t.document,\n i = new n.a(r.start).toRange(e),\n s = new n.a(r.end).toRange(e),\n o = e.defaultView.getSelection(),\n a = e.createRange();\n o.removeAllRanges(),\n a.setStart(i.startContainer, i.startOffset),\n a.setEnd(s.endContainer, s.endOffset),\n o.addRange(a);\n }\n return r;\n }\n }\n walk(t, e) {\n if (!t || t.nodeType !== Node.TEXT_NODE) {\n var i = function (t) {\n return t.data.trim().length > 0\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_REJECT;\n },\n n = i;\n n.acceptNode = i;\n for (\n var s,\n r,\n o = document.createTreeWalker(\n t,\n NodeFilter.SHOW_TEXT,\n n,\n !1\n );\n (s = o.nextNode()) && !(r = e(s));\n\n );\n return r;\n }\n }\n findRanges(t) {\n for (\n var e,\n i,\n n = [],\n s = t.contents.scrollWidth(),\n r =\n Math.ceil(s / this.layout.spreadWidth) *\n this.layout.divisor,\n o = this.layout.columnWidth,\n a = this.layout.gap,\n h = 0;\n h < r.pages;\n h++\n )\n (e = (o + a) * h),\n (i = o * (h + 1) + a * h),\n n.push({\n start: this.findStart(t.document.body, e, i),\n end: this.findEnd(t.document.body, e, i),\n });\n return n;\n }\n findStart(t, e, i) {\n for (var n, r, o = [t], a = t; o.length; )\n if (\n ((n = o.shift()),\n (r = this.walk(n, (t) => {\n var n, r, h, l, c;\n if (\n ((c = Object(s.nodeBounds)(t)),\n this.horizontal && \"ltr\" === this.direction)\n ) {\n if (\n ((n = this.horizontal ? c.left : c.top),\n (r = this.horizontal ? c.right : c.bottom),\n n >= e && n <= i)\n )\n return t;\n if (r > e) return t;\n (a = t), o.push(t);\n } else if (this.horizontal && \"rtl\" === this.direction) {\n if (((n = c.left), (r = c.right) <= i && r >= e))\n return t;\n if (n < i) return t;\n (a = t), o.push(t);\n } else {\n if (((h = c.top), (l = c.bottom), h >= e && h <= i))\n return t;\n if (l > e) return t;\n (a = t), o.push(t);\n }\n })))\n )\n return this.findTextStartRange(r, e, i);\n return this.findTextStartRange(a, e, i);\n }\n findEnd(t, e, i) {\n for (var n, r, o = [t], a = t; o.length; )\n if (\n ((n = o.shift()),\n (r = this.walk(n, (t) => {\n var n, r, h, l, c;\n if (\n ((c = Object(s.nodeBounds)(t)),\n this.horizontal && \"ltr\" === this.direction)\n ) {\n if (\n ((n = Math.round(c.left)),\n (r = Math.round(c.right)),\n n > i && a)\n )\n return a;\n if (r > i) return t;\n (a = t), o.push(t);\n } else if (this.horizontal && \"rtl\" === this.direction) {\n if (\n ((n = Math.round(this.horizontal ? c.left : c.top)),\n (r = Math.round(\n this.horizontal ? c.right : c.bottom\n )) < e && a)\n )\n return a;\n if (n < e) return t;\n (a = t), o.push(t);\n } else {\n if (\n ((h = Math.round(c.top)),\n (l = Math.round(c.bottom)),\n h > i && a)\n )\n return a;\n if (l > i) return t;\n (a = t), o.push(t);\n }\n })))\n )\n return this.findTextEndRange(r, e, i);\n return this.findTextEndRange(a, e, i);\n }\n findTextStartRange(t, e, i) {\n for (\n var n, s, r = this.splitTextNodeIntoRanges(t), o = 0;\n o < r.length;\n o++\n )\n if (\n ((s = (n = r[o]).getBoundingClientRect()),\n this.horizontal && \"ltr\" === this.direction)\n ) {\n if (s.left >= e) return n;\n } else if (this.horizontal && \"rtl\" === this.direction) {\n if (s.right <= i) return n;\n } else if (s.top >= e) return n;\n return r[0];\n }\n findTextEndRange(t, e, i) {\n for (\n var n,\n s,\n r,\n o,\n a,\n h,\n l,\n c = this.splitTextNodeIntoRanges(t),\n u = 0;\n u < c.length;\n u++\n ) {\n if (\n ((r = (s = c[u]).getBoundingClientRect()),\n this.horizontal && \"ltr\" === this.direction)\n ) {\n if (((o = r.left), (a = r.right), o > i && n)) return n;\n if (a > i) return s;\n } else if (this.horizontal && \"rtl\" === this.direction) {\n if (((o = r.left), (a = r.right) < e && n)) return n;\n if (o < e) return s;\n } else {\n if (((h = r.top), (l = r.bottom), h > i && n)) return n;\n if (l > i) return s;\n }\n n = s;\n }\n return c[c.length - 1];\n }\n splitTextNodeIntoRanges(t, e) {\n var i,\n n = [],\n s = (t.textContent || \"\").trim(),\n r = t.ownerDocument,\n o = e || \" \",\n a = s.indexOf(o);\n if (-1 === a || t.nodeType != Node.TEXT_NODE)\n return (i = r.createRange()).selectNodeContents(t), [i];\n for (\n (i = r.createRange()).setStart(t, 0),\n i.setEnd(t, a),\n n.push(i),\n i = !1;\n -1 != a;\n\n )\n (a = s.indexOf(o, a + 1)) > 0 &&\n (i && (i.setEnd(t, a), n.push(i)),\n (i = r.createRange()).setStart(t, a + 1));\n return i && (i.setEnd(t, s.length), n.push(i)), n;\n }\n rangePairToCfiPair(t, e) {\n var i = e.start,\n s = e.end;\n return (\n i.collapse(!0),\n s.collapse(!1),\n {\n start: new n.a(i, t).toString(),\n end: new n.a(s, t).toString(),\n }\n );\n }\n rangeListToCfiList(t, e) {\n for (var i, n = [], s = 0; s < e.length; s++)\n (i = this.rangePairToCfiPair(t, e[s])), n.push(i);\n return n;\n }\n axis(t) {\n return (\n t && (this.horizontal = \"horizontal\" === t), this.horizontal\n );\n }\n };\n },\n function (t, e, i) {\n \"use strict\";\n var n = i(3),\n s = i.n(n),\n r = i(0),\n o = i(2),\n a = i(11),\n h = i(8),\n l = i(1);\n const c = \"undefined\" != typeof navigator,\n u = c && /Chrome/.test(navigator.userAgent),\n d = c && !u && /AppleWebKit/.test(navigator.userAgent);\n class f {\n constructor(t, e, i, n) {\n (this.epubcfi = new o.a()),\n (this.document = t),\n (this.documentElement = this.document.documentElement),\n (this.content = e || this.document.body),\n (this.window = this.document.defaultView),\n (this._size = { width: 0, height: 0 }),\n (this.sectionIndex = n || 0),\n (this.cfiBase = i || \"\"),\n this.epubReadingSystem(\"epub.js\", l.b),\n (this.called = 0),\n (this.active = !0),\n this.listeners();\n }\n static get listenedEvents() {\n return l.a;\n }\n width(t) {\n var e = this.content;\n return (\n t && Object(r.isNumber)(t) && (t += \"px\"),\n t && (e.style.width = t),\n parseInt(this.window.getComputedStyle(e).width)\n );\n }\n height(t) {\n var e = this.content;\n return (\n t && Object(r.isNumber)(t) && (t += \"px\"),\n t && (e.style.height = t),\n parseInt(this.window.getComputedStyle(e).height)\n );\n }\n contentWidth(t) {\n var e = this.content || this.document.body;\n return (\n t && Object(r.isNumber)(t) && (t += \"px\"),\n t && (e.style.width = t),\n parseInt(this.window.getComputedStyle(e).width)\n );\n }\n contentHeight(t) {\n var e = this.content || this.document.body;\n return (\n t && Object(r.isNumber)(t) && (t += \"px\"),\n t && (e.style.height = t),\n parseInt(this.window.getComputedStyle(e).height)\n );\n }\n textWidth() {\n let t,\n e,\n i = this.document.createRange(),\n n = this.content || this.document.body,\n s = Object(r.borders)(n);\n return (\n i.selectNodeContents(n),\n (t = i.getBoundingClientRect()),\n (e = t.width),\n s && s.width && (e += s.width),\n Math.round(e)\n );\n }\n textHeight() {\n let t,\n e,\n i = this.document.createRange(),\n n = this.content || this.document.body;\n return (\n i.selectNodeContents(n),\n (t = i.getBoundingClientRect()),\n (e = t.bottom),\n Math.round(e)\n );\n }\n scrollWidth() {\n return this.documentElement.scrollWidth;\n }\n scrollHeight() {\n return this.documentElement.scrollHeight;\n }\n overflow(t) {\n return (\n t && (this.documentElement.style.overflow = t),\n this.window.getComputedStyle(this.documentElement).overflow\n );\n }\n overflowX(t) {\n return (\n t && (this.documentElement.style.overflowX = t),\n this.window.getComputedStyle(this.documentElement).overflowX\n );\n }\n overflowY(t) {\n return (\n t && (this.documentElement.style.overflowY = t),\n this.window.getComputedStyle(this.documentElement).overflowY\n );\n }\n css(t, e, i) {\n var n = this.content || this.document.body;\n return (\n e\n ? n.style.setProperty(t, e, i ? \"important\" : \"\")\n : n.style.removeProperty(t),\n this.window.getComputedStyle(n)[t]\n );\n }\n viewport(t) {\n var e,\n i = this.document.querySelector(\"meta[name='viewport']\"),\n n = {\n width: void 0,\n height: void 0,\n scale: void 0,\n minimum: void 0,\n maximum: void 0,\n scalable: void 0,\n },\n s = [];\n if (i && i.hasAttribute(\"content\")) {\n let t = i.getAttribute(\"content\"),\n e = t.match(/width\\s*=\\s*([^,]*)/),\n s = t.match(/height\\s*=\\s*([^,]*)/),\n r = t.match(/initial-scale\\s*=\\s*([^,]*)/),\n o = t.match(/minimum-scale\\s*=\\s*([^,]*)/),\n a = t.match(/maximum-scale\\s*=\\s*([^,]*)/),\n h = t.match(/user-scalable\\s*=\\s*([^,]*)/);\n e && e.length && void 0 !== e[1] && (n.width = e[1]),\n s && s.length && void 0 !== s[1] && (n.height = s[1]),\n r && r.length && void 0 !== r[1] && (n.scale = r[1]),\n o && o.length && void 0 !== o[1] && (n.minimum = o[1]),\n a && a.length && void 0 !== a[1] && (n.maximum = a[1]),\n h && h.length && void 0 !== h[1] && (n.scalable = h[1]);\n }\n return (\n (e = Object(r.defaults)(t || {}, n)),\n t &&\n (e.width && s.push(\"width=\" + e.width),\n e.height && s.push(\"height=\" + e.height),\n e.scale && s.push(\"initial-scale=\" + e.scale),\n \"no\" === e.scalable\n ? (s.push(\"minimum-scale=\" + e.scale),\n s.push(\"maximum-scale=\" + e.scale),\n s.push(\"user-scalable=\" + e.scalable))\n : (e.scalable && s.push(\"user-scalable=\" + e.scalable),\n e.minimum && s.push(\"minimum-scale=\" + e.minimum),\n e.maximum && s.push(\"minimum-scale=\" + e.maximum)),\n i ||\n ((i = this.document.createElement(\"meta\")).setAttribute(\n \"name\",\n \"viewport\"\n ),\n this.document.querySelector(\"head\").appendChild(i)),\n i.setAttribute(\"content\", s.join(\", \")),\n this.window.scrollTo(0, 0)),\n e\n );\n }\n expand() {\n this.emit(l.c.CONTENTS.EXPAND);\n }\n listeners() {\n this.imageLoadListeners(),\n this.mediaQueryListeners(),\n this.addEventListeners(),\n this.addSelectionListeners(),\n \"undefined\" == typeof ResizeObserver\n ? (this.resizeListeners(), this.visibilityListeners())\n : this.resizeObservers(),\n this.linksHandler();\n }\n removeListeners() {\n this.removeEventListeners(),\n this.removeSelectionListeners(),\n this.observer && this.observer.disconnect(),\n clearTimeout(this.expanding);\n }\n resizeCheck() {\n let t = this.textWidth(),\n e = this.textHeight();\n (t == this._size.width && e == this._size.height) ||\n ((this._size = { width: t, height: e }),\n this.onResize && this.onResize(this._size),\n this.emit(l.c.CONTENTS.RESIZE, this._size));\n }\n resizeListeners() {\n clearTimeout(this.expanding),\n requestAnimationFrame(this.resizeCheck.bind(this)),\n (this.expanding = setTimeout(\n this.resizeListeners.bind(this),\n 350\n ));\n }\n visibilityListeners() {\n document.addEventListener(\"visibilitychange\", () => {\n \"visible\" === document.visibilityState && !1 === this.active\n ? ((this.active = !0), this.resizeListeners())\n : ((this.active = !1), clearTimeout(this.expanding));\n });\n }\n transitionListeners() {\n let t = this.content;\n (t.style.transitionProperty =\n \"font, font-size, font-size-adjust, font-stretch, font-variation-settings, font-weight, width, height\"),\n (t.style.transitionDuration = \"0.001ms\"),\n (t.style.transitionTimingFunction = \"linear\"),\n (t.style.transitionDelay = \"0\"),\n (this._resizeCheck = this.resizeCheck.bind(this)),\n this.document.addEventListener(\n \"transitionend\",\n this._resizeCheck\n );\n }\n mediaQueryListeners() {\n for (\n var t = this.document.styleSheets,\n e = function (t) {\n t.matches &&\n !this._expanding &&\n setTimeout(this.expand.bind(this), 1);\n }.bind(this),\n i = 0;\n i < t.length;\n i += 1\n ) {\n var n;\n try {\n n = t[i].cssRules;\n } catch (t) {\n return;\n }\n if (!n) return;\n for (var s = 0; s < n.length; s += 1) {\n if (n[s].media)\n this.window\n .matchMedia(n[s].media.mediaText)\n .addListener(e);\n }\n }\n }\n resizeObservers() {\n (this.observer = new ResizeObserver((t) => {\n requestAnimationFrame(this.resizeCheck.bind(this));\n })),\n this.observer.observe(this.document.documentElement);\n }\n mutationObservers() {\n this.observer = new MutationObserver((t) => {\n this.resizeCheck();\n });\n this.observer.observe(this.document, {\n attributes: !0,\n childList: !0,\n characterData: !0,\n subtree: !0,\n });\n }\n imageLoadListeners() {\n for (\n var t, e = this.document.querySelectorAll(\"img\"), i = 0;\n i < e.length;\n i++\n )\n void 0 !== (t = e[i]).naturalWidth &&\n 0 === t.naturalWidth &&\n (t.onload = this.expand.bind(this));\n }\n fontLoadListeners() {\n this.document &&\n this.document.fonts &&\n this.document.fonts.ready.then(\n function () {\n this.resizeCheck();\n }.bind(this)\n );\n }\n root() {\n return this.document ? this.document.documentElement : null;\n }\n locationOf(t, e) {\n var i,\n n = { left: 0, top: 0 };\n if (!this.document) return n;\n if (this.epubcfi.isCfiString(t)) {\n let s = new o.a(t).toRange(this.document, e);\n if (s) {\n try {\n if (\n !s.endContainer ||\n (s.startContainer == s.endContainer &&\n s.startOffset == s.endOffset)\n ) {\n let t = s.startContainer.textContent.indexOf(\n \" \",\n s.startOffset\n );\n -1 == t && (t = s.startContainer.textContent.length),\n s.setEnd(s.startContainer, t);\n }\n } catch (t) {\n console.error(\n \"setting end offset to start container length failed\",\n t\n );\n }\n if (s.startContainer.nodeType === Node.ELEMENT_NODE)\n (i = s.startContainer.getBoundingClientRect()),\n (n.left = i.left),\n (n.top = i.top);\n else if (d) {\n let t = s.startContainer,\n e = new Range();\n try {\n 1 === t.nodeType\n ? (i = t.getBoundingClientRect())\n : s.startOffset + 2 < t.length\n ? (e.setStart(t, s.startOffset),\n e.setEnd(t, s.startOffset + 2),\n (i = e.getBoundingClientRect()))\n : s.startOffset - 2 > 0\n ? (e.setStart(t, s.startOffset - 2),\n e.setEnd(t, s.startOffset),\n (i = e.getBoundingClientRect()))\n : (i = t.parentNode.getBoundingClientRect());\n } catch (t) {\n console.error(t, t.stack);\n }\n } else i = s.getBoundingClientRect();\n }\n } else if (\"string\" == typeof t && t.indexOf(\"#\") > -1) {\n let e = t.substring(t.indexOf(\"#\") + 1),\n n = this.document.getElementById(e);\n if (n)\n if (d) {\n let t = new Range();\n t.selectNode(n), (i = t.getBoundingClientRect());\n } else i = n.getBoundingClientRect();\n }\n return i && ((n.left = i.left), (n.top = i.top)), n;\n }\n addStylesheet(t) {\n return new Promise(\n function (e, i) {\n var n,\n s = !1;\n this.document\n ? (n = this.document.querySelector(\n \"link[href='\" + t + \"']\"\n ))\n ? e(!0)\n : (((n = this.document.createElement(\"link\")).type =\n \"text/css\"),\n (n.rel = \"stylesheet\"),\n (n.href = t),\n (n.onload = n.onreadystatechange =\n function () {\n s ||\n (this.readyState &&\n \"complete\" != this.readyState) ||\n ((s = !0),\n setTimeout(() => {\n e(!0);\n }, 1));\n }),\n this.document.head.appendChild(n))\n : e(!1);\n }.bind(this)\n );\n }\n _getStylesheetNode(t) {\n var e;\n return (\n (t = \"epubjs-inserted-css-\" + (t || \"\")),\n !!this.document &&\n ((e = this.document.getElementById(t)) ||\n (((e = this.document.createElement(\"style\")).id = t),\n this.document.head.appendChild(e)),\n e)\n );\n }\n addStylesheetCss(t, e) {\n return (\n !(!this.document || !t) &&\n ((this._getStylesheetNode(e).innerHTML = t), !0)\n );\n }\n addStylesheetRules(t, e) {\n var i;\n if (this.document && t && 0 !== t.length)\n if (\n ((i = this._getStylesheetNode(e).sheet),\n \"[object Array]\" === Object.prototype.toString.call(t))\n )\n for (var n = 0, s = t.length; n < s; n++) {\n var r = 1,\n o = t[n],\n a = t[n][0],\n h = \"\";\n \"[object Array]\" ===\n Object.prototype.toString.call(o[1][0]) &&\n ((o = o[1]), (r = 0));\n for (var l = o.length; r < l; r++) {\n var c = o[r];\n h +=\n c[0] +\n \":\" +\n c[1] +\n (c[2] ? \" !important\" : \"\") +\n \";\\n\";\n }\n i.insertRule(a + \"{\" + h + \"}\", i.cssRules.length);\n }\n else {\n Object.keys(t).forEach((e) => {\n const n = t[e];\n if (Array.isArray(n))\n n.forEach((t) => {\n const n = Object.keys(t)\n .map((e) => `${e}:${t[e]}`)\n .join(\";\");\n i.insertRule(`${e}{${n}}`, i.cssRules.length);\n });\n else {\n const t = Object.keys(n)\n .map((t) => `${t}:${n[t]}`)\n .join(\";\");\n i.insertRule(`${e}{${t}}`, i.cssRules.length);\n }\n });\n }\n }\n addScript(t) {\n return new Promise(\n function (e, i) {\n var n,\n s = !1;\n this.document\n ? (((n = this.document.createElement(\"script\")).type =\n \"text/javascript\"),\n (n.async = !0),\n (n.src = t),\n (n.onload = n.onreadystatechange =\n function () {\n s ||\n (this.readyState &&\n \"complete\" != this.readyState) ||\n ((s = !0),\n setTimeout(function () {\n e(!0);\n }, 1));\n }),\n this.document.head.appendChild(n))\n : e(!1);\n }.bind(this)\n );\n }\n addClass(t) {\n var e;\n this.document &&\n (e = this.content || this.document.body) &&\n e.classList.add(t);\n }\n removeClass(t) {\n var e;\n this.document &&\n (e = this.content || this.document.body) &&\n e.classList.remove(t);\n }\n addEventListeners() {\n this.document &&\n ((this._triggerEvent = this.triggerEvent.bind(this)),\n l.a.forEach(function (t) {\n this.document.addEventListener(t, this._triggerEvent, {\n passive: !0,\n });\n }, this));\n }\n removeEventListeners() {\n this.document &&\n (l.a.forEach(function (t) {\n this.document.removeEventListener(t, this._triggerEvent, {\n passive: !0,\n });\n }, this),\n (this._triggerEvent = void 0));\n }\n triggerEvent(t) {\n this.emit(t.type, t);\n }\n addSelectionListeners() {\n this.document &&\n ((this._onSelectionChange =\n this.onSelectionChange.bind(this)),\n this.document.addEventListener(\n \"selectionchange\",\n this._onSelectionChange,\n { passive: !0 }\n ));\n }\n removeSelectionListeners() {\n this.document &&\n (this.document.removeEventListener(\n \"selectionchange\",\n this._onSelectionChange,\n { passive: !0 }\n ),\n (this._onSelectionChange = void 0));\n }\n onSelectionChange(t) {\n this.selectionEndTimeout &&\n clearTimeout(this.selectionEndTimeout),\n (this.selectionEndTimeout = setTimeout(\n function () {\n var t = this.window.getSelection();\n this.triggerSelectedEvent(t);\n }.bind(this),\n 250\n ));\n }\n triggerSelectedEvent(t) {\n var e, i;\n t &&\n t.rangeCount > 0 &&\n ((e = t.getRangeAt(0)).collapsed ||\n ((i = new o.a(e, this.cfiBase).toString()),\n this.emit(l.c.CONTENTS.SELECTED, i),\n this.emit(l.c.CONTENTS.SELECTED_RANGE, e)));\n }\n range(t, e) {\n return new o.a(t).toRange(this.document, e);\n }\n cfiFromRange(t, e) {\n return new o.a(t, this.cfiBase, e).toString();\n }\n cfiFromNode(t, e) {\n return new o.a(t, this.cfiBase, e).toString();\n }\n map(t) {\n return new a.a(t).section();\n }\n size(t, e) {\n var i = { scale: 1, scalable: \"no\" };\n this.layoutStyle(\"scrolling\"),\n t >= 0 &&\n (this.width(t),\n (i.width = t),\n this.css(\"padding\", \"0 \" + t / 12 + \"px\")),\n e >= 0 && (this.height(e), (i.height = e)),\n this.css(\"margin\", \"0\"),\n this.css(\"box-sizing\", \"border-box\"),\n this.viewport(i);\n }\n columns(t, e, i, n, s) {\n let o = Object(r.prefixed)(\"column-axis\"),\n a = Object(r.prefixed)(\"column-gap\"),\n h = Object(r.prefixed)(\"column-width\"),\n l = Object(r.prefixed)(\"column-fill\"),\n c =\n 0 === this.writingMode().indexOf(\"vertical\")\n ? \"vertical\"\n : \"horizontal\";\n this.layoutStyle(\"paginated\"),\n \"rtl\" === s && \"horizontal\" === c && this.direction(s),\n this.width(t),\n this.height(e),\n this.viewport({\n width: t,\n height: e,\n scale: 1,\n scalable: \"no\",\n }),\n this.css(\"overflow-y\", \"hidden\"),\n this.css(\"margin\", \"0\", !0),\n \"vertical\" === c\n ? (this.css(\"padding-top\", n / 2 + \"px\", !0),\n this.css(\"padding-bottom\", n / 2 + \"px\", !0),\n this.css(\"padding-left\", \"20px\"),\n this.css(\"padding-right\", \"20px\"),\n this.css(o, \"vertical\"))\n : (this.css(\"padding-top\", \"20px\"),\n this.css(\"padding-bottom\", \"20px\"),\n this.css(\"padding-left\", n / 2 + \"px\", !0),\n this.css(\"padding-right\", n / 2 + \"px\", !0),\n this.css(o, \"horizontal\")),\n this.css(\"box-sizing\", \"border-box\"),\n this.css(\"max-width\", \"inherit\"),\n this.css(l, \"auto\"),\n this.css(a, n + \"px\"),\n this.css(h, i + \"px\"),\n this.css(\"-webkit-line-box-contain\", \"block glyphs replaced\");\n }\n scaler(t, e, i) {\n var n = \"scale(\" + t + \")\",\n s = \"\";\n this.css(\"transform-origin\", \"top left\"),\n (e >= 0 || i >= 0) &&\n (s = \" translate(\" + (e || 0) + \"px, \" + (i || 0) + \"px )\"),\n this.css(\"transform\", n + s);\n }\n fit(t, e, i) {\n var n = this.viewport(),\n s = parseInt(n.width),\n r = parseInt(n.height),\n o = t / s,\n a = e / r,\n h = o < a ? o : a;\n if (\n (this.layoutStyle(\"paginated\"),\n this.width(s),\n this.height(r),\n this.overflow(\"hidden\"),\n this.scaler(h, 0, 0),\n this.css(\"background-size\", s * h + \"px \" + r * h + \"px\"),\n this.css(\"background-color\", \"transparent\"),\n i && i.properties.includes(\"page-spread-left\"))\n ) {\n var l = t - s * h;\n this.css(\"margin-left\", l + \"px\");\n }\n }\n direction(t) {\n this.documentElement &&\n (this.documentElement.style.direction = t);\n }\n mapPage(t, e, i, n, s) {\n return new a.a(e, s).page(this, t, i, n);\n }\n linksHandler() {\n Object(h.c)(this.content, (t) => {\n this.emit(l.c.CONTENTS.LINK_CLICKED, t);\n });\n }\n writingMode(t) {\n let e = Object(r.prefixed)(\"writing-mode\");\n return (\n t &&\n this.documentElement &&\n (this.documentElement.style[e] = t),\n this.window.getComputedStyle(this.documentElement)[e] || \"\"\n );\n }\n layoutStyle(t) {\n return (\n t &&\n ((this._layoutStyle = t),\n (navigator.epubReadingSystem.layoutStyle =\n this._layoutStyle)),\n this._layoutStyle || \"paginated\"\n );\n }\n epubReadingSystem(t, e) {\n return (\n (navigator.epubReadingSystem = {\n name: t,\n version: e,\n layoutStyle: this.layoutStyle(),\n hasFeature: function (t) {\n switch (t) {\n case \"dom-manipulation\":\n case \"layout-changes\":\n case \"touch-events\":\n case \"mouse-events\":\n case \"keyboard-events\":\n return !0;\n case \"spine-scripting\":\n default:\n return !1;\n }\n },\n }),\n navigator.epubReadingSystem\n );\n }\n destroy() {\n this.removeListeners();\n }\n }\n s()(f.prototype), (e.a = f);\n },\n function (t, e, i) {\n \"use strict\";\n Object.defineProperty(e, \"__esModule\", { value: !0 }),\n (e.Underline = e.Highlight = e.Mark = e.Pane = void 0);\n var n = (function () {\n function t(t, e) {\n for (var i = 0; i < e.length; i++) {\n var n = e[i];\n (n.enumerable = n.enumerable || !1),\n (n.configurable = !0),\n \"value\" in n && (n.writable = !0),\n Object.defineProperty(t, n.key, n);\n }\n }\n return function (e, i, n) {\n return i && t(e.prototype, i), n && t(e, n), e;\n };\n })(),\n s = o(i(49)),\n r = o(i(50));\n function o(t) {\n return t && t.__esModule ? t : { default: t };\n }\n function a(t, e) {\n if (!t)\n throw new ReferenceError(\n \"this hasn't been initialised - super() hasn't been called\"\n );\n return !e || (\"object\" != typeof e && \"function\" != typeof e)\n ? t\n : e;\n }\n function h(t, e) {\n if (\"function\" != typeof e && null !== e)\n throw new TypeError(\n \"Super expression must either be null or a function, not \" +\n typeof e\n );\n (t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n enumerable: !1,\n writable: !0,\n configurable: !0,\n },\n })),\n e &&\n (Object.setPrototypeOf\n ? Object.setPrototypeOf(t, e)\n : (t.__proto__ = e));\n }\n function l(t, e) {\n if (!(t instanceof e))\n throw new TypeError(\"Cannot call a class as a function\");\n }\n e.Pane = (function () {\n function t(e) {\n var i =\n arguments.length > 1 && void 0 !== arguments[1]\n ? arguments[1]\n : document.body;\n l(this, t),\n (this.target = e),\n (this.element = s.default.createElement(\"svg\")),\n (this.marks = []),\n (this.element.style.position = \"absolute\"),\n this.element.setAttribute(\"pointer-events\", \"none\"),\n r.default.proxyMouse(this.target, this.marks),\n (this.container = i),\n this.container.appendChild(this.element),\n this.render();\n }\n return (\n n(t, [\n {\n key: \"addMark\",\n value: function (t) {\n var e = s.default.createElement(\"g\");\n return (\n this.element.appendChild(e),\n t.bind(e, this.container),\n this.marks.push(t),\n t.render(),\n t\n );\n },\n },\n {\n key: \"removeMark\",\n value: function (t) {\n var e = this.marks.indexOf(t);\n if (-1 !== e) {\n var i = t.unbind();\n this.element.removeChild(i), this.marks.splice(e, 1);\n }\n },\n },\n {\n key: \"render\",\n value: function () {\n var t, e, i, n;\n !(function (t, e) {\n t.style.setProperty(\"top\", e.top + \"px\", \"important\"),\n t.style.setProperty(\n \"left\",\n e.left + \"px\",\n \"important\"\n ),\n t.style.setProperty(\n \"height\",\n e.height + \"px\",\n \"important\"\n ),\n t.style.setProperty(\n \"width\",\n e.width + \"px\",\n \"important\"\n );\n })(\n this.element,\n ((t = this.target),\n (e = this.container),\n (i = e.getBoundingClientRect()),\n (n = t.getBoundingClientRect()),\n {\n top: n.top - i.top,\n left: n.left - i.left,\n height: t.scrollHeight,\n width: t.scrollWidth,\n })\n );\n var s = !0,\n r = !1,\n o = void 0;\n try {\n for (\n var a, h = this.marks[Symbol.iterator]();\n !(s = (a = h.next()).done);\n s = !0\n ) {\n a.value.render();\n }\n } catch (t) {\n (r = !0), (o = t);\n } finally {\n try {\n !s && h.return && h.return();\n } finally {\n if (r) throw o;\n }\n }\n },\n },\n ]),\n t\n );\n })();\n var c = (e.Mark = (function () {\n function t() {\n l(this, t), (this.element = null);\n }\n return (\n n(t, [\n {\n key: \"bind\",\n value: function (t, e) {\n (this.element = t), (this.container = e);\n },\n },\n {\n key: \"unbind\",\n value: function () {\n var t = this.element;\n return (this.element = null), t;\n },\n },\n { key: \"render\", value: function () {} },\n {\n key: \"dispatchEvent\",\n value: function (t) {\n this.element && this.element.dispatchEvent(t);\n },\n },\n {\n key: \"getBoundingClientRect\",\n value: function () {\n return this.element.getBoundingClientRect();\n },\n },\n {\n key: \"getClientRects\",\n value: function () {\n for (var t = [], e = this.element.firstChild; e; )\n t.push(e.getBoundingClientRect()),\n (e = e.nextSibling);\n return t;\n },\n },\n {\n key: \"filteredRanges\",\n value: function () {\n var t = Array.from(this.range.getClientRects());\n return t.filter(function (e) {\n for (var i = 0; i < t.length; i++) {\n if (t[i] === e) return !0;\n if (\n ((n = t[i]),\n (s = e).right <= n.right &&\n s.left >= n.left &&\n s.top >= n.top &&\n s.bottom <= n.bottom)\n )\n return !1;\n }\n var n, s;\n return !0;\n });\n },\n },\n ]),\n t\n );\n })()),\n u = (e.Highlight = (function (t) {\n function e(t, i, n, s) {\n l(this, e);\n var r = a(\n this,\n (e.__proto__ || Object.getPrototypeOf(e)).call(this)\n );\n return (\n (r.range = t),\n (r.className = i),\n (r.data = n || {}),\n (r.attributes = s || {}),\n r\n );\n }\n return (\n h(e, t),\n n(e, [\n {\n key: \"bind\",\n value: function (t, i) {\n for (var n in ((function t(e, i, n) {\n null === e && (e = Function.prototype);\n var s = Object.getOwnPropertyDescriptor(e, i);\n if (void 0 === s) {\n var r = Object.getPrototypeOf(e);\n return null === r ? void 0 : t(r, i, n);\n }\n if (\"value\" in s) return s.value;\n var o = s.get;\n return void 0 !== o ? o.call(n) : void 0;\n })(\n e.prototype.__proto__ ||\n Object.getPrototypeOf(e.prototype),\n \"bind\",\n this\n ).call(this, t, i),\n this.data))\n this.data.hasOwnProperty(n) &&\n (this.element.dataset[n] = this.data[n]);\n for (var n in this.attributes)\n this.attributes.hasOwnProperty(n) &&\n this.element.setAttribute(n, this.attributes[n]);\n this.className &&\n this.element.classList.add(this.className);\n },\n },\n {\n key: \"render\",\n value: function () {\n for (; this.element.firstChild; )\n this.element.removeChild(this.element.firstChild);\n for (\n var t =\n this.element.ownerDocument.createDocumentFragment(),\n e = this.filteredRanges(),\n i = this.element.getBoundingClientRect(),\n n = this.container.getBoundingClientRect(),\n r = 0,\n o = e.length;\n r < o;\n r++\n ) {\n var a = e[r],\n h = s.default.createElement(\"rect\");\n h.setAttribute(\"x\", a.left - i.left + n.left),\n h.setAttribute(\"y\", a.top - i.top + n.top),\n h.setAttribute(\"height\", a.height),\n h.setAttribute(\"width\", a.width),\n t.appendChild(h);\n }\n this.element.appendChild(t);\n },\n },\n ]),\n e\n );\n })(c));\n e.Underline = (function (t) {\n function e(t, i, n, s) {\n return (\n l(this, e),\n a(\n this,\n (e.__proto__ || Object.getPrototypeOf(e)).call(\n this,\n t,\n i,\n n,\n s\n )\n )\n );\n }\n return (\n h(e, t),\n n(e, [\n {\n key: \"render\",\n value: function () {\n for (; this.element.firstChild; )\n this.element.removeChild(this.element.firstChild);\n for (\n var t =\n this.element.ownerDocument.createDocumentFragment(),\n e = this.filteredRanges(),\n i = this.element.getBoundingClientRect(),\n n = this.container.getBoundingClientRect(),\n r = 0,\n o = e.length;\n r < o;\n r++\n ) {\n var a = e[r],\n h = s.default.createElement(\"rect\");\n h.setAttribute(\"x\", a.left - i.left + n.left),\n h.setAttribute(\"y\", a.top - i.top + n.top),\n h.setAttribute(\"height\", a.height),\n h.setAttribute(\"width\", a.width),\n h.setAttribute(\"fill\", \"none\");\n var l = s.default.createElement(\"line\");\n l.setAttribute(\"x1\", a.left - i.left + n.left),\n l.setAttribute(\n \"x2\",\n a.left - i.left + n.left + a.width\n ),\n l.setAttribute(\n \"y1\",\n a.top - i.top + n.top + a.height - 1\n ),\n l.setAttribute(\n \"y2\",\n a.top - i.top + n.top + a.height - 1\n ),\n l.setAttribute(\"stroke-width\", 1),\n l.setAttribute(\"stroke\", \"black\"),\n l.setAttribute(\"stroke-linecap\", \"square\"),\n t.appendChild(h),\n t.appendChild(l);\n }\n this.element.appendChild(t);\n },\n },\n ]),\n e\n );\n })(u);\n },\n function (t, e, i) {\n \"use strict\";\n function n(t, e) {\n return (\n void 0 === e && (e = Object),\n e && \"function\" == typeof e.freeze ? e.freeze(t) : t\n );\n }\n var s = n({\n HTML: \"text/html\",\n isHTML: function (t) {\n return t === s.HTML;\n },\n XML_APPLICATION: \"application/xml\",\n XML_TEXT: \"text/xml\",\n XML_XHTML_APPLICATION: \"application/xhtml+xml\",\n XML_SVG_IMAGE: \"image/svg+xml\",\n }),\n r = n({\n HTML: \"http://www.w3.org/1999/xhtml\",\n isHTML: function (t) {\n return t === r.HTML;\n },\n SVG: \"http://www.w3.org/2000/svg\",\n XML: \"http://www.w3.org/XML/1998/namespace\",\n XMLNS: \"http://www.w3.org/2000/xmlns/\",\n });\n (e.freeze = n), (e.MIME_TYPE = s), (e.NAMESPACE = r);\n },\n function (t, e, i) {\n var n = i(25);\n (e.DOMImplementation = n.DOMImplementation),\n (e.XMLSerializer = n.XMLSerializer),\n (e.DOMParser = i(46).DOMParser);\n },\n function (t, e, i) {\n \"use strict\";\n var n = i(3),\n s = i.n(n),\n r = i(0),\n o = i(6),\n a = i(2),\n h = i(9),\n l = i(1);\n class c {\n constructor(t) {\n (this.settings = t),\n (this.name = t.layout || \"reflowable\"),\n (this._spread = \"none\" !== t.spread),\n (this._minSpreadWidth = t.minSpreadWidth || 800),\n (this._evenSpreads = t.evenSpreads || !1),\n \"scrolled\" === t.flow ||\n \"scrolled-continuous\" === t.flow ||\n \"scrolled-doc\" === t.flow\n ? (this._flow = \"scrolled\")\n : (this._flow = \"paginated\"),\n (this.width = 0),\n (this.height = 0),\n (this.spreadWidth = 0),\n (this.delta = 0),\n (this.columnWidth = 0),\n (this.gap = 0),\n (this.divisor = 1),\n (this.props = {\n name: this.name,\n spread: this._spread,\n flow: this._flow,\n width: 0,\n height: 0,\n spreadWidth: 0,\n delta: 0,\n columnWidth: 0,\n gap: 0,\n divisor: 1,\n });\n }\n flow(t) {\n return (\n void 0 !== t &&\n ((this._flow =\n \"scrolled\" === t ||\n \"scrolled-continuous\" === t ||\n \"scrolled-doc\" === t\n ? \"scrolled\"\n : \"paginated\"),\n this.update({ flow: this._flow })),\n this._flow\n );\n }\n spread(t, e) {\n return (\n t &&\n ((this._spread = \"none\" !== t),\n this.update({ spread: this._spread })),\n e >= 0 && (this._minSpreadWidth = e),\n this._spread\n );\n }\n calculate(t, e, i) {\n var n,\n s,\n r,\n o,\n a = 1,\n h = i || 0,\n l = t,\n c = e,\n u = Math.floor(l / 12);\n (a = this._spread && l >= this._minSpreadWidth ? 2 : 1),\n \"reflowable\" !== this.name ||\n \"paginated\" !== this._flow ||\n i >= 0 ||\n (h = u % 2 == 0 ? u : u - 1),\n \"pre-paginated\" === this.name && (h = 0),\n a > 1 ? (r = (n = l / a - h) + h) : ((n = l), (r = l)),\n \"pre-paginated\" === this.name && a > 1 && (l = n),\n (s = n * a + h),\n (o = l),\n (this.width = l),\n (this.height = c),\n (this.spreadWidth = s),\n (this.pageWidth = r),\n (this.delta = o),\n (this.columnWidth = n),\n (this.gap = h),\n (this.divisor = a),\n this.update({\n width: l,\n height: c,\n spreadWidth: s,\n pageWidth: r,\n delta: o,\n columnWidth: n,\n gap: h,\n divisor: a,\n });\n }\n format(t, e, i) {\n return \"pre-paginated\" === this.name\n ? t.fit(this.columnWidth, this.height, e)\n : \"paginated\" === this._flow\n ? t.columns(\n this.width,\n this.height,\n this.columnWidth,\n this.gap,\n this.settings.direction\n )\n : i && \"horizontal\" === i\n ? t.size(null, this.height)\n : t.size(this.width, null);\n }\n count(t, e) {\n let i, n;\n return (\n \"pre-paginated\" === this.name\n ? ((i = 1), (n = 1))\n : \"paginated\" === this._flow\n ? ((e = e || this.delta),\n (i = Math.ceil(t / e)),\n (n = i * this.divisor))\n : ((e = e || this.height), (i = Math.ceil(t / e)), (n = i)),\n { spreads: i, pages: n }\n );\n }\n update(t) {\n if (\n (Object.keys(t).forEach((e) => {\n this.props[e] === t[e] && delete t[e];\n }),\n Object.keys(t).length > 0)\n ) {\n let e = Object(r.extend)(this.props, t);\n this.emit(l.c.LAYOUT.UPDATED, e, t);\n }\n }\n }\n s()(c.prototype);\n var u = c,\n d = i(5);\n var f = class {\n constructor(t) {\n (this.rendition = t),\n (this._themes = {\n default: { rules: {}, url: \"\", serialized: \"\" },\n }),\n (this._overrides = {}),\n (this._current = \"default\"),\n (this._injected = []),\n this.rendition.hooks.content.register(this.inject.bind(this)),\n this.rendition.hooks.content.register(\n this.overrides.bind(this)\n );\n }\n register() {\n if (0 !== arguments.length)\n return 1 === arguments.length &&\n \"object\" == typeof arguments[0]\n ? this.registerThemes(arguments[0])\n : 1 === arguments.length && \"string\" == typeof arguments[0]\n ? this.default(arguments[0])\n : 2 === arguments.length && \"string\" == typeof arguments[1]\n ? this.registerUrl(arguments[0], arguments[1])\n : 2 === arguments.length && \"object\" == typeof arguments[1]\n ? this.registerRules(arguments[0], arguments[1])\n : void 0;\n }\n default(t) {\n if (t)\n return \"string\" == typeof t\n ? this.registerUrl(\"default\", t)\n : \"object\" == typeof t\n ? this.registerRules(\"default\", t)\n : void 0;\n }\n registerThemes(t) {\n for (var e in t)\n t.hasOwnProperty(e) &&\n (\"string\" == typeof t[e]\n ? this.registerUrl(e, t[e])\n : this.registerRules(e, t[e]));\n }\n registerCss(t, e) {\n (this._themes[t] = { serialized: e }),\n (this._injected[t] || \"default\" == t) && this.update(t);\n }\n registerUrl(t, e) {\n var i = new d.a(e);\n (this._themes[t] = { url: i.toString() }),\n (this._injected[t] || \"default\" == t) && this.update(t);\n }\n registerRules(t, e) {\n (this._themes[t] = { rules: e }),\n (this._injected[t] || \"default\" == t) && this.update(t);\n }\n select(t) {\n var e = this._current;\n (this._current = t),\n this.update(t),\n this.rendition.getContents().forEach((i) => {\n i.removeClass(e), i.addClass(t);\n });\n }\n update(t) {\n this.rendition.getContents().forEach((e) => {\n this.add(t, e);\n });\n }\n inject(t) {\n var e,\n i = [],\n n = this._themes;\n for (var s in n)\n !n.hasOwnProperty(s) ||\n (s !== this._current && \"default\" !== s) ||\n ((((e = n[s]).rules && Object.keys(e.rules).length > 0) ||\n (e.url && -1 === i.indexOf(e.url))) &&\n this.add(s, t),\n this._injected.push(s));\n \"default\" != this._current && t.addClass(this._current);\n }\n add(t, e) {\n var i = this._themes[t];\n i &&\n e &&\n (i.url\n ? e.addStylesheet(i.url)\n : i.serialized\n ? (e.addStylesheetCss(i.serialized, t), (i.injected = !0))\n : i.rules &&\n (e.addStylesheetRules(i.rules, t), (i.injected = !0)));\n }\n override(t, e, i) {\n var n = this.rendition.getContents();\n (this._overrides[t] = { value: e, priority: !0 === i }),\n n.forEach((e) => {\n e.css(\n t,\n this._overrides[t].value,\n this._overrides[t].priority\n );\n });\n }\n removeOverride(t) {\n var e = this.rendition.getContents();\n delete this._overrides[t],\n e.forEach((e) => {\n e.css(t);\n });\n }\n overrides(t) {\n var e = this._overrides;\n for (var i in e)\n e.hasOwnProperty(i) && t.css(i, e[i].value, e[i].priority);\n }\n fontSize(t) {\n this.override(\"font-size\", t);\n }\n font(t) {\n this.override(\"font-family\", t, !0);\n }\n destroy() {\n (this.rendition = void 0),\n (this._themes = void 0),\n (this._overrides = void 0),\n (this._current = void 0),\n (this._injected = void 0);\n }\n };\n i(12);\n class p {\n constructor({\n type: t,\n cfiRange: e,\n data: i,\n sectionIndex: n,\n cb: s,\n className: r,\n styles: o,\n }) {\n (this.type = t),\n (this.cfiRange = e),\n (this.data = i),\n (this.sectionIndex = n),\n (this.mark = void 0),\n (this.cb = s),\n (this.className = r),\n (this.styles = o);\n }\n update(t) {\n this.data = t;\n }\n attach(t) {\n let e,\n {\n cfiRange: i,\n data: n,\n type: s,\n mark: r,\n cb: o,\n className: a,\n styles: h,\n } = this;\n return (\n \"highlight\" === s\n ? (e = t.highlight(i, n, o, a, h))\n : \"underline\" === s\n ? (e = t.underline(i, n, o, a, h))\n : \"mark\" === s && (e = t.mark(i, n, o)),\n (this.mark = e),\n this.emit(l.c.ANNOTATION.ATTACH, e),\n e\n );\n }\n detach(t) {\n let e,\n { cfiRange: i, type: n } = this;\n return (\n t &&\n (\"highlight\" === n\n ? (e = t.unhighlight(i))\n : \"underline\" === n\n ? (e = t.ununderline(i))\n : \"mark\" === n && (e = t.unmark(i))),\n (this.mark = void 0),\n this.emit(l.c.ANNOTATION.DETACH, e),\n e\n );\n }\n text() {}\n }\n s()(p.prototype);\n var g = class {\n constructor(t) {\n (this.rendition = t),\n (this.highlights = []),\n (this.underlines = []),\n (this.marks = []),\n (this._annotations = {}),\n (this._annotationsBySectionIndex = {}),\n this.rendition.hooks.render.register(\n this.inject.bind(this)\n ),\n this.rendition.hooks.unloaded.register(\n this.clear.bind(this)\n );\n }\n add(t, e, i, n, s, r) {\n let o = encodeURI(e + t),\n h = new a.a(e).spinePos,\n l = new p({\n type: t,\n cfiRange: e,\n data: i,\n sectionIndex: h,\n cb: n,\n className: s,\n styles: r,\n });\n return (\n (this._annotations[o] = l),\n h in this._annotationsBySectionIndex\n ? this._annotationsBySectionIndex[h].push(o)\n : (this._annotationsBySectionIndex[h] = [o]),\n this.rendition.views().forEach((t) => {\n l.sectionIndex === t.index && l.attach(t);\n }),\n l\n );\n }\n remove(t, e) {\n let i = encodeURI(t + e);\n if (i in this._annotations) {\n let t = this._annotations[i];\n if (e && t.type !== e) return;\n this.rendition.views().forEach((e) => {\n this._removeFromAnnotationBySectionIndex(\n t.sectionIndex,\n i\n ),\n t.sectionIndex === e.index && t.detach(e);\n }),\n delete this._annotations[i];\n }\n }\n _removeFromAnnotationBySectionIndex(t, e) {\n this._annotationsBySectionIndex[t] = this._annotationsAt(\n t\n ).filter((t) => t !== e);\n }\n _annotationsAt(t) {\n return this._annotationsBySectionIndex[t];\n }\n highlight(t, e, i, n, s) {\n return this.add(\"highlight\", t, e, i, n, s);\n }\n underline(t, e, i, n, s) {\n return this.add(\"underline\", t, e, i, n, s);\n }\n mark(t, e, i) {\n return this.add(\"mark\", t, e, i);\n }\n each() {\n return this._annotations.forEach.apply(\n this._annotations,\n arguments\n );\n }\n inject(t) {\n let e = t.index;\n if (e in this._annotationsBySectionIndex) {\n this._annotationsBySectionIndex[e].forEach((e) => {\n this._annotations[e].attach(t);\n });\n }\n }\n clear(t) {\n let e = t.index;\n if (e in this._annotationsBySectionIndex) {\n this._annotationsBySectionIndex[e].forEach((e) => {\n this._annotations[e].detach(t);\n });\n }\n }\n show() {}\n hide() {}\n },\n m = i(20),\n v = i(10),\n y = i(22);\n class b {\n constructor(t, e) {\n (this.settings = Object(r.extend)(this.settings || {}, {\n width: null,\n height: null,\n ignoreClass: \"\",\n manager: \"default\",\n view: \"iframe\",\n flow: null,\n layout: null,\n spread: null,\n minSpreadWidth: 800,\n stylesheet: null,\n resizeOnOrientationChange: !0,\n script: null,\n snap: !1,\n defaultDirection: \"ltr\",\n allowScriptedContent: !1,\n allowPopups: !1,\n })),\n Object(r.extend)(this.settings, e),\n \"object\" == typeof this.settings.manager &&\n (this.manager = this.settings.manager),\n (this.book = t),\n (this.hooks = {}),\n (this.hooks.display = new o.a(this)),\n (this.hooks.serialize = new o.a(this)),\n (this.hooks.content = new o.a(this)),\n (this.hooks.unloaded = new o.a(this)),\n (this.hooks.layout = new o.a(this)),\n (this.hooks.render = new o.a(this)),\n (this.hooks.show = new o.a(this)),\n this.hooks.content.register(this.handleLinks.bind(this)),\n this.hooks.content.register(this.passEvents.bind(this)),\n this.hooks.content.register(this.adjustImages.bind(this)),\n this.book.spine.hooks.content.register(\n this.injectIdentifier.bind(this)\n ),\n this.settings.stylesheet &&\n this.book.spine.hooks.content.register(\n this.injectStylesheet.bind(this)\n ),\n this.settings.script &&\n this.book.spine.hooks.content.register(\n this.injectScript.bind(this)\n ),\n (this.themes = new f(this)),\n (this.annotations = new g(this)),\n (this.epubcfi = new a.a()),\n (this.q = new h.a(this)),\n (this.location = void 0),\n this.q.enqueue(this.book.opened),\n (this.starting = new r.defer()),\n (this.started = this.starting.promise),\n this.q.enqueue(this.start);\n }\n setManager(t) {\n this.manager = t;\n }\n requireManager(t) {\n return \"string\" == typeof t && \"default\" === t\n ? v.a\n : \"string\" == typeof t && \"continuous\" === t\n ? y.a\n : t;\n }\n requireView(t) {\n return \"string\" == typeof t && \"iframe\" === t ? m.a : t;\n }\n start() {\n switch (\n (this.settings.layout ||\n (\"pre-paginated\" !== this.book.package.metadata.layout &&\n \"true\" !== this.book.displayOptions.fixedLayout) ||\n (this.settings.layout = \"pre-paginated\"),\n this.book.package.metadata.spread)\n ) {\n case \"none\":\n this.settings.spread = \"none\";\n break;\n case \"both\":\n this.settings.spread = !0;\n }\n this.manager ||\n ((this.ViewManager = this.requireManager(\n this.settings.manager\n )),\n (this.View = this.requireView(this.settings.view)),\n (this.manager = new this.ViewManager({\n view: this.View,\n queue: this.q,\n request: this.book.load.bind(this.book),\n settings: this.settings,\n }))),\n this.direction(\n this.book.package.metadata.direction ||\n this.settings.defaultDirection\n ),\n (this.settings.globalLayoutProperties =\n this.determineLayoutProperties(this.book.package.metadata)),\n this.flow(this.settings.globalLayoutProperties.flow),\n this.layout(this.settings.globalLayoutProperties),\n this.manager.on(\n l.c.MANAGERS.ADDED,\n this.afterDisplayed.bind(this)\n ),\n this.manager.on(\n l.c.MANAGERS.REMOVED,\n this.afterRemoved.bind(this)\n ),\n this.manager.on(\n l.c.MANAGERS.RESIZED,\n this.onResized.bind(this)\n ),\n this.manager.on(\n l.c.MANAGERS.ORIENTATION_CHANGE,\n this.onOrientationChange.bind(this)\n ),\n this.manager.on(\n l.c.MANAGERS.SCROLLED,\n this.reportLocation.bind(this)\n ),\n this.emit(l.c.RENDITION.STARTED),\n this.starting.resolve();\n }\n attachTo(t) {\n return this.q.enqueue(\n function () {\n this.manager.render(t, {\n width: this.settings.width,\n height: this.settings.height,\n }),\n this.emit(l.c.RENDITION.ATTACHED);\n }.bind(this)\n );\n }\n display(t) {\n return (\n this.displaying && this.displaying.resolve(),\n this.q.enqueue(this._display, t)\n );\n }\n _display(t) {\n if (this.book) {\n this.epubcfi.isCfiString(t);\n var e,\n i = new r.defer(),\n n = i.promise;\n return (\n (this.displaying = i),\n this.book.locations.length() &&\n Object(r.isFloat)(t) &&\n (t = this.book.locations.cfiFromPercentage(\n parseFloat(t)\n )),\n (e = this.book.spine.get(t))\n ? (this.manager.display(e, t).then(\n () => {\n i.resolve(e),\n (this.displaying = void 0),\n this.emit(l.c.RENDITION.DISPLAYED, e),\n this.reportLocation();\n },\n (t) => {\n this.emit(l.c.RENDITION.DISPLAY_ERROR, t);\n }\n ),\n n)\n : (i.reject(new Error(\"No Section Found\")), n)\n );\n }\n }\n afterDisplayed(t) {\n t.on(l.c.VIEWS.MARK_CLICKED, (e, i) =>\n this.triggerMarkEvent(e, i, t.contents)\n ),\n this.hooks.render.trigger(t, this).then(() => {\n t.contents\n ? this.hooks.content\n .trigger(t.contents, this)\n .then(() => {\n this.emit(l.c.RENDITION.RENDERED, t.section, t);\n })\n : this.emit(l.c.RENDITION.RENDERED, t.section, t);\n });\n }\n afterRemoved(t) {\n this.hooks.unloaded.trigger(t, this).then(() => {\n this.emit(l.c.RENDITION.REMOVED, t.section, t);\n });\n }\n onResized(t, e) {\n this.emit(\n l.c.RENDITION.RESIZED,\n { width: t.width, height: t.height },\n e\n ),\n this.location &&\n this.location.start &&\n this.display(e || this.location.start.cfi);\n }\n onOrientationChange(t) {\n this.emit(l.c.RENDITION.ORIENTATION_CHANGE, t);\n }\n moveTo(t) {\n this.manager.moveTo(t);\n }\n resize(t, e, i) {\n t && (this.settings.width = t),\n e && (this.settings.height = e),\n this.manager.resize(t, e, i);\n }\n clear() {\n this.manager.clear();\n }\n next() {\n return this.q\n .enqueue(this.manager.next.bind(this.manager))\n .then(this.reportLocation.bind(this));\n }\n prev() {\n return this.q\n .enqueue(this.manager.prev.bind(this.manager))\n .then(this.reportLocation.bind(this));\n }\n determineLayoutProperties(t) {\n var e = this.settings.layout || t.layout || \"reflowable\",\n i = this.settings.spread || t.spread || \"auto\",\n n = this.settings.orientation || t.orientation || \"auto\",\n s = this.settings.flow || t.flow || \"auto\",\n r = t.viewport || \"\",\n o = this.settings.minSpreadWidth || t.minSpreadWidth || 800,\n a = this.settings.direction || t.direction || \"ltr\";\n return (\n (0 === this.settings.width || this.settings.width > 0) &&\n (0 === this.settings.height || this.settings.height),\n {\n layout: e,\n spread: i,\n orientation: n,\n flow: s,\n viewport: r,\n minSpreadWidth: o,\n direction: a,\n }\n );\n }\n flow(t) {\n var e = t;\n (\"scrolled\" !== t &&\n \"scrolled-doc\" !== t &&\n \"scrolled-continuous\" !== t) ||\n (e = \"scrolled\"),\n (\"auto\" !== t && \"paginated\" !== t) || (e = \"paginated\"),\n (this.settings.flow = t),\n this._layout && this._layout.flow(e),\n this.manager &&\n this._layout &&\n this.manager.applyLayout(this._layout),\n this.manager && this.manager.updateFlow(e),\n this.manager &&\n this.manager.isRendered() &&\n this.location &&\n (this.manager.clear(),\n this.display(this.location.start.cfi));\n }\n layout(t) {\n return (\n t &&\n ((this._layout = new u(t)),\n this._layout.spread(t.spread, this.settings.minSpreadWidth),\n this._layout.on(l.c.LAYOUT.UPDATED, (t, e) => {\n this.emit(l.c.RENDITION.LAYOUT, t, e);\n })),\n this.manager &&\n this._layout &&\n this.manager.applyLayout(this._layout),\n this._layout\n );\n }\n spread(t, e) {\n (this.settings.spread = t),\n e && (this.settings.minSpreadWidth = e),\n this._layout && this._layout.spread(t, e),\n this.manager &&\n this.manager.isRendered() &&\n this.manager.updateLayout();\n }\n direction(t) {\n (this.settings.direction = t || \"ltr\"),\n this.manager &&\n this.manager.direction(this.settings.direction),\n this.manager &&\n this.manager.isRendered() &&\n this.location &&\n (this.manager.clear(),\n this.display(this.location.start.cfi));\n }\n reportLocation() {\n return this.q.enqueue(\n function () {\n requestAnimationFrame(\n function () {\n var t = this.manager.currentLocation();\n if (t && t.then && \"function\" == typeof t.then)\n t.then(\n function (t) {\n let e = this.located(t);\n e &&\n e.start &&\n e.end &&\n ((this.location = e),\n this.emit(l.c.RENDITION.LOCATION_CHANGED, {\n index: this.location.start.index,\n href: this.location.start.href,\n start: this.location.start.cfi,\n end: this.location.end.cfi,\n percentage: this.location.start.percentage,\n }),\n this.emit(\n l.c.RENDITION.RELOCATED,\n this.location\n ));\n }.bind(this)\n );\n else if (t) {\n let e = this.located(t);\n if (!e || !e.start || !e.end) return;\n (this.location = e),\n this.emit(l.c.RENDITION.LOCATION_CHANGED, {\n index: this.location.start.index,\n href: this.location.start.href,\n start: this.location.start.cfi,\n end: this.location.end.cfi,\n percentage: this.location.start.percentage,\n }),\n this.emit(l.c.RENDITION.RELOCATED, this.location);\n }\n }.bind(this)\n );\n }.bind(this)\n );\n }\n currentLocation() {\n var t = this.manager.currentLocation();\n if (t && t.then && \"function\" == typeof t.then)\n t.then(\n function (t) {\n return this.located(t);\n }.bind(this)\n );\n else if (t) {\n return this.located(t);\n }\n }\n located(t) {\n if (!t.length) return {};\n let e = t[0],\n i = t[t.length - 1],\n n = {\n start: {\n index: e.index,\n href: e.href,\n cfi: e.mapping.start,\n displayed: { page: e.pages[0] || 1, total: e.totalPages },\n },\n end: {\n index: i.index,\n href: i.href,\n cfi: i.mapping.end,\n displayed: {\n page: i.pages[i.pages.length - 1] || 1,\n total: i.totalPages,\n },\n },\n },\n s = this.book.locations.locationFromCfi(e.mapping.start),\n r = this.book.locations.locationFromCfi(i.mapping.end);\n null != s &&\n ((n.start.location = s),\n (n.start.percentage =\n this.book.locations.percentageFromLocation(s))),\n null != r &&\n ((n.end.location = r),\n (n.end.percentage =\n this.book.locations.percentageFromLocation(r)));\n let o = this.book.pageList.pageFromCfi(e.mapping.start),\n a = this.book.pageList.pageFromCfi(i.mapping.end);\n return (\n -1 != o && (n.start.page = o),\n -1 != a && (n.end.page = a),\n i.index === this.book.spine.last().index &&\n n.end.displayed.page >= n.end.displayed.total &&\n (n.atEnd = !0),\n e.index === this.book.spine.first().index &&\n 1 === n.start.displayed.page &&\n (n.atStart = !0),\n n\n );\n }\n destroy() {\n this.manager && this.manager.destroy(), (this.book = void 0);\n }\n passEvents(t) {\n l.a.forEach((e) => {\n t.on(e, (e) => this.triggerViewEvent(e, t));\n }),\n t.on(l.c.CONTENTS.SELECTED, (e) =>\n this.triggerSelectedEvent(e, t)\n );\n }\n triggerViewEvent(t, e) {\n this.emit(t.type, t, e);\n }\n triggerSelectedEvent(t, e) {\n this.emit(l.c.RENDITION.SELECTED, t, e);\n }\n triggerMarkEvent(t, e, i) {\n this.emit(l.c.RENDITION.MARK_CLICKED, t, e, i);\n }\n getRange(t, e) {\n var i = new a.a(t),\n n = this.manager.visible().filter(function (t) {\n if (i.spinePos === t.index) return !0;\n });\n if (n.length) return n[0].contents.range(i, e);\n }\n adjustImages(t) {\n if (\"pre-paginated\" === this._layout.name)\n return new Promise(function (t) {\n t();\n });\n let e = t.window.getComputedStyle(t.content, null),\n i =\n 0.95 *\n (t.content.offsetHeight -\n (parseFloat(e.paddingTop) + parseFloat(e.paddingBottom))),\n n = parseFloat(e.paddingLeft) + parseFloat(e.paddingRight);\n return (\n t.addStylesheetRules({\n img: {\n \"max-width\":\n (this._layout.columnWidth\n ? this._layout.columnWidth - n + \"px\"\n : \"100%\") + \"!important\",\n \"max-height\": i + \"px!important\",\n \"object-fit\": \"contain\",\n \"page-break-inside\": \"avoid\",\n \"break-inside\": \"avoid\",\n \"box-sizing\": \"border-box\",\n },\n svg: {\n \"max-width\":\n (this._layout.columnWidth\n ? this._layout.columnWidth - n + \"px\"\n : \"100%\") + \"!important\",\n \"max-height\": i + \"px!important\",\n \"page-break-inside\": \"avoid\",\n \"break-inside\": \"avoid\",\n },\n }),\n new Promise(function (t, e) {\n setTimeout(function () {\n t();\n }, 1);\n })\n );\n }\n getContents() {\n return this.manager ? this.manager.getContents() : [];\n }\n views() {\n return (this.manager ? this.manager.views : void 0) || [];\n }\n handleLinks(t) {\n t &&\n t.on(l.c.CONTENTS.LINK_CLICKED, (t) => {\n let e = this.book.path.relative(t);\n this.display(e);\n });\n }\n injectStylesheet(t, e) {\n let i = t.createElement(\"link\");\n i.setAttribute(\"type\", \"text/css\"),\n i.setAttribute(\"rel\", \"stylesheet\"),\n i.setAttribute(\"href\", this.settings.stylesheet),\n t.getElementsByTagName(\"head\")[0].appendChild(i);\n }\n injectScript(t, e) {\n let i = t.createElement(\"script\");\n i.setAttribute(\"type\", \"text/javascript\"),\n i.setAttribute(\"src\", this.settings.script),\n (i.textContent = \" \"),\n t.getElementsByTagName(\"head\")[0].appendChild(i);\n }\n injectIdentifier(t, e) {\n let i = this.book.packaging.metadata.identifier,\n n = t.createElement(\"meta\");\n n.setAttribute(\"name\", \"dc.relation.ispartof\"),\n i && n.setAttribute(\"content\", i),\n t.getElementsByTagName(\"head\")[0].appendChild(n);\n }\n }\n s()(b.prototype);\n e.a = b;\n },\n function (t, e) {\n var i;\n i = (function () {\n return this;\n })();\n try {\n i = i || new Function(\"return this\")();\n } catch (t) {\n \"object\" == typeof window && (i = window);\n }\n t.exports = i;\n },\n function (t, e, i) {\n \"use strict\";\n var n = i(38)();\n t.exports = function (t) {\n return t !== n && null !== t;\n };\n },\n function (t, e) {\n t.exports = function (t) {\n var e = typeof t;\n return null != t && (\"object\" == e || \"function\" == e);\n };\n },\n function (t, e, i) {\n \"use strict\";\n var n = i(3),\n s = i.n(n),\n r = i(0),\n o = i(2),\n a = i(12),\n h = i(1),\n l = i(13);\n class c {\n constructor(t, e) {\n (this.settings = Object(r.extend)(\n {\n ignoreClass: \"\",\n axis: void 0,\n direction: void 0,\n width: 0,\n height: 0,\n layout: void 0,\n globalLayoutProperties: {},\n method: void 0,\n forceRight: !1,\n allowScriptedContent: !1,\n allowPopups: !1,\n },\n e || {}\n )),\n (this.id = \"epubjs-view-\" + Object(r.uuid)()),\n (this.section = t),\n (this.index = t.index),\n (this.element = this.container(this.settings.axis)),\n (this.added = !1),\n (this.displayed = !1),\n (this.rendered = !1),\n (this.fixedWidth = 0),\n (this.fixedHeight = 0),\n (this.epubcfi = new o.a()),\n (this.layout = this.settings.layout),\n (this.pane = void 0),\n (this.highlights = {}),\n (this.underlines = {}),\n (this.marks = {});\n }\n container(t) {\n var e = document.createElement(\"div\");\n return (\n e.classList.add(\"epub-view\"),\n (e.style.height = \"0px\"),\n (e.style.width = \"0px\"),\n (e.style.overflow = \"hidden\"),\n (e.style.position = \"relative\"),\n (e.style.display = \"block\"),\n (e.style.flex = t && \"horizontal\" == t ? \"none\" : \"initial\"),\n e\n );\n }\n create() {\n return (\n this.iframe ||\n (this.element || (this.element = this.createContainer()),\n (this.iframe = document.createElement(\"iframe\")),\n (this.iframe.id = this.id),\n (this.iframe.scrolling = \"no\"),\n (this.iframe.style.overflow = \"hidden\"),\n (this.iframe.seamless = \"seamless\"),\n (this.iframe.style.border = \"none\"),\n (this.iframe.sandbox = \"allow-same-origin\"),\n this.settings.allowScriptedContent &&\n (this.iframe.sandbox += \" allow-scripts\"),\n this.settings.allowPopups &&\n (this.iframe.sandbox += \" allow-popups\"),\n this.iframe.setAttribute(\"enable-annotation\", \"true\"),\n (this.resizing = !0),\n (this.element.style.visibility = \"hidden\"),\n (this.iframe.style.visibility = \"hidden\"),\n (this.iframe.style.width = \"0\"),\n (this.iframe.style.height = \"0\"),\n (this._width = 0),\n (this._height = 0),\n this.element.setAttribute(\"ref\", this.index),\n (this.added = !0),\n (this.elementBounds = Object(r.bounds)(this.element)),\n \"srcdoc\" in this.iframe\n ? (this.supportsSrcdoc = !0)\n : (this.supportsSrcdoc = !1),\n this.settings.method ||\n (this.settings.method = this.supportsSrcdoc\n ? \"srcdoc\"\n : \"write\")),\n this.iframe\n );\n }\n render(t, e) {\n return (\n this.create(),\n this.size(),\n this.sectionRender ||\n (this.sectionRender = this.section.render(t)),\n this.sectionRender\n .then(\n function (t) {\n return this.load(t);\n }.bind(this)\n )\n .then(\n function () {\n let t,\n e = this.contents.writingMode();\n return (\n (t =\n \"scrolled\" === this.settings.flow\n ? 0 === e.indexOf(\"vertical\")\n ? \"horizontal\"\n : \"vertical\"\n : 0 === e.indexOf(\"vertical\")\n ? \"vertical\"\n : \"horizontal\"),\n 0 === e.indexOf(\"vertical\") &&\n \"paginated\" === this.settings.flow &&\n (this.layout.delta = this.layout.height),\n this.setAxis(t),\n this.emit(h.c.VIEWS.AXIS, t),\n this.setWritingMode(e),\n this.emit(h.c.VIEWS.WRITING_MODE, e),\n this.layout.format(\n this.contents,\n this.section,\n this.axis\n ),\n this.addListeners(),\n new Promise((t, e) => {\n this.expand(),\n this.settings.forceRight &&\n (this.element.style.marginLeft =\n this.width() + \"px\"),\n t();\n })\n );\n }.bind(this),\n function (t) {\n return (\n this.emit(h.c.VIEWS.LOAD_ERROR, t),\n new Promise((e, i) => {\n i(t);\n })\n );\n }.bind(this)\n )\n .then(\n function () {\n this.emit(h.c.VIEWS.RENDERED, this.section);\n }.bind(this)\n )\n );\n }\n reset() {\n this.iframe &&\n ((this.iframe.style.width = \"0\"),\n (this.iframe.style.height = \"0\"),\n (this._width = 0),\n (this._height = 0),\n (this._textWidth = void 0),\n (this._contentWidth = void 0),\n (this._textHeight = void 0),\n (this._contentHeight = void 0)),\n (this._needsReframe = !0);\n }\n size(t, e) {\n var i = t || this.settings.width,\n n = e || this.settings.height;\n \"pre-paginated\" === this.layout.name\n ? this.lock(\"both\", i, n)\n : \"horizontal\" === this.settings.axis\n ? this.lock(\"height\", i, n)\n : this.lock(\"width\", i, n),\n (this.settings.width = i),\n (this.settings.height = n);\n }\n lock(t, e, i) {\n var n,\n s = Object(r.borders)(this.element);\n (n = this.iframe\n ? Object(r.borders)(this.iframe)\n : { width: 0, height: 0 }),\n \"width\" == t &&\n Object(r.isNumber)(e) &&\n (this.lockedWidth = e - s.width - n.width),\n \"height\" == t &&\n Object(r.isNumber)(i) &&\n (this.lockedHeight = i - s.height - n.height),\n \"both\" === t &&\n Object(r.isNumber)(e) &&\n Object(r.isNumber)(i) &&\n ((this.lockedWidth = e - s.width - n.width),\n (this.lockedHeight = i - s.height - n.height)),\n this.displayed && this.iframe && this.expand();\n }\n expand(t) {\n var e,\n i = this.lockedWidth,\n n = this.lockedHeight;\n this.iframe &&\n !this._expanding &&\n ((this._expanding = !0),\n \"pre-paginated\" === this.layout.name\n ? ((i = this.layout.columnWidth), (n = this.layout.height))\n : \"horizontal\" === this.settings.axis\n ? ((i = this.contents.textWidth()) % this.layout.pageWidth >\n 0 &&\n (i =\n Math.ceil(i / this.layout.pageWidth) *\n this.layout.pageWidth),\n this.settings.forceEvenPages &&\n ((e = i / this.layout.pageWidth),\n this.layout.divisor > 1 &&\n \"reflowable\" === this.layout.name &&\n e % 2 > 0 &&\n (i += this.layout.pageWidth)))\n : \"vertical\" === this.settings.axis &&\n ((n = this.contents.textHeight()),\n \"paginated\" === this.settings.flow &&\n n % this.layout.height > 0 &&\n (n =\n Math.ceil(n / this.layout.height) *\n this.layout.height)),\n (this._needsReframe ||\n i != this._width ||\n n != this._height) &&\n this.reframe(i, n),\n (this._expanding = !1));\n }\n reframe(t, e) {\n var i;\n Object(r.isNumber)(t) &&\n ((this.element.style.width = t + \"px\"),\n (this.iframe.style.width = t + \"px\"),\n (this._width = t)),\n Object(r.isNumber)(e) &&\n ((this.element.style.height = e + \"px\"),\n (this.iframe.style.height = e + \"px\"),\n (this._height = e)),\n (i = {\n width: t,\n height: e,\n widthDelta: this.prevBounds ? t - this.prevBounds.width : t,\n heightDelta: this.prevBounds\n ? e - this.prevBounds.height\n : e,\n }),\n this.pane && this.pane.render(),\n requestAnimationFrame(() => {\n let t;\n for (let e in this.marks)\n this.marks.hasOwnProperty(e) &&\n ((t = this.marks[e]),\n this.placeMark(t.element, t.range));\n }),\n this.onResize(this, i),\n this.emit(h.c.VIEWS.RESIZED, i),\n (this.prevBounds = i),\n (this.elementBounds = Object(r.bounds)(this.element));\n }\n load(t) {\n var e = new r.defer(),\n i = e.promise;\n if (!this.iframe)\n return e.reject(new Error(\"No Iframe Available\")), i;\n if (\n ((this.iframe.onload = function (t) {\n this.onLoad(t, e);\n }.bind(this)),\n \"blobUrl\" === this.settings.method)\n )\n (this.blobUrl = Object(r.createBlobUrl)(\n t,\n \"application/xhtml+xml\"\n )),\n (this.iframe.src = this.blobUrl),\n this.element.appendChild(this.iframe);\n else if (\"srcdoc\" === this.settings.method)\n (this.iframe.srcdoc = t),\n this.element.appendChild(this.iframe);\n else {\n if (\n (this.element.appendChild(this.iframe),\n (this.document = this.iframe.contentDocument),\n !this.document)\n )\n return e.reject(new Error(\"No Document Available\")), i;\n if (\n (this.iframe.contentDocument.open(),\n window.MSApp && MSApp.execUnsafeLocalFunction)\n ) {\n var n = this;\n MSApp.execUnsafeLocalFunction(function () {\n n.iframe.contentDocument.write(t);\n });\n } else this.iframe.contentDocument.write(t);\n this.iframe.contentDocument.close();\n }\n return i;\n }\n onLoad(t, e) {\n (this.window = this.iframe.contentWindow),\n (this.document = this.iframe.contentDocument),\n (this.contents = new a.a(\n this.document,\n this.document.body,\n this.section.cfiBase,\n this.section.index\n )),\n (this.rendering = !1);\n var i = this.document.querySelector(\"link[rel='canonical']\");\n i\n ? i.setAttribute(\"href\", this.section.canonical)\n : ((i = this.document.createElement(\"link\")).setAttribute(\n \"rel\",\n \"canonical\"\n ),\n i.setAttribute(\"href\", this.section.canonical),\n this.document.querySelector(\"head\").appendChild(i)),\n this.contents.on(h.c.CONTENTS.EXPAND, () => {\n this.displayed &&\n this.iframe &&\n (this.expand(),\n this.contents && this.layout.format(this.contents));\n }),\n this.contents.on(h.c.CONTENTS.RESIZE, (t) => {\n this.displayed &&\n this.iframe &&\n (this.expand(),\n this.contents && this.layout.format(this.contents));\n }),\n e.resolve(this.contents);\n }\n setLayout(t) {\n (this.layout = t),\n this.contents &&\n (this.layout.format(this.contents), this.expand());\n }\n setAxis(t) {\n (this.settings.axis = t),\n (this.element.style.flex =\n \"horizontal\" == t ? \"none\" : \"initial\"),\n this.size();\n }\n setWritingMode(t) {\n this.writingMode = t;\n }\n addListeners() {}\n removeListeners(t) {}\n display(t) {\n var e = new r.defer();\n return (\n this.displayed\n ? e.resolve(this)\n : this.render(t).then(\n function () {\n this.emit(h.c.VIEWS.DISPLAYED, this),\n this.onDisplayed(this),\n (this.displayed = !0),\n e.resolve(this);\n }.bind(this),\n function (t) {\n e.reject(t, this);\n }\n ),\n e.promise\n );\n }\n show() {\n (this.element.style.visibility = \"visible\"),\n this.iframe &&\n ((this.iframe.style.visibility = \"visible\"),\n (this.iframe.style.transform = \"translateZ(0)\"),\n this.iframe.offsetWidth,\n (this.iframe.style.transform = null)),\n this.emit(h.c.VIEWS.SHOWN, this);\n }\n hide() {\n (this.element.style.visibility = \"hidden\"),\n (this.iframe.style.visibility = \"hidden\"),\n (this.stopExpanding = !0),\n this.emit(h.c.VIEWS.HIDDEN, this);\n }\n offset() {\n return {\n top: this.element.offsetTop,\n left: this.element.offsetLeft,\n };\n }\n width() {\n return this._width;\n }\n height() {\n return this._height;\n }\n position() {\n return this.element.getBoundingClientRect();\n }\n locationOf(t) {\n this.iframe.getBoundingClientRect();\n var e = this.contents.locationOf(t, this.settings.ignoreClass);\n return { left: e.left, top: e.top };\n }\n onDisplayed(t) {}\n onResize(t, e) {}\n bounds(t) {\n return (\n (!t && this.elementBounds) ||\n (this.elementBounds = Object(r.bounds)(this.element)),\n this.elementBounds\n );\n }\n highlight(t, e = {}, i, n = \"epubjs-hl\", s = {}) {\n if (!this.contents) return;\n const r = Object.assign(\n {\n fill: \"yellow\",\n \"fill-opacity\": \"0.3\",\n \"mix-blend-mode\": \"multiply\",\n },\n s\n );\n let o = this.contents.range(t),\n a = () => {\n this.emit(h.c.VIEWS.MARK_CLICKED, t, e);\n };\n (e.epubcfi = t),\n this.pane ||\n (this.pane = new l.Pane(this.iframe, this.element));\n let c = new l.Highlight(o, n, e, r),\n u = this.pane.addMark(c);\n return (\n (this.highlights[t] = {\n mark: u,\n element: u.element,\n listeners: [a, i],\n }),\n u.element.setAttribute(\"ref\", n),\n u.element.addEventListener(\"click\", a),\n u.element.addEventListener(\"touchstart\", a),\n i &&\n (u.element.addEventListener(\"click\", i),\n u.element.addEventListener(\"touchstart\", i)),\n u\n );\n }\n underline(t, e = {}, i, n = \"epubjs-ul\", s = {}) {\n if (!this.contents) return;\n const r = Object.assign(\n {\n stroke: \"black\",\n \"stroke-opacity\": \"0.3\",\n \"mix-blend-mode\": \"multiply\",\n },\n s\n );\n let o = this.contents.range(t),\n a = () => {\n this.emit(h.c.VIEWS.MARK_CLICKED, t, e);\n };\n (e.epubcfi = t),\n this.pane ||\n (this.pane = new l.Pane(this.iframe, this.element));\n let c = new l.Underline(o, n, e, r),\n u = this.pane.addMark(c);\n return (\n (this.underlines[t] = {\n mark: u,\n element: u.element,\n listeners: [a, i],\n }),\n u.element.setAttribute(\"ref\", n),\n u.element.addEventListener(\"click\", a),\n u.element.addEventListener(\"touchstart\", a),\n i &&\n (u.element.addEventListener(\"click\", i),\n u.element.addEventListener(\"touchstart\", i)),\n u\n );\n }\n mark(t, e = {}, i) {\n if (!this.contents) return;\n if (t in this.marks) {\n return this.marks[t];\n }\n let n = this.contents.range(t);\n if (!n) return;\n let s = n.commonAncestorContainer,\n r = 1 === s.nodeType ? s : s.parentNode,\n o = (i) => {\n this.emit(h.c.VIEWS.MARK_CLICKED, t, e);\n };\n n.collapsed && 1 === s.nodeType\n ? ((n = new Range()), n.selectNodeContents(s))\n : n.collapsed && ((n = new Range()), n.selectNodeContents(r));\n let a = this.document.createElement(\"a\");\n return (\n a.setAttribute(\"ref\", \"epubjs-mk\"),\n (a.style.position = \"absolute\"),\n (a.dataset.epubcfi = t),\n e &&\n Object.keys(e).forEach((t) => {\n a.dataset[t] = e[t];\n }),\n i &&\n (a.addEventListener(\"click\", i),\n a.addEventListener(\"touchstart\", i)),\n a.addEventListener(\"click\", o),\n a.addEventListener(\"touchstart\", o),\n this.placeMark(a, n),\n this.element.appendChild(a),\n (this.marks[t] = { element: a, range: n, listeners: [o, i] }),\n r\n );\n }\n placeMark(t, e) {\n let i, n, s;\n if (\n \"pre-paginated\" === this.layout.name ||\n \"horizontal\" !== this.settings.axis\n ) {\n let t = e.getBoundingClientRect();\n (i = t.top), (n = t.right);\n } else {\n let t,\n o = e.getClientRects();\n for (var r = 0; r != o.length; r++)\n (t = o[r]),\n (!s || t.left < s) &&\n ((s = t.left),\n (n =\n Math.ceil(s / this.layout.props.pageWidth) *\n this.layout.props.pageWidth -\n this.layout.gap / 2),\n (i = t.top));\n }\n (t.style.top = i + \"px\"), (t.style.left = n + \"px\");\n }\n unhighlight(t) {\n let e;\n t in this.highlights &&\n ((e = this.highlights[t]),\n this.pane.removeMark(e.mark),\n e.listeners.forEach((t) => {\n t &&\n (e.element.removeEventListener(\"click\", t),\n e.element.removeEventListener(\"touchstart\", t));\n }),\n delete this.highlights[t]);\n }\n ununderline(t) {\n let e;\n t in this.underlines &&\n ((e = this.underlines[t]),\n this.pane.removeMark(e.mark),\n e.listeners.forEach((t) => {\n t &&\n (e.element.removeEventListener(\"click\", t),\n e.element.removeEventListener(\"touchstart\", t));\n }),\n delete this.underlines[t]);\n }\n unmark(t) {\n let e;\n t in this.marks &&\n ((e = this.marks[t]),\n this.element.removeChild(e.element),\n e.listeners.forEach((t) => {\n t &&\n (e.element.removeEventListener(\"click\", t),\n e.element.removeEventListener(\"touchstart\", t));\n }),\n delete this.marks[t]);\n }\n destroy() {\n for (let t in this.highlights) this.unhighlight(t);\n for (let t in this.underlines) this.ununderline(t);\n for (let t in this.marks) this.unmark(t);\n this.blobUrl && Object(r.revokeBlobUrl)(this.blobUrl),\n this.displayed &&\n ((this.displayed = !1),\n this.removeListeners(),\n this.contents.destroy(),\n (this.stopExpanding = !0),\n this.element.removeChild(this.iframe),\n this.pane &&\n (this.pane.element.remove(), (this.pane = void 0)),\n (this.iframe = void 0),\n (this.contents = void 0),\n (this._textWidth = null),\n (this._textHeight = null),\n (this._width = null),\n (this._height = null));\n }\n }\n s()(c.prototype), (e.a = c);\n },\n function (t, e, i) {\n var n = i(19),\n s = i(51),\n r = i(53),\n o = Math.max,\n a = Math.min;\n t.exports = function (t, e, i) {\n var h,\n l,\n c,\n u,\n d,\n f,\n p = 0,\n g = !1,\n m = !1,\n v = !0;\n if (\"function\" != typeof t)\n throw new TypeError(\"Expected a function\");\n function y(e) {\n var i = h,\n n = l;\n return (h = l = void 0), (p = e), (u = t.apply(n, i));\n }\n function b(t) {\n return (p = t), (d = setTimeout(x, e)), g ? y(t) : u;\n }\n function w(t) {\n var i = t - f;\n return void 0 === f || i >= e || i < 0 || (m && t - p >= c);\n }\n function x() {\n var t = s();\n if (w(t)) return E(t);\n d = setTimeout(\n x,\n (function (t) {\n var i = e - (t - f);\n return m ? a(i, c - (t - p)) : i;\n })(t)\n );\n }\n function E(t) {\n return (d = void 0), v && h ? y(t) : ((h = l = void 0), u);\n }\n function S() {\n var t = s(),\n i = w(t);\n if (((h = arguments), (l = this), (f = t), i)) {\n if (void 0 === d) return b(f);\n if (m) return clearTimeout(d), (d = setTimeout(x, e)), y(f);\n }\n return void 0 === d && (d = setTimeout(x, e)), u;\n }\n return (\n (e = r(e) || 0),\n n(i) &&\n ((g = !!i.leading),\n (c = (m = \"maxWait\" in i) ? o(r(i.maxWait) || 0, e) : c),\n (v = \"trailing\" in i ? !!i.trailing : v)),\n (S.cancel = function () {\n void 0 !== d && clearTimeout(d),\n (p = 0),\n (h = f = l = d = void 0);\n }),\n (S.flush = function () {\n return void 0 === d ? u : E(s());\n }),\n S\n );\n };\n },\n function (t, e, i) {\n \"use strict\";\n var n = i(0),\n s = i(10),\n r = i(1),\n o = i(3),\n a = i.n(o);\n const h = Math.PI / 2,\n l = {\n easeOutSine: function (t) {\n return Math.sin(t * h);\n },\n easeInOutSine: function (t) {\n return -0.5 * (Math.cos(Math.PI * t) - 1);\n },\n easeInOutQuint: function (t) {\n return (t /= 0.5) < 1\n ? 0.5 * Math.pow(t, 5)\n : 0.5 * (Math.pow(t - 2, 5) + 2);\n },\n easeInCubic: function (t) {\n return Math.pow(t, 3);\n },\n };\n class c {\n constructor(t, e) {\n (this.settings = Object(n.extend)(\n {\n duration: 80,\n minVelocity: 0.2,\n minDistance: 10,\n easing: l.easeInCubic,\n },\n e || {}\n )),\n (this.supportsTouch = this.supportsTouch()),\n this.supportsTouch && this.setup(t);\n }\n setup(t) {\n (this.manager = t),\n (this.layout = this.manager.layout),\n (this.fullsize = this.manager.settings.fullsize),\n this.fullsize\n ? ((this.element = this.manager.stage.element),\n (this.scroller = window),\n this.disableScroll())\n : ((this.element = this.manager.stage.container),\n (this.scroller = this.element),\n (this.element.style.WebkitOverflowScrolling = \"touch\")),\n (this.manager.settings.offset = this.layout.width),\n (this.manager.settings.afterScrolledTimeout =\n 2 * this.settings.duration),\n (this.isVertical = \"vertical\" === this.manager.settings.axis),\n this.manager.isPaginated &&\n !this.isVertical &&\n ((this.touchCanceler = !1),\n (this.resizeCanceler = !1),\n (this.snapping = !1),\n this.scrollLeft,\n this.scrollTop,\n (this.startTouchX = void 0),\n (this.startTouchY = void 0),\n (this.startTime = void 0),\n (this.endTouchX = void 0),\n (this.endTouchY = void 0),\n (this.endTime = void 0),\n this.addListeners());\n }\n supportsTouch() {\n return !!(\n \"ontouchstart\" in window ||\n (window.DocumentTouch && document instanceof DocumentTouch)\n );\n }\n disableScroll() {\n this.element.style.overflow = \"hidden\";\n }\n enableScroll() {\n this.element.style.overflow = \"\";\n }\n addListeners() {\n (this._onResize = this.onResize.bind(this)),\n window.addEventListener(\"resize\", this._onResize),\n (this._onScroll = this.onScroll.bind(this)),\n this.scroller.addEventListener(\"scroll\", this._onScroll),\n (this._onTouchStart = this.onTouchStart.bind(this)),\n this.scroller.addEventListener(\n \"touchstart\",\n this._onTouchStart,\n { passive: !0 }\n ),\n this.on(\"touchstart\", this._onTouchStart),\n (this._onTouchMove = this.onTouchMove.bind(this)),\n this.scroller.addEventListener(\n \"touchmove\",\n this._onTouchMove,\n { passive: !0 }\n ),\n this.on(\"touchmove\", this._onTouchMove),\n (this._onTouchEnd = this.onTouchEnd.bind(this)),\n this.scroller.addEventListener(\"touchend\", this._onTouchEnd, {\n passive: !0,\n }),\n this.on(\"touchend\", this._onTouchEnd),\n (this._afterDisplayed = this.afterDisplayed.bind(this)),\n this.manager.on(r.c.MANAGERS.ADDED, this._afterDisplayed);\n }\n removeListeners() {\n window.removeEventListener(\"resize\", this._onResize),\n (this._onResize = void 0),\n this.scroller.removeEventListener(\"scroll\", this._onScroll),\n (this._onScroll = void 0),\n this.scroller.removeEventListener(\n \"touchstart\",\n this._onTouchStart,\n { passive: !0 }\n ),\n this.off(\"touchstart\", this._onTouchStart),\n (this._onTouchStart = void 0),\n this.scroller.removeEventListener(\n \"touchmove\",\n this._onTouchMove,\n { passive: !0 }\n ),\n this.off(\"touchmove\", this._onTouchMove),\n (this._onTouchMove = void 0),\n this.scroller.removeEventListener(\n \"touchend\",\n this._onTouchEnd,\n { passive: !0 }\n ),\n this.off(\"touchend\", this._onTouchEnd),\n (this._onTouchEnd = void 0),\n this.manager.off(r.c.MANAGERS.ADDED, this._afterDisplayed),\n (this._afterDisplayed = void 0);\n }\n afterDisplayed(t) {\n let e = t.contents;\n [\"touchstart\", \"touchmove\", \"touchend\"].forEach((t) => {\n e.on(t, (t) => this.triggerViewEvent(t, e));\n });\n }\n triggerViewEvent(t, e) {\n this.emit(t.type, t, e);\n }\n onScroll(t) {\n (this.scrollLeft = this.fullsize\n ? window.scrollX\n : this.scroller.scrollLeft),\n (this.scrollTop = this.fullsize\n ? window.scrollY\n : this.scroller.scrollTop);\n }\n onResize(t) {\n this.resizeCanceler = !0;\n }\n onTouchStart(t) {\n let { screenX: e, screenY: i } = t.touches[0];\n this.fullsize && this.enableScroll(),\n (this.touchCanceler = !0),\n this.startTouchX ||\n ((this.startTouchX = e),\n (this.startTouchY = i),\n (this.startTime = this.now())),\n (this.endTouchX = e),\n (this.endTouchY = i),\n (this.endTime = this.now());\n }\n onTouchMove(t) {\n let { screenX: e, screenY: i } = t.touches[0],\n n = Math.abs(i - this.endTouchY);\n (this.touchCanceler = !0),\n !this.fullsize &&\n n < 10 &&\n (this.element.scrollLeft -= e - this.endTouchX),\n (this.endTouchX = e),\n (this.endTouchY = i),\n (this.endTime = this.now());\n }\n onTouchEnd(t) {\n this.fullsize && this.disableScroll(),\n (this.touchCanceler = !1);\n let e = this.wasSwiped();\n 0 !== e ? this.snap(e) : this.snap(),\n (this.startTouchX = void 0),\n (this.startTouchY = void 0),\n (this.startTime = void 0),\n (this.endTouchX = void 0),\n (this.endTouchY = void 0),\n (this.endTime = void 0);\n }\n wasSwiped() {\n let t = this.layout.pageWidth * this.layout.divisor,\n e = this.endTouchX - this.startTouchX,\n i = Math.abs(e),\n n = e / (this.endTime - this.startTime),\n s = this.settings.minVelocity;\n return i <= this.settings.minDistance || i >= t\n ? 0\n : n > s\n ? -1\n : n < -s\n ? 1\n : void 0;\n }\n needsSnap() {\n return (\n this.scrollLeft %\n (this.layout.pageWidth * this.layout.divisor) !=\n 0\n );\n }\n snap(t = 0) {\n let e = this.scrollLeft,\n i = this.layout.pageWidth * this.layout.divisor,\n n = Math.round(e / i) * i;\n return t && (n += t * i), this.smoothScrollTo(n);\n }\n smoothScrollTo(t) {\n const e = new n.defer(),\n i = this.scrollLeft,\n s = this.now(),\n r = this.settings.duration,\n o = this.settings.easing;\n return (\n (this.snapping = !0),\n function n() {\n const a = this.now(),\n h = Math.min(1, (a - s) / r);\n if ((o(h), this.touchCanceler || this.resizeCanceler))\n return (\n (this.resizeCanceler = !1),\n (this.snapping = !1),\n void e.resolve()\n );\n h < 1\n ? (window.requestAnimationFrame(n.bind(this)),\n this.scrollTo(i + (t - i) * h, 0))\n : (this.scrollTo(t, 0),\n (this.snapping = !1),\n e.resolve());\n }.call(this),\n e.promise\n );\n }\n scrollTo(t = 0, e = 0) {\n this.fullsize\n ? window.scroll(t, e)\n : ((this.scroller.scrollLeft = t),\n (this.scroller.scrollTop = e));\n }\n now() {\n return \"now\" in window.performance\n ? performance.now()\n : new Date().getTime();\n }\n destroy() {\n this.scroller &&\n (this.fullsize && this.enableScroll(),\n this.removeListeners(),\n (this.scroller = void 0));\n }\n }\n a()(c.prototype);\n var u = c,\n d = i(21),\n f = i.n(d);\n class p extends s.a {\n constructor(t) {\n super(t),\n (this.name = \"continuous\"),\n (this.settings = Object(n.extend)(this.settings || {}, {\n infinite: !0,\n overflow: void 0,\n axis: void 0,\n writingMode: void 0,\n flow: \"scrolled\",\n offset: 500,\n offsetDelta: 250,\n width: void 0,\n height: void 0,\n snap: !1,\n afterScrolledTimeout: 10,\n allowScriptedContent: !1,\n allowPopups: !1,\n })),\n Object(n.extend)(this.settings, t.settings || {}),\n \"undefined\" != t.settings.gap &&\n 0 === t.settings.gap &&\n (this.settings.gap = t.settings.gap),\n (this.viewSettings = {\n ignoreClass: this.settings.ignoreClass,\n axis: this.settings.axis,\n flow: this.settings.flow,\n layout: this.layout,\n width: 0,\n height: 0,\n forceEvenPages: !1,\n allowScriptedContent: this.settings.allowScriptedContent,\n allowPopups: this.settings.allowPopups,\n }),\n (this.scrollTop = 0),\n (this.scrollLeft = 0);\n }\n display(t, e) {\n return s.a.prototype.display.call(this, t, e).then(\n function () {\n return this.fill();\n }.bind(this)\n );\n }\n fill(t) {\n var e = t || new n.defer();\n return (\n this.q\n .enqueue(() => this.check())\n .then((t) => {\n t ? this.fill(e) : e.resolve();\n }),\n e.promise\n );\n }\n moveTo(t) {\n var e = 0,\n i = 0;\n this.isPaginated\n ? ((e =\n Math.floor(t.left / this.layout.delta) *\n this.layout.delta),\n this.settings.offsetDelta)\n : ((i = t.top), t.top, this.settings.offsetDelta),\n (e > 0 || i > 0) && this.scrollBy(e, i, !0);\n }\n afterResized(t) {\n this.emit(r.c.MANAGERS.RESIZE, t.section);\n }\n removeShownListeners(t) {\n t.onDisplayed = function () {};\n }\n add(t) {\n var e = this.createView(t);\n return (\n this.views.append(e),\n e.on(r.c.VIEWS.RESIZED, (t) => {\n e.expanded = !0;\n }),\n e.on(r.c.VIEWS.AXIS, (t) => {\n this.updateAxis(t);\n }),\n e.on(r.c.VIEWS.WRITING_MODE, (t) => {\n this.updateWritingMode(t);\n }),\n (e.onDisplayed = this.afterDisplayed.bind(this)),\n (e.onResize = this.afterResized.bind(this)),\n e.display(this.request)\n );\n }\n append(t) {\n var e = this.createView(t);\n return (\n e.on(r.c.VIEWS.RESIZED, (t) => {\n e.expanded = !0;\n }),\n e.on(r.c.VIEWS.AXIS, (t) => {\n this.updateAxis(t);\n }),\n e.on(r.c.VIEWS.WRITING_MODE, (t) => {\n this.updateWritingMode(t);\n }),\n this.views.append(e),\n (e.onDisplayed = this.afterDisplayed.bind(this)),\n e\n );\n }\n prepend(t) {\n var e = this.createView(t);\n return (\n e.on(r.c.VIEWS.RESIZED, (t) => {\n this.counter(t), (e.expanded = !0);\n }),\n e.on(r.c.VIEWS.AXIS, (t) => {\n this.updateAxis(t);\n }),\n e.on(r.c.VIEWS.WRITING_MODE, (t) => {\n this.updateWritingMode(t);\n }),\n this.views.prepend(e),\n (e.onDisplayed = this.afterDisplayed.bind(this)),\n e\n );\n }\n counter(t) {\n \"vertical\" === this.settings.axis\n ? this.scrollBy(0, t.heightDelta, !0)\n : this.scrollBy(t.widthDelta, 0, !0);\n }\n update(t) {\n for (\n var e,\n i = this.bounds(),\n s = this.views.all(),\n r = s.length,\n o = [],\n a = void 0 !== t ? t : this.settings.offset || 0,\n h = new n.defer(),\n l = [],\n c = 0;\n c < r;\n c++\n )\n if (((e = s[c]), !0 === this.isVisible(e, a, a, i))) {\n if (e.displayed) e.show();\n else {\n let t = e.display(this.request).then(\n function (t) {\n t.show();\n },\n (t) => {\n e.hide();\n }\n );\n l.push(t);\n }\n o.push(e);\n } else\n this.q.enqueue(e.destroy.bind(e)),\n clearTimeout(this.trimTimeout),\n (this.trimTimeout = setTimeout(\n function () {\n this.q.enqueue(this.trim.bind(this));\n }.bind(this),\n 250\n ));\n return l.length\n ? Promise.all(l).catch((t) => {\n h.reject(t);\n })\n : (h.resolve(), h.promise);\n }\n check(t, e) {\n var i = new n.defer(),\n s = [],\n r = \"horizontal\" === this.settings.axis,\n o = this.settings.offset || 0;\n t && r && (o = t), e && !r && (o = e);\n var a = this._bounds;\n let h = r ? this.scrollLeft : this.scrollTop,\n l = r ? Math.floor(a.width) : a.height,\n c = r\n ? this.container.scrollWidth\n : this.container.scrollHeight,\n u =\n this.writingMode &&\n 0 === this.writingMode.indexOf(\"vertical\")\n ? \"vertical\"\n : \"horizontal\",\n d = this.settings.rtlScrollType,\n f = \"rtl\" === this.settings.direction;\n this.settings.fullsize\n ? ((r && f && \"negative\" === d) ||\n (!r && f && \"default\" === d)) &&\n (h *= -1)\n : (f &&\n \"default\" === d &&\n \"horizontal\" === u &&\n (h = c - l - h),\n f && \"negative\" === d && \"horizontal\" === u && (h *= -1));\n let p = () => {\n let t = this.views.first(),\n e = t && t.section.prev();\n e && s.push(this.prepend(e));\n },\n g = h - o;\n h + l + o >= c &&\n (() => {\n let t = this.views.last(),\n e = t && t.section.next();\n e && s.push(this.append(e));\n })(),\n g < 0 && p();\n let m = s.map((t) => t.display(this.request));\n return s.length\n ? Promise.all(m)\n .then(() => this.check())\n .then(\n () => this.update(o),\n (t) => t\n )\n : (this.q.enqueue(\n function () {\n this.update();\n }.bind(this)\n ),\n i.resolve(!1),\n i.promise);\n }\n trim() {\n for (\n var t = new n.defer(),\n e = this.views.displayed(),\n i = e[0],\n s = e[e.length - 1],\n r = this.views.indexOf(i),\n o = this.views.indexOf(s),\n a = this.views.slice(0, r),\n h = this.views.slice(o + 1),\n l = 0;\n l < a.length - 1;\n l++\n )\n this.erase(a[l], a);\n for (var c = 1; c < h.length; c++) this.erase(h[c]);\n return t.resolve(), t.promise;\n }\n erase(t, e) {\n var i, n;\n this.settings.fullsize\n ? ((i = window.scrollY), (n = window.scrollX))\n : ((i = this.container.scrollTop),\n (n = this.container.scrollLeft));\n var s = t.bounds();\n this.views.remove(t),\n e &&\n (\"vertical\" === this.settings.axis\n ? this.scrollTo(0, i - s.height, !0)\n : \"rtl\" === this.settings.direction\n ? this.settings.fullsize\n ? this.scrollTo(n + Math.floor(s.width), 0, !0)\n : this.scrollTo(n, 0, !0)\n : this.scrollTo(n - Math.floor(s.width), 0, !0));\n }\n addEventListeners(t) {\n window.addEventListener(\n \"unload\",\n function (t) {\n (this.ignore = !0), this.destroy();\n }.bind(this)\n ),\n this.addScrollListeners(),\n this.isPaginated &&\n this.settings.snap &&\n (this.snapper = new u(\n this,\n this.settings.snap &&\n \"object\" == typeof this.settings.snap &&\n this.settings.snap\n ));\n }\n addScrollListeners() {\n var t;\n this.tick = n.requestAnimationFrame;\n let e =\n \"rtl\" === this.settings.direction &&\n \"default\" === this.settings.rtlScrollType\n ? -1\n : 1;\n (this.scrollDeltaVert = 0),\n (this.scrollDeltaHorz = 0),\n this.settings.fullsize\n ? ((t = window),\n (this.scrollTop = window.scrollY * e),\n (this.scrollLeft = window.scrollX * e))\n : ((t = this.container),\n (this.scrollTop = this.container.scrollTop),\n (this.scrollLeft = this.container.scrollLeft)),\n (this._onScroll = this.onScroll.bind(this)),\n t.addEventListener(\"scroll\", this._onScroll),\n (this._scrolled = f()(this.scrolled.bind(this), 30)),\n (this.didScroll = !1);\n }\n removeEventListeners() {\n (this.settings.fullsize\n ? window\n : this.container\n ).removeEventListener(\"scroll\", this._onScroll),\n (this._onScroll = void 0);\n }\n onScroll() {\n let t,\n e,\n i =\n \"rtl\" === this.settings.direction &&\n \"default\" === this.settings.rtlScrollType\n ? -1\n : 1;\n this.settings.fullsize\n ? ((t = window.scrollY * i), (e = window.scrollX * i))\n : ((t = this.container.scrollTop),\n (e = this.container.scrollLeft)),\n (this.scrollTop = t),\n (this.scrollLeft = e),\n this.ignore ? (this.ignore = !1) : this._scrolled(),\n (this.scrollDeltaVert += Math.abs(t - this.prevScrollTop)),\n (this.scrollDeltaHorz += Math.abs(e - this.prevScrollLeft)),\n (this.prevScrollTop = t),\n (this.prevScrollLeft = e),\n clearTimeout(this.scrollTimeout),\n (this.scrollTimeout = setTimeout(\n function () {\n (this.scrollDeltaVert = 0), (this.scrollDeltaHorz = 0);\n }.bind(this),\n 150\n )),\n clearTimeout(this.afterScrolled),\n (this.didScroll = !1);\n }\n scrolled() {\n this.q.enqueue(\n function () {\n return this.check();\n }.bind(this)\n ),\n this.emit(r.c.MANAGERS.SCROLL, {\n top: this.scrollTop,\n left: this.scrollLeft,\n }),\n clearTimeout(this.afterScrolled),\n (this.afterScrolled = setTimeout(\n function () {\n (this.snapper &&\n this.snapper.supportsTouch &&\n this.snapper.needsSnap()) ||\n this.emit(r.c.MANAGERS.SCROLLED, {\n top: this.scrollTop,\n left: this.scrollLeft,\n });\n }.bind(this),\n this.settings.afterScrolledTimeout\n ));\n }\n next() {\n let t =\n \"pre-paginated\" === this.layout.props.name &&\n this.layout.props.spread\n ? 2 * this.layout.props.delta\n : this.layout.props.delta;\n this.views.length &&\n (this.isPaginated && \"horizontal\" === this.settings.axis\n ? this.scrollBy(t, 0, !0)\n : this.scrollBy(0, this.layout.height, !0),\n this.q.enqueue(\n function () {\n return this.check();\n }.bind(this)\n ));\n }\n prev() {\n let t =\n \"pre-paginated\" === this.layout.props.name &&\n this.layout.props.spread\n ? 2 * this.layout.props.delta\n : this.layout.props.delta;\n this.views.length &&\n (this.isPaginated && \"horizontal\" === this.settings.axis\n ? this.scrollBy(-t, 0, !0)\n : this.scrollBy(0, -this.layout.height, !0),\n this.q.enqueue(\n function () {\n return this.check();\n }.bind(this)\n ));\n }\n updateFlow(t) {\n this.rendered &&\n this.snapper &&\n (this.snapper.destroy(), (this.snapper = void 0)),\n super.updateFlow(t, \"scroll\"),\n this.rendered &&\n this.isPaginated &&\n this.settings.snap &&\n (this.snapper = new u(\n this,\n this.settings.snap &&\n \"object\" == typeof this.settings.snap &&\n this.settings.snap\n ));\n }\n destroy() {\n super.destroy(), this.snapper && this.snapper.destroy();\n }\n }\n e.a = p;\n },\n function (t, e, i) {\n (function (e) {\n t.exports = (function t(e, i, n) {\n function s(o, a) {\n if (!i[o]) {\n if (!e[o]) {\n if (r) return r(o, !0);\n var h = new Error(\"Cannot find module '\" + o + \"'\");\n throw ((h.code = \"MODULE_NOT_FOUND\"), h);\n }\n var l = (i[o] = { exports: {} });\n e[o][0].call(\n l.exports,\n function (t) {\n var i = e[o][1][t];\n return s(i || t);\n },\n l,\n l.exports,\n t,\n e,\n i,\n n\n );\n }\n return i[o].exports;\n }\n for (var r = !1, o = 0; o < n.length; o++) s(n[o]);\n return s;\n })(\n {\n 1: [\n function (t, i, n) {\n (function (t) {\n \"use strict\";\n var e,\n n,\n s = t.MutationObserver || t.WebKitMutationObserver;\n if (s) {\n var r = 0,\n o = new s(c),\n a = t.document.createTextNode(\"\");\n o.observe(a, { characterData: !0 }),\n (e = function () {\n a.data = r = ++r % 2;\n });\n } else if (\n t.setImmediate ||\n void 0 === t.MessageChannel\n )\n e =\n \"document\" in t &&\n \"onreadystatechange\" in\n t.document.createElement(\"script\")\n ? function () {\n var e = t.document.createElement(\"script\");\n (e.onreadystatechange = function () {\n c(),\n (e.onreadystatechange = null),\n e.parentNode.removeChild(e),\n (e = null);\n }),\n t.document.documentElement.appendChild(e);\n }\n : function () {\n setTimeout(c, 0);\n };\n else {\n var h = new t.MessageChannel();\n (h.port1.onmessage = c),\n (e = function () {\n h.port2.postMessage(0);\n });\n }\n var l = [];\n function c() {\n var t, e;\n n = !0;\n for (var i = l.length; i; ) {\n for (e = l, l = [], t = -1; ++t < i; ) e[t]();\n i = l.length;\n }\n n = !1;\n }\n i.exports = function (t) {\n 1 !== l.push(t) || n || e();\n };\n }).call(\n this,\n void 0 !== e\n ? e\n : \"undefined\" != typeof self\n ? self\n : \"undefined\" != typeof window\n ? window\n : {}\n );\n },\n {},\n ],\n 2: [\n function (t, e, i) {\n \"use strict\";\n var n = t(1);\n function s() {}\n var r = {},\n o = [\"REJECTED\"],\n a = [\"FULFILLED\"],\n h = [\"PENDING\"];\n function l(t) {\n if (\"function\" != typeof t)\n throw new TypeError(\"resolver must be a function\");\n (this.state = h),\n (this.queue = []),\n (this.outcome = void 0),\n t !== s && f(this, t);\n }\n function c(t, e, i) {\n (this.promise = t),\n \"function\" == typeof e &&\n ((this.onFulfilled = e),\n (this.callFulfilled = this.otherCallFulfilled)),\n \"function\" == typeof i &&\n ((this.onRejected = i),\n (this.callRejected = this.otherCallRejected));\n }\n function u(t, e, i) {\n n(function () {\n var n;\n try {\n n = e(i);\n } catch (e) {\n return r.reject(t, e);\n }\n n === t\n ? r.reject(\n t,\n new TypeError(\n \"Cannot resolve promise with itself\"\n )\n )\n : r.resolve(t, n);\n });\n }\n function d(t) {\n var e = t && t.then;\n if (\n t &&\n (\"object\" == typeof t || \"function\" == typeof t) &&\n \"function\" == typeof e\n )\n return function () {\n e.apply(t, arguments);\n };\n }\n function f(t, e) {\n var i = !1;\n function n(e) {\n i || ((i = !0), r.reject(t, e));\n }\n function s(e) {\n i || ((i = !0), r.resolve(t, e));\n }\n var o = p(function () {\n e(s, n);\n });\n \"error\" === o.status && n(o.value);\n }\n function p(t, e) {\n var i = {};\n try {\n (i.value = t(e)), (i.status = \"success\");\n } catch (t) {\n (i.status = \"error\"), (i.value = t);\n }\n return i;\n }\n (e.exports = l),\n (l.prototype.catch = function (t) {\n return this.then(null, t);\n }),\n (l.prototype.then = function (t, e) {\n if (\n (\"function\" != typeof t && this.state === a) ||\n (\"function\" != typeof e && this.state === o)\n )\n return this;\n var i = new this.constructor(s);\n return (\n this.state !== h\n ? u(i, this.state === a ? t : e, this.outcome)\n : this.queue.push(new c(i, t, e)),\n i\n );\n }),\n (c.prototype.callFulfilled = function (t) {\n r.resolve(this.promise, t);\n }),\n (c.prototype.otherCallFulfilled = function (t) {\n u(this.promise, this.onFulfilled, t);\n }),\n (c.prototype.callRejected = function (t) {\n r.reject(this.promise, t);\n }),\n (c.prototype.otherCallRejected = function (t) {\n u(this.promise, this.onRejected, t);\n }),\n (r.resolve = function (t, e) {\n var i = p(d, e);\n if (\"error\" === i.status) return r.reject(t, i.value);\n var n = i.value;\n if (n) f(t, n);\n else {\n (t.state = a), (t.outcome = e);\n for (var s = -1, o = t.queue.length; ++s < o; )\n t.queue[s].callFulfilled(e);\n }\n return t;\n }),\n (r.reject = function (t, e) {\n (t.state = o), (t.outcome = e);\n for (var i = -1, n = t.queue.length; ++i < n; )\n t.queue[i].callRejected(e);\n return t;\n }),\n (l.resolve = function (t) {\n return t instanceof this\n ? t\n : r.resolve(new this(s), t);\n }),\n (l.reject = function (t) {\n var e = new this(s);\n return r.reject(e, t);\n }),\n (l.all = function (t) {\n var e = this;\n if (\n \"[object Array]\" !==\n Object.prototype.toString.call(t)\n )\n return this.reject(\n new TypeError(\"must be an array\")\n );\n var i = t.length,\n n = !1;\n if (!i) return this.resolve([]);\n for (\n var o = new Array(i),\n a = 0,\n h = -1,\n l = new this(s);\n ++h < i;\n\n )\n c(t[h], h);\n return l;\n function c(t, s) {\n e.resolve(t).then(\n function (t) {\n (o[s] = t),\n ++a !== i || n || ((n = !0), r.resolve(l, o));\n },\n function (t) {\n n || ((n = !0), r.reject(l, t));\n }\n );\n }\n }),\n (l.race = function (t) {\n var e = this;\n if (\n \"[object Array]\" !==\n Object.prototype.toString.call(t)\n )\n return this.reject(\n new TypeError(\"must be an array\")\n );\n var i = t.length,\n n = !1;\n if (!i) return this.resolve([]);\n for (var o, a = -1, h = new this(s); ++a < i; )\n (o = t[a]),\n e.resolve(o).then(\n function (t) {\n n || ((n = !0), r.resolve(h, t));\n },\n function (t) {\n n || ((n = !0), r.reject(h, t));\n }\n );\n return h;\n });\n },\n { 1: 1 },\n ],\n 3: [\n function (t, i, n) {\n (function (e) {\n \"use strict\";\n \"function\" != typeof e.Promise && (e.Promise = t(2));\n }).call(\n this,\n void 0 !== e\n ? e\n : \"undefined\" != typeof self\n ? self\n : \"undefined\" != typeof window\n ? window\n : {}\n );\n },\n { 2: 2 },\n ],\n 4: [\n function (t, e, i) {\n \"use strict\";\n var n =\n \"function\" == typeof Symbol &&\n \"symbol\" == typeof Symbol.iterator\n ? function (t) {\n return typeof t;\n }\n : function (t) {\n return t &&\n \"function\" == typeof Symbol &&\n t.constructor === Symbol &&\n t !== Symbol.prototype\n ? \"symbol\"\n : typeof t;\n },\n s = (function () {\n try {\n if (\"undefined\" != typeof indexedDB)\n return indexedDB;\n if (\"undefined\" != typeof webkitIndexedDB)\n return webkitIndexedDB;\n if (\"undefined\" != typeof mozIndexedDB)\n return mozIndexedDB;\n if (\"undefined\" != typeof OIndexedDB)\n return OIndexedDB;\n if (\"undefined\" != typeof msIndexedDB)\n return msIndexedDB;\n } catch (t) {\n return;\n }\n })();\n function r(t, e) {\n (t = t || []), (e = e || {});\n try {\n return new Blob(t, e);\n } catch (s) {\n if (\"TypeError\" !== s.name) throw s;\n for (\n var i = new (\n \"undefined\" != typeof BlobBuilder\n ? BlobBuilder\n : \"undefined\" != typeof MSBlobBuilder\n ? MSBlobBuilder\n : \"undefined\" != typeof MozBlobBuilder\n ? MozBlobBuilder\n : WebKitBlobBuilder\n )(),\n n = 0;\n n < t.length;\n n += 1\n )\n i.append(t[n]);\n return i.getBlob(e.type);\n }\n }\n \"undefined\" == typeof Promise && t(3);\n var o = Promise;\n function a(t, e) {\n e &&\n t.then(\n function (t) {\n e(null, t);\n },\n function (t) {\n e(t);\n }\n );\n }\n function h(t, e, i) {\n \"function\" == typeof e && t.then(e),\n \"function\" == typeof i && t.catch(i);\n }\n function l(t) {\n return (\n \"string\" != typeof t &&\n (console.warn(\n t + \" used as a key, but it is not a string.\"\n ),\n (t = String(t))),\n t\n );\n }\n function c() {\n if (\n arguments.length &&\n \"function\" == typeof arguments[arguments.length - 1]\n )\n return arguments[arguments.length - 1];\n }\n var u = void 0,\n d = {},\n f = Object.prototype.toString;\n function p(t) {\n return \"boolean\" == typeof u\n ? o.resolve(u)\n : (function (t) {\n return new o(function (e) {\n var i = t.transaction(\n \"local-forage-detect-blob-support\",\n \"readwrite\"\n ),\n n = r([\"\"]);\n i\n .objectStore(\n \"local-forage-detect-blob-support\"\n )\n .put(n, \"key\"),\n (i.onabort = function (t) {\n t.preventDefault(),\n t.stopPropagation(),\n e(!1);\n }),\n (i.oncomplete = function () {\n var t =\n navigator.userAgent.match(\n /Chrome\\/(\\d+)/\n ),\n i = navigator.userAgent.match(/Edge\\//);\n e(i || !t || parseInt(t[1], 10) >= 43);\n });\n }).catch(function () {\n return !1;\n });\n })(t).then(function (t) {\n return (u = t);\n });\n }\n function g(t) {\n var e = d[t.name],\n i = {};\n (i.promise = new o(function (t, e) {\n (i.resolve = t), (i.reject = e);\n })),\n e.deferredOperations.push(i),\n e.dbReady\n ? (e.dbReady = e.dbReady.then(function () {\n return i.promise;\n }))\n : (e.dbReady = i.promise);\n }\n function m(t) {\n var e = d[t.name].deferredOperations.pop();\n if (e) return e.resolve(), e.promise;\n }\n function v(t, e) {\n var i = d[t.name].deferredOperations.pop();\n if (i) return i.reject(e), i.promise;\n }\n function y(t, e) {\n return new o(function (i, n) {\n if (\n ((d[t.name] = d[t.name] || {\n forages: [],\n db: null,\n dbReady: null,\n deferredOperations: [],\n }),\n t.db)\n ) {\n if (!e) return i(t.db);\n g(t), t.db.close();\n }\n var r = [t.name];\n e && r.push(t.version);\n var o = s.open.apply(s, r);\n e &&\n (o.onupgradeneeded = function (e) {\n var i = o.result;\n try {\n i.createObjectStore(t.storeName),\n e.oldVersion <= 1 &&\n i.createObjectStore(\n \"local-forage-detect-blob-support\"\n );\n } catch (i) {\n if (\"ConstraintError\" !== i.name) throw i;\n console.warn(\n 'The database \"' +\n t.name +\n '\" has been upgraded from version ' +\n e.oldVersion +\n \" to version \" +\n e.newVersion +\n ', but the storage \"' +\n t.storeName +\n '\" already exists.'\n );\n }\n }),\n (o.onerror = function (t) {\n t.preventDefault(), n(o.error);\n }),\n (o.onsuccess = function () {\n var e = o.result;\n (e.onversionchange = function (t) {\n t.target.close();\n }),\n i(e),\n m(t);\n });\n });\n }\n function b(t) {\n return y(t, !1);\n }\n function w(t) {\n return y(t, !0);\n }\n function x(t, e) {\n if (!t.db) return !0;\n var i = !t.db.objectStoreNames.contains(t.storeName),\n n = t.version < t.db.version,\n s = t.version > t.db.version;\n if (\n (n &&\n (t.version !== e &&\n console.warn(\n 'The database \"' +\n t.name +\n \"\\\" can't be downgraded from version \" +\n t.db.version +\n \" to version \" +\n t.version +\n \".\"\n ),\n (t.version = t.db.version)),\n s || i)\n ) {\n if (i) {\n var r = t.db.version + 1;\n r > t.version && (t.version = r);\n }\n return !0;\n }\n return !1;\n }\n function E(t) {\n return r(\n [\n (function (t) {\n for (\n var e = t.length,\n i = new ArrayBuffer(e),\n n = new Uint8Array(i),\n s = 0;\n s < e;\n s++\n )\n n[s] = t.charCodeAt(s);\n return i;\n })(atob(t.data)),\n ],\n { type: t.type }\n );\n }\n function S(t) {\n return t && t.__local_forage_encoded_blob;\n }\n function N(t) {\n var e = this,\n i = e._initReady().then(function () {\n var t = d[e._dbInfo.name];\n if (t && t.dbReady) return t.dbReady;\n });\n return h(i, t, t), i;\n }\n function _(t, e, i, n) {\n void 0 === n && (n = 1);\n try {\n var s = t.db.transaction(t.storeName, e);\n i(null, s);\n } catch (s) {\n if (\n n > 0 &&\n (!t.db ||\n \"InvalidStateError\" === s.name ||\n \"NotFoundError\" === s.name)\n )\n return o\n .resolve()\n .then(function () {\n if (\n !t.db ||\n (\"NotFoundError\" === s.name &&\n !t.db.objectStoreNames.contains(\n t.storeName\n ) &&\n t.version <= t.db.version)\n )\n return (\n t.db && (t.version = t.db.version + 1), w(t)\n );\n })\n .then(function () {\n return (function (t) {\n g(t);\n for (\n var e = d[t.name], i = e.forages, n = 0;\n n < i.length;\n n++\n ) {\n var s = i[n];\n s._dbInfo.db &&\n (s._dbInfo.db.close(),\n (s._dbInfo.db = null));\n }\n return (\n (t.db = null),\n b(t)\n .then(function (e) {\n return (t.db = e), x(t) ? w(t) : e;\n })\n .then(function (n) {\n t.db = e.db = n;\n for (var s = 0; s < i.length; s++)\n i[s]._dbInfo.db = n;\n })\n .catch(function (e) {\n throw (v(t, e), e);\n })\n );\n })(t).then(function () {\n _(t, e, i, n - 1);\n });\n })\n .catch(i);\n i(s);\n }\n }\n var T = {\n _driver: \"asyncStorage\",\n _initStorage: function (t) {\n var e = this,\n i = { db: null };\n if (t) for (var n in t) i[n] = t[n];\n var s = d[i.name];\n s ||\n ((s = {\n forages: [],\n db: null,\n dbReady: null,\n deferredOperations: [],\n }),\n (d[i.name] = s)),\n s.forages.push(e),\n e._initReady ||\n ((e._initReady = e.ready), (e.ready = N));\n var r = [];\n function a() {\n return o.resolve();\n }\n for (var h = 0; h < s.forages.length; h++) {\n var l = s.forages[h];\n l !== e && r.push(l._initReady().catch(a));\n }\n var c = s.forages.slice(0);\n return o\n .all(r)\n .then(function () {\n return (i.db = s.db), b(i);\n })\n .then(function (t) {\n return (\n (i.db = t),\n x(i, e._defaultConfig.version) ? w(i) : t\n );\n })\n .then(function (t) {\n (i.db = s.db = t), (e._dbInfo = i);\n for (var n = 0; n < c.length; n++) {\n var r = c[n];\n r !== e &&\n ((r._dbInfo.db = i.db),\n (r._dbInfo.version = i.version));\n }\n });\n },\n _support: (function () {\n try {\n if (!s || !s.open) return !1;\n var t =\n \"undefined\" != typeof openDatabase &&\n /(Safari|iPhone|iPad|iPod)/.test(\n navigator.userAgent\n ) &&\n !/Chrome/.test(navigator.userAgent) &&\n !/BlackBerry/.test(navigator.platform),\n e =\n \"function\" == typeof fetch &&\n -1 !==\n fetch.toString().indexOf(\"[native code\");\n return (\n (!t || e) &&\n \"undefined\" != typeof indexedDB &&\n \"undefined\" != typeof IDBKeyRange\n );\n } catch (t) {\n return !1;\n }\n })(),\n iterate: function (t, e) {\n var i = this,\n n = new o(function (e, n) {\n i.ready()\n .then(function () {\n _(i._dbInfo, \"readonly\", function (s, r) {\n if (s) return n(s);\n try {\n var o = r\n .objectStore(i._dbInfo.storeName)\n .openCursor(),\n a = 1;\n (o.onsuccess = function () {\n var i = o.result;\n if (i) {\n var n = i.value;\n S(n) && (n = E(n));\n var s = t(n, i.key, a++);\n void 0 !== s ? e(s) : i.continue();\n } else e();\n }),\n (o.onerror = function () {\n n(o.error);\n });\n } catch (t) {\n n(t);\n }\n });\n })\n .catch(n);\n });\n return a(n, e), n;\n },\n getItem: function (t, e) {\n var i = this;\n t = l(t);\n var n = new o(function (e, n) {\n i.ready()\n .then(function () {\n _(i._dbInfo, \"readonly\", function (s, r) {\n if (s) return n(s);\n try {\n var o = r\n .objectStore(i._dbInfo.storeName)\n .get(t);\n (o.onsuccess = function () {\n var t = o.result;\n void 0 === t && (t = null),\n S(t) && (t = E(t)),\n e(t);\n }),\n (o.onerror = function () {\n n(o.error);\n });\n } catch (t) {\n n(t);\n }\n });\n })\n .catch(n);\n });\n return a(n, e), n;\n },\n setItem: function (t, e, i) {\n var n = this;\n t = l(t);\n var s = new o(function (i, s) {\n var r;\n n.ready()\n .then(function () {\n return (\n (r = n._dbInfo),\n \"[object Blob]\" === f.call(e)\n ? p(r.db).then(function (t) {\n return t\n ? e\n : ((i = e),\n new o(function (t, e) {\n var n = new FileReader();\n (n.onerror = e),\n (n.onloadend = function (e) {\n var n = btoa(\n e.target.result || \"\"\n );\n t({\n __local_forage_encoded_blob:\n !0,\n data: n,\n type: i.type,\n });\n }),\n n.readAsBinaryString(i);\n }));\n var i;\n })\n : e\n );\n })\n .then(function (e) {\n _(n._dbInfo, \"readwrite\", function (r, o) {\n if (r) return s(r);\n try {\n var a = o.objectStore(\n n._dbInfo.storeName\n );\n null === e && (e = void 0);\n var h = a.put(e, t);\n (o.oncomplete = function () {\n void 0 === e && (e = null), i(e);\n }),\n (o.onabort = o.onerror =\n function () {\n var t = h.error\n ? h.error\n : h.transaction.error;\n s(t);\n });\n } catch (t) {\n s(t);\n }\n });\n })\n .catch(s);\n });\n return a(s, i), s;\n },\n removeItem: function (t, e) {\n var i = this;\n t = l(t);\n var n = new o(function (e, n) {\n i.ready()\n .then(function () {\n _(i._dbInfo, \"readwrite\", function (s, r) {\n if (s) return n(s);\n try {\n var o = r\n .objectStore(i._dbInfo.storeName)\n .delete(t);\n (r.oncomplete = function () {\n e();\n }),\n (r.onerror = function () {\n n(o.error);\n }),\n (r.onabort = function () {\n var t = o.error\n ? o.error\n : o.transaction.error;\n n(t);\n });\n } catch (t) {\n n(t);\n }\n });\n })\n .catch(n);\n });\n return a(n, e), n;\n },\n clear: function (t) {\n var e = this,\n i = new o(function (t, i) {\n e.ready()\n .then(function () {\n _(e._dbInfo, \"readwrite\", function (n, s) {\n if (n) return i(n);\n try {\n var r = s\n .objectStore(e._dbInfo.storeName)\n .clear();\n (s.oncomplete = function () {\n t();\n }),\n (s.onabort = s.onerror =\n function () {\n var t = r.error\n ? r.error\n : r.transaction.error;\n i(t);\n });\n } catch (t) {\n i(t);\n }\n });\n })\n .catch(i);\n });\n return a(i, t), i;\n },\n length: function (t) {\n var e = this,\n i = new o(function (t, i) {\n e.ready()\n .then(function () {\n _(e._dbInfo, \"readonly\", function (n, s) {\n if (n) return i(n);\n try {\n var r = s\n .objectStore(e._dbInfo.storeName)\n .count();\n (r.onsuccess = function () {\n t(r.result);\n }),\n (r.onerror = function () {\n i(r.error);\n });\n } catch (t) {\n i(t);\n }\n });\n })\n .catch(i);\n });\n return a(i, t), i;\n },\n key: function (t, e) {\n var i = this,\n n = new o(function (e, n) {\n t < 0\n ? e(null)\n : i\n .ready()\n .then(function () {\n _(\n i._dbInfo,\n \"readonly\",\n function (s, r) {\n if (s) return n(s);\n try {\n var o = r.objectStore(\n i._dbInfo.storeName\n ),\n a = !1,\n h = o.openKeyCursor();\n (h.onsuccess = function () {\n var i = h.result;\n i\n ? 0 === t || a\n ? e(i.key)\n : ((a = !0), i.advance(t))\n : e(null);\n }),\n (h.onerror = function () {\n n(h.error);\n });\n } catch (t) {\n n(t);\n }\n }\n );\n })\n .catch(n);\n });\n return a(n, e), n;\n },\n keys: function (t) {\n var e = this,\n i = new o(function (t, i) {\n e.ready()\n .then(function () {\n _(e._dbInfo, \"readonly\", function (n, s) {\n if (n) return i(n);\n try {\n var r = s\n .objectStore(e._dbInfo.storeName)\n .openKeyCursor(),\n o = [];\n (r.onsuccess = function () {\n var e = r.result;\n e\n ? (o.push(e.key), e.continue())\n : t(o);\n }),\n (r.onerror = function () {\n i(r.error);\n });\n } catch (t) {\n i(t);\n }\n });\n })\n .catch(i);\n });\n return a(i, t), i;\n },\n dropInstance: function (t, e) {\n e = c.apply(this, arguments);\n var i = this.config();\n (t = (\"function\" != typeof t && t) || {}).name ||\n ((t.name = t.name || i.name),\n (t.storeName = t.storeName || i.storeName));\n var n,\n r = this;\n if (t.name) {\n var h = t.name === i.name && r._dbInfo.db,\n l = h\n ? o.resolve(r._dbInfo.db)\n : b(t).then(function (e) {\n var i = d[t.name],\n n = i.forages;\n i.db = e;\n for (var s = 0; s < n.length; s++)\n n[s]._dbInfo.db = e;\n return e;\n });\n n = t.storeName\n ? l.then(function (e) {\n if (\n e.objectStoreNames.contains(t.storeName)\n ) {\n var i = e.version + 1;\n g(t);\n var n = d[t.name],\n r = n.forages;\n e.close();\n for (var a = 0; a < r.length; a++) {\n var h = r[a];\n (h._dbInfo.db = null),\n (h._dbInfo.version = i);\n }\n return new o(function (e, n) {\n var r = s.open(t.name, i);\n (r.onerror = function (t) {\n r.result.close(), n(t);\n }),\n (r.onupgradeneeded = function () {\n r.result.deleteObjectStore(\n t.storeName\n );\n }),\n (r.onsuccess = function () {\n var t = r.result;\n t.close(), e(t);\n });\n })\n .then(function (t) {\n n.db = t;\n for (var e = 0; e < r.length; e++) {\n var i = r[e];\n (i._dbInfo.db = t), m(i._dbInfo);\n }\n })\n .catch(function (e) {\n throw (\n ((v(t, e) || o.resolve()).catch(\n function () {}\n ),\n e)\n );\n });\n }\n })\n : l.then(function (e) {\n g(t);\n var i = d[t.name],\n n = i.forages;\n e.close();\n for (var r = 0; r < n.length; r++)\n n[r]._dbInfo.db = null;\n return new o(function (e, i) {\n var n = s.deleteDatabase(t.name);\n (n.onerror = function () {\n var t = n.result;\n t && t.close(), i(n.error);\n }),\n (n.onblocked = function () {\n console.warn(\n 'dropInstance blocked for database \"' +\n t.name +\n '\" until all open connections are closed'\n );\n }),\n (n.onsuccess = function () {\n var t = n.result;\n t && t.close(), e(t);\n });\n })\n .then(function (t) {\n i.db = t;\n for (var e = 0; e < n.length; e++)\n m(n[e]._dbInfo);\n })\n .catch(function (e) {\n throw (\n ((v(t, e) || o.resolve()).catch(\n function () {}\n ),\n e)\n );\n });\n });\n } else n = o.reject(\"Invalid arguments\");\n return a(n, e), n;\n },\n },\n C =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",\n O = /^~~local_forage_type~([^~]+)~/,\n I = \"__lfsc__:\".length,\n R = I + \"arbf\".length,\n k = Object.prototype.toString;\n function A(t) {\n var e,\n i,\n n,\n s,\n r,\n o = 0.75 * t.length,\n a = t.length,\n h = 0;\n \"=\" === t[t.length - 1] &&\n (o--, \"=\" === t[t.length - 2] && o--);\n var l = new ArrayBuffer(o),\n c = new Uint8Array(l);\n for (e = 0; e < a; e += 4)\n (i = C.indexOf(t[e])),\n (n = C.indexOf(t[e + 1])),\n (s = C.indexOf(t[e + 2])),\n (r = C.indexOf(t[e + 3])),\n (c[h++] = (i << 2) | (n >> 4)),\n (c[h++] = ((15 & n) << 4) | (s >> 2)),\n (c[h++] = ((3 & s) << 6) | (63 & r));\n return l;\n }\n function L(t) {\n var e,\n i = new Uint8Array(t),\n n = \"\";\n for (e = 0; e < i.length; e += 3)\n (n += C[i[e] >> 2]),\n (n += C[((3 & i[e]) << 4) | (i[e + 1] >> 4)]),\n (n += C[((15 & i[e + 1]) << 2) | (i[e + 2] >> 6)]),\n (n += C[63 & i[e + 2]]);\n return (\n i.length % 3 == 2\n ? (n = n.substring(0, n.length - 1) + \"=\")\n : i.length % 3 == 1 &&\n (n = n.substring(0, n.length - 2) + \"==\"),\n n\n );\n }\n var j = {\n serialize: function (t, e) {\n var i = \"\";\n if (\n (t && (i = k.call(t)),\n t &&\n (\"[object ArrayBuffer]\" === i ||\n (t.buffer &&\n \"[object ArrayBuffer]\" === k.call(t.buffer))))\n ) {\n var n,\n s = \"__lfsc__:\";\n t instanceof ArrayBuffer\n ? ((n = t), (s += \"arbf\"))\n : ((n = t.buffer),\n \"[object Int8Array]\" === i\n ? (s += \"si08\")\n : \"[object Uint8Array]\" === i\n ? (s += \"ui08\")\n : \"[object Uint8ClampedArray]\" === i\n ? (s += \"uic8\")\n : \"[object Int16Array]\" === i\n ? (s += \"si16\")\n : \"[object Uint16Array]\" === i\n ? (s += \"ur16\")\n : \"[object Int32Array]\" === i\n ? (s += \"si32\")\n : \"[object Uint32Array]\" === i\n ? (s += \"ui32\")\n : \"[object Float32Array]\" === i\n ? (s += \"fl32\")\n : \"[object Float64Array]\" === i\n ? (s += \"fl64\")\n : e(\n new Error(\n \"Failed to get type for BinaryArray\"\n )\n )),\n e(s + L(n));\n } else if (\"[object Blob]\" === i) {\n var r = new FileReader();\n (r.onload = function () {\n var i =\n \"~~local_forage_type~\" +\n t.type +\n \"~\" +\n L(this.result);\n e(\"__lfsc__:blob\" + i);\n }),\n r.readAsArrayBuffer(t);\n } else\n try {\n e(JSON.stringify(t));\n } catch (i) {\n console.error(\n \"Couldn't convert value into a JSON string: \",\n t\n ),\n e(null, i);\n }\n },\n deserialize: function (t) {\n if (\"__lfsc__:\" !== t.substring(0, I))\n return JSON.parse(t);\n var e,\n i = t.substring(R),\n n = t.substring(I, R);\n if (\"blob\" === n && O.test(i)) {\n var s = i.match(O);\n (e = s[1]), (i = i.substring(s[0].length));\n }\n var o = A(i);\n switch (n) {\n case \"arbf\":\n return o;\n case \"blob\":\n return r([o], { type: e });\n case \"si08\":\n return new Int8Array(o);\n case \"ui08\":\n return new Uint8Array(o);\n case \"uic8\":\n return new Uint8ClampedArray(o);\n case \"si16\":\n return new Int16Array(o);\n case \"ur16\":\n return new Uint16Array(o);\n case \"si32\":\n return new Int32Array(o);\n case \"ui32\":\n return new Uint32Array(o);\n case \"fl32\":\n return new Float32Array(o);\n case \"fl64\":\n return new Float64Array(o);\n default:\n throw new Error(\"Unkown type: \" + n);\n }\n },\n stringToBuffer: A,\n bufferToString: L,\n };\n function D(t, e, i, n) {\n t.executeSql(\n \"CREATE TABLE IF NOT EXISTS \" +\n e.storeName +\n \" (id INTEGER PRIMARY KEY, key unique, value)\",\n [],\n i,\n n\n );\n }\n function P(t, e, i, n, s, r) {\n t.executeSql(\n i,\n n,\n s,\n function (t, o) {\n o.code === o.SYNTAX_ERR\n ? t.executeSql(\n \"SELECT name FROM sqlite_master WHERE type='table' AND name = ?\",\n [e.storeName],\n function (t, a) {\n a.rows.length\n ? r(t, o)\n : D(\n t,\n e,\n function () {\n t.executeSql(i, n, s, r);\n },\n r\n );\n },\n r\n )\n : r(t, o);\n },\n r\n );\n }\n function M(t, e, i, n) {\n var s = this;\n t = l(t);\n var r = new o(function (r, o) {\n s.ready()\n .then(function () {\n void 0 === e && (e = null);\n var a = e,\n h = s._dbInfo;\n h.serializer.serialize(e, function (e, l) {\n l\n ? o(l)\n : h.db.transaction(\n function (i) {\n P(\n i,\n h,\n \"INSERT OR REPLACE INTO \" +\n h.storeName +\n \" (key, value) VALUES (?, ?)\",\n [t, e],\n function () {\n r(a);\n },\n function (t, e) {\n o(e);\n }\n );\n },\n function (e) {\n if (e.code === e.QUOTA_ERR) {\n if (n > 0)\n return void r(\n M.apply(s, [t, a, i, n - 1])\n );\n o(e);\n }\n }\n );\n });\n })\n .catch(o);\n });\n return a(r, i), r;\n }\n function z(t) {\n return new o(function (e, i) {\n t.transaction(\n function (n) {\n n.executeSql(\n \"SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\",\n [],\n function (i, n) {\n for (\n var s = [], r = 0;\n r < n.rows.length;\n r++\n )\n s.push(n.rows.item(r).name);\n e({ db: t, storeNames: s });\n },\n function (t, e) {\n i(e);\n }\n );\n },\n function (t) {\n i(t);\n }\n );\n });\n }\n var B = {\n _driver: \"webSQLStorage\",\n _initStorage: function (t) {\n var e = this,\n i = { db: null };\n if (t)\n for (var n in t)\n i[n] =\n \"string\" != typeof t[n]\n ? t[n].toString()\n : t[n];\n var s = new o(function (t, n) {\n try {\n i.db = openDatabase(\n i.name,\n String(i.version),\n i.description,\n i.size\n );\n } catch (t) {\n return n(t);\n }\n i.db.transaction(function (s) {\n D(\n s,\n i,\n function () {\n (e._dbInfo = i), t();\n },\n function (t, e) {\n n(e);\n }\n );\n }, n);\n });\n return (i.serializer = j), s;\n },\n _support: \"function\" == typeof openDatabase,\n iterate: function (t, e) {\n var i = this,\n n = new o(function (e, n) {\n i.ready()\n .then(function () {\n var s = i._dbInfo;\n s.db.transaction(function (i) {\n P(\n i,\n s,\n \"SELECT * FROM \" + s.storeName,\n [],\n function (i, n) {\n for (\n var r = n.rows, o = r.length, a = 0;\n a < o;\n a++\n ) {\n var h = r.item(a),\n l = h.value;\n if (\n (l &&\n (l = s.serializer.deserialize(l)),\n void 0 !== (l = t(l, h.key, a + 1)))\n )\n return void e(l);\n }\n e();\n },\n function (t, e) {\n n(e);\n }\n );\n });\n })\n .catch(n);\n });\n return a(n, e), n;\n },\n getItem: function (t, e) {\n var i = this;\n t = l(t);\n var n = new o(function (e, n) {\n i.ready()\n .then(function () {\n var s = i._dbInfo;\n s.db.transaction(function (i) {\n P(\n i,\n s,\n \"SELECT * FROM \" +\n s.storeName +\n \" WHERE key = ? LIMIT 1\",\n [t],\n function (t, i) {\n var n = i.rows.length\n ? i.rows.item(0).value\n : null;\n n && (n = s.serializer.deserialize(n)),\n e(n);\n },\n function (t, e) {\n n(e);\n }\n );\n });\n })\n .catch(n);\n });\n return a(n, e), n;\n },\n setItem: function (t, e, i) {\n return M.apply(this, [t, e, i, 1]);\n },\n removeItem: function (t, e) {\n var i = this;\n t = l(t);\n var n = new o(function (e, n) {\n i.ready()\n .then(function () {\n var s = i._dbInfo;\n s.db.transaction(function (i) {\n P(\n i,\n s,\n \"DELETE FROM \" +\n s.storeName +\n \" WHERE key = ?\",\n [t],\n function () {\n e();\n },\n function (t, e) {\n n(e);\n }\n );\n });\n })\n .catch(n);\n });\n return a(n, e), n;\n },\n clear: function (t) {\n var e = this,\n i = new o(function (t, i) {\n e.ready()\n .then(function () {\n var n = e._dbInfo;\n n.db.transaction(function (e) {\n P(\n e,\n n,\n \"DELETE FROM \" + n.storeName,\n [],\n function () {\n t();\n },\n function (t, e) {\n i(e);\n }\n );\n });\n })\n .catch(i);\n });\n return a(i, t), i;\n },\n length: function (t) {\n var e = this,\n i = new o(function (t, i) {\n e.ready()\n .then(function () {\n var n = e._dbInfo;\n n.db.transaction(function (e) {\n P(\n e,\n n,\n \"SELECT COUNT(key) as c FROM \" +\n n.storeName,\n [],\n function (e, i) {\n var n = i.rows.item(0).c;\n t(n);\n },\n function (t, e) {\n i(e);\n }\n );\n });\n })\n .catch(i);\n });\n return a(i, t), i;\n },\n key: function (t, e) {\n var i = this,\n n = new o(function (e, n) {\n i.ready()\n .then(function () {\n var s = i._dbInfo;\n s.db.transaction(function (i) {\n P(\n i,\n s,\n \"SELECT key FROM \" +\n s.storeName +\n \" WHERE id = ? LIMIT 1\",\n [t + 1],\n function (t, i) {\n var n = i.rows.length\n ? i.rows.item(0).key\n : null;\n e(n);\n },\n function (t, e) {\n n(e);\n }\n );\n });\n })\n .catch(n);\n });\n return a(n, e), n;\n },\n keys: function (t) {\n var e = this,\n i = new o(function (t, i) {\n e.ready()\n .then(function () {\n var n = e._dbInfo;\n n.db.transaction(function (e) {\n P(\n e,\n n,\n \"SELECT key FROM \" + n.storeName,\n [],\n function (e, i) {\n for (\n var n = [], s = 0;\n s < i.rows.length;\n s++\n )\n n.push(i.rows.item(s).key);\n t(n);\n },\n function (t, e) {\n i(e);\n }\n );\n });\n })\n .catch(i);\n });\n return a(i, t), i;\n },\n dropInstance: function (t, e) {\n e = c.apply(this, arguments);\n var i = this.config();\n (t = (\"function\" != typeof t && t) || {}).name ||\n ((t.name = t.name || i.name),\n (t.storeName = t.storeName || i.storeName));\n var n,\n s = this;\n return (\n a(\n (n = t.name\n ? new o(function (e) {\n var n;\n (n =\n t.name === i.name\n ? s._dbInfo.db\n : openDatabase(t.name, \"\", \"\", 0)),\n t.storeName\n ? e({\n db: n,\n storeNames: [t.storeName],\n })\n : e(z(n));\n }).then(function (t) {\n return new o(function (e, i) {\n t.db.transaction(\n function (n) {\n function s(t) {\n return new o(function (e, i) {\n n.executeSql(\n \"DROP TABLE IF EXISTS \" + t,\n [],\n function () {\n e();\n },\n function (t, e) {\n i(e);\n }\n );\n });\n }\n for (\n var r = [],\n a = 0,\n h = t.storeNames.length;\n a < h;\n a++\n )\n r.push(s(t.storeNames[a]));\n o.all(r)\n .then(function () {\n e();\n })\n .catch(function (t) {\n i(t);\n });\n },\n function (t) {\n i(t);\n }\n );\n });\n })\n : o.reject(\"Invalid arguments\")),\n e\n ),\n n\n );\n },\n };\n function q(t, e) {\n var i = t.name + \"/\";\n return (\n t.storeName !== e.storeName &&\n (i += t.storeName + \"/\"),\n i\n );\n }\n function F() {\n return (\n !(function () {\n try {\n return (\n localStorage.setItem(\n \"_localforage_support_test\",\n !0\n ),\n localStorage.removeItem(\n \"_localforage_support_test\"\n ),\n !1\n );\n } catch (t) {\n return !0;\n }\n })() || localStorage.length > 0\n );\n }\n var U = {\n _driver: \"localStorageWrapper\",\n _initStorage: function (t) {\n var e = {};\n if (t) for (var i in t) e[i] = t[i];\n return (\n (e.keyPrefix = q(t, this._defaultConfig)),\n F()\n ? ((this._dbInfo = e),\n (e.serializer = j),\n o.resolve())\n : o.reject()\n );\n },\n _support: (function () {\n try {\n return (\n \"undefined\" != typeof localStorage &&\n \"setItem\" in localStorage &&\n !!localStorage.setItem\n );\n } catch (t) {\n return !1;\n }\n })(),\n iterate: function (t, e) {\n var i = this,\n n = i.ready().then(function () {\n for (\n var e = i._dbInfo,\n n = e.keyPrefix,\n s = n.length,\n r = localStorage.length,\n o = 1,\n a = 0;\n a < r;\n a++\n ) {\n var h = localStorage.key(a);\n if (0 === h.indexOf(n)) {\n var l = localStorage.getItem(h);\n if (\n (l && (l = e.serializer.deserialize(l)),\n void 0 !==\n (l = t(l, h.substring(s), o++)))\n )\n return l;\n }\n }\n });\n return a(n, e), n;\n },\n getItem: function (t, e) {\n var i = this;\n t = l(t);\n var n = i.ready().then(function () {\n var e = i._dbInfo,\n n = localStorage.getItem(e.keyPrefix + t);\n return n && (n = e.serializer.deserialize(n)), n;\n });\n return a(n, e), n;\n },\n setItem: function (t, e, i) {\n var n = this;\n t = l(t);\n var s = n.ready().then(function () {\n void 0 === e && (e = null);\n var i = e;\n return new o(function (s, r) {\n var o = n._dbInfo;\n o.serializer.serialize(e, function (e, n) {\n if (n) r(n);\n else\n try {\n localStorage.setItem(o.keyPrefix + t, e),\n s(i);\n } catch (t) {\n (\"QuotaExceededError\" !== t.name &&\n \"NS_ERROR_DOM_QUOTA_REACHED\" !==\n t.name) ||\n r(t),\n r(t);\n }\n });\n });\n });\n return a(s, i), s;\n },\n removeItem: function (t, e) {\n var i = this;\n t = l(t);\n var n = i.ready().then(function () {\n var e = i._dbInfo;\n localStorage.removeItem(e.keyPrefix + t);\n });\n return a(n, e), n;\n },\n clear: function (t) {\n var e = this,\n i = e.ready().then(function () {\n for (\n var t = e._dbInfo.keyPrefix,\n i = localStorage.length - 1;\n i >= 0;\n i--\n ) {\n var n = localStorage.key(i);\n 0 === n.indexOf(t) &&\n localStorage.removeItem(n);\n }\n });\n return a(i, t), i;\n },\n length: function (t) {\n var e = this.keys().then(function (t) {\n return t.length;\n });\n return a(e, t), e;\n },\n key: function (t, e) {\n var i = this,\n n = i.ready().then(function () {\n var e,\n n = i._dbInfo;\n try {\n e = localStorage.key(t);\n } catch (t) {\n e = null;\n }\n return (\n e && (e = e.substring(n.keyPrefix.length)), e\n );\n });\n return a(n, e), n;\n },\n keys: function (t) {\n var e = this,\n i = e.ready().then(function () {\n for (\n var t = e._dbInfo,\n i = localStorage.length,\n n = [],\n s = 0;\n s < i;\n s++\n ) {\n var r = localStorage.key(s);\n 0 === r.indexOf(t.keyPrefix) &&\n n.push(r.substring(t.keyPrefix.length));\n }\n return n;\n });\n return a(i, t), i;\n },\n dropInstance: function (t, e) {\n if (\n ((e = c.apply(this, arguments)),\n !(t = (\"function\" != typeof t && t) || {}).name)\n ) {\n var i = this.config();\n (t.name = t.name || i.name),\n (t.storeName = t.storeName || i.storeName);\n }\n var n,\n s = this;\n return (\n a(\n (n = t.name\n ? new o(function (e) {\n t.storeName\n ? e(q(t, s._defaultConfig))\n : e(t.name + \"/\");\n }).then(function (t) {\n for (\n var e = localStorage.length - 1;\n e >= 0;\n e--\n ) {\n var i = localStorage.key(e);\n 0 === i.indexOf(t) &&\n localStorage.removeItem(i);\n }\n })\n : o.reject(\"Invalid arguments\")),\n e\n ),\n n\n );\n },\n },\n W = function (t, e) {\n for (var i, n, s = t.length, r = 0; r < s; ) {\n if (\n (i = t[r]) === (n = e) ||\n (\"number\" == typeof i &&\n \"number\" == typeof n &&\n isNaN(i) &&\n isNaN(n))\n )\n return !0;\n r++;\n }\n return !1;\n },\n H =\n Array.isArray ||\n function (t) {\n return (\n \"[object Array]\" ===\n Object.prototype.toString.call(t)\n );\n },\n V = {},\n X = {},\n G = { INDEXEDDB: T, WEBSQL: B, LOCALSTORAGE: U },\n Y = [\n G.INDEXEDDB._driver,\n G.WEBSQL._driver,\n G.LOCALSTORAGE._driver,\n ],\n $ = [\"dropInstance\"],\n K = [\n \"clear\",\n \"getItem\",\n \"iterate\",\n \"key\",\n \"keys\",\n \"length\",\n \"removeItem\",\n \"setItem\",\n ].concat($),\n Z = {\n description: \"\",\n driver: Y.slice(),\n name: \"localforage\",\n size: 4980736,\n storeName: \"keyvaluepairs\",\n version: 1,\n };\n function J(t, e) {\n t[e] = function () {\n var i = arguments;\n return t.ready().then(function () {\n return t[e].apply(t, i);\n });\n };\n }\n function Q() {\n for (var t = 1; t < arguments.length; t++) {\n var e = arguments[t];\n if (e)\n for (var i in e)\n e.hasOwnProperty(i) &&\n (H(e[i])\n ? (arguments[0][i] = e[i].slice())\n : (arguments[0][i] = e[i]));\n }\n return arguments[0];\n }\n var tt = new ((function () {\n function t(e) {\n for (var i in ((function (t, e) {\n if (!(t instanceof e))\n throw new TypeError(\n \"Cannot call a class as a function\"\n );\n })(this, t),\n G))\n if (G.hasOwnProperty(i)) {\n var n = G[i],\n s = n._driver;\n (this[i] = s), V[s] || this.defineDriver(n);\n }\n (this._defaultConfig = Q({}, Z)),\n (this._config = Q({}, this._defaultConfig, e)),\n (this._driverSet = null),\n (this._initDriver = null),\n (this._ready = !1),\n (this._dbInfo = null),\n this._wrapLibraryMethodsWithReady(),\n this.setDriver(this._config.driver).catch(\n function () {}\n );\n }\n return (\n (t.prototype.config = function (t) {\n if (\n \"object\" === (void 0 === t ? \"undefined\" : n(t))\n ) {\n if (this._ready)\n return new Error(\n \"Can't call config() after localforage has been used.\"\n );\n for (var e in t) {\n if (\n (\"storeName\" === e &&\n (t[e] = t[e].replace(/\\W/g, \"_\")),\n \"version\" === e && \"number\" != typeof t[e])\n )\n return new Error(\n \"Database version must be a number.\"\n );\n this._config[e] = t[e];\n }\n return (\n !(\"driver\" in t) ||\n !t.driver ||\n this.setDriver(this._config.driver)\n );\n }\n return \"string\" == typeof t\n ? this._config[t]\n : this._config;\n }),\n (t.prototype.defineDriver = function (t, e, i) {\n var n = new o(function (e, i) {\n try {\n var n = t._driver,\n s = new Error(\n \"Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver\"\n );\n if (!t._driver) return void i(s);\n for (\n var r = K.concat(\"_initStorage\"),\n h = 0,\n l = r.length;\n h < l;\n h++\n ) {\n var c = r[h];\n if (\n (!W($, c) || t[c]) &&\n \"function\" != typeof t[c]\n )\n return void i(s);\n }\n !(function () {\n for (\n var e = function (t) {\n return function () {\n var e = new Error(\n \"Method \" +\n t +\n \" is not implemented by the current driver\"\n ),\n i = o.reject(e);\n return (\n a(\n i,\n arguments[arguments.length - 1]\n ),\n i\n );\n };\n },\n i = 0,\n n = $.length;\n i < n;\n i++\n ) {\n var s = $[i];\n t[s] || (t[s] = e(s));\n }\n })();\n var u = function (i) {\n V[n] &&\n console.info(\n \"Redefining LocalForage driver: \" + n\n ),\n (V[n] = t),\n (X[n] = i),\n e();\n };\n \"_support\" in t\n ? t._support &&\n \"function\" == typeof t._support\n ? t._support().then(u, i)\n : u(!!t._support)\n : u(!0);\n } catch (t) {\n i(t);\n }\n });\n return h(n, e, i), n;\n }),\n (t.prototype.driver = function () {\n return this._driver || null;\n }),\n (t.prototype.getDriver = function (t, e, i) {\n var n = V[t]\n ? o.resolve(V[t])\n : o.reject(new Error(\"Driver not found.\"));\n return h(n, e, i), n;\n }),\n (t.prototype.getSerializer = function (t) {\n var e = o.resolve(j);\n return h(e, t), e;\n }),\n (t.prototype.ready = function (t) {\n var e = this,\n i = e._driverSet.then(function () {\n return (\n null === e._ready &&\n (e._ready = e._initDriver()),\n e._ready\n );\n });\n return h(i, t, t), i;\n }),\n (t.prototype.setDriver = function (t, e, i) {\n var n = this;\n H(t) || (t = [t]);\n var s = this._getSupportedDrivers(t);\n function r() {\n n._config.driver = n.driver();\n }\n function a(t) {\n return (\n n._extend(t),\n r(),\n (n._ready = n._initStorage(n._config)),\n n._ready\n );\n }\n var l =\n null !== this._driverSet\n ? this._driverSet.catch(function () {\n return o.resolve();\n })\n : o.resolve();\n return (\n (this._driverSet = l\n .then(function () {\n var t = s[0];\n return (\n (n._dbInfo = null),\n (n._ready = null),\n n.getDriver(t).then(function (t) {\n (n._driver = t._driver),\n r(),\n n._wrapLibraryMethodsWithReady(),\n (n._initDriver = (function (t) {\n return function () {\n var e = 0;\n return (function i() {\n for (; e < t.length; ) {\n var s = t[e];\n return (\n e++,\n (n._dbInfo = null),\n (n._ready = null),\n n\n .getDriver(s)\n .then(a)\n .catch(i)\n );\n }\n r();\n var h = new Error(\n \"No available storage method found.\"\n );\n return (\n (n._driverSet = o.reject(h)),\n n._driverSet\n );\n })();\n };\n })(s));\n })\n );\n })\n .catch(function () {\n r();\n var t = new Error(\n \"No available storage method found.\"\n );\n return (\n (n._driverSet = o.reject(t)), n._driverSet\n );\n })),\n h(this._driverSet, e, i),\n this._driverSet\n );\n }),\n (t.prototype.supports = function (t) {\n return !!X[t];\n }),\n (t.prototype._extend = function (t) {\n Q(this, t);\n }),\n (t.prototype._getSupportedDrivers = function (t) {\n for (var e = [], i = 0, n = t.length; i < n; i++) {\n var s = t[i];\n this.supports(s) && e.push(s);\n }\n return e;\n }),\n (t.prototype._wrapLibraryMethodsWithReady =\n function () {\n for (var t = 0, e = K.length; t < e; t++)\n J(this, K[t]);\n }),\n (t.prototype.createInstance = function (e) {\n return new t(e);\n }),\n t\n );\n })())();\n e.exports = tt;\n },\n { 3: 3 },\n ],\n },\n {},\n [4]\n )(4);\n }).call(this, i(17));\n },\n function (t, e, i) {\n \"use strict\";\n var n = i(3),\n s = i.n(n),\n r = i(0),\n o = i(5),\n a = i(4),\n h = i(2),\n l = i(6),\n c = i(8);\n var u = function (t, e, i, n) {\n var s,\n o = \"undefined\" != typeof window && window.URL,\n h = o ? \"blob\" : \"arraybuffer\",\n l = new r.defer(),\n c = new XMLHttpRequest(),\n u = XMLHttpRequest.prototype;\n for (s in (\"overrideMimeType\" in u ||\n Object.defineProperty(u, \"overrideMimeType\", {\n value: function () {},\n }),\n i && (c.withCredentials = !0),\n (c.onreadystatechange = function () {\n if (this.readyState === XMLHttpRequest.DONE) {\n var t = !1;\n if (\n ((\"\" !== this.responseType &&\n \"document\" !== this.responseType) ||\n (t = this.responseXML),\n 200 === this.status || 0 === this.status || t)\n ) {\n var i;\n if (!this.response && !t)\n return (\n l.reject({\n status: this.status,\n message: \"Empty Response\",\n stack: new Error().stack,\n }),\n l.promise\n );\n if (403 === this.status)\n return (\n l.reject({\n status: this.status,\n response: this.response,\n message: \"Forbidden\",\n stack: new Error().stack,\n }),\n l.promise\n );\n (i = t\n ? this.responseXML\n : Object(r.isXml)(e)\n ? Object(r.parse)(this.response, \"text/xml\")\n : \"xhtml\" == e\n ? Object(r.parse)(\n this.response,\n \"application/xhtml+xml\"\n )\n : \"html\" == e || \"htm\" == e\n ? Object(r.parse)(this.response, \"text/html\")\n : \"json\" == e\n ? JSON.parse(this.response)\n : \"blob\" == e\n ? o\n ? this.response\n : new Blob([this.response])\n : this.response),\n l.resolve(i);\n } else\n l.reject({\n status: this.status,\n message: this.response,\n stack: new Error().stack,\n });\n }\n }),\n (c.onerror = function (t) {\n l.reject(t);\n }),\n c.open(\"GET\", t, !0),\n n))\n c.setRequestHeader(s, n[s]);\n return (\n \"json\" == e &&\n c.setRequestHeader(\"Accept\", \"application/json\"),\n e || (e = new a.a(t).extension),\n \"blob\" == e && (c.responseType = h),\n Object(r.isXml)(e) && c.overrideMimeType(\"text/xml\"),\n \"binary\" == e && (c.responseType = \"arraybuffer\"),\n c.send(),\n l.promise\n );\n },\n d = i(15);\n var f = class {\n constructor(t, e) {\n (this.idref = t.idref),\n (this.linear = \"yes\" === t.linear),\n (this.properties = t.properties),\n (this.index = t.index),\n (this.href = t.href),\n (this.url = t.url),\n (this.canonical = t.canonical),\n (this.next = t.next),\n (this.prev = t.prev),\n (this.cfiBase = t.cfiBase),\n e\n ? (this.hooks = e)\n : ((this.hooks = {}),\n (this.hooks.serialize = new l.a(this)),\n (this.hooks.content = new l.a(this))),\n (this.document = void 0),\n (this.contents = void 0),\n (this.output = void 0);\n }\n load(t) {\n var e = t || this.request || u,\n i = new r.defer(),\n n = i.promise;\n return (\n this.contents\n ? i.resolve(this.contents)\n : e(this.url)\n .then(\n function (t) {\n return (\n (this.document = t),\n (this.contents = t.documentElement),\n this.hooks.content.trigger(this.document, this)\n );\n }.bind(this)\n )\n .then(\n function () {\n i.resolve(this.contents);\n }.bind(this)\n )\n .catch(function (t) {\n i.reject(t);\n }),\n n\n );\n }\n base() {\n return Object(c.a)(this.document, this);\n }\n render(t) {\n var e = new r.defer(),\n i = e.promise;\n return (\n this.output,\n this.load(t)\n .then(\n function (t) {\n var e =\n (\n (\"undefined\" != typeof navigator &&\n navigator.userAgent) ||\n \"\"\n ).indexOf(\"Trident\") >= 0,\n i = new (\n \"undefined\" == typeof XMLSerializer || e\n ? d.DOMParser\n : XMLSerializer\n )();\n return (\n (this.output = i.serializeToString(t)), this.output\n );\n }.bind(this)\n )\n .then(\n function () {\n return this.hooks.serialize.trigger(this.output, this);\n }.bind(this)\n )\n .then(\n function () {\n e.resolve(this.output);\n }.bind(this)\n )\n .catch(function (t) {\n e.reject(t);\n }),\n i\n );\n }\n find(t) {\n var e = this,\n i = [],\n n = t.toLowerCase();\n return (\n Object(r.sprint)(e.document, function (t) {\n !(function (t) {\n for (\n var s,\n r,\n o,\n a = t.textContent.toLowerCase(),\n h = e.document.createRange(),\n l = -1;\n -1 != r;\n\n )\n -1 != (r = a.indexOf(n, l + 1)) &&\n ((h = e.document.createRange()).setStart(t, r),\n h.setEnd(t, r + n.length),\n (s = e.cfiFromRange(h)),\n (o =\n t.textContent.length < 150\n ? t.textContent\n : \"...\" +\n (o = t.textContent.substring(r - 75, r + 75)) +\n \"...\"),\n i.push({ cfi: s, excerpt: o })),\n (l = r);\n })(t);\n }),\n i\n );\n }\n search(t, e = 5) {\n if (void 0 === document.createTreeWalker) return this.find(t);\n let i = [];\n const n = this,\n s = t.toLowerCase(),\n r = function (t) {\n const e = t\n .reduce((t, e) => t + e.textContent, \"\")\n .toLowerCase()\n .indexOf(s);\n if (-1 != e) {\n const r = 0,\n o = e + s.length;\n let a = 0,\n h = 0;\n if (e < t[r].length) {\n let s;\n for (\n ;\n a < t.length - 1 && ((h += t[a].length), !(o <= h));\n\n )\n a += 1;\n let l = t[r],\n c = t[a],\n u = n.document.createRange();\n u.setStart(l, e);\n let d = t\n .slice(0, a)\n .reduce((t, e) => t + e.textContent.length, 0);\n u.setEnd(c, d > o ? o : o - d), (s = n.cfiFromRange(u));\n let f = t\n .slice(0, a + 1)\n .reduce((t, e) => t + e.textContent, \"\");\n f.length > 150 &&\n ((f = f.substring(e - 75, e + 75)),\n (f = \"...\" + f + \"...\")),\n i.push({ cfi: s, excerpt: f });\n }\n }\n },\n o = document.createTreeWalker(\n n.document,\n NodeFilter.SHOW_TEXT,\n null,\n !1\n );\n let a,\n h = [];\n for (; (a = o.nextNode()); )\n h.push(a),\n h.length == e && (r(h.slice(0, e)), (h = h.slice(1, e)));\n return h.length > 0 && r(h), i;\n }\n reconcileLayoutSettings(t) {\n var e = {\n layout: t.layout,\n spread: t.spread,\n orientation: t.orientation,\n };\n return (\n this.properties.forEach(function (t) {\n var i,\n n,\n s = t.replace(\"rendition:\", \"\"),\n r = s.indexOf(\"-\");\n -1 != r &&\n ((i = s.slice(0, r)), (n = s.slice(r + 1)), (e[i] = n));\n }),\n e\n );\n }\n cfiFromRange(t) {\n return new h.a(t, this.cfiBase).toString();\n }\n cfiFromElement(t) {\n return new h.a(t, this.cfiBase).toString();\n }\n unload() {\n (this.document = void 0),\n (this.contents = void 0),\n (this.output = void 0);\n }\n destroy() {\n this.unload(),\n this.hooks.serialize.clear(),\n this.hooks.content.clear(),\n (this.hooks = void 0),\n (this.idref = void 0),\n (this.linear = void 0),\n (this.properties = void 0),\n (this.index = void 0),\n (this.href = void 0),\n (this.url = void 0),\n (this.next = void 0),\n (this.prev = void 0),\n (this.cfiBase = void 0);\n }\n };\n var p = class {\n constructor() {\n (this.spineItems = []),\n (this.spineByHref = {}),\n (this.spineById = {}),\n (this.hooks = {}),\n (this.hooks.serialize = new l.a()),\n (this.hooks.content = new l.a()),\n this.hooks.content.register(c.a),\n this.hooks.content.register(c.b),\n this.hooks.content.register(c.d),\n (this.epubcfi = new h.a()),\n (this.loaded = !1),\n (this.items = void 0),\n (this.manifest = void 0),\n (this.spineNodeIndex = void 0),\n (this.baseUrl = void 0),\n (this.length = void 0);\n }\n unpack(t, e, i) {\n (this.items = t.spine),\n (this.manifest = t.manifest),\n (this.spineNodeIndex = t.spineNodeIndex),\n (this.baseUrl = t.baseUrl || t.basePath || \"\"),\n (this.length = this.items.length),\n this.items.forEach((t, n) => {\n var s,\n r = this.manifest[t.idref];\n (t.index = n),\n (t.cfiBase = this.epubcfi.generateChapterComponent(\n this.spineNodeIndex,\n t.index,\n t.id\n )),\n t.href &&\n ((t.url = e(t.href, !0)), (t.canonical = i(t.href))),\n r &&\n ((t.href = r.href),\n (t.url = e(t.href, !0)),\n (t.canonical = i(t.href)),\n r.properties.length &&\n t.properties.push.apply(\n t.properties,\n r.properties\n )),\n \"yes\" === t.linear\n ? ((t.prev = function () {\n let e = t.index;\n for (; e > 0; ) {\n let t = this.get(e - 1);\n if (t && t.linear) return t;\n e -= 1;\n }\n }.bind(this)),\n (t.next = function () {\n let e = t.index;\n for (; e < this.spineItems.length - 1; ) {\n let t = this.get(e + 1);\n if (t && t.linear) return t;\n e += 1;\n }\n }.bind(this)))\n : ((t.prev = function () {}),\n (t.next = function () {})),\n (s = new f(t, this.hooks)),\n this.append(s);\n }),\n (this.loaded = !0);\n }\n get(t) {\n var e = 0;\n if (void 0 === t)\n for (; e < this.spineItems.length; ) {\n let t = this.spineItems[e];\n if (t && t.linear) break;\n e += 1;\n }\n else if (this.epubcfi.isCfiString(t)) {\n e = new h.a(t).spinePos;\n } else\n \"number\" == typeof t || !1 === isNaN(t)\n ? (e = t)\n : \"string\" == typeof t && 0 === t.indexOf(\"#\")\n ? (e = this.spineById[t.substring(1)])\n : \"string\" == typeof t &&\n ((t = t.split(\"#\")[0]),\n (e =\n this.spineByHref[t] ||\n this.spineByHref[encodeURI(t)]));\n return this.spineItems[e] || null;\n }\n append(t) {\n var e = this.spineItems.length;\n return (\n (t.index = e),\n this.spineItems.push(t),\n (this.spineByHref[decodeURI(t.href)] = e),\n (this.spineByHref[encodeURI(t.href)] = e),\n (this.spineByHref[t.href] = e),\n (this.spineById[t.idref] = e),\n e\n );\n }\n prepend(t) {\n return (\n (this.spineByHref[t.href] = 0),\n (this.spineById[t.idref] = 0),\n this.spineItems.forEach(function (t, e) {\n t.index = e;\n }),\n 0\n );\n }\n remove(t) {\n var e = this.spineItems.indexOf(t);\n if (e > -1)\n return (\n delete this.spineByHref[t.href],\n delete this.spineById[t.idref],\n this.spineItems.splice(e, 1)\n );\n }\n each() {\n return this.spineItems.forEach.apply(\n this.spineItems,\n arguments\n );\n }\n first() {\n let t = 0;\n do {\n let e = this.get(t);\n if (e && e.linear) return e;\n t += 1;\n } while (t < this.spineItems.length);\n }\n last() {\n let t = this.spineItems.length - 1;\n do {\n let e = this.get(t);\n if (e && e.linear) return e;\n t -= 1;\n } while (t >= 0);\n }\n destroy() {\n this.each((t) => t.destroy()),\n (this.spineItems = void 0),\n (this.spineByHref = void 0),\n (this.spineById = void 0),\n this.hooks.serialize.clear(),\n this.hooks.content.clear(),\n (this.hooks = void 0),\n (this.epubcfi = void 0),\n (this.loaded = !1),\n (this.items = void 0),\n (this.manifest = void 0),\n (this.spineNodeIndex = void 0),\n (this.baseUrl = void 0),\n (this.length = void 0);\n }\n },\n g = i(9),\n m = i(1);\n class v {\n constructor(t, e, i) {\n (this.spine = t),\n (this.request = e),\n (this.pause = i || 100),\n (this.q = new g.a(this)),\n (this.epubcfi = new h.a()),\n (this._locations = []),\n (this._locationsWords = []),\n (this.total = 0),\n (this.break = 150),\n (this._current = 0),\n (this._wordCounter = 0),\n (this.currentLocation = \"\"),\n (this._currentCfi = \"\"),\n (this.processingTimeout = void 0);\n }\n generate(t) {\n return (\n t && (this.break = t),\n this.q.pause(),\n this.spine.each(\n function (t) {\n t.linear && this.q.enqueue(this.process.bind(this), t);\n }.bind(this)\n ),\n this.q.run().then(\n function () {\n return (\n (this.total = this._locations.length - 1),\n this._currentCfi &&\n (this.currentLocation = this._currentCfi),\n this._locations\n );\n }.bind(this)\n )\n );\n }\n createRange() {\n return {\n startContainer: void 0,\n startOffset: void 0,\n endContainer: void 0,\n endOffset: void 0,\n };\n }\n process(t) {\n return t.load(this.request).then(\n function (e) {\n var i = new r.defer(),\n n = this.parse(e, t.cfiBase);\n return (\n (this._locations = this._locations.concat(n)),\n t.unload(),\n (this.processingTimeout = setTimeout(\n () => i.resolve(n),\n this.pause\n )),\n i.promise\n );\n }.bind(this)\n );\n }\n parse(t, e, i) {\n var n,\n s,\n o = [],\n a = t.ownerDocument,\n l = Object(r.qs)(a, \"body\"),\n c = 0,\n u = i || this.break;\n if (\n (Object(r.sprint)(\n l,\n function (t) {\n var i,\n r = t.length,\n a = 0;\n if (0 === t.textContent.trim().length) return !1;\n for (\n 0 == c &&\n (((n = this.createRange()).startContainer = t),\n (n.startOffset = 0)),\n (i = u - c) > r && ((c += r), (a = r));\n a < r;\n\n )\n if (\n ((i = u - c),\n 0 === c &&\n ((a += 1),\n ((n = this.createRange()).startContainer = t),\n (n.startOffset = a)),\n a + i >= r)\n )\n (c += r - a), (a = r);\n else {\n (a += i), (n.endContainer = t), (n.endOffset = a);\n let s = new h.a(n, e).toString();\n o.push(s), (c = 0);\n }\n s = t;\n }.bind(this)\n ),\n n && n.startContainer && s)\n ) {\n (n.endContainer = s), (n.endOffset = s.length);\n let t = new h.a(n, e).toString();\n o.push(t), (c = 0);\n }\n return o;\n }\n generateFromWords(t, e, i) {\n var n = t ? new h.a(t) : void 0;\n return (\n this.q.pause(),\n (this._locationsWords = []),\n (this._wordCounter = 0),\n this.spine.each(\n function (t) {\n t.linear &&\n (n\n ? t.index >= n.spinePos &&\n this.q.enqueue(\n this.processWords.bind(this),\n t,\n e,\n n,\n i\n )\n : this.q.enqueue(\n this.processWords.bind(this),\n t,\n e,\n n,\n i\n ));\n }.bind(this)\n ),\n this.q.run().then(\n function () {\n return (\n this._currentCfi &&\n (this.currentLocation = this._currentCfi),\n this._locationsWords\n );\n }.bind(this)\n )\n );\n }\n processWords(t, e, i, n) {\n return n && this._locationsWords.length >= n\n ? Promise.resolve()\n : t.load(this.request).then(\n function (s) {\n var o = new r.defer(),\n a = this.parseWords(s, t, e, i),\n h = n - this._locationsWords.length;\n return (\n (this._locationsWords = this._locationsWords.concat(\n a.length >= n ? a.slice(0, h) : a\n )),\n t.unload(),\n (this.processingTimeout = setTimeout(\n () => o.resolve(a),\n this.pause\n )),\n o.promise\n );\n }.bind(this)\n );\n }\n countWords(t) {\n return (t = (t = (t = t.replace(/(^\\s*)|(\\s*$)/gi, \"\")).replace(\n /[ ]{2,}/gi,\n \" \"\n )).replace(/\\n /, \"\\n\")).split(\" \").length;\n }\n parseWords(t, e, i, n) {\n var s,\n o = e.cfiBase,\n a = [],\n l = t.ownerDocument,\n c = Object(r.qs)(l, \"body\"),\n u = i,\n d = !n || n.spinePos !== e.index;\n n &&\n e.index === n.spinePos &&\n (s = n.findNode(\n n.range ? n.path.steps.concat(n.start.steps) : n.path.steps,\n t.ownerDocument\n ));\n return (\n Object(r.sprint)(\n c,\n function (t) {\n if (!d) {\n if (t !== s) return !1;\n d = !0;\n }\n if (\n t.textContent.length < 10 &&\n 0 === t.textContent.trim().length\n )\n return !1;\n var e,\n i = this.countWords(t.textContent),\n n = 0;\n if (0 === i) return !1;\n for (\n (e = u - this._wordCounter) > i &&\n ((this._wordCounter += i), (n = i));\n n < i;\n\n )\n if (n + (e = u - this._wordCounter) >= i)\n (this._wordCounter += i - n), (n = i);\n else {\n n += e;\n let i = new h.a(t, o);\n a.push({\n cfi: i.toString(),\n wordCount: this._wordCounter,\n }),\n (this._wordCounter = 0);\n }\n t;\n }.bind(this)\n ),\n a\n );\n }\n locationFromCfi(t) {\n let e;\n return (\n h.a.prototype.isCfiString(t) && (t = new h.a(t)),\n 0 === this._locations.length\n ? -1\n : ((e = Object(r.locationOf)(\n t,\n this._locations,\n this.epubcfi.compare\n )),\n e > this.total ? this.total : e)\n );\n }\n percentageFromCfi(t) {\n if (0 === this._locations.length) return null;\n var e = this.locationFromCfi(t);\n return this.percentageFromLocation(e);\n }\n percentageFromLocation(t) {\n return t && this.total ? t / this.total : 0;\n }\n cfiFromLocation(t) {\n var e = -1;\n return (\n \"number\" != typeof t && (t = parseInt(t)),\n t >= 0 &&\n t < this._locations.length &&\n (e = this._locations[t]),\n e\n );\n }\n cfiFromPercentage(t) {\n let e;\n if (\n (t > 1 &&\n console.warn(\n \"Normalize cfiFromPercentage value to between 0 - 1\"\n ),\n t >= 1)\n ) {\n let t = new h.a(this._locations[this.total]);\n return t.collapse(), t.toString();\n }\n return (e = Math.ceil(this.total * t)), this.cfiFromLocation(e);\n }\n load(t) {\n return (\n (this._locations = \"string\" == typeof t ? JSON.parse(t) : t),\n (this.total = this._locations.length - 1),\n this._locations\n );\n }\n save() {\n return JSON.stringify(this._locations);\n }\n getCurrent() {\n return this._current;\n }\n setCurrent(t) {\n var e;\n if (\"string\" == typeof t) this._currentCfi = t;\n else {\n if (\"number\" != typeof t) return;\n this._current = t;\n }\n 0 !== this._locations.length &&\n (\"string\" == typeof t\n ? ((e = this.locationFromCfi(t)), (this._current = e))\n : (e = t),\n this.emit(m.c.LOCATIONS.CHANGED, {\n percentage: this.percentageFromLocation(e),\n }));\n }\n get currentLocation() {\n return this._current;\n }\n set currentLocation(t) {\n this.setCurrent(t);\n }\n length() {\n return this._locations.length;\n }\n destroy() {\n (this.spine = void 0),\n (this.request = void 0),\n (this.pause = void 0),\n this.q.stop(),\n (this.q = void 0),\n (this.epubcfi = void 0),\n (this._locations = void 0),\n (this.total = void 0),\n (this.break = void 0),\n (this._current = void 0),\n (this.currentLocation = void 0),\n (this._currentCfi = void 0),\n clearTimeout(this.processingTimeout);\n }\n }\n s()(v.prototype);\n var y = v,\n b = i(7),\n w = i.n(b);\n var x = class {\n constructor(t) {\n (this.packagePath = \"\"),\n (this.directory = \"\"),\n (this.encoding = \"\"),\n t && this.parse(t);\n }\n parse(t) {\n var e;\n if (!t) throw new Error(\"Container File Not Found\");\n if (!(e = Object(r.qs)(t, \"rootfile\")))\n throw new Error(\"No RootFile Found\");\n (this.packagePath = e.getAttribute(\"full-path\")),\n (this.directory = w.a.dirname(this.packagePath)),\n (this.encoding = t.xmlEncoding);\n }\n destroy() {\n (this.packagePath = void 0),\n (this.directory = void 0),\n (this.encoding = void 0);\n }\n };\n var E = class {\n constructor(t) {\n (this.manifest = {}),\n (this.navPath = \"\"),\n (this.ncxPath = \"\"),\n (this.coverPath = \"\"),\n (this.spineNodeIndex = 0),\n (this.spine = []),\n (this.metadata = {}),\n t && this.parse(t);\n }\n parse(t) {\n var e, i, n;\n if (!t) throw new Error(\"Package File Not Found\");\n if (!(e = Object(r.qs)(t, \"metadata\")))\n throw new Error(\"No Metadata Found\");\n if (!(i = Object(r.qs)(t, \"manifest\")))\n throw new Error(\"No Manifest Found\");\n if (!(n = Object(r.qs)(t, \"spine\")))\n throw new Error(\"No Spine Found\");\n return (\n (this.manifest = this.parseManifest(i)),\n (this.navPath = this.findNavPath(i)),\n (this.ncxPath = this.findNcxPath(i, n)),\n (this.coverPath = this.findCoverPath(t)),\n (this.spineNodeIndex = Object(r.indexOfElementNode)(n)),\n (this.spine = this.parseSpine(n, this.manifest)),\n (this.uniqueIdentifier = this.findUniqueIdentifier(t)),\n (this.metadata = this.parseMetadata(e)),\n (this.metadata.direction = n.getAttribute(\n \"page-progression-direction\"\n )),\n {\n metadata: this.metadata,\n spine: this.spine,\n manifest: this.manifest,\n navPath: this.navPath,\n ncxPath: this.ncxPath,\n coverPath: this.coverPath,\n spineNodeIndex: this.spineNodeIndex,\n }\n );\n }\n parseMetadata(t) {\n var e = {};\n return (\n (e.title = this.getElementText(t, \"title\")),\n (e.creator = this.getElementText(t, \"creator\")),\n (e.description = this.getElementText(t, \"description\")),\n (e.pubdate = this.getElementText(t, \"date\")),\n (e.publisher = this.getElementText(t, \"publisher\")),\n (e.identifier = this.getElementText(t, \"identifier\")),\n (e.language = this.getElementText(t, \"language\")),\n (e.rights = this.getElementText(t, \"rights\")),\n (e.modified_date = this.getPropertyText(\n t,\n \"dcterms:modified\"\n )),\n (e.layout = this.getPropertyText(t, \"rendition:layout\")),\n (e.orientation = this.getPropertyText(\n t,\n \"rendition:orientation\"\n )),\n (e.flow = this.getPropertyText(t, \"rendition:flow\")),\n (e.viewport = this.getPropertyText(t, \"rendition:viewport\")),\n (e.media_active_class = this.getPropertyText(\n t,\n \"media:active-class\"\n )),\n (e.spread = this.getPropertyText(t, \"rendition:spread\")),\n e\n );\n }\n parseManifest(t) {\n var e = {},\n i = Object(r.qsa)(t, \"item\");\n return (\n Array.prototype.slice.call(i).forEach(function (t) {\n var i = t.getAttribute(\"id\"),\n n = t.getAttribute(\"href\") || \"\",\n s = t.getAttribute(\"media-type\") || \"\",\n r = t.getAttribute(\"media-overlay\") || \"\",\n o = t.getAttribute(\"properties\") || \"\";\n e[i] = {\n href: n,\n type: s,\n overlay: r,\n properties: o.length ? o.split(\" \") : [],\n };\n }),\n e\n );\n }\n parseSpine(t, e) {\n var i = [],\n n = Object(r.qsa)(t, \"itemref\");\n return (\n Array.prototype.slice.call(n).forEach(function (t, e) {\n var n = t.getAttribute(\"idref\"),\n s = t.getAttribute(\"properties\") || \"\",\n r = s.length ? s.split(\" \") : [],\n o = {\n id: t.getAttribute(\"id\"),\n idref: n,\n linear: t.getAttribute(\"linear\") || \"yes\",\n properties: r,\n index: e,\n };\n i.push(o);\n }),\n i\n );\n }\n findUniqueIdentifier(t) {\n var e = t.documentElement.getAttribute(\"unique-identifier\");\n if (!e) return \"\";\n var i = t.getElementById(e);\n return i &&\n \"identifier\" === i.localName &&\n \"http://purl.org/dc/elements/1.1/\" === i.namespaceURI &&\n i.childNodes.length > 0\n ? i.childNodes[0].nodeValue.trim()\n : \"\";\n }\n findNavPath(t) {\n var e = Object(r.qsp)(t, \"item\", { properties: \"nav\" });\n return !!e && e.getAttribute(\"href\");\n }\n findNcxPath(t, e) {\n var i,\n n = Object(r.qsp)(t, \"item\", {\n \"media-type\": \"application/x-dtbncx+xml\",\n });\n return (\n n ||\n ((i = e.getAttribute(\"toc\")) &&\n (n = t.querySelector(\"#\" + i))),\n !!n && n.getAttribute(\"href\")\n );\n }\n findCoverPath(t) {\n Object(r.qs)(t, \"package\").getAttribute(\"version\");\n var e = Object(r.qsp)(t, \"item\", { properties: \"cover-image\" });\n if (e) return e.getAttribute(\"href\");\n var i = Object(r.qsp)(t, \"meta\", { name: \"cover\" });\n if (i) {\n var n = i.getAttribute(\"content\"),\n s = t.getElementById(n);\n return s ? s.getAttribute(\"href\") : \"\";\n }\n return !1;\n }\n getElementText(t, e) {\n var i,\n n = t.getElementsByTagNameNS(\n \"http://purl.org/dc/elements/1.1/\",\n e\n );\n return n && 0 !== n.length && (i = n[0]).childNodes.length\n ? i.childNodes[0].nodeValue\n : \"\";\n }\n getPropertyText(t, e) {\n var i = Object(r.qsp)(t, \"meta\", { property: e });\n return i && i.childNodes.length\n ? i.childNodes[0].nodeValue\n : \"\";\n }\n load(t) {\n this.metadata = t.metadata;\n let e = t.readingOrder || t.spine;\n return (\n (this.spine = e.map(\n (t, e) => ((t.index = e), (t.linear = t.linear || \"yes\"), t)\n )),\n t.resources.forEach((t, e) => {\n (this.manifest[e] = t),\n t.rel &&\n \"cover\" === t.rel[0] &&\n (this.coverPath = t.href);\n }),\n (this.spineNodeIndex = 0),\n (this.toc = t.toc.map((t, e) => ((t.label = t.title), t))),\n {\n metadata: this.metadata,\n spine: this.spine,\n manifest: this.manifest,\n navPath: this.navPath,\n ncxPath: this.ncxPath,\n coverPath: this.coverPath,\n spineNodeIndex: this.spineNodeIndex,\n toc: this.toc,\n }\n );\n }\n destroy() {\n (this.manifest = void 0),\n (this.navPath = void 0),\n (this.ncxPath = void 0),\n (this.coverPath = void 0),\n (this.spineNodeIndex = void 0),\n (this.spine = void 0),\n (this.metadata = void 0);\n }\n };\n var S = class {\n constructor(t) {\n (this.toc = []),\n (this.tocByHref = {}),\n (this.tocById = {}),\n (this.landmarks = []),\n (this.landmarksByType = {}),\n (this.length = 0),\n t && this.parse(t);\n }\n parse(t) {\n let e,\n i,\n n = t.nodeType;\n n &&\n ((e = Object(r.qs)(t, \"html\")),\n (i = Object(r.qs)(t, \"ncx\"))),\n n\n ? e\n ? ((this.toc = this.parseNav(t)),\n (this.landmarks = this.parseLandmarks(t)))\n : i && (this.toc = this.parseNcx(t))\n : (this.toc = this.load(t)),\n (this.length = 0),\n this.unpack(this.toc);\n }\n unpack(t) {\n for (var e, i = 0; i < t.length; i++)\n (e = t[i]).href && (this.tocByHref[e.href] = i),\n e.id && (this.tocById[e.id] = i),\n this.length++,\n e.subitems.length && this.unpack(e.subitems);\n }\n get(t) {\n var e;\n return t\n ? (0 === t.indexOf(\"#\")\n ? (e = this.tocById[t.substring(1)])\n : t in this.tocByHref && (e = this.tocByHref[t]),\n this.getByIndex(t, e, this.toc))\n : this.toc;\n }\n getByIndex(t, e, i) {\n if (0 === i.length) return;\n const n = i[e];\n if (!n || (t !== n.id && t !== n.href)) {\n let n;\n for (\n let s = 0;\n s < i.length &&\n ((n = this.getByIndex(t, e, i[s].subitems)), !n);\n ++s\n );\n return n;\n }\n return n;\n }\n landmark(t) {\n var e;\n return t\n ? ((e = this.landmarksByType[t]), this.landmarks[e])\n : this.landmarks;\n }\n parseNav(t) {\n var e = Object(r.querySelectorByType)(t, \"nav\", \"toc\"),\n i = [];\n if (!e) return i;\n let n = Object(r.filterChildren)(e, \"ol\", !0);\n return n ? (i = this.parseNavList(n)) : i;\n }\n parseNavList(t, e) {\n const i = [];\n if (!t) return i;\n if (!t.children) return i;\n for (let n = 0; n < t.children.length; n++) {\n const s = this.navItem(t.children[n], e);\n s && i.push(s);\n }\n return i;\n }\n navItem(t, e) {\n let i = t.getAttribute(\"id\") || void 0,\n n =\n Object(r.filterChildren)(t, \"a\", !0) ||\n Object(r.filterChildren)(t, \"span\", !0);\n if (!n) return;\n let s = n.getAttribute(\"href\") || \"\";\n i || (i = s);\n let o = n.textContent || \"\",\n a = [],\n h = Object(r.filterChildren)(t, \"ol\", !0);\n return (\n h && (a = this.parseNavList(h, i)),\n { id: i, href: s, label: o, subitems: a, parent: e }\n );\n }\n parseLandmarks(t) {\n var e,\n i,\n n = Object(r.querySelectorByType)(t, \"nav\", \"landmarks\"),\n s = n ? Object(r.qsa)(n, \"li\") : [],\n o = s.length,\n a = [];\n if (!s || 0 === o) return a;\n for (e = 0; e < o; ++e)\n (i = this.landmarkItem(s[e])) &&\n (a.push(i), (this.landmarksByType[i.type] = e));\n return a;\n }\n landmarkItem(t) {\n let e = Object(r.filterChildren)(t, \"a\", !0);\n if (!e) return;\n let i =\n e.getAttributeNS(\"http://www.idpf.org/2007/ops\", \"type\") ||\n void 0;\n return {\n href: e.getAttribute(\"href\") || \"\",\n label: e.textContent || \"\",\n type: i,\n };\n }\n parseNcx(t) {\n var e,\n i,\n n = Object(r.qsa)(t, \"navPoint\"),\n s = n.length,\n o = {},\n a = [];\n if (!n || 0 === s) return a;\n for (e = 0; e < s; ++e)\n (o[(i = this.ncxItem(n[e])).id] = i),\n i.parent ? o[i.parent].subitems.push(i) : a.push(i);\n return a;\n }\n ncxItem(t) {\n var e,\n i = t.getAttribute(\"id\") || !1,\n n = Object(r.qs)(t, \"content\").getAttribute(\"src\"),\n s = Object(r.qs)(t, \"navLabel\"),\n o = s.textContent ? s.textContent : \"\",\n a = t.parentNode;\n return (\n !a ||\n (\"navPoint\" !== a.nodeName &&\n \"navPoint\" !== a.nodeName.split(\":\").slice(-1)[0]) ||\n (e = a.getAttribute(\"id\")),\n { id: i, href: n, label: o, subitems: [], parent: e }\n );\n }\n load(t) {\n return t.map(\n (t) => (\n (t.label = t.title),\n (t.subitems = t.children ? this.load(t.children) : []),\n t\n )\n );\n }\n forEach(t) {\n return this.toc.forEach(t);\n }\n },\n N = {\n application: {\n ecmascript: [\"es\", \"ecma\"],\n javascript: \"js\",\n ogg: \"ogx\",\n pdf: \"pdf\",\n postscript: [\n \"ps\",\n \"ai\",\n \"eps\",\n \"epsi\",\n \"epsf\",\n \"eps2\",\n \"eps3\",\n ],\n \"rdf+xml\": \"rdf\",\n smil: [\"smi\", \"smil\"],\n \"xhtml+xml\": [\"xhtml\", \"xht\"],\n xml: [\"xml\", \"xsl\", \"xsd\", \"opf\", \"ncx\"],\n zip: \"zip\",\n \"x-httpd-eruby\": \"rhtml\",\n \"x-latex\": \"latex\",\n \"x-maker\": [\n \"frm\",\n \"maker\",\n \"frame\",\n \"fm\",\n \"fb\",\n \"book\",\n \"fbdoc\",\n ],\n \"x-object\": \"o\",\n \"x-shockwave-flash\": [\"swf\", \"swfl\"],\n \"x-silverlight\": \"scr\",\n \"epub+zip\": \"epub\",\n \"font-tdpfr\": \"pfr\",\n \"inkml+xml\": [\"ink\", \"inkml\"],\n json: \"json\",\n \"jsonml+json\": \"jsonml\",\n \"mathml+xml\": \"mathml\",\n \"metalink+xml\": \"metalink\",\n mp4: \"mp4s\",\n \"omdoc+xml\": \"omdoc\",\n oxps: \"oxps\",\n \"vnd.amazon.ebook\": \"azw\",\n widget: \"wgt\",\n \"x-dtbook+xml\": \"dtb\",\n \"x-dtbresource+xml\": \"res\",\n \"x-font-bdf\": \"bdf\",\n \"x-font-ghostscript\": \"gsf\",\n \"x-font-linux-psf\": \"psf\",\n \"x-font-otf\": \"otf\",\n \"x-font-pcf\": \"pcf\",\n \"x-font-snf\": \"snf\",\n \"x-font-ttf\": [\"ttf\", \"ttc\"],\n \"x-font-type1\": [\"pfa\", \"pfb\", \"pfm\", \"afm\"],\n \"x-font-woff\": \"woff\",\n \"x-mobipocket-ebook\": [\"prc\", \"mobi\"],\n \"x-mspublisher\": \"pub\",\n \"x-nzb\": \"nzb\",\n \"x-tgif\": \"obj\",\n \"xaml+xml\": \"xaml\",\n \"xml-dtd\": \"dtd\",\n \"xproc+xml\": \"xpl\",\n \"xslt+xml\": \"xslt\",\n \"internet-property-stream\": \"acx\",\n \"x-compress\": \"z\",\n \"x-compressed\": \"tgz\",\n \"x-gzip\": \"gz\",\n },\n audio: {\n flac: \"flac\",\n midi: [\"mid\", \"midi\", \"kar\", \"rmi\"],\n mpeg: [\n \"mpga\",\n \"mpega\",\n \"mp2\",\n \"mp3\",\n \"m4a\",\n \"mp2a\",\n \"m2a\",\n \"m3a\",\n ],\n mpegurl: \"m3u\",\n ogg: [\"oga\", \"ogg\", \"spx\"],\n \"x-aiff\": [\"aif\", \"aiff\", \"aifc\"],\n \"x-ms-wma\": \"wma\",\n \"x-wav\": \"wav\",\n adpcm: \"adp\",\n mp4: \"mp4a\",\n webm: \"weba\",\n \"x-aac\": \"aac\",\n \"x-caf\": \"caf\",\n \"x-matroska\": \"mka\",\n \"x-pn-realaudio-plugin\": \"rmp\",\n xm: \"xm\",\n mid: [\"mid\", \"rmi\"],\n },\n image: {\n gif: \"gif\",\n ief: \"ief\",\n jpeg: [\"jpeg\", \"jpg\", \"jpe\"],\n pcx: \"pcx\",\n png: \"png\",\n \"svg+xml\": [\"svg\", \"svgz\"],\n tiff: [\"tiff\", \"tif\"],\n \"x-icon\": \"ico\",\n bmp: \"bmp\",\n webp: \"webp\",\n \"x-pict\": [\"pic\", \"pct\"],\n \"x-tga\": \"tga\",\n \"cis-cod\": \"cod\",\n },\n text: {\n \"cache-manifest\": [\"manifest\", \"appcache\"],\n css: \"css\",\n csv: \"csv\",\n html: [\"html\", \"htm\", \"shtml\", \"stm\"],\n mathml: \"mml\",\n plain: [\n \"txt\",\n \"text\",\n \"brf\",\n \"conf\",\n \"def\",\n \"list\",\n \"log\",\n \"in\",\n \"bas\",\n ],\n richtext: \"rtx\",\n \"tab-separated-values\": \"tsv\",\n \"x-bibtex\": \"bib\",\n },\n video: {\n mpeg: [\n \"mpeg\",\n \"mpg\",\n \"mpe\",\n \"m1v\",\n \"m2v\",\n \"mp2\",\n \"mpa\",\n \"mpv2\",\n ],\n mp4: [\"mp4\", \"mp4v\", \"mpg4\"],\n quicktime: [\"qt\", \"mov\"],\n ogg: \"ogv\",\n \"vnd.mpegurl\": [\"mxu\", \"m4u\"],\n \"x-flv\": \"flv\",\n \"x-la-asf\": [\"lsf\", \"lsx\"],\n \"x-mng\": \"mng\",\n \"x-ms-asf\": [\"asf\", \"asx\", \"asr\"],\n \"x-ms-wm\": \"wm\",\n \"x-ms-wmv\": \"wmv\",\n \"x-ms-wmx\": \"wmx\",\n \"x-ms-wvx\": \"wvx\",\n \"x-msvideo\": \"avi\",\n \"x-sgi-movie\": \"movie\",\n \"x-matroska\": [\"mpv\", \"mkv\", \"mk3d\", \"mks\"],\n \"3gpp2\": \"3g2\",\n h261: \"h261\",\n h263: \"h263\",\n h264: \"h264\",\n jpeg: \"jpgv\",\n jpm: [\"jpm\", \"jpgm\"],\n mj2: [\"mj2\", \"mjp2\"],\n \"vnd.ms-playready.media.pyv\": \"pyv\",\n \"vnd.uvvu.mp4\": [\"uvu\", \"uvvu\"],\n \"vnd.vivo\": \"viv\",\n webm: \"webm\",\n \"x-f4v\": \"f4v\",\n \"x-m4v\": \"m4v\",\n \"x-ms-vob\": \"vob\",\n \"x-smv\": \"smv\",\n },\n },\n _ = (function () {\n var t,\n e,\n i,\n n,\n s = {};\n for (t in N)\n if (N.hasOwnProperty(t))\n for (e in N[t])\n if (N[t].hasOwnProperty(e))\n if (\"string\" == typeof (i = N[t][e]))\n s[i] = t + \"/\" + e;\n else\n for (n = 0; n < i.length; n++) s[i[n]] = t + \"/\" + e;\n return s;\n })();\n var T = {\n lookup: function (t) {\n return (\n (t && _[t.split(\".\").pop().toLowerCase()]) || \"text/plain\"\n );\n },\n };\n var C = class {\n constructor(t, e) {\n (this.settings = {\n replacements: (e && e.replacements) || \"base64\",\n archive: e && e.archive,\n resolver: e && e.resolver,\n request: e && e.request,\n }),\n this.process(t);\n }\n process(t) {\n (this.manifest = t),\n (this.resources = Object.keys(t).map(function (e) {\n return t[e];\n })),\n (this.replacementUrls = []),\n (this.html = []),\n (this.assets = []),\n (this.css = []),\n (this.urls = []),\n (this.cssUrls = []),\n this.split(),\n this.splitUrls();\n }\n split() {\n (this.html = this.resources.filter(function (t) {\n if (\n \"application/xhtml+xml\" === t.type ||\n \"text/html\" === t.type\n )\n return !0;\n })),\n (this.assets = this.resources.filter(function (t) {\n if (\n \"application/xhtml+xml\" !== t.type &&\n \"text/html\" !== t.type\n )\n return !0;\n })),\n (this.css = this.resources.filter(function (t) {\n if (\"text/css\" === t.type) return !0;\n }));\n }\n splitUrls() {\n (this.urls = this.assets.map(\n function (t) {\n return t.href;\n }.bind(this)\n )),\n (this.cssUrls = this.css.map(function (t) {\n return t.href;\n }));\n }\n createUrl(t) {\n var e = new o.a(t),\n i = T.lookup(e.filename);\n return this.settings.archive\n ? this.settings.archive.createUrl(t, {\n base64: \"base64\" === this.settings.replacements,\n })\n : \"base64\" === this.settings.replacements\n ? this.settings\n .request(t, \"blob\")\n .then((t) => Object(r.blob2base64)(t))\n .then((t) => Object(r.createBase64Url)(t, i))\n : this.settings\n .request(t, \"blob\")\n .then((t) => Object(r.createBlobUrl)(t, i));\n }\n replacements() {\n if (\"none\" === this.settings.replacements)\n return new Promise(\n function (t) {\n t(this.urls);\n }.bind(this)\n );\n var t = this.urls.map((t) => {\n var e = this.settings.resolver(t);\n return this.createUrl(e).catch(\n (t) => (console.error(t), null)\n );\n });\n return Promise.all(t).then(\n (t) => (\n (this.replacementUrls = t.filter(\n (t) => \"string\" == typeof t\n )),\n t\n )\n );\n }\n replaceCss(t, e) {\n var i = [];\n return (\n (t = t || this.settings.archive),\n (e = e || this.settings.resolver),\n this.cssUrls.forEach(\n function (n) {\n var s = this.createCssFile(n, t, e).then(\n function (t) {\n var e = this.urls.indexOf(n);\n e > -1 && (this.replacementUrls[e] = t);\n }.bind(this)\n );\n i.push(s);\n }.bind(this)\n ),\n Promise.all(i)\n );\n }\n createCssFile(t) {\n if (w.a.isAbsolute(t))\n return new Promise(function (t) {\n t();\n });\n var e,\n i = this.settings.resolver(t);\n e = this.settings.archive\n ? this.settings.archive.getText(i)\n : this.settings.request(i, \"text\");\n var n = this.urls.map((t) => {\n var e = this.settings.resolver(t);\n return new a.a(i).relative(e);\n });\n return e\n ? e.then(\n (t) => (\n (t = Object(c.e)(t, n, this.replacementUrls)),\n \"base64\" === this.settings.replacements\n ? Object(r.createBase64Url)(t, \"text/css\")\n : Object(r.createBlobUrl)(t, \"text/css\")\n ),\n (t) =>\n new Promise(function (t) {\n t();\n })\n )\n : new Promise(function (t) {\n t();\n });\n }\n relativeTo(t, e) {\n return (\n (e = e || this.settings.resolver),\n this.urls.map(\n function (i) {\n var n = e(i);\n return new a.a(t).relative(n);\n }.bind(this)\n )\n );\n }\n get(t) {\n var e = this.urls.indexOf(t);\n if (-1 !== e)\n return this.replacementUrls.length\n ? new Promise(\n function (t, i) {\n t(this.replacementUrls[e]);\n }.bind(this)\n )\n : this.createUrl(t);\n }\n substitute(t, e) {\n var i;\n return (\n (i = e ? this.relativeTo(e) : this.urls),\n Object(c.e)(t, i, this.replacementUrls)\n );\n }\n destroy() {\n (this.settings = void 0),\n (this.manifest = void 0),\n (this.resources = void 0),\n (this.replacementUrls = void 0),\n (this.html = void 0),\n (this.assets = void 0),\n (this.css = void 0),\n (this.urls = void 0),\n (this.cssUrls = void 0);\n }\n };\n var O = class {\n constructor(t) {\n (this.pages = []),\n (this.locations = []),\n (this.epubcfi = new h.a()),\n (this.firstPage = 0),\n (this.lastPage = 0),\n (this.totalPages = 0),\n (this.toc = void 0),\n (this.ncx = void 0),\n t && (this.pageList = this.parse(t)),\n this.pageList &&\n this.pageList.length &&\n this.process(this.pageList);\n }\n parse(t) {\n var e = Object(r.qs)(t, \"html\"),\n i = Object(r.qs)(t, \"ncx\");\n return e ? this.parseNav(t) : i ? this.parseNcx(t) : void 0;\n }\n parseNav(t) {\n var e,\n i,\n n = Object(r.querySelectorByType)(t, \"nav\", \"page-list\"),\n s = n ? Object(r.qsa)(n, \"li\") : [],\n o = s.length,\n a = [];\n if (!s || 0 === o) return a;\n for (e = 0; e < o; ++e) (i = this.item(s[e])), a.push(i);\n return a;\n }\n parseNcx(t) {\n var e,\n i,\n n,\n s,\n o = [],\n a = 0;\n if (!(i = Object(r.qs)(t, \"pageList\"))) return o;\n if (\n ((s = (n = Object(r.qsa)(i, \"pageTarget\")).length),\n !n || 0 === n.length)\n )\n return o;\n for (a = 0; a < s; ++a) (e = this.ncxItem(n[a])), o.push(e);\n return o;\n }\n ncxItem(t) {\n var e = Object(r.qs)(t, \"navLabel\"),\n i = Object(r.qs)(e, \"text\").textContent;\n return {\n href: Object(r.qs)(t, \"content\").getAttribute(\"src\"),\n page: parseInt(i, 10),\n };\n }\n item(t) {\n var e,\n i,\n n = Object(r.qs)(t, \"a\"),\n s = n.getAttribute(\"href\") || \"\",\n o = n.textContent || \"\",\n a = parseInt(o);\n return -1 != s.indexOf(\"epubcfi\")\n ? ((i = (e = s.split(\"#\"))[0]),\n {\n cfi: e.length > 1 && e[1],\n href: s,\n packageUrl: i,\n page: a,\n })\n : { href: s, page: a };\n }\n process(t) {\n t.forEach(function (t) {\n this.pages.push(t.page),\n t.cfi && this.locations.push(t.cfi);\n }, this),\n (this.firstPage = parseInt(this.pages[0])),\n (this.lastPage = parseInt(\n this.pages[this.pages.length - 1]\n )),\n (this.totalPages = this.lastPage - this.firstPage);\n }\n pageFromCfi(t) {\n var e = -1;\n if (0 === this.locations.length) return -1;\n var i = Object(r.indexOfSorted)(\n t,\n this.locations,\n this.epubcfi.compare\n );\n return (\n -1 != i\n ? (e = this.pages[i])\n : void 0 !==\n (e =\n (i = Object(r.locationOf)(\n t,\n this.locations,\n this.epubcfi.compare\n )) -\n 1 >=\n 0\n ? this.pages[i - 1]\n : this.pages[0]) || (e = -1),\n e\n );\n }\n cfiFromPage(t) {\n var e = -1;\n \"number\" != typeof t && (t = parseInt(t));\n var i = this.pages.indexOf(t);\n return -1 != i && (e = this.locations[i]), e;\n }\n pageFromPercentage(t) {\n return Math.round(this.totalPages * t);\n }\n percentageFromPage(t) {\n var e = (t - this.firstPage) / this.totalPages;\n return Math.round(1e3 * e) / 1e3;\n }\n percentageFromCfi(t) {\n var e = this.pageFromCfi(t);\n return this.percentageFromPage(e);\n }\n destroy() {\n (this.pages = void 0),\n (this.locations = void 0),\n (this.epubcfi = void 0),\n (this.pageList = void 0),\n (this.toc = void 0),\n (this.ncx = void 0);\n }\n },\n I = i(16),\n R = i(29),\n k = i.n(R);\n var A = class {\n constructor() {\n (this.zip = void 0),\n (this.urlCache = {}),\n this.checkRequirements();\n }\n checkRequirements() {\n try {\n this.zip = new k.a();\n } catch (t) {\n throw new Error(\"JSZip lib not loaded\");\n }\n }\n open(t, e) {\n return this.zip.loadAsync(t, { base64: e });\n }\n openUrl(t, e) {\n return u(t, \"binary\").then(\n function (t) {\n return this.zip.loadAsync(t, { base64: e });\n }.bind(this)\n );\n }\n request(t, e) {\n var i,\n n = new r.defer(),\n s = new a.a(t);\n return (\n e || (e = s.extension),\n (i = \"blob\" == e ? this.getBlob(t) : this.getText(t))\n ? i.then(\n function (t) {\n let i = this.handleResponse(t, e);\n n.resolve(i);\n }.bind(this)\n )\n : n.reject({\n message: \"File not found in the epub: \" + t,\n stack: new Error().stack,\n }),\n n.promise\n );\n }\n handleResponse(t, e) {\n return \"json\" == e\n ? JSON.parse(t)\n : Object(r.isXml)(e)\n ? Object(r.parse)(t, \"text/xml\")\n : \"xhtml\" == e\n ? Object(r.parse)(t, \"application/xhtml+xml\")\n : \"html\" == e || \"htm\" == e\n ? Object(r.parse)(t, \"text/html\")\n : t;\n }\n getBlob(t, e) {\n var i = window.decodeURIComponent(t.substr(1)),\n n = this.zip.file(i);\n if (n)\n return (\n (e = e || T.lookup(n.name)),\n n.async(\"uint8array\").then(function (t) {\n return new Blob([t], { type: e });\n })\n );\n }\n getText(t, e) {\n var i = window.decodeURIComponent(t.substr(1)),\n n = this.zip.file(i);\n if (n)\n return n.async(\"string\").then(function (t) {\n return t;\n });\n }\n getBase64(t, e) {\n var i = window.decodeURIComponent(t.substr(1)),\n n = this.zip.file(i);\n if (n)\n return (\n (e = e || T.lookup(n.name)),\n n.async(\"base64\").then(function (t) {\n return \"data:\" + e + \";base64,\" + t;\n })\n );\n }\n createUrl(t, e) {\n var i,\n n,\n s = new r.defer(),\n o = window.URL || window.webkitURL || window.mozURL,\n a = e && e.base64;\n return t in this.urlCache\n ? (s.resolve(this.urlCache[t]), s.promise)\n : (a\n ? (n = this.getBase64(t)) &&\n n.then(\n function (e) {\n (this.urlCache[t] = e), s.resolve(e);\n }.bind(this)\n )\n : (n = this.getBlob(t)) &&\n n.then(\n function (e) {\n (i = o.createObjectURL(e)),\n (this.urlCache[t] = i),\n s.resolve(i);\n }.bind(this)\n ),\n n ||\n s.reject({\n message: \"File not found in the epub: \" + t,\n stack: new Error().stack,\n }),\n s.promise);\n }\n revokeUrl(t) {\n var e = window.URL || window.webkitURL || window.mozURL,\n i = this.urlCache[t];\n i && e.revokeObjectURL(i);\n }\n destroy() {\n var t = window.URL || window.webkitURL || window.mozURL;\n for (let e in this.urlCache) t.revokeObjectURL(e);\n (this.zip = void 0), (this.urlCache = {});\n }\n },\n L = i(23),\n j = i.n(L);\n class D {\n constructor(t, e, i) {\n (this.urlCache = {}),\n (this.storage = void 0),\n (this.name = t),\n (this.requester = e || u),\n (this.resolver = i),\n (this.online = !0),\n this.checkRequirements(),\n this.addListeners();\n }\n checkRequirements() {\n try {\n let t;\n void 0 === j.a && (t = j.a),\n (this.storage = t.createInstance({ name: this.name }));\n } catch (t) {\n throw new Error(\"localForage lib not loaded\");\n }\n }\n addListeners() {\n (this._status = this.status.bind(this)),\n window.addEventListener(\"online\", this._status),\n window.addEventListener(\"offline\", this._status);\n }\n removeListeners() {\n window.removeEventListener(\"online\", this._status),\n window.removeEventListener(\"offline\", this._status),\n (this._status = void 0);\n }\n status(t) {\n let e = navigator.onLine;\n (this.online = e),\n e ? this.emit(\"online\", this) : this.emit(\"offline\", this);\n }\n add(t, e) {\n let i = t.resources.map((t) => {\n let { href: i } = t,\n n = this.resolver(i),\n s = window.encodeURIComponent(n);\n return this.storage\n .getItem(s)\n .then((t) =>\n !t || e\n ? this.requester(n, \"binary\").then((t) =>\n this.storage.setItem(s, t)\n )\n : t\n );\n });\n return Promise.all(i);\n }\n put(t, e, i) {\n let n = window.encodeURIComponent(t);\n return this.storage\n .getItem(n)\n .then(\n (s) =>\n s ||\n this.requester(t, \"binary\", e, i).then((t) =>\n this.storage.setItem(n, t)\n )\n );\n }\n request(t, e, i, n) {\n return this.online\n ? this.requester(t, e, i, n).then((e) => (this.put(t), e))\n : this.retrieve(t, e);\n }\n retrieve(t, e) {\n new r.defer();\n var i = new a.a(t);\n return (\n e || (e = i.extension),\n (\"blob\" == e ? this.getBlob(t) : this.getText(t)).then(\n (i) => {\n var n,\n s = new r.defer();\n return (\n i\n ? ((n = this.handleResponse(i, e)), s.resolve(n))\n : s.reject({\n message: \"File not found in storage: \" + t,\n stack: new Error().stack,\n }),\n s.promise\n );\n }\n )\n );\n }\n handleResponse(t, e) {\n return \"json\" == e\n ? JSON.parse(t)\n : Object(r.isXml)(e)\n ? Object(r.parse)(t, \"text/xml\")\n : \"xhtml\" == e\n ? Object(r.parse)(t, \"application/xhtml+xml\")\n : \"html\" == e || \"htm\" == e\n ? Object(r.parse)(t, \"text/html\")\n : t;\n }\n getBlob(t, e) {\n let i = window.encodeURIComponent(t);\n return this.storage.getItem(i).then(function (i) {\n if (i)\n return (e = e || T.lookup(t)), new Blob([i], { type: e });\n });\n }\n getText(t, e) {\n let i = window.encodeURIComponent(t);\n return (\n (e = e || T.lookup(t)),\n this.storage.getItem(i).then(function (t) {\n var i,\n n = new r.defer(),\n s = new FileReader();\n if (t)\n return (\n (i = new Blob([t], { type: e })),\n s.addEventListener(\"loadend\", () => {\n n.resolve(s.result);\n }),\n s.readAsText(i, e),\n n.promise\n );\n })\n );\n }\n getBase64(t, e) {\n let i = window.encodeURIComponent(t);\n return (\n (e = e || T.lookup(t)),\n this.storage.getItem(i).then((t) => {\n var i,\n n = new r.defer(),\n s = new FileReader();\n if (t)\n return (\n (i = new Blob([t], { type: e })),\n s.addEventListener(\"loadend\", () => {\n n.resolve(s.result);\n }),\n s.readAsDataURL(i, e),\n n.promise\n );\n })\n );\n }\n createUrl(t, e) {\n var i,\n n,\n s = new r.defer(),\n o = window.URL || window.webkitURL || window.mozURL,\n a = e && e.base64;\n return t in this.urlCache\n ? (s.resolve(this.urlCache[t]), s.promise)\n : (a\n ? (n = this.getBase64(t)) &&\n n.then(\n function (e) {\n (this.urlCache[t] = e), s.resolve(e);\n }.bind(this)\n )\n : (n = this.getBlob(t)) &&\n n.then(\n function (e) {\n (i = o.createObjectURL(e)),\n (this.urlCache[t] = i),\n s.resolve(i);\n }.bind(this)\n ),\n n ||\n s.reject({\n message: \"File not found in storage: \" + t,\n stack: new Error().stack,\n }),\n s.promise);\n }\n revokeUrl(t) {\n var e = window.URL || window.webkitURL || window.mozURL,\n i = this.urlCache[t];\n i && e.revokeObjectURL(i);\n }\n destroy() {\n var t = window.URL || window.webkitURL || window.mozURL;\n for (let e in this.urlCache) t.revokeObjectURL(e);\n (this.urlCache = {}), this.removeListeners();\n }\n }\n s()(D.prototype);\n var P = D;\n var M = class {\n constructor(t) {\n (this.interactive = \"\"),\n (this.fixedLayout = \"\"),\n (this.openToSpread = \"\"),\n (this.orientationLock = \"\"),\n t && this.parse(t);\n }\n parse(t) {\n if (!t) return this;\n const e = Object(r.qs)(t, \"display_options\");\n if (!e) return this;\n return (\n Object(r.qsa)(e, \"option\").forEach((t) => {\n let e = \"\";\n switch (\n (t.childNodes.length && (e = t.childNodes[0].nodeValue),\n t.attributes.name.value)\n ) {\n case \"interactive\":\n this.interactive = e;\n break;\n case \"fixed-layout\":\n this.fixedLayout = e;\n break;\n case \"open-to-spread\":\n this.openToSpread = e;\n break;\n case \"orientation-lock\":\n this.orientationLock = e;\n }\n }),\n this\n );\n }\n destroy() {\n (this.interactive = void 0),\n (this.fixedLayout = void 0),\n (this.openToSpread = void 0),\n (this.orientationLock = void 0);\n }\n };\n const z = \"binary\",\n B = \"base64\",\n q = \"epub\",\n F = \"opf\",\n U = \"json\",\n W = \"directory\";\n class H {\n constructor(t, e) {\n void 0 === e &&\n \"string\" != typeof t &&\n t instanceof Blob == !1 &&\n t instanceof ArrayBuffer == !1 &&\n ((e = t), (t = void 0)),\n (this.settings = Object(r.extend)(this.settings || {}, {\n requestMethod: void 0,\n requestCredentials: void 0,\n requestHeaders: void 0,\n encoding: void 0,\n replacements: void 0,\n canonical: void 0,\n openAs: void 0,\n store: void 0,\n })),\n Object(r.extend)(this.settings, e),\n (this.opening = new r.defer()),\n (this.opened = this.opening.promise),\n (this.isOpen = !1),\n (this.loading = {\n manifest: new r.defer(),\n spine: new r.defer(),\n metadata: new r.defer(),\n cover: new r.defer(),\n navigation: new r.defer(),\n pageList: new r.defer(),\n resources: new r.defer(),\n displayOptions: new r.defer(),\n }),\n (this.loaded = {\n manifest: this.loading.manifest.promise,\n spine: this.loading.spine.promise,\n metadata: this.loading.metadata.promise,\n cover: this.loading.cover.promise,\n navigation: this.loading.navigation.promise,\n pageList: this.loading.pageList.promise,\n resources: this.loading.resources.promise,\n displayOptions: this.loading.displayOptions.promise,\n }),\n (this.ready = Promise.all([\n this.loaded.manifest,\n this.loaded.spine,\n this.loaded.metadata,\n this.loaded.cover,\n this.loaded.navigation,\n this.loaded.resources,\n this.loaded.displayOptions,\n ])),\n (this.isRendered = !1),\n (this.request = this.settings.requestMethod || u),\n (this.spine = new p()),\n (this.locations = new y(this.spine, this.load.bind(this))),\n (this.navigation = void 0),\n (this.pageList = void 0),\n (this.url = void 0),\n (this.path = void 0),\n (this.archived = !1),\n (this.archive = void 0),\n (this.storage = void 0),\n (this.resources = void 0),\n (this.rendition = void 0),\n (this.container = void 0),\n (this.packaging = void 0),\n (this.displayOptions = void 0),\n this.settings.store && this.store(this.settings.store),\n t &&\n this.open(t, this.settings.openAs).catch((e) => {\n var i = new Error(\"Cannot load book at \" + t);\n this.emit(m.c.BOOK.OPEN_FAILED, i);\n });\n }\n open(t, e) {\n var i,\n n = e || this.determineType(t);\n return (\n n === z\n ? ((this.archived = !0),\n (this.url = new o.a(\"/\", \"\")),\n (i = this.openEpub(t)))\n : n === B\n ? ((this.archived = !0),\n (this.url = new o.a(\"/\", \"\")),\n (i = this.openEpub(t, n)))\n : n === q\n ? ((this.archived = !0),\n (this.url = new o.a(\"/\", \"\")),\n (i = this.request(\n t,\n \"binary\",\n this.settings.requestCredentials,\n this.settings.requestHeaders\n ).then(this.openEpub.bind(this))))\n : n == F\n ? ((this.url = new o.a(t)),\n (i = this.openPackaging(this.url.Path.toString())))\n : n == U\n ? ((this.url = new o.a(t)),\n (i = this.openManifest(this.url.Path.toString())))\n : ((this.url = new o.a(t)),\n (i = this.openContainer(\"META-INF/container.xml\").then(\n this.openPackaging.bind(this)\n ))),\n i\n );\n }\n openEpub(t, e) {\n return this.unarchive(t, e || this.settings.encoding)\n .then(() => this.openContainer(\"META-INF/container.xml\"))\n .then((t) => this.openPackaging(t));\n }\n openContainer(t) {\n return this.load(t).then(\n (t) => (\n (this.container = new x(t)),\n this.resolve(this.container.packagePath)\n )\n );\n }\n openPackaging(t) {\n return (\n (this.path = new a.a(t)),\n this.load(t).then(\n (t) => (\n (this.packaging = new E(t)), this.unpack(this.packaging)\n )\n )\n );\n }\n openManifest(t) {\n return (\n (this.path = new a.a(t)),\n this.load(t).then(\n (t) => (\n (this.packaging = new E()),\n this.packaging.load(t),\n this.unpack(this.packaging)\n )\n )\n );\n }\n load(t) {\n var e = this.resolve(t);\n return this.archived\n ? this.archive.request(e)\n : this.request(\n e,\n null,\n this.settings.requestCredentials,\n this.settings.requestHeaders\n );\n }\n resolve(t, e) {\n if (t) {\n var i = t;\n return t.indexOf(\"://\") > -1\n ? t\n : (this.path && (i = this.path.resolve(t)),\n 0 != e && this.url && (i = this.url.resolve(i)),\n i);\n }\n }\n canonical(t) {\n return t\n ? this.settings.canonical\n ? this.settings.canonical(t)\n : this.resolve(t, !0)\n : \"\";\n }\n determineType(t) {\n var e;\n return \"base64\" === this.settings.encoding\n ? B\n : \"string\" != typeof t\n ? z\n : ((e = new o.a(t).path().extension) &&\n (e = e.replace(/\\?.*$/, \"\")),\n e\n ? \"epub\" === e\n ? q\n : \"opf\" === e\n ? F\n : \"json\" === e\n ? U\n : void 0\n : W);\n }\n unpack(t) {\n (this.package = t),\n \"\" === this.packaging.metadata.layout\n ? this.load(\n this.url.resolve(\n \"META-INF/com.apple.ibooks.display-options.xml\"\n )\n )\n .then((t) => {\n (this.displayOptions = new M(t)),\n this.loading.displayOptions.resolve(\n this.displayOptions\n );\n })\n .catch((t) => {\n (this.displayOptions = new M()),\n this.loading.displayOptions.resolve(\n this.displayOptions\n );\n })\n : ((this.displayOptions = new M()),\n this.loading.displayOptions.resolve(this.displayOptions)),\n this.spine.unpack(\n this.packaging,\n this.resolve.bind(this),\n this.canonical.bind(this)\n ),\n (this.resources = new C(this.packaging.manifest, {\n archive: this.archive,\n resolver: this.resolve.bind(this),\n request: this.request.bind(this),\n replacements:\n this.settings.replacements ||\n (this.archived ? \"blobUrl\" : \"base64\"),\n })),\n this.loadNavigation(this.packaging).then(() => {\n this.loading.navigation.resolve(this.navigation);\n }),\n this.packaging.coverPath &&\n (this.cover = this.resolve(this.packaging.coverPath)),\n this.loading.manifest.resolve(this.packaging.manifest),\n this.loading.metadata.resolve(this.packaging.metadata),\n this.loading.spine.resolve(this.spine),\n this.loading.cover.resolve(this.cover),\n this.loading.resources.resolve(this.resources),\n this.loading.pageList.resolve(this.pageList),\n (this.isOpen = !0),\n this.archived ||\n (this.settings.replacements &&\n \"none\" != this.settings.replacements)\n ? this.replacements()\n .then(() => {\n this.loaded.displayOptions.then(() => {\n this.opening.resolve(this);\n });\n })\n .catch((t) => {\n console.error(t);\n })\n : this.loaded.displayOptions.then(() => {\n this.opening.resolve(this);\n });\n }\n loadNavigation(t) {\n let e = t.navPath || t.ncxPath,\n i = t.toc;\n return i\n ? new Promise((e, n) => {\n (this.navigation = new S(i)),\n t.pageList && (this.pageList = new O(t.pageList)),\n e(this.navigation);\n })\n : e\n ? this.load(e, \"xml\").then(\n (t) => (\n (this.navigation = new S(t)),\n (this.pageList = new O(t)),\n this.navigation\n )\n )\n : new Promise((t, e) => {\n (this.navigation = new S()),\n (this.pageList = new O()),\n t(this.navigation);\n });\n }\n section(t) {\n return this.spine.get(t);\n }\n renderTo(t, e) {\n return (\n (this.rendition = new I.a(this, e)),\n this.rendition.attachTo(t),\n this.rendition\n );\n }\n setRequestCredentials(t) {\n this.settings.requestCredentials = t;\n }\n setRequestHeaders(t) {\n this.settings.requestHeaders = t;\n }\n unarchive(t, e) {\n return (this.archive = new A()), this.archive.open(t, e);\n }\n store(t) {\n let e =\n this.settings.replacements &&\n \"none\" !== this.settings.replacements,\n i = this.url,\n n = this.settings.requestMethod || u.bind(this);\n return (\n (this.storage = new P(t, n, this.resolve.bind(this))),\n (this.request = this.storage.request.bind(this.storage)),\n this.opened.then(() => {\n this.archived &&\n (this.storage.requester = this.archive.request.bind(\n this.archive\n ));\n let t = (t, e) => {\n e.output = this.resources.substitute(t, e.url);\n };\n (this.resources.settings.replacements = e || \"blobUrl\"),\n this.resources\n .replacements()\n .then(() => this.resources.replaceCss()),\n this.storage.on(\"offline\", () => {\n (this.url = new o.a(\"/\", \"\")),\n this.spine.hooks.serialize.register(t);\n }),\n this.storage.on(\"online\", () => {\n (this.url = i),\n this.spine.hooks.serialize.deregister(t);\n });\n }),\n this.storage\n );\n }\n coverUrl() {\n return this.loaded.cover.then(() =>\n this.cover\n ? this.archived\n ? this.archive.createUrl(this.cover)\n : this.cover\n : null\n );\n }\n replacements() {\n return (\n this.spine.hooks.serialize.register((t, e) => {\n e.output = this.resources.substitute(t, e.url);\n }),\n this.resources\n .replacements()\n .then(() => this.resources.replaceCss())\n );\n }\n getRange(t) {\n var e = new h.a(t),\n i = this.spine.get(e.spinePos),\n n = this.load.bind(this);\n return i\n ? i.load(n).then(function (t) {\n return e.toRange(i.document);\n })\n : new Promise((t, e) => {\n e(\"CFI could not be found\");\n });\n }\n key(t) {\n var e =\n t || this.packaging.metadata.identifier || this.url.filename;\n return `epubjs:${m.b}:${e}`;\n }\n destroy() {\n (this.opened = void 0),\n (this.loading = void 0),\n (this.loaded = void 0),\n (this.ready = void 0),\n (this.isOpen = !1),\n (this.isRendered = !1),\n this.spine && this.spine.destroy(),\n this.locations && this.locations.destroy(),\n this.pageList && this.pageList.destroy(),\n this.archive && this.archive.destroy(),\n this.resources && this.resources.destroy(),\n this.container && this.container.destroy(),\n this.packaging && this.packaging.destroy(),\n this.rendition && this.rendition.destroy(),\n this.displayOptions && this.displayOptions.destroy(),\n (this.spine = void 0),\n (this.locations = void 0),\n (this.pageList = void 0),\n (this.archive = void 0),\n (this.resources = void 0),\n (this.container = void 0),\n (this.packaging = void 0),\n (this.rendition = void 0),\n (this.navigation = void 0),\n (this.url = void 0),\n (this.path = void 0),\n (this.archived = !1);\n }\n }\n s()(H.prototype);\n e.a = H;\n },\n function (t, e, i) {\n var n = i(14).NAMESPACE;\n function s(t) {\n return \"\" !== t;\n }\n function r(t, e) {\n return t.hasOwnProperty(e) || (t[e] = !0), t;\n }\n function o(t) {\n if (!t) return [];\n var e = (function (t) {\n return t ? t.split(/[\\t\\n\\f\\r ]+/).filter(s) : [];\n })(t);\n return Object.keys(e.reduce(r, {}));\n }\n function a(t, e) {\n for (var i in t) e[i] = t[i];\n }\n function h(t, e) {\n var i = t.prototype;\n if (!(i instanceof e)) {\n function n() {}\n (n.prototype = e.prototype),\n a(i, (n = new n())),\n (t.prototype = i = n);\n }\n i.constructor != t &&\n (\"function\" != typeof t && console.error(\"unknown Class:\" + t),\n (i.constructor = t));\n }\n var l = {},\n c = (l.ELEMENT_NODE = 1),\n u = (l.ATTRIBUTE_NODE = 2),\n d = (l.TEXT_NODE = 3),\n f = (l.CDATA_SECTION_NODE = 4),\n p = (l.ENTITY_REFERENCE_NODE = 5),\n g = (l.ENTITY_NODE = 6),\n m = (l.PROCESSING_INSTRUCTION_NODE = 7),\n v = (l.COMMENT_NODE = 8),\n y = (l.DOCUMENT_NODE = 9),\n b = (l.DOCUMENT_TYPE_NODE = 10),\n w = (l.DOCUMENT_FRAGMENT_NODE = 11),\n x = (l.NOTATION_NODE = 12),\n E = {},\n S = {},\n N =\n ((E.INDEX_SIZE_ERR = ((S[1] = \"Index size error\"), 1)),\n (E.DOMSTRING_SIZE_ERR = ((S[2] = \"DOMString size error\"), 2)),\n (E.HIERARCHY_REQUEST_ERR =\n ((S[3] = \"Hierarchy request error\"), 3))),\n _ =\n ((E.WRONG_DOCUMENT_ERR = ((S[4] = \"Wrong document\"), 4)),\n (E.INVALID_CHARACTER_ERR = ((S[5] = \"Invalid character\"), 5)),\n (E.NO_DATA_ALLOWED_ERR = ((S[6] = \"No data allowed\"), 6)),\n (E.NO_MODIFICATION_ALLOWED_ERR =\n ((S[7] = \"No modification allowed\"), 7)),\n (E.NOT_FOUND_ERR = ((S[8] = \"Not found\"), 8))),\n T =\n ((E.NOT_SUPPORTED_ERR = ((S[9] = \"Not supported\"), 9)),\n (E.INUSE_ATTRIBUTE_ERR = ((S[10] = \"Attribute in use\"), 10)));\n (E.INVALID_STATE_ERR = ((S[11] = \"Invalid state\"), 11)),\n (E.SYNTAX_ERR = ((S[12] = \"Syntax error\"), 12)),\n (E.INVALID_MODIFICATION_ERR =\n ((S[13] = \"Invalid modification\"), 13)),\n (E.NAMESPACE_ERR = ((S[14] = \"Invalid namespace\"), 14)),\n (E.INVALID_ACCESS_ERR = ((S[15] = \"Invalid access\"), 15));\n function C(t, e) {\n if (e instanceof Error) var i = e;\n else\n (i = this),\n Error.call(this, S[t]),\n (this.message = S[t]),\n Error.captureStackTrace && Error.captureStackTrace(this, C);\n return (\n (i.code = t), e && (this.message = this.message + \": \" + e), i\n );\n }\n function O() {}\n function I(t, e) {\n (this._node = t), (this._refresh = e), R(this);\n }\n function R(t) {\n var e = t._node._inc || t._node.ownerDocument._inc;\n if (t._inc != e) {\n var i = t._refresh(t._node);\n at(t, \"length\", i.length), a(i, t), (t._inc = e);\n }\n }\n function k() {}\n function A(t, e) {\n for (var i = t.length; i--; ) if (t[i] === e) return i;\n }\n function L(t, e, i, s) {\n if ((s ? (e[A(e, s)] = i) : (e[e.length++] = i), t)) {\n i.ownerElement = t;\n var r = t.ownerDocument;\n r &&\n (s && q(r, t, s),\n (function (t, e, i) {\n t && t._inc++,\n i.namespaceURI === n.XMLNS &&\n (e._nsMap[i.prefix ? i.localName : \"\"] = i.value);\n })(r, t, i));\n }\n }\n function j(t, e, i) {\n var n = A(e, i);\n if (!(n >= 0)) throw C(_, new Error(t.tagName + \"@\" + i));\n for (var s = e.length - 1; n < s; ) e[n] = e[++n];\n if (((e.length = s), t)) {\n var r = t.ownerDocument;\n r && (q(r, t, i), (i.ownerElement = null));\n }\n }\n function D() {}\n function P() {}\n function M(t) {\n return (\n (\"<\" == t ? \"&lt;\" : \">\" == t && \"&gt;\") ||\n (\"&\" == t && \"&amp;\") ||\n ('\"' == t && \"&quot;\") ||\n \"&#\" + t.charCodeAt() + \";\"\n );\n }\n function z(t, e) {\n if (e(t)) return !0;\n if ((t = t.firstChild))\n do {\n if (z(t, e)) return !0;\n } while ((t = t.nextSibling));\n }\n function B() {}\n function q(t, e, i, s) {\n t && t._inc++,\n i.namespaceURI === n.XMLNS &&\n delete e._nsMap[i.prefix ? i.localName : \"\"];\n }\n function F(t, e, i) {\n if (t && t._inc) {\n t._inc++;\n var n = e.childNodes;\n if (i) n[n.length++] = i;\n else {\n for (var s = e.firstChild, r = 0; s; )\n (n[r++] = s), (s = s.nextSibling);\n n.length = r;\n }\n }\n }\n function U(t, e) {\n var i = e.previousSibling,\n n = e.nextSibling;\n return (\n i ? (i.nextSibling = n) : (t.firstChild = n),\n n ? (n.previousSibling = i) : (t.lastChild = i),\n F(t.ownerDocument, t),\n e\n );\n }\n function W(t, e, i) {\n var n = e.parentNode;\n if ((n && n.removeChild(e), e.nodeType === w)) {\n var s = e.firstChild;\n if (null == s) return e;\n var r = e.lastChild;\n } else s = r = e;\n var o = i ? i.previousSibling : t.lastChild;\n (s.previousSibling = o),\n (r.nextSibling = i),\n o ? (o.nextSibling = s) : (t.firstChild = s),\n null == i ? (t.lastChild = r) : (i.previousSibling = r);\n do {\n s.parentNode = t;\n } while (s !== r && (s = s.nextSibling));\n return (\n F(t.ownerDocument || t, t),\n e.nodeType == w && (e.firstChild = e.lastChild = null),\n e\n );\n }\n function H() {\n this._nsMap = {};\n }\n function V() {}\n function X() {}\n function G() {}\n function Y() {}\n function $() {}\n function K() {}\n function Z() {}\n function J() {}\n function Q() {}\n function tt() {}\n function et() {}\n function it() {}\n function nt(t, e) {\n var i = [],\n n = (9 == this.nodeType && this.documentElement) || this,\n s = n.prefix,\n r = n.namespaceURI;\n if (r && null == s && null == (s = n.lookupPrefix(r)))\n var o = [{ namespace: r, prefix: null }];\n return ot(this, i, t, e, o), i.join(\"\");\n }\n function st(t, e, i) {\n var s = t.prefix || \"\",\n r = t.namespaceURI;\n if (!r) return !1;\n if ((\"xml\" === s && r === n.XML) || r === n.XMLNS) return !1;\n for (var o = i.length; o--; ) {\n var a = i[o];\n if (a.prefix === s) return a.namespace !== r;\n }\n return !0;\n }\n function rt(t, e, i) {\n t.push(\" \", e, '=\"', i.replace(/[<&\"]/g, M), '\"');\n }\n function ot(t, e, i, s, r) {\n if ((r || (r = []), s)) {\n if (!(t = s(t))) return;\n if (\"string\" == typeof t) return void e.push(t);\n }\n switch (t.nodeType) {\n case c:\n var o = t.attributes,\n a = o.length,\n h = t.firstChild,\n l = t.tagName,\n g = l;\n if (\n !(i = n.isHTML(t.namespaceURI) || i) &&\n !t.prefix &&\n t.namespaceURI\n ) {\n for (var x, E = 0; E < o.length; E++)\n if (\"xmlns\" === o.item(E).name) {\n x = o.item(E).value;\n break;\n }\n if (!x)\n for (var S = r.length - 1; S >= 0; S--) {\n if (\n \"\" === (N = r[S]).prefix &&\n N.namespace === t.namespaceURI\n ) {\n x = N.namespace;\n break;\n }\n }\n if (x !== t.namespaceURI)\n for (S = r.length - 1; S >= 0; S--) {\n var N;\n if ((N = r[S]).namespace === t.namespaceURI) {\n N.prefix && (g = N.prefix + \":\" + l);\n break;\n }\n }\n }\n e.push(\"<\", g);\n for (var _ = 0; _ < a; _++) {\n \"xmlns\" == (T = o.item(_)).prefix\n ? r.push({ prefix: T.localName, namespace: T.value })\n : \"xmlns\" == T.nodeName &&\n r.push({ prefix: \"\", namespace: T.value });\n }\n for (_ = 0; _ < a; _++) {\n var T, C, O;\n if (st((T = o.item(_)), 0, r))\n rt(\n e,\n (C = T.prefix || \"\") ? \"xmlns:\" + C : \"xmlns\",\n (O = T.namespaceURI)\n ),\n r.push({ prefix: C, namespace: O });\n ot(T, e, i, s, r);\n }\n if (l === g && st(t, 0, r))\n rt(\n e,\n (C = t.prefix || \"\") ? \"xmlns:\" + C : \"xmlns\",\n (O = t.namespaceURI)\n ),\n r.push({ prefix: C, namespace: O });\n if (h || (i && !/^(?:meta|link|img|br|hr|input)$/i.test(l))) {\n if ((e.push(\">\"), i && /^script$/i.test(l)))\n for (; h; )\n h.data ? e.push(h.data) : ot(h, e, i, s, r.slice()),\n (h = h.nextSibling);\n else\n for (; h; )\n ot(h, e, i, s, r.slice()), (h = h.nextSibling);\n e.push(\"</\", g, \">\");\n } else e.push(\"/>\");\n return;\n case y:\n case w:\n for (h = t.firstChild; h; )\n ot(h, e, i, s, r.slice()), (h = h.nextSibling);\n return;\n case u:\n return rt(e, t.name, t.value);\n case d:\n return e.push(\n t.data.replace(/[<&]/g, M).replace(/]]>/g, \"]]&gt;\")\n );\n case f:\n return e.push(\"<![CDATA[\", t.data, \"]]>\");\n case v:\n return e.push(\"\\x3c!--\", t.data, \"--\\x3e\");\n case b:\n var I = t.publicId,\n R = t.systemId;\n if ((e.push(\"<!DOCTYPE \", t.name), I))\n e.push(\" PUBLIC \", I),\n R && \".\" != R && e.push(\" \", R),\n e.push(\">\");\n else if (R && \".\" != R) e.push(\" SYSTEM \", R, \">\");\n else {\n var k = t.internalSubset;\n k && e.push(\" [\", k, \"]\"), e.push(\">\");\n }\n return;\n case m:\n return e.push(\"<?\", t.target, \" \", t.data, \"?>\");\n case p:\n return e.push(\"&\", t.nodeName, \";\");\n default:\n e.push(\"??\", t.nodeName);\n }\n }\n function at(t, e, i) {\n t[e] = i;\n }\n (C.prototype = Error.prototype),\n a(E, C),\n (O.prototype = {\n length: 0,\n item: function (t) {\n return this[t] || null;\n },\n toString: function (t, e) {\n for (var i = [], n = 0; n < this.length; n++)\n ot(this[n], i, t, e);\n return i.join(\"\");\n },\n }),\n (I.prototype.item = function (t) {\n return R(this), this[t];\n }),\n h(I, O),\n (k.prototype = {\n length: 0,\n item: O.prototype.item,\n getNamedItem: function (t) {\n for (var e = this.length; e--; ) {\n var i = this[e];\n if (i.nodeName == t) return i;\n }\n },\n setNamedItem: function (t) {\n var e = t.ownerElement;\n if (e && e != this._ownerElement) throw new C(T);\n var i = this.getNamedItem(t.nodeName);\n return L(this._ownerElement, this, t, i), i;\n },\n setNamedItemNS: function (t) {\n var e,\n i = t.ownerElement;\n if (i && i != this._ownerElement) throw new C(T);\n return (\n (e = this.getNamedItemNS(t.namespaceURI, t.localName)),\n L(this._ownerElement, this, t, e),\n e\n );\n },\n removeNamedItem: function (t) {\n var e = this.getNamedItem(t);\n return j(this._ownerElement, this, e), e;\n },\n removeNamedItemNS: function (t, e) {\n var i = this.getNamedItemNS(t, e);\n return j(this._ownerElement, this, i), i;\n },\n getNamedItemNS: function (t, e) {\n for (var i = this.length; i--; ) {\n var n = this[i];\n if (n.localName == e && n.namespaceURI == t) return n;\n }\n return null;\n },\n }),\n (D.prototype = {\n hasFeature: function (t, e) {\n return !0;\n },\n createDocument: function (t, e, i) {\n var n = new B();\n if (\n ((n.implementation = this),\n (n.childNodes = new O()),\n (n.doctype = i || null),\n i && n.appendChild(i),\n e)\n ) {\n var s = n.createElementNS(t, e);\n n.appendChild(s);\n }\n return n;\n },\n createDocumentType: function (t, e, i) {\n var n = new K();\n return (\n (n.name = t),\n (n.nodeName = t),\n (n.publicId = e || \"\"),\n (n.systemId = i || \"\"),\n n\n );\n },\n }),\n (P.prototype = {\n firstChild: null,\n lastChild: null,\n previousSibling: null,\n nextSibling: null,\n attributes: null,\n parentNode: null,\n childNodes: null,\n ownerDocument: null,\n nodeValue: null,\n namespaceURI: null,\n prefix: null,\n localName: null,\n insertBefore: function (t, e) {\n return W(this, t, e);\n },\n replaceChild: function (t, e) {\n this.insertBefore(t, e), e && this.removeChild(e);\n },\n removeChild: function (t) {\n return U(this, t);\n },\n appendChild: function (t) {\n return this.insertBefore(t, null);\n },\n hasChildNodes: function () {\n return null != this.firstChild;\n },\n cloneNode: function (t) {\n return (function t(e, i, n) {\n var s = new i.constructor();\n for (var r in i) {\n var o = i[r];\n \"object\" != typeof o && o != s[r] && (s[r] = o);\n }\n i.childNodes && (s.childNodes = new O());\n switch (((s.ownerDocument = e), s.nodeType)) {\n case c:\n var a = i.attributes,\n h = (s.attributes = new k()),\n l = a.length;\n h._ownerElement = s;\n for (var d = 0; d < l; d++)\n s.setAttributeNode(t(e, a.item(d), !0));\n break;\n case u:\n n = !0;\n }\n if (n)\n for (var f = i.firstChild; f; )\n s.appendChild(t(e, f, n)), (f = f.nextSibling);\n return s;\n })(this.ownerDocument || this, this, t);\n },\n normalize: function () {\n for (var t = this.firstChild; t; ) {\n var e = t.nextSibling;\n e && e.nodeType == d && t.nodeType == d\n ? (this.removeChild(e), t.appendData(e.data))\n : (t.normalize(), (t = e));\n }\n },\n isSupported: function (t, e) {\n return this.ownerDocument.implementation.hasFeature(t, e);\n },\n hasAttributes: function () {\n return this.attributes.length > 0;\n },\n lookupPrefix: function (t) {\n for (var e = this; e; ) {\n var i = e._nsMap;\n if (i) for (var n in i) if (i[n] == t) return n;\n e = e.nodeType == u ? e.ownerDocument : e.parentNode;\n }\n return null;\n },\n lookupNamespaceURI: function (t) {\n for (var e = this; e; ) {\n var i = e._nsMap;\n if (i && t in i) return i[t];\n e = e.nodeType == u ? e.ownerDocument : e.parentNode;\n }\n return null;\n },\n isDefaultNamespace: function (t) {\n return null == this.lookupPrefix(t);\n },\n }),\n a(l, P),\n a(l, P.prototype),\n (B.prototype = {\n nodeName: \"#document\",\n nodeType: y,\n doctype: null,\n documentElement: null,\n _inc: 1,\n insertBefore: function (t, e) {\n if (t.nodeType == w) {\n for (var i = t.firstChild; i; ) {\n var n = i.nextSibling;\n this.insertBefore(i, e), (i = n);\n }\n return t;\n }\n return (\n null == this.documentElement &&\n t.nodeType == c &&\n (this.documentElement = t),\n W(this, t, e),\n (t.ownerDocument = this),\n t\n );\n },\n removeChild: function (t) {\n return (\n this.documentElement == t && (this.documentElement = null),\n U(this, t)\n );\n },\n importNode: function (t, e) {\n return (function t(e, i, n) {\n var s;\n switch (i.nodeType) {\n case c:\n (s = i.cloneNode(!1)).ownerDocument = e;\n case w:\n break;\n case u:\n n = !0;\n }\n s || (s = i.cloneNode(!1));\n if (((s.ownerDocument = e), (s.parentNode = null), n))\n for (var r = i.firstChild; r; )\n s.appendChild(t(e, r, n)), (r = r.nextSibling);\n return s;\n })(this, t, e);\n },\n getElementById: function (t) {\n var e = null;\n return (\n z(this.documentElement, function (i) {\n if (i.nodeType == c && i.getAttribute(\"id\") == t)\n return (e = i), !0;\n }),\n e\n );\n },\n getElementsByClassName: function (t) {\n var e = o(t);\n return new I(this, function (i) {\n var n = [];\n return (\n e.length > 0 &&\n z(i.documentElement, function (s) {\n if (s !== i && s.nodeType === c) {\n var r = s.getAttribute(\"class\");\n if (r) {\n var a = t === r;\n if (!a) {\n var h = o(r);\n a = e.every(\n ((l = h),\n function (t) {\n return l && -1 !== l.indexOf(t);\n })\n );\n }\n a && n.push(s);\n }\n }\n var l;\n }),\n n\n );\n });\n },\n createElement: function (t) {\n var e = new H();\n return (\n (e.ownerDocument = this),\n (e.nodeName = t),\n (e.tagName = t),\n (e.localName = t),\n (e.childNodes = new O()),\n ((e.attributes = new k())._ownerElement = e),\n e\n );\n },\n createDocumentFragment: function () {\n var t = new tt();\n return (t.ownerDocument = this), (t.childNodes = new O()), t;\n },\n createTextNode: function (t) {\n var e = new G();\n return (e.ownerDocument = this), e.appendData(t), e;\n },\n createComment: function (t) {\n var e = new Y();\n return (e.ownerDocument = this), e.appendData(t), e;\n },\n createCDATASection: function (t) {\n var e = new $();\n return (e.ownerDocument = this), e.appendData(t), e;\n },\n createProcessingInstruction: function (t, e) {\n var i = new et();\n return (\n (i.ownerDocument = this),\n (i.tagName = i.target = t),\n (i.nodeValue = i.data = e),\n i\n );\n },\n createAttribute: function (t) {\n var e = new V();\n return (\n (e.ownerDocument = this),\n (e.name = t),\n (e.nodeName = t),\n (e.localName = t),\n (e.specified = !0),\n e\n );\n },\n createEntityReference: function (t) {\n var e = new Q();\n return (e.ownerDocument = this), (e.nodeName = t), e;\n },\n createElementNS: function (t, e) {\n var i = new H(),\n n = e.split(\":\"),\n s = (i.attributes = new k());\n return (\n (i.childNodes = new O()),\n (i.ownerDocument = this),\n (i.nodeName = e),\n (i.tagName = e),\n (i.namespaceURI = t),\n 2 == n.length\n ? ((i.prefix = n[0]), (i.localName = n[1]))\n : (i.localName = e),\n (s._ownerElement = i),\n i\n );\n },\n createAttributeNS: function (t, e) {\n var i = new V(),\n n = e.split(\":\");\n return (\n (i.ownerDocument = this),\n (i.nodeName = e),\n (i.name = e),\n (i.namespaceURI = t),\n (i.specified = !0),\n 2 == n.length\n ? ((i.prefix = n[0]), (i.localName = n[1]))\n : (i.localName = e),\n i\n );\n },\n }),\n h(B, P),\n (H.prototype = {\n nodeType: c,\n hasAttribute: function (t) {\n return null != this.getAttributeNode(t);\n },\n getAttribute: function (t) {\n var e = this.getAttributeNode(t);\n return (e && e.value) || \"\";\n },\n getAttributeNode: function (t) {\n return this.attributes.getNamedItem(t);\n },\n setAttribute: function (t, e) {\n var i = this.ownerDocument.createAttribute(t);\n (i.value = i.nodeValue = \"\" + e), this.setAttributeNode(i);\n },\n removeAttribute: function (t) {\n var e = this.getAttributeNode(t);\n e && this.removeAttributeNode(e);\n },\n appendChild: function (t) {\n return t.nodeType === w\n ? this.insertBefore(t, null)\n : (function (t, e) {\n var i = e.parentNode;\n if (i) {\n var n = t.lastChild;\n i.removeChild(e);\n n = t.lastChild;\n }\n return (\n (n = t.lastChild),\n (e.parentNode = t),\n (e.previousSibling = n),\n (e.nextSibling = null),\n n ? (n.nextSibling = e) : (t.firstChild = e),\n (t.lastChild = e),\n F(t.ownerDocument, t, e),\n e\n );\n })(this, t);\n },\n setAttributeNode: function (t) {\n return this.attributes.setNamedItem(t);\n },\n setAttributeNodeNS: function (t) {\n return this.attributes.setNamedItemNS(t);\n },\n removeAttributeNode: function (t) {\n return this.attributes.removeNamedItem(t.nodeName);\n },\n removeAttributeNS: function (t, e) {\n var i = this.getAttributeNodeNS(t, e);\n i && this.removeAttributeNode(i);\n },\n hasAttributeNS: function (t, e) {\n return null != this.getAttributeNodeNS(t, e);\n },\n getAttributeNS: function (t, e) {\n var i = this.getAttributeNodeNS(t, e);\n return (i && i.value) || \"\";\n },\n setAttributeNS: function (t, e, i) {\n var n = this.ownerDocument.createAttributeNS(t, e);\n (n.value = n.nodeValue = \"\" + i), this.setAttributeNode(n);\n },\n getAttributeNodeNS: function (t, e) {\n return this.attributes.getNamedItemNS(t, e);\n },\n getElementsByTagName: function (t) {\n return new I(this, function (e) {\n var i = [];\n return (\n z(e, function (n) {\n n === e ||\n n.nodeType != c ||\n (\"*\" !== t && n.tagName != t) ||\n i.push(n);\n }),\n i\n );\n });\n },\n getElementsByTagNameNS: function (t, e) {\n return new I(this, function (i) {\n var n = [];\n return (\n z(i, function (s) {\n s === i ||\n s.nodeType !== c ||\n (\"*\" !== t && s.namespaceURI !== t) ||\n (\"*\" !== e && s.localName != e) ||\n n.push(s);\n }),\n n\n );\n });\n },\n }),\n (B.prototype.getElementsByTagName =\n H.prototype.getElementsByTagName),\n (B.prototype.getElementsByTagNameNS =\n H.prototype.getElementsByTagNameNS),\n h(H, P),\n (V.prototype.nodeType = u),\n h(V, P),\n (X.prototype = {\n data: \"\",\n substringData: function (t, e) {\n return this.data.substring(t, t + e);\n },\n appendData: function (t) {\n (t = this.data + t),\n (this.nodeValue = this.data = t),\n (this.length = t.length);\n },\n insertData: function (t, e) {\n this.replaceData(t, 0, e);\n },\n appendChild: function (t) {\n throw new Error(S[N]);\n },\n deleteData: function (t, e) {\n this.replaceData(t, e, \"\");\n },\n replaceData: function (t, e, i) {\n (i =\n this.data.substring(0, t) + i + this.data.substring(t + e)),\n (this.nodeValue = this.data = i),\n (this.length = i.length);\n },\n }),\n h(X, P),\n (G.prototype = {\n nodeName: \"#text\",\n nodeType: d,\n splitText: function (t) {\n var e = this.data,\n i = e.substring(t);\n (e = e.substring(0, t)),\n (this.data = this.nodeValue = e),\n (this.length = e.length);\n var n = this.ownerDocument.createTextNode(i);\n return (\n this.parentNode &&\n this.parentNode.insertBefore(n, this.nextSibling),\n n\n );\n },\n }),\n h(G, X),\n (Y.prototype = { nodeName: \"#comment\", nodeType: v }),\n h(Y, X),\n ($.prototype = { nodeName: \"#cdata-section\", nodeType: f }),\n h($, X),\n (K.prototype.nodeType = b),\n h(K, P),\n (Z.prototype.nodeType = x),\n h(Z, P),\n (J.prototype.nodeType = g),\n h(J, P),\n (Q.prototype.nodeType = p),\n h(Q, P),\n (tt.prototype.nodeName = \"#document-fragment\"),\n (tt.prototype.nodeType = w),\n h(tt, P),\n (et.prototype.nodeType = m),\n h(et, P),\n (it.prototype.serializeToString = function (t, e, i) {\n return nt.call(t, e, i);\n }),\n (P.prototype.toString = nt);\n try {\n if (Object.defineProperty) {\n Object.defineProperty(I.prototype, \"length\", {\n get: function () {\n return R(this), this.$$length;\n },\n }),\n Object.defineProperty(P.prototype, \"textContent\", {\n get: function () {\n return (function t(e) {\n switch (e.nodeType) {\n case c:\n case w:\n var i = [];\n for (e = e.firstChild; e; )\n 7 !== e.nodeType &&\n 8 !== e.nodeType &&\n i.push(t(e)),\n (e = e.nextSibling);\n return i.join(\"\");\n default:\n return e.nodeValue;\n }\n })(this);\n },\n set: function (t) {\n switch (this.nodeType) {\n case c:\n case w:\n for (; this.firstChild; )\n this.removeChild(this.firstChild);\n (t || String(t)) &&\n this.appendChild(\n this.ownerDocument.createTextNode(t)\n );\n break;\n default:\n (this.data = t),\n (this.value = t),\n (this.nodeValue = t);\n }\n },\n }),\n (at = function (t, e, i) {\n t[\"$$\" + e] = i;\n });\n }\n } catch (t) {}\n (e.DocumentType = K),\n (e.DOMException = C),\n (e.DOMImplementation = D),\n (e.Element = H),\n (e.Node = P),\n (e.NodeList = O),\n (e.XMLSerializer = it);\n },\n function (t, e, i) {\n var n = i(52),\n s =\n \"object\" == typeof self &&\n self &&\n self.Object === Object &&\n self,\n r = n || s || Function(\"return this\")();\n t.exports = r;\n },\n function (t, e, i) {\n var n = i(26).Symbol;\n t.exports = n;\n },\n function (t, e, i) {\n var n = i(21),\n s = i(19);\n t.exports = function (t, e, i) {\n var r = !0,\n o = !0;\n if (\"function\" != typeof t)\n throw new TypeError(\"Expected a function\");\n return (\n s(i) &&\n ((r = \"leading\" in i ? !!i.leading : r),\n (o = \"trailing\" in i ? !!i.trailing : o)),\n n(t, e, { leading: r, maxWait: e, trailing: o })\n );\n };\n },\n function (e, i) {\n e.exports = t;\n },\n function (t, e, i) {\n \"use strict\";\n i.r(e),\n function (t) {\n var n = i(24),\n s = i(16),\n r = i(2),\n o = i(12),\n a = i(0),\n h = i(1);\n i(20), i(10), i(22);\n function l(t, e) {\n return new n.a(t, e);\n }\n (l.VERSION = h.b),\n void 0 !== t && (t.EPUBJS_VERSION = h.b),\n (l.Book = n.a),\n (l.Rendition = s.a),\n (l.Contents = o.a),\n (l.CFI = r.a),\n (l.utils = a),\n (e.default = l);\n }.call(this, i(17));\n },\n function (t, e, i) {\n \"use strict\";\n var n = i(32),\n s = i(40),\n r = i(41),\n o = i(42);\n (t.exports = function (t, e) {\n var i, r, a, h, l;\n return (\n arguments.length < 2 || \"string\" != typeof t\n ? ((h = e), (e = t), (t = null))\n : (h = arguments[2]),\n null == t\n ? ((i = a = !0), (r = !1))\n : ((i = o.call(t, \"c\")),\n (r = o.call(t, \"e\")),\n (a = o.call(t, \"w\"))),\n (l = { value: e, configurable: i, enumerable: r, writable: a }),\n h ? n(s(h), l) : l\n );\n }).gs = function (t, e, i) {\n var a, h, l, c;\n return (\n \"string\" != typeof t\n ? ((l = i), (i = e), (e = t), (t = null))\n : (l = arguments[3]),\n null == e\n ? (e = void 0)\n : r(e)\n ? null == i\n ? (i = void 0)\n : r(i) || ((l = i), (i = void 0))\n : ((l = e), (e = i = void 0)),\n null == t\n ? ((a = !0), (h = !1))\n : ((a = o.call(t, \"c\")), (h = o.call(t, \"e\"))),\n (c = { get: e, set: i, configurable: a, enumerable: h }),\n l ? n(s(l), c) : c\n );\n };\n },\n function (t, e, i) {\n \"use strict\";\n t.exports = i(33)() ? Object.assign : i(34);\n },\n function (t, e, i) {\n \"use strict\";\n t.exports = function () {\n var t,\n e = Object.assign;\n return (\n \"function\" == typeof e &&\n (e((t = { foo: \"raz\" }), { bar: \"dwa\" }, { trzy: \"trzy\" }),\n t.foo + t.bar + t.trzy === \"razdwatrzy\")\n );\n };\n },\n function (t, e, i) {\n \"use strict\";\n var n = i(35),\n s = i(39),\n r = Math.max;\n t.exports = function (t, e) {\n var i,\n o,\n a,\n h = r(arguments.length, 2);\n for (\n t = Object(s(t)),\n a = function (n) {\n try {\n t[n] = e[n];\n } catch (t) {\n i || (i = t);\n }\n },\n o = 1;\n o < h;\n ++o\n )\n n((e = arguments[o])).forEach(a);\n if (void 0 !== i) throw i;\n return t;\n };\n },\n function (t, e, i) {\n \"use strict\";\n t.exports = i(36)() ? Object.keys : i(37);\n },\n function (t, e, i) {\n \"use strict\";\n t.exports = function () {\n try {\n return Object.keys(\"primitive\"), !0;\n } catch (t) {\n return !1;\n }\n };\n },\n function (t, e, i) {\n \"use strict\";\n var n = i(18),\n s = Object.keys;\n t.exports = function (t) {\n return s(n(t) ? Object(t) : t);\n };\n },\n function (t, e, i) {\n \"use strict\";\n t.exports = function () {};\n },\n function (t, e, i) {\n \"use strict\";\n var n = i(18);\n t.exports = function (t) {\n if (!n(t)) throw new TypeError(\"Cannot use null or undefined\");\n return t;\n };\n },\n function (t, e, i) {\n \"use strict\";\n var n = i(18),\n s = Array.prototype.forEach,\n r = Object.create,\n o = function (t, e) {\n var i;\n for (i in t) e[i] = t[i];\n };\n t.exports = function (t) {\n var e = r(null);\n return (\n s.call(arguments, function (t) {\n n(t) && o(Object(t), e);\n }),\n e\n );\n };\n },\n function (t, e, i) {\n \"use strict\";\n t.exports = function (t) {\n return \"function\" == typeof t;\n };\n },\n function (t, e, i) {\n \"use strict\";\n t.exports = i(43)() ? String.prototype.contains : i(44);\n },\n function (t, e, i) {\n \"use strict\";\n var n = \"razdwatrzy\";\n t.exports = function () {\n return (\n \"function\" == typeof n.contains &&\n !0 === n.contains(\"dwa\") &&\n !1 === n.contains(\"foo\")\n );\n };\n },\n function (t, e, i) {\n \"use strict\";\n var n = String.prototype.indexOf;\n t.exports = function (t) {\n return n.call(this, t, arguments[1]) > -1;\n };\n },\n function (t, e, i) {\n \"use strict\";\n t.exports = function (t) {\n if (\"function\" != typeof t)\n throw new TypeError(t + \" is not a function\");\n return t;\n };\n },\n function (t, e, i) {\n var n = i(14),\n s = i(25),\n r = i(47),\n o = i(48),\n a = s.DOMImplementation,\n h = n.NAMESPACE,\n l = o.ParseError,\n c = o.XMLReader;\n function u(t) {\n this.options = t || { locator: {} };\n }\n function d() {\n this.cdata = !1;\n }\n function f(t, e) {\n (e.lineNumber = t.lineNumber), (e.columnNumber = t.columnNumber);\n }\n function p(t) {\n if (t)\n return (\n \"\\n@\" +\n (t.systemId || \"\") +\n \"#[line:\" +\n t.lineNumber +\n \",col:\" +\n t.columnNumber +\n \"]\"\n );\n }\n function g(t, e, i) {\n return \"string\" == typeof t\n ? t.substr(e, i)\n : t.length >= e + i || e\n ? new java.lang.String(t, e, i) + \"\"\n : t;\n }\n function m(t, e) {\n t.currentElement\n ? t.currentElement.appendChild(e)\n : t.doc.appendChild(e);\n }\n (u.prototype.parseFromString = function (t, e) {\n var i = this.options,\n n = new c(),\n s = i.domBuilder || new d(),\n o = i.errorHandler,\n a = i.locator,\n l = i.xmlns || {},\n u = /\\/x?html?$/.test(e),\n f = u ? r.HTML_ENTITIES : r.XML_ENTITIES;\n return (\n a && s.setDocumentLocator(a),\n (n.errorHandler = (function (t, e, i) {\n if (!t) {\n if (e instanceof d) return e;\n t = e;\n }\n var n = {},\n s = t instanceof Function;\n function r(e) {\n var r = t[e];\n !r &&\n s &&\n (r =\n 2 == t.length\n ? function (i) {\n t(e, i);\n }\n : t),\n (n[e] =\n (r &&\n function (t) {\n r(\"[xmldom \" + e + \"]\\t\" + t + p(i));\n }) ||\n function () {});\n }\n return (\n (i = i || {}), r(\"warning\"), r(\"error\"), r(\"fatalError\"), n\n );\n })(o, s, a)),\n (n.domBuilder = i.domBuilder || s),\n u && (l[\"\"] = h.HTML),\n (l.xml = l.xml || h.XML),\n t && \"string\" == typeof t\n ? n.parse(t, l, f)\n : n.errorHandler.error(\"invalid doc source\"),\n s.doc\n );\n }),\n (d.prototype = {\n startDocument: function () {\n (this.doc = new a().createDocument(null, null, null)),\n this.locator &&\n (this.doc.documentURI = this.locator.systemId);\n },\n startElement: function (t, e, i, n) {\n var s = this.doc,\n r = s.createElementNS(t, i || e),\n o = n.length;\n m(this, r),\n (this.currentElement = r),\n this.locator && f(this.locator, r);\n for (var a = 0; a < o; a++) {\n t = n.getURI(a);\n var h = n.getValue(a),\n l = ((i = n.getQName(a)), s.createAttributeNS(t, i));\n this.locator && f(n.getLocator(a), l),\n (l.value = l.nodeValue = h),\n r.setAttributeNode(l);\n }\n },\n endElement: function (t, e, i) {\n var n = this.currentElement;\n n.tagName;\n this.currentElement = n.parentNode;\n },\n startPrefixMapping: function (t, e) {},\n endPrefixMapping: function (t) {},\n processingInstruction: function (t, e) {\n var i = this.doc.createProcessingInstruction(t, e);\n this.locator && f(this.locator, i), m(this, i);\n },\n ignorableWhitespace: function (t, e, i) {},\n characters: function (t, e, i) {\n if ((t = g.apply(this, arguments))) {\n if (this.cdata) var n = this.doc.createCDATASection(t);\n else n = this.doc.createTextNode(t);\n this.currentElement\n ? this.currentElement.appendChild(n)\n : /^\\s*$/.test(t) && this.doc.appendChild(n),\n this.locator && f(this.locator, n);\n }\n },\n skippedEntity: function (t) {},\n endDocument: function () {\n this.doc.normalize();\n },\n setDocumentLocator: function (t) {\n (this.locator = t) && (t.lineNumber = 0);\n },\n comment: function (t, e, i) {\n t = g.apply(this, arguments);\n var n = this.doc.createComment(t);\n this.locator && f(this.locator, n), m(this, n);\n },\n startCDATA: function () {\n this.cdata = !0;\n },\n endCDATA: function () {\n this.cdata = !1;\n },\n startDTD: function (t, e, i) {\n var n = this.doc.implementation;\n if (n && n.createDocumentType) {\n var s = n.createDocumentType(t, e, i);\n this.locator && f(this.locator, s),\n m(this, s),\n (this.doc.doctype = s);\n }\n },\n warning: function (t) {\n console.warn(\"[xmldom warning]\\t\" + t, p(this.locator));\n },\n error: function (t) {\n console.error(\"[xmldom error]\\t\" + t, p(this.locator));\n },\n fatalError: function (t) {\n throw new l(t, this.locator);\n },\n }),\n \"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(\n /\\w+/g,\n function (t) {\n d.prototype[t] = function () {\n return null;\n };\n }\n ),\n (e.__DOMHandler = d),\n (e.DOMParser = u),\n (e.DOMImplementation = s.DOMImplementation),\n (e.XMLSerializer = s.XMLSerializer);\n },\n function (t, e, i) {\n var n = i(14).freeze;\n (e.XML_ENTITIES = n({\n amp: \"&\",\n apos: \"'\",\n gt: \">\",\n lt: \"<\",\n quot: '\"',\n })),\n (e.HTML_ENTITIES = n({\n lt: \"<\",\n gt: \">\",\n amp: \"&\",\n quot: '\"',\n apos: \"'\",\n Agrave: \"À\",\n Aacute: \"Á\",\n Acirc: \"Â\",\n Atilde: \"Ã\",\n Auml: \"Ä\",\n Aring: \"Å\",\n AElig: \"Æ\",\n Ccedil: \"Ç\",\n Egrave: \"È\",\n Eacute: \"É\",\n Ecirc: \"Ê\",\n Euml: \"Ë\",\n Igrave: \"Ì\",\n Iacute: \"Í\",\n Icirc: \"Î\",\n Iuml: \"Ï\",\n ETH: \"Ð\",\n Ntilde: \"Ñ\",\n Ograve: \"Ò\",\n Oacute: \"Ó\",\n Ocirc: \"Ô\",\n Otilde: \"Õ\",\n Ouml: \"Ö\",\n Oslash: \"Ø\",\n Ugrave: \"Ù\",\n Uacute: \"Ú\",\n Ucirc: \"Û\",\n Uuml: \"Ü\",\n Yacute: \"Ý\",\n THORN: \"Þ\",\n szlig: \"ß\",\n agrave: \"à\",\n aacute: \"á\",\n acirc: \"â\",\n atilde: \"ã\",\n auml: \"ä\",\n aring: \"å\",\n aelig: \"æ\",\n ccedil: \"ç\",\n egrave: \"è\",\n eacute: \"é\",\n ecirc: \"ê\",\n euml: \"ë\",\n igrave: \"ì\",\n iacute: \"í\",\n icirc: \"î\",\n iuml: \"ï\",\n eth: \"ð\",\n ntilde: \"ñ\",\n ograve: \"ò\",\n oacute: \"ó\",\n ocirc: \"ô\",\n otilde: \"õ\",\n ouml: \"ö\",\n oslash: \"ø\",\n ugrave: \"ù\",\n uacute: \"ú\",\n ucirc: \"û\",\n uuml: \"ü\",\n yacute: \"ý\",\n thorn: \"þ\",\n yuml: \"ÿ\",\n nbsp: \" \",\n iexcl: \"¡\",\n cent: \"¢\",\n pound: \"£\",\n curren: \"¤\",\n yen: \"¥\",\n brvbar: \"¦\",\n sect: \"§\",\n uml: \"¨\",\n copy: \"©\",\n ordf: \"ª\",\n laquo: \"«\",\n not: \"¬\",\n shy: \"­­\",\n reg: \"®\",\n macr: \"¯\",\n deg: \"°\",\n plusmn: \"±\",\n sup2: \"²\",\n sup3: \"³\",\n acute: \"´\",\n micro: \"µ\",\n para: \"¶\",\n middot: \"·\",\n cedil: \"¸\",\n sup1: \"¹\",\n ordm: \"º\",\n raquo: \"»\",\n frac14: \"¼\",\n frac12: \"½\",\n frac34: \"¾\",\n iquest: \"¿\",\n times: \"×\",\n divide: \"÷\",\n forall: \"∀\",\n part: \"∂\",\n exist: \"∃\",\n empty: \"∅\",\n nabla: \"∇\",\n isin: \"∈\",\n notin: \"∉\",\n ni: \"∋\",\n prod: \"∏\",\n sum: \"∑\",\n minus: \"−\",\n lowast: \"∗\",\n radic: \"√\",\n prop: \"∝\",\n infin: \"∞\",\n ang: \"∠\",\n and: \"∧\",\n or: \"∨\",\n cap: \"∩\",\n cup: \"∪\",\n int: \"∫\",\n there4: \"∴\",\n sim: \"∼\",\n cong: \"≅\",\n asymp: \"≈\",\n ne: \"≠\",\n equiv: \"≡\",\n le: \"≤\",\n ge: \"≥\",\n sub: \"⊂\",\n sup: \"⊃\",\n nsub: \"⊄\",\n sube: \"⊆\",\n supe: \"⊇\",\n oplus: \"⊕\",\n otimes: \"⊗\",\n perp: \"⊥\",\n sdot: \"⋅\",\n Alpha: \"Α\",\n Beta: \"Β\",\n Gamma: \"Γ\",\n Delta: \"Δ\",\n Epsilon: \"Ε\",\n Zeta: \"Ζ\",\n Eta: \"Η\",\n Theta: \"Θ\",\n Iota: \"Ι\",\n Kappa: \"Κ\",\n Lambda: \"Λ\",\n Mu: \"Μ\",\n Nu: \"Ν\",\n Xi: \"Ξ\",\n Omicron: \"Ο\",\n Pi: \"Π\",\n Rho: \"Ρ\",\n Sigma: \"Σ\",\n Tau: \"Τ\",\n Upsilon: \"Υ\",\n Phi: \"Φ\",\n Chi: \"Χ\",\n Psi: \"Ψ\",\n Omega: \"Ω\",\n alpha: \"α\",\n beta: \"β\",\n gamma: \"γ\",\n delta: \"δ\",\n epsilon: \"ε\",\n zeta: \"ζ\",\n eta: \"η\",\n theta: \"θ\",\n iota: \"ι\",\n kappa: \"κ\",\n lambda: \"λ\",\n mu: \"μ\",\n nu: \"ν\",\n xi: \"ξ\",\n omicron: \"ο\",\n pi: \"π\",\n rho: \"ρ\",\n sigmaf: \"ς\",\n sigma: \"σ\",\n tau: \"τ\",\n upsilon: \"υ\",\n phi: \"φ\",\n chi: \"χ\",\n psi: \"ψ\",\n omega: \"ω\",\n thetasym: \"ϑ\",\n upsih: \"ϒ\",\n piv: \"ϖ\",\n OElig: \"Œ\",\n oelig: \"œ\",\n Scaron: \"Š\",\n scaron: \"š\",\n Yuml: \"Ÿ\",\n fnof: \"ƒ\",\n circ: \"ˆ\",\n tilde: \"˜\",\n ensp: \" \",\n emsp: \" \",\n thinsp: \" \",\n zwnj: \"‌\",\n zwj: \"‍\",\n lrm: \"‎\",\n rlm: \"‏\",\n ndash: \"–\",\n mdash: \"—\",\n lsquo: \"‘\",\n rsquo: \"’\",\n sbquo: \"‚\",\n ldquo: \"“\",\n rdquo: \"”\",\n bdquo: \"„\",\n dagger: \"†\",\n Dagger: \"‡\",\n bull: \"•\",\n hellip: \"…\",\n permil: \"‰\",\n prime: \"′\",\n Prime: \"″\",\n lsaquo: \"‹\",\n rsaquo: \"›\",\n oline: \"‾\",\n euro: \"€\",\n trade: \"™\",\n larr: \"←\",\n uarr: \"↑\",\n rarr: \"→\",\n darr: \"↓\",\n harr: \"↔\",\n crarr: \"↵\",\n lceil: \"⌈\",\n rceil: \"⌉\",\n lfloor: \"⌊\",\n rfloor: \"⌋\",\n loz: \"◊\",\n spades: \"♠\",\n clubs: \"♣\",\n hearts: \"♥\",\n diams: \"♦\",\n })),\n (e.entityMap = e.HTML_ENTITIES);\n },\n function (t, e, i) {\n var n = i(14).NAMESPACE,\n s =\n /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/,\n r = new RegExp(\n \"[\\\\-\\\\.0-9\" +\n s.source.slice(1, -1) +\n \"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\"\n ),\n o = new RegExp(\n \"^\" +\n s.source +\n r.source +\n \"*(?::\" +\n s.source +\n r.source +\n \"*)?$\"\n );\n function a(t, e) {\n (this.message = t),\n (this.locator = e),\n Error.captureStackTrace && Error.captureStackTrace(this, a);\n }\n function h() {}\n function l(t, e) {\n return (\n (e.lineNumber = t.lineNumber),\n (e.columnNumber = t.columnNumber),\n e\n );\n }\n function c(t, e, i, s, r, o) {\n function a(t, e, n) {\n i.attributeNames.hasOwnProperty(t) &&\n o.fatalError(\"Attribute \" + t + \" redefined\"),\n i.addValue(t, e, n);\n }\n for (var h, l = ++e, c = 0; ; ) {\n var u = t.charAt(l);\n switch (u) {\n case \"=\":\n if (1 === c) (h = t.slice(e, l)), (c = 3);\n else {\n if (2 !== c)\n throw new Error(\"attribute equal must after attrName\");\n c = 3;\n }\n break;\n case \"'\":\n case '\"':\n if (3 === c || 1 === c) {\n if (\n (1 === c &&\n (o.warning('attribute value must after \"=\"'),\n (h = t.slice(e, l))),\n (e = l + 1),\n !((l = t.indexOf(u, e)) > 0))\n )\n throw new Error(\n \"attribute value no end '\" + u + \"' match\"\n );\n a(h, (d = t.slice(e, l).replace(/&#?\\w+;/g, r)), e - 1),\n (c = 5);\n } else {\n if (4 != c)\n throw new Error('attribute value must after \"=\"');\n a(h, (d = t.slice(e, l).replace(/&#?\\w+;/g, r)), e),\n o.warning(\n 'attribute \"' + h + '\" missed start quot(' + u + \")!!\"\n ),\n (e = l + 1),\n (c = 5);\n }\n break;\n case \"/\":\n switch (c) {\n case 0:\n i.setTagName(t.slice(e, l));\n case 5:\n case 6:\n case 7:\n (c = 7), (i.closed = !0);\n case 4:\n case 1:\n case 2:\n break;\n default:\n throw new Error(\"attribute invalid close char('/')\");\n }\n break;\n case \"\":\n return (\n o.error(\"unexpected end of input\"),\n 0 == c && i.setTagName(t.slice(e, l)),\n l\n );\n case \">\":\n switch (c) {\n case 0:\n i.setTagName(t.slice(e, l));\n case 5:\n case 6:\n case 7:\n break;\n case 4:\n case 1:\n \"/\" === (d = t.slice(e, l)).slice(-1) &&\n ((i.closed = !0), (d = d.slice(0, -1)));\n case 2:\n 2 === c && (d = h),\n 4 == c\n ? (o.warning(\n 'attribute \"' + d + '\" missed quot(\")!'\n ),\n a(h, d.replace(/&#?\\w+;/g, r), e))\n : ((n.isHTML(s[\"\"]) &&\n d.match(/^(?:disabled|checked|selected)$/i)) ||\n o.warning(\n 'attribute \"' +\n d +\n '\" missed value!! \"' +\n d +\n '\" instead!!'\n ),\n a(d, d, e));\n break;\n case 3:\n throw new Error(\"attribute value missed!!\");\n }\n return l;\n case \"€\":\n u = \" \";\n default:\n if (u <= \" \")\n switch (c) {\n case 0:\n i.setTagName(t.slice(e, l)), (c = 6);\n break;\n case 1:\n (h = t.slice(e, l)), (c = 2);\n break;\n case 4:\n var d = t.slice(e, l).replace(/&#?\\w+;/g, r);\n o.warning('attribute \"' + d + '\" missed quot(\")!!'),\n a(h, d, e);\n case 5:\n c = 6;\n }\n else\n switch (c) {\n case 2:\n i.tagName;\n (n.isHTML(s[\"\"]) &&\n h.match(/^(?:disabled|checked|selected)$/i)) ||\n o.warning(\n 'attribute \"' +\n h +\n '\" missed value!! \"' +\n h +\n '\" instead2!!'\n ),\n a(h, h, e),\n (e = l),\n (c = 1);\n break;\n case 5:\n o.warning('attribute space is required\"' + h + '\"!!');\n case 6:\n (c = 1), (e = l);\n break;\n case 3:\n (c = 4), (e = l);\n break;\n case 7:\n throw new Error(\n \"elements closed character '/' and '>' must be connected to\"\n );\n }\n }\n l++;\n }\n }\n function u(t, e, i) {\n for (var s = t.tagName, r = null, o = t.length; o--; ) {\n var a = t[o],\n h = a.qName,\n l = a.value;\n if ((f = h.indexOf(\":\")) > 0)\n var c = (a.prefix = h.slice(0, f)),\n u = h.slice(f + 1),\n d = \"xmlns\" === c && u;\n else (u = h), (c = null), (d = \"xmlns\" === h && \"\");\n (a.localName = u),\n !1 !== d &&\n (null == r && ((r = {}), p(i, (i = {}))),\n (i[d] = r[d] = l),\n (a.uri = n.XMLNS),\n e.startPrefixMapping(d, l));\n }\n for (o = t.length; o--; ) {\n (c = (a = t[o]).prefix) &&\n (\"xml\" === c && (a.uri = n.XML),\n \"xmlns\" !== c && (a.uri = i[c || \"\"]));\n }\n var f;\n (f = s.indexOf(\":\")) > 0\n ? ((c = t.prefix = s.slice(0, f)),\n (u = t.localName = s.slice(f + 1)))\n : ((c = null), (u = t.localName = s));\n var g = (t.uri = i[c || \"\"]);\n if ((e.startElement(g, u, s, t), !t.closed))\n return (t.currentNSMap = i), (t.localNSMap = r), !0;\n if ((e.endElement(g, u, s), r))\n for (c in r) e.endPrefixMapping(c);\n }\n function d(t, e, i, n, s) {\n if (/^(?:script|textarea)$/i.test(i)) {\n var r = t.indexOf(\"</\" + i + \">\", e),\n o = t.substring(e + 1, r);\n if (/[&<]/.test(o))\n return /^script$/i.test(i)\n ? (s.characters(o, 0, o.length), r)\n : ((o = o.replace(/&#?\\w+;/g, n)),\n s.characters(o, 0, o.length),\n r);\n }\n return e + 1;\n }\n function f(t, e, i, n) {\n var s = n[i];\n return (\n null == s &&\n ((s = t.lastIndexOf(\"</\" + i + \">\")) < e &&\n (s = t.lastIndexOf(\"</\" + i)),\n (n[i] = s)),\n s < e\n );\n }\n function p(t, e) {\n for (var i in t) e[i] = t[i];\n }\n function g(t, e, i, n) {\n switch (t.charAt(e + 2)) {\n case \"-\":\n return \"-\" === t.charAt(e + 3)\n ? (s = t.indexOf(\"--\\x3e\", e + 4)) > e\n ? (i.comment(t, e + 4, s - e - 4), s + 3)\n : (n.error(\"Unclosed comment\"), -1)\n : -1;\n default:\n if (\"CDATA[\" == t.substr(e + 3, 6)) {\n var s = t.indexOf(\"]]>\", e + 9);\n return (\n i.startCDATA(),\n i.characters(t, e + 9, s - e - 9),\n i.endCDATA(),\n s + 3\n );\n }\n var r = (function (t, e) {\n var i,\n n = [],\n s = /'[^']+'|\"[^\"]+\"|[^\\s<>\\/=]+=?|(\\/?\\s*>|<)/g;\n (s.lastIndex = e), s.exec(t);\n for (; (i = s.exec(t)); ) if ((n.push(i), i[1])) return n;\n })(t, e),\n o = r.length;\n if (o > 1 && /!doctype/i.test(r[0][0])) {\n var a = r[1][0],\n h = !1,\n l = !1;\n o > 3 &&\n (/^public$/i.test(r[2][0])\n ? ((h = r[3][0]), (l = o > 4 && r[4][0]))\n : /^system$/i.test(r[2][0]) && (l = r[3][0]));\n var c = r[o - 1];\n return (\n i.startDTD(a, h, l), i.endDTD(), c.index + c[0].length\n );\n }\n }\n return -1;\n }\n function m(t, e, i) {\n var n = t.indexOf(\"?>\", e);\n if (n) {\n var s = t.substring(e, n).match(/^<\\?(\\S*)\\s*([\\s\\S]*?)\\s*$/);\n if (s) {\n s[0].length;\n return i.processingInstruction(s[1], s[2]), n + 2;\n }\n return -1;\n }\n return -1;\n }\n function v() {\n this.attributeNames = {};\n }\n (a.prototype = new Error()),\n (a.prototype.name = a.name),\n (h.prototype = {\n parse: function (t, e, i) {\n var s = this.domBuilder;\n s.startDocument(),\n p(e, (e = {})),\n (function (t, e, i, s, r) {\n function o(t) {\n var e = t.slice(1, -1);\n return e in i\n ? i[e]\n : \"#\" === e.charAt(0)\n ? (function (t) {\n if (t > 65535) {\n var e = 55296 + ((t -= 65536) >> 10),\n i = 56320 + (1023 & t);\n return String.fromCharCode(e, i);\n }\n return String.fromCharCode(t);\n })(parseInt(e.substr(1).replace(\"x\", \"0x\")))\n : (r.error(\"entity not found:\" + t), t);\n }\n function h(e) {\n if (e > N) {\n var i = t.substring(N, e).replace(/&#?\\w+;/g, o);\n x && p(N), s.characters(i, 0, e - N), (N = e);\n }\n }\n function p(e, i) {\n for (; e >= b && (i = w.exec(t)); )\n (y = i.index), (b = y + i[0].length), x.lineNumber++;\n x.columnNumber = e - y + 1;\n }\n var y = 0,\n b = 0,\n w = /.*(?:\\r\\n?|\\n)|.*$/g,\n x = s.locator,\n E = [{ currentNSMap: e }],\n S = {},\n N = 0;\n for (;;) {\n try {\n var _ = t.indexOf(\"<\", N);\n if (_ < 0) {\n if (!t.substr(N).match(/^\\s*$/)) {\n var T = s.doc,\n C = T.createTextNode(t.substr(N));\n T.appendChild(C), (s.currentElement = C);\n }\n return;\n }\n switch ((_ > N && h(_), t.charAt(_ + 1))) {\n case \"/\":\n var O = t.indexOf(\">\", _ + 3),\n I = t\n .substring(_ + 2, O)\n .replace(/[ \\t\\n\\r]+$/g, \"\"),\n R = E.pop();\n O < 0\n ? ((I = t\n .substring(_ + 2)\n .replace(/[\\s<].*/, \"\")),\n r.error(\n \"end tag name: \" +\n I +\n \" is not complete:\" +\n R.tagName\n ),\n (O = _ + 1 + I.length))\n : I.match(/\\s</) &&\n ((I = I.replace(/[\\s<].*/, \"\")),\n r.error(\n \"end tag name: \" + I + \" maybe not complete\"\n ),\n (O = _ + 1 + I.length));\n var k = R.localNSMap,\n A = R.tagName == I;\n if (\n A ||\n (R.tagName &&\n R.tagName.toLowerCase() == I.toLowerCase())\n ) {\n if ((s.endElement(R.uri, R.localName, I), k))\n for (var L in k) s.endPrefixMapping(L);\n A ||\n r.fatalError(\n \"end tag name: \" +\n I +\n \" is not match the current start tagName:\" +\n R.tagName\n );\n } else E.push(R);\n O++;\n break;\n case \"?\":\n x && p(_), (O = m(t, _, s));\n break;\n case \"!\":\n x && p(_), (O = g(t, _, s, r));\n break;\n default:\n x && p(_);\n var j = new v(),\n D = E[E.length - 1].currentNSMap,\n P = ((O = c(t, _, j, D, o, r)), j.length);\n if (\n (!j.closed &&\n f(t, O, j.tagName, S) &&\n ((j.closed = !0),\n i.nbsp ||\n r.warning(\"unclosed xml attribute\")),\n x && P)\n ) {\n for (var M = l(x, {}), z = 0; z < P; z++) {\n var B = j[z];\n p(B.offset), (B.locator = l(x, {}));\n }\n (s.locator = M),\n u(j, s, D) && E.push(j),\n (s.locator = x);\n } else u(j, s, D) && E.push(j);\n n.isHTML(j.uri) && !j.closed\n ? (O = d(t, O, j.tagName, o, s))\n : O++;\n }\n } catch (t) {\n if (t instanceof a) throw t;\n r.error(\"element parse error: \" + t), (O = -1);\n }\n O > N ? (N = O) : h(Math.max(_, N) + 1);\n }\n })(t, e, i, s, this.errorHandler),\n s.endDocument();\n },\n }),\n (v.prototype = {\n setTagName: function (t) {\n if (!o.test(t)) throw new Error(\"invalid tagName:\" + t);\n this.tagName = t;\n },\n addValue: function (t, e, i) {\n if (!o.test(t)) throw new Error(\"invalid attribute:\" + t);\n (this.attributeNames[t] = this.length),\n (this[this.length++] = { qName: t, value: e, offset: i });\n },\n length: 0,\n getLocalName: function (t) {\n return this[t].localName;\n },\n getLocator: function (t) {\n return this[t].locator;\n },\n getQName: function (t) {\n return this[t].qName;\n },\n getURI: function (t) {\n return this[t].uri;\n },\n getValue: function (t) {\n return this[t].value;\n },\n }),\n (e.XMLReader = h),\n (e.ParseError = a);\n },\n function (t, e, i) {\n \"use strict\";\n function n(t) {\n return document.createElementNS(\"http://www.w3.org/2000/svg\", t);\n }\n Object.defineProperty(e, \"__esModule\", { value: !0 }),\n (e.createElement = n),\n (e.default = { createElement: n });\n },\n function (t, e, i) {\n \"use strict\";\n function n(t, e) {\n function i(i) {\n for (var n = e.length - 1; n >= 0; n--) {\n var o = e[n],\n a = i.clientX,\n h = i.clientY;\n if (\n (i.touches &&\n i.touches.length &&\n ((a = i.touches[0].clientX), (h = i.touches[0].clientY)),\n r(o, t, a, h))\n ) {\n o.dispatchEvent(s(i));\n break;\n }\n }\n }\n if (\"iframe\" === t.nodeName || \"IFRAME\" === t.nodeName)\n try {\n this.target = t.contentDocument;\n } catch (e) {\n this.target = t;\n }\n else this.target = t;\n for (\n var n = [\"mouseup\", \"mousedown\", \"click\", \"touchstart\"], o = 0;\n o < n.length;\n o++\n ) {\n var a = n[o];\n this.target.addEventListener(\n a,\n function (t) {\n return i(t);\n },\n !1\n );\n }\n }\n function s(t) {\n var e = Object.assign({}, t, { bubbles: !1 });\n try {\n return new MouseEvent(t.type, e);\n } catch (n) {\n var i = document.createEvent(\"MouseEvents\");\n return (\n i.initMouseEvent(\n t.type,\n !1,\n e.cancelable,\n e.view,\n e.detail,\n e.screenX,\n e.screenY,\n e.clientX,\n e.clientY,\n e.ctrlKey,\n e.altKey,\n e.shiftKey,\n e.metaKey,\n e.button,\n e.relatedTarget\n ),\n i\n );\n }\n }\n function r(t, e, i, n) {\n var s = e.getBoundingClientRect();\n function r(t, e, i) {\n var n = t.top - s.top,\n r = t.left - s.left,\n o = n + t.height,\n a = r + t.width;\n return n <= i && r <= e && o > i && a > e;\n }\n if (!r(t.getBoundingClientRect(), i, n)) return !1;\n for (var o = t.getClientRects(), a = 0, h = o.length; a < h; a++)\n if (r(o[a], i, n)) return !0;\n return !1;\n }\n Object.defineProperty(e, \"__esModule\", { value: !0 }),\n (e.proxyMouse = n),\n (e.clone = s),\n (e.default = { proxyMouse: n });\n },\n function (t, e, i) {\n var n = i(26);\n t.exports = function () {\n return n.Date.now();\n };\n },\n function (t, e, i) {\n (function (e) {\n var i = \"object\" == typeof e && e && e.Object === Object && e;\n t.exports = i;\n }).call(this, i(17));\n },\n function (t, e, i) {\n var n = i(54),\n s = i(19),\n r = i(56),\n o = /^[-+]0x[0-9a-f]+$/i,\n a = /^0b[01]+$/i,\n h = /^0o[0-7]+$/i,\n l = parseInt;\n t.exports = function (t) {\n if (\"number\" == typeof t) return t;\n if (r(t)) return NaN;\n if (s(t)) {\n var e = \"function\" == typeof t.valueOf ? t.valueOf() : t;\n t = s(e) ? e + \"\" : e;\n }\n if (\"string\" != typeof t) return 0 === t ? t : +t;\n t = n(t);\n var i = a.test(t);\n return i || h.test(t)\n ? l(t.slice(2), i ? 2 : 8)\n : o.test(t)\n ? NaN\n : +t;\n };\n },\n function (t, e, i) {\n var n = i(55),\n s = /^\\s+/;\n t.exports = function (t) {\n return t ? t.slice(0, n(t) + 1).replace(s, \"\") : t;\n };\n },\n function (t, e) {\n var i = /\\s/;\n t.exports = function (t) {\n for (var e = t.length; e-- && i.test(t.charAt(e)); );\n return e;\n };\n },\n function (t, e, i) {\n var n = i(57),\n s = i(60);\n t.exports = function (t) {\n return (\n \"symbol\" == typeof t || (s(t) && \"[object Symbol]\" == n(t))\n );\n };\n },\n function (t, e, i) {\n var n = i(27),\n s = i(58),\n r = i(59),\n o = n ? n.toStringTag : void 0;\n t.exports = function (t) {\n return null == t\n ? void 0 === t\n ? \"[object Undefined]\"\n : \"[object Null]\"\n : o && o in Object(t)\n ? s(t)\n : r(t);\n };\n },\n function (t, e, i) {\n var n = i(27),\n s = Object.prototype,\n r = s.hasOwnProperty,\n o = s.toString,\n a = n ? n.toStringTag : void 0;\n t.exports = function (t) {\n var e = r.call(t, a),\n i = t[a];\n try {\n t[a] = void 0;\n var n = !0;\n } catch (t) {}\n var s = o.call(t);\n return n && (e ? (t[a] = i) : delete t[a]), s;\n };\n },\n function (t, e) {\n var i = Object.prototype.toString;\n t.exports = function (t) {\n return i.call(t);\n };\n },\n function (t, e) {\n t.exports = function (t) {\n return null != t && \"object\" == typeof t;\n };\n },\n ]).default;\n });\n </script>\n <script>\n (function () {\n const viewer = document.getElementById(\"viewer\");\n const DEFAULT_FONT_SIZE = 16;\n const TEXT_PAGE_CHUNK = 1600;\n\n let currentType = null;\n let book = null;\n let rendition = null;\n let spineItems = [];\n let textPages = [];\n let textContainer = null;\n let currentPage = 1;\n let pageCount = 0;\n let zoom = 1.0;\n\n const sendMessage = (payload) => {\n if (\n window.ReactNativeWebView &&\n window.ReactNativeWebView.postMessage\n ) {\n window.ReactNativeWebView.postMessage(JSON.stringify(payload));\n return;\n }\n if (window.parent && window.parent !== window) {\n window.parent.postMessage(payload, \"*\");\n }\n };\n\n const sendResponse = (id, ok, data, error) => {\n sendMessage({ type: \"response\", id, ok, data, error });\n };\n\n const sendState = (extra) => {\n sendMessage({\n type: \"state\",\n payload: {\n pageCount,\n currentPage,\n zoom,\n ...(extra || {}),\n },\n });\n };\n\n const sendEvent = (name, payload) => {\n sendMessage({ type: \"event\", name, payload });\n };\n\n const log = (...args) => {\n sendEvent(\"RUNTIME_LOG\", {\n message: args.map((value) => String(value)).join(\" \"),\n });\n };\n\n const reportError = (error, context) => {\n const message =\n error && error.message ? error.message : String(error);\n const stack = error && error.stack ? error.stack : null;\n sendEvent(\"RUNTIME_ERROR\", { message, context, stack });\n };\n\n const EPUB_OPEN_TIMEOUT_MS = 180000;\n const EPUB_READY_TIMEOUT_MS = 180000;\n const EPUB_DISPLAY_TIMEOUT_MS = 30000;\n\n const withTimeout = async (promise, ms, label) => {\n let timer = null;\n try {\n return await Promise.race([\n promise,\n new Promise((_, reject) => {\n timer = setTimeout(\n () => reject(new Error(`Timeout: ${label}`)),\n ms\n );\n }),\n ]);\n } finally {\n if (timer) {\n clearTimeout(timer);\n }\n }\n };\n\n const shouldIgnoreError = (error) => {\n const message =\n error && error.message ? error.message : String(error || \"\");\n return message.includes(\"ResizeObserver loop\");\n };\n\n window.addEventListener(\"error\", (event) => {\n const error = event.error || event.message;\n if (shouldIgnoreError(error)) return;\n reportError(error, \"window.error\");\n });\n\n window.addEventListener(\"unhandledrejection\", (event) => {\n if (shouldIgnoreError(event.reason)) return;\n reportError(event.reason, \"unhandledrejection\");\n });\n\n const clearViewer = () => {\n while (viewer.firstChild) {\n viewer.removeChild(viewer.firstChild);\n }\n };\n\n const decodeBase64 = (value) => {\n const clean = value.replace(/\\s/g, \"\");\n const binary = atob(clean);\n const len = binary.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i += 1) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n };\n\n const decodeBase64ToText = (value) => {\n const bytes = decodeBase64(value);\n return new TextDecoder(\"utf-8\").decode(bytes);\n };\n\n const fetchUriAsArrayBuffer = async (uri) => {\n const response = await fetch(uri);\n const ok = response.ok || response.status === 0;\n if (!ok) {\n throw new Error(\n \"Failed to fetch epub uri (\" + response.status + \")\"\n );\n }\n if (typeof response.arrayBuffer === \"function\") {\n return response.arrayBuffer();\n }\n const blob = await response.blob();\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = () =>\n reject(new Error(\"Failed to read epub blob\"));\n reader.onload = () => resolve(reader.result);\n reader.readAsArrayBuffer(blob);\n });\n };\n\n const normalizeHref = (href) => {\n if (!href) return \"\";\n return href.split(\"#\")[0];\n };\n\n const getSpineIndexByHref = (href) => {\n const normalized = normalizeHref(href);\n if (!normalized) return -1;\n return spineItems.findIndex(\n (item) => normalizeHref(item.href) === normalized\n );\n };\n\n const buildOutline = async () => {\n if (!book || !book.loaded || !book.loaded.navigation) return [];\n const nav = await book.loaded.navigation;\n const toc = nav && nav.toc ? nav.toc : [];\n\n const mapItem = (item) => {\n const title = item.label || item.title || \"\";\n const pageIndex = getSpineIndexByHref(item.href || \"\");\n const children = Array.isArray(item.subitems)\n ? item.subitems.map(mapItem)\n : [];\n const outlineItem = { title, pageIndex };\n if (children.length > 0) outlineItem.children = children;\n return outlineItem;\n };\n\n return toc.map(mapItem);\n };\n\n const applyEpubZoom = () => {\n if (!rendition || !rendition.themes) return;\n const fontSize = `${Math.round(zoom * 100)}%`;\n if (typeof rendition.themes.fontSize === \"function\") {\n rendition.themes.fontSize(fontSize);\n } else if (typeof rendition.themes.override === \"function\") {\n rendition.themes.override(\"font-size\", fontSize);\n }\n };\n\n const applyTextZoom = () => {\n if (!textContainer) return;\n const fontSize = Math.max(12, Math.round(DEFAULT_FONT_SIZE * zoom));\n textContainer.style.fontSize = `${fontSize}px`;\n };\n\n const renderTextPage = (pageIndex) => {\n const text = textPages[pageIndex] || \"\";\n if (!textContainer) {\n textContainer = document.createElement(\"div\");\n textContainer.style.padding = \"24px\";\n textContainer.style.lineHeight = \"1.6\";\n textContainer.style.whiteSpace = \"pre-wrap\";\n textContainer.style.fontFamily =\n 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace';\n viewer.appendChild(textContainer);\n }\n textContainer.textContent = text;\n applyTextZoom();\n };\n\n const paginateText = (text) => {\n const pages = [];\n for (let i = 0; i < text.length; i += TEXT_PAGE_CHUNK) {\n pages.push(text.slice(i, i + TEXT_PAGE_CHUNK));\n }\n return pages.length > 0 ? pages : [\"\"];\n };\n\n const loadText = async (source) => {\n let text = \"\";\n if (source.kind === \"uri\") {\n const res = await fetch(source.uri);\n text = await res.text();\n } else if (source.kind === \"base64\") {\n text = decodeBase64ToText(source.data);\n } else if (source.kind === \"text\") {\n text = source.text || \"\";\n }\n\n clearViewer();\n textPages = paginateText(text);\n pageCount = textPages.length;\n currentPage = 1;\n textContainer = null;\n renderTextPage(0);\n return { pageCount };\n };\n\n const loadEpub = async (source) => {\n log(\"epub.load:start\", source.kind);\n if (rendition && typeof rendition.destroy === \"function\") {\n rendition.destroy();\n }\n if (book && typeof book.destroy === \"function\") {\n book.destroy();\n }\n\n if (source.kind === \"base64\") {\n book = ePub();\n await withTimeout(\n book.open(source.data, \"base64\"),\n EPUB_OPEN_TIMEOUT_MS,\n \"epub.open\"\n );\n } else if (source.kind === \"uri\") {\n log(\"epub.load:fetch-uri\");\n const data = await withTimeout(\n fetchUriAsArrayBuffer(source.uri),\n EPUB_OPEN_TIMEOUT_MS,\n \"epub.fetch\"\n );\n const input = data instanceof Uint8Array ? data.buffer : data;\n book = ePub(input, { openAs: \"epub\" });\n } else {\n let data = null;\n if (source.kind === \"text\") {\n const encoder = new TextEncoder();\n data = encoder.encode(source.text || \"\").buffer;\n }\n const input = data instanceof Uint8Array ? data.buffer : data;\n book = ePub(input, { openAs: \"epub\" });\n }\n if (book && book.opened) {\n await withTimeout(book.opened, EPUB_OPEN_TIMEOUT_MS, \"epub.opened\");\n }\n await withTimeout(book.ready, EPUB_READY_TIMEOUT_MS, \"epub.ready\");\n log(\"epub.load:ready\");\n\n spineItems = book.spine && book.spine.items ? book.spine.items : [];\n pageCount = spineItems.length;\n currentPage = 1;\n\n clearViewer();\n rendition = book.renderTo(viewer, {\n width: \"100%\",\n height: \"100%\",\n flow: \"paginated\",\n spread: \"none\",\n });\n\n if (rendition && rendition.hooks && rendition.hooks.content) {\n rendition.hooks.content.register((contents) => {\n const frame =\n contents && contents.document\n ? contents.document.defaultView.frameElement\n : null;\n if (frame) {\n frame.setAttribute(\n \"sandbox\",\n \"allow-scripts allow-same-origin\"\n );\n }\n });\n }\n\n if (rendition && typeof rendition.on === \"function\") {\n rendition.on(\"selected\", (cfiRange, contents) => {\n const selection =\n contents && contents.window\n ? contents.window.getSelection()\n : null;\n const text = selection ? selection.toString().trim() : \"\";\n if (text) {\n sendEvent(\"TEXT_SELECTED\", {\n text,\n pageIndex: Math.max(0, currentPage - 1),\n });\n }\n if (\n rendition &&\n rendition.annotations &&\n typeof rendition.annotations.remove === \"function\"\n ) {\n rendition.annotations.remove(cfiRange, \"highlight\");\n }\n });\n }\n\n try {\n await withTimeout(\n displayEpubPage(0),\n EPUB_DISPLAY_TIMEOUT_MS,\n \"epub.display\"\n );\n log(\"epub.load:displayed\");\n } catch (err) {\n reportError(err, \"epub.display\");\n }\n applyEpubZoom();\n\n const outline = await buildOutline();\n log(\"epub.load:outline\", outline.length);\n return { pageCount, outline };\n };\n\n const displayEpubPage = async (pageIndex) => {\n if (!rendition) return;\n const item = spineItems[pageIndex];\n if (!item) return;\n const target = item.href || item.idref || item.cfiBase || pageIndex;\n await rendition.display(target);\n currentPage = pageIndex + 1;\n sendState();\n };\n\n const getTextContent = async (pageIndex) => {\n if (currentType === \"text\") {\n const text = textPages[pageIndex] || \"\";\n return [\n {\n str: text,\n dir: \"ltr\",\n width: 0,\n height: 0,\n transform: [1, 0, 0, 1, 0, 0],\n fontName: \"default\",\n },\n ];\n }\n\n if (currentType === \"epub\") {\n if (!book) return [];\n const item = spineItems[pageIndex];\n if (!item) return [];\n try {\n const section = book.spine.get(item.idref || item.href);\n const text =\n section && typeof section.text === \"function\"\n ? await section.text()\n : \"\";\n if (!text) return [];\n return [\n {\n str: text,\n dir: \"ltr\",\n width: 0,\n height: 0,\n transform: [1, 0, 0, 1, 0, 0],\n fontName: \"default\",\n },\n ];\n } catch (err) {\n return [];\n }\n }\n\n return [];\n };\n\n const getPageText = async (pageIndex) => {\n const items = await getTextContent(pageIndex);\n return items.map((item) => item.str).join(\" \");\n };\n\n const searchText = async (query) => {\n const normalized = query.toLowerCase();\n const results = [];\n\n for (let i = 0; i < pageCount; i += 1) {\n const text = await getPageText(i);\n if (!text) continue;\n const lower = text.toLowerCase();\n let pos = lower.indexOf(normalized, 0);\n let matchIndex = 0;\n while (pos !== -1) {\n const start = Math.max(0, pos - 20);\n const end = Math.min(text.length, pos + query.length + 20);\n results.push({\n pageIndex: i,\n text: text.substring(start, end),\n matchIndex,\n });\n matchIndex += 1;\n pos = lower.indexOf(normalized, pos + 1);\n }\n }\n\n return results;\n };\n\n const getPageDimensions = () => ({\n width: viewer.clientWidth || 0,\n height: viewer.clientHeight || 0,\n });\n\n const getPageIndex = (dest) => {\n if (!dest) return null;\n if (typeof dest === \"string\") return getSpineIndexByHref(dest);\n if (typeof dest !== \"object\") return null;\n if (dest.kind === \"href\") return getSpineIndexByHref(dest.value);\n if (dest.kind === \"pageIndex\") return dest.value;\n if (dest.kind === \"pageNumber\") return Math.max(0, dest.value - 1);\n return null;\n };\n\n const selectText = async (pageIndex) => {\n const text = await getPageText(pageIndex);\n if (!text) return null;\n return {\n text,\n rects: [{ x: 0, y: 0, width: 1, height: 1 }],\n };\n };\n\n const applyZoom = () => {\n if (currentType === \"text\") {\n applyTextZoom();\n } else if (currentType === \"epub\") {\n applyEpubZoom();\n }\n };\n\n const handleCommand = async (message) => {\n const { id, kind, payload } = message;\n log(\"command\", kind);\n\n try {\n if (kind === \"load\") {\n currentType = payload.type;\n zoom = 1.0;\n\n if (currentType === \"text\") {\n const result = await loadText(payload.source);\n sendState();\n sendResponse(id, true, result);\n return;\n }\n\n if (currentType === \"epub\") {\n const result = await loadEpub(payload.source);\n sendState({ outline: result.outline || [] });\n sendResponse(id, true, result);\n return;\n }\n\n throw new Error(\"Unsupported document type\");\n }\n\n if (kind === \"go-to-page\") {\n const page = Math.max(1, payload.page || 1);\n if (currentType === \"text\") {\n currentPage = page;\n renderTextPage(page - 1);\n sendState();\n } else if (currentType === \"epub\") {\n await displayEpubPage(page - 1);\n }\n sendResponse(id, true, { currentPage });\n return;\n }\n\n if (kind === \"set-zoom\") {\n zoom = Math.max(0.5, Math.min(4.0, payload.zoom || 1.0));\n applyZoom();\n sendState();\n sendResponse(id, true, { zoom });\n return;\n }\n\n if (kind === \"set-rotation\") {\n sendResponse(id, true, {});\n return;\n }\n\n if (kind === \"get-text-content\") {\n const items = await getTextContent(payload.pageIndex || 0);\n sendResponse(id, true, items);\n return;\n }\n\n if (kind === \"get-page-dimensions\") {\n sendResponse(id, true, getPageDimensions());\n return;\n }\n\n if (kind === \"search-text\") {\n const results = await searchText(payload.query || \"\");\n sendResponse(id, true, results);\n return;\n }\n\n if (kind === \"select-text\") {\n const selection = await selectText(payload.pageIndex || 0);\n sendResponse(id, true, selection);\n return;\n }\n\n if (kind === \"get-outline\") {\n const outline = await buildOutline();\n sendResponse(id, true, outline);\n return;\n }\n\n if (kind === \"get-page-index\") {\n const index = getPageIndex(payload.dest);\n sendResponse(id, true, index);\n return;\n }\n\n if (kind === \"destroy\") {\n clearViewer();\n sendResponse(id, true, {});\n return;\n }\n\n sendResponse(id, false, null, \"Unknown command\");\n } catch (err) {\n sendResponse(\n id,\n false,\n null,\n err && err.message ? err.message : String(err)\n );\n }\n };\n\n const onMessage = (event) => {\n let message = null;\n const raw = event && typeof event === \"object\" ? event.data : null;\n\n if (raw && typeof raw === \"object\" && raw.kind && raw.id) {\n message = raw;\n } else if (typeof raw === \"string\") {\n if (raw.startsWith(\"setImmediate$\")) {\n return;\n }\n const trimmed = raw.trim();\n if (\n !trimmed ||\n (!trimmed.startsWith(\"{\") && !trimmed.startsWith(\"[\"))\n ) {\n return;\n }\n try {\n message = JSON.parse(trimmed);\n } catch (err) {\n sendEvent(\"RUNTIME_ERROR\", {\n message: \"Failed to parse message\",\n context: \"runtime.onMessage\",\n stack: err && err.stack ? err.stack : null,\n preview: trimmed.slice(0, 200),\n });\n return;\n }\n } else {\n return;\n }\n\n if (!message || !message.kind || message.id == null) return;\n handleCommand(message);\n };\n\n window.addEventListener(\"message\", onMessage);\n document.addEventListener(\"message\", onMessage);\n\n sendMessage({ type: \"ready\" });\n })();\n </script>\n </body>\n</html>\n","export { default as Viewer } from './components/Viewer';\nexport { default as PageRenderer } from './components/PageRenderer';\nexport { default as Topbar } from './components/Topbar';\nexport { default as ToolDock } from './components/ToolDock';\nexport { default as RightSheet } from './components/RightSheet';\nexport { default as AnnotationEditor } from './components/AnnotationEditor';\nexport { default as BottomBar } from './components/BottomBar';\nexport { default as SettingsSheet } from './components/SettingsSheet';\nexport { default as CoverPreview } from './components/CoverPreview';\n","import React, {\n useMemo,\n useRef,\n useEffect,\n useCallback,\n useState,\n} from \"react\";\nimport {\n FlatList,\n ScrollView,\n StyleSheet,\n View,\n useWindowDimensions,\n type ViewToken,\n} from \"react-native\";\nimport { useViewerStore } from \"@papyrus-sdk/core\";\nimport { DocumentEngine } from \"@papyrus-sdk/types\";\nimport PageRenderer from \"./PageRenderer\";\nimport WebViewViewer from \"./WebViewViewer\";\nimport {\n createBurstMonitor,\n createRenderCounter,\n createScrollPerfMonitor,\n isMobilePerfEnabled,\n logPerfEvent,\n perfNow,\n sampleMemory,\n} from \"../perf/mobilePerf\";\n\nexport interface ViewerProps {\n engine: DocumentEngine;\n virtualWindowSize?: number;\n maxToRenderPerBatch?: number;\n removeClippedSubviews?: boolean;\n}\n\nconst LIST_TOP_PADDING = 18;\nconst LIST_BOTTOM_PADDING = 120;\nconst CONTINUOUS_PAGE_SPACING = 28;\nconst DOUBLE_PAGE_SPACING = 20;\nconst DEFAULT_PAGE_ASPECT_RATIO = 0.77;\nconst FLATLIST_WINDOW_SIZE = 8;\nconst FLATLIST_MAX_TO_RENDER_PER_BATCH = 6;\nconst FLATLIST_UPDATE_CELLS_BATCHING_PERIOD = 40;\nconst FLATLIST_INITIAL_NUM_TO_RENDER = 6;\nconst SCROLL_RETRY_DELAY_MS = 120;\nconst SCROLL_MAX_RETRIES = 10;\nconst MOBILE_CHROME_HIDE_DELTA = 28;\nconst MOBILE_CHROME_SHOW_DELTA = 22;\nconst MOBILE_CHROME_SHOW_DELAY_MS = 180;\nconst MOBILE_CHROME_TOP_RESET = 16;\n\nconst resolvePositiveInt = (\n value: number | undefined,\n fallback: number,\n min: number,\n max: number\n) => {\n if (typeof value !== \"number\" || !Number.isFinite(value)) return fallback;\n const rounded = Math.round(value);\n return Math.max(min, Math.min(max, rounded));\n};\n\nconst Viewer: React.FC<ViewerProps> = ({\n engine,\n virtualWindowSize,\n maxToRenderPerBatch,\n removeClippedSubviews,\n}) => {\n const pageCount = useViewerStore((state) => state.pageCount);\n const currentPage = useViewerStore((state) => state.currentPage);\n const scrollToPageSignal = useViewerStore(\n (state) => state.scrollToPageSignal\n );\n const setDocumentState = useViewerStore((state) => state.setDocumentState);\n const mobileChromeVisible = useViewerStore(\n (state) => state.mobileChromeVisible\n );\n const uiTheme = useViewerStore((state) => state.uiTheme);\n const viewMode = useViewerStore((state) => state.viewMode);\n const zoom = useViewerStore((state) => state.zoom);\n const listRef = useRef<FlatList<any>>(null);\n const isDark = uiTheme === \"dark\";\n const { width: windowWidth } = useWindowDimensions();\n const isDouble = viewMode === \"double\";\n const isSingle = viewMode === \"single\";\n const renderTargetType = engine.getRenderTargetType?.() ?? \"canvas\";\n const isWebView = renderTargetType === \"webview\";\n const perfEnabled = isMobilePerfEnabled();\n const mountedAtRef = useRef(perfNow());\n const readyLoggedRef = useRef(false);\n const renderCounterRef = useRef(createRenderCounter(\"Viewer\", \"render\", 40));\n const setStateBurstRef = useRef(\n createBurstMonitor(\"Viewer\", \"setDocumentState\", 12, 800)\n );\n const viewableBurstRef = useRef(\n createBurstMonitor(\"Viewer\", \"onViewableItemsChanged\", 12, 800)\n );\n const scrollMonitorRef = useRef(createScrollPerfMonitor(\"Viewer\"));\n const dimensionsCacheRef = useRef<\n Map<number, { width: number; height: number }>\n >(new Map());\n const dimensionsPendingRef = useRef<Set<number>>(new Set());\n const layoutRefreshTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(\n null\n );\n const pendingScrollIndexRef = useRef<number | null>(null);\n const pendingScrollAttemptsRef = useRef(0);\n const pendingScrollTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(\n null\n );\n const pendingChromeShowTimeoutRef = useRef<ReturnType<\n typeof setTimeout\n > | null>(null);\n const chromeVisibleRef = useRef(mobileChromeVisible);\n const lastScrollOffsetYRef = useRef(0);\n const scrollDownAccumRef = useRef(0);\n const scrollUpAccumRef = useRef(0);\n const [layoutRevision, setLayoutRevision] = useState(0);\n const resolvedWindowSize = useMemo(\n () => resolvePositiveInt(virtualWindowSize, FLATLIST_WINDOW_SIZE, 2, 30),\n [virtualWindowSize]\n );\n const resolvedMaxToRenderPerBatch = useMemo(\n () =>\n resolvePositiveInt(\n maxToRenderPerBatch,\n FLATLIST_MAX_TO_RENDER_PER_BATCH,\n 1,\n 30\n ),\n [maxToRenderPerBatch]\n );\n const resolvedRemoveClippedSubviews = removeClippedSubviews ?? true;\n\n renderCounterRef.current({\n pageCount,\n currentPage,\n viewMode,\n renderTargetType,\n });\n\n const pages = useMemo(\n () => Array.from({ length: pageCount }).map((_, i) => i),\n [pageCount]\n );\n const rows = useMemo(() => {\n if (!isDouble) return [];\n const result: Array<{ left: number; right: number | null }> = [];\n for (let i = 0; i < pageCount; i += 2) {\n result.push({ left: i, right: i + 1 < pageCount ? i + 1 : null });\n }\n return result;\n }, [isDouble, pageCount]);\n\n const scheduleLayoutRefresh = useCallback(() => {\n if (layoutRefreshTimeoutRef.current) return;\n layoutRefreshTimeoutRef.current = setTimeout(() => {\n layoutRefreshTimeoutRef.current = null;\n setLayoutRevision((value) => value + 1);\n }, 120);\n }, []);\n\n const clearPendingScrollRetry = useCallback(() => {\n if (pendingScrollTimeoutRef.current) {\n clearTimeout(pendingScrollTimeoutRef.current);\n pendingScrollTimeoutRef.current = null;\n }\n }, []);\n\n const clearPendingScrollTarget = useCallback(() => {\n pendingScrollIndexRef.current = null;\n pendingScrollAttemptsRef.current = 0;\n clearPendingScrollRetry();\n }, [clearPendingScrollRetry]);\n\n const clearPendingChromeShow = useCallback(() => {\n if (pendingChromeShowTimeoutRef.current) {\n clearTimeout(pendingChromeShowTimeoutRef.current);\n pendingChromeShowTimeoutRef.current = null;\n }\n }, []);\n\n const scheduleScrollRetry = useCallback(\n (reason: string) => {\n const pendingIndex = pendingScrollIndexRef.current;\n if (pendingIndex === null) return;\n if (pendingScrollAttemptsRef.current >= SCROLL_MAX_RETRIES) {\n if (perfEnabled) {\n logPerfEvent(\"Viewer\", \"scroll.retry.giveup\", {\n reason,\n targetIndex: pendingIndex,\n attempts: pendingScrollAttemptsRef.current,\n });\n }\n clearPendingScrollTarget();\n return;\n }\n\n clearPendingScrollRetry();\n pendingScrollTimeoutRef.current = setTimeout(() => {\n pendingScrollTimeoutRef.current = null;\n const targetIndex = pendingScrollIndexRef.current;\n if (targetIndex === null) return;\n pendingScrollAttemptsRef.current += 1;\n listRef.current?.scrollToIndex({\n index: targetIndex,\n animated: false,\n viewPosition: 0,\n });\n if (perfEnabled) {\n logPerfEvent(\"Viewer\", \"scroll.retry\", {\n reason,\n targetIndex,\n attempt: pendingScrollAttemptsRef.current,\n });\n }\n }, SCROLL_RETRY_DELAY_MS);\n },\n [clearPendingScrollRetry, clearPendingScrollTarget, perfEnabled]\n );\n\n useEffect(\n () => () => {\n if (layoutRefreshTimeoutRef.current) {\n clearTimeout(layoutRefreshTimeoutRef.current);\n }\n clearPendingScrollRetry();\n clearPendingChromeShow();\n },\n [clearPendingChromeShow, clearPendingScrollRetry]\n );\n\n const ensurePageDimensions = useCallback(\n (pageIndex: number) => {\n if (pageIndex < 0 || pageIndex >= pageCount) return;\n if (dimensionsCacheRef.current.has(pageIndex)) return;\n if (dimensionsPendingRef.current.has(pageIndex)) return;\n\n dimensionsPendingRef.current.add(pageIndex);\n void engine\n .getPageDimensions(pageIndex)\n .then((dims) => {\n if (dims.width <= 0 || dims.height <= 0) return;\n const previous = dimensionsCacheRef.current.get(pageIndex);\n if (\n previous &&\n previous.width === dims.width &&\n previous.height === dims.height\n ) {\n return;\n }\n dimensionsCacheRef.current.set(pageIndex, {\n width: dims.width,\n height: dims.height,\n });\n scheduleLayoutRefresh();\n })\n .catch((error: unknown) => {\n if (!perfEnabled) return;\n logPerfEvent(\"Viewer\", \"pageDimensions.error\", {\n page: pageIndex + 1,\n message: error instanceof Error ? error.message : String(error),\n });\n })\n .finally(() => {\n dimensionsPendingRef.current.delete(pageIndex);\n });\n },\n [engine, pageCount, perfEnabled, scheduleLayoutRefresh]\n );\n\n const getPageAspectRatio = useCallback((pageIndex: number) => {\n const dims = dimensionsCacheRef.current.get(pageIndex);\n if (!dims || dims.width <= 0 || dims.height <= 0) {\n return DEFAULT_PAGE_ASPECT_RATIO;\n }\n return dims.width / dims.height;\n }, []);\n\n useEffect(() => {\n if (!perfEnabled) return;\n logPerfEvent(\"Viewer\", \"mount\", {\n viewMode,\n renderTargetType,\n virtualWindowSize: resolvedWindowSize,\n maxToRenderPerBatch: resolvedMaxToRenderPerBatch,\n removeClippedSubviews: resolvedRemoveClippedSubviews,\n });\n sampleMemory(\"Viewer\", \"mount\", { pageCount });\n return () => {\n logPerfEvent(\"Viewer\", \"unmount\");\n };\n }, [\n perfEnabled,\n renderTargetType,\n resolvedMaxToRenderPerBatch,\n resolvedRemoveClippedSubviews,\n resolvedWindowSize,\n viewMode,\n ]);\n\n useEffect(() => {\n if (!perfEnabled || readyLoggedRef.current || pageCount <= 0) return;\n readyLoggedRef.current = true;\n logPerfEvent(\"Viewer\", \"document.ready\", {\n pageCount,\n initialLoadMs: Math.round((perfNow() - mountedAtRef.current) * 100) / 100,\n });\n sampleMemory(\"Viewer\", \"document.ready\", { pageCount });\n }, [pageCount, perfEnabled]);\n\n useEffect(() => {\n if (isWebView || isSingle || pageCount <= 0) return;\n const warmupCount = Math.min(pageCount, 12);\n for (let i = 0; i < warmupCount; i += 1) {\n ensurePageDimensions(i);\n }\n }, [ensurePageDimensions, isSingle, isWebView, pageCount]);\n\n const setDocumentStateTracked = useCallback(\n (state: Parameters<typeof setDocumentState>[0], reason: string) => {\n if (perfEnabled) {\n setStateBurstRef.current({\n reason,\n keys: Object.keys(state).join(\",\"),\n });\n }\n setDocumentState(state);\n },\n [perfEnabled, setDocumentState]\n );\n\n useEffect(() => {\n chromeVisibleRef.current = mobileChromeVisible;\n }, [mobileChromeVisible]);\n\n const setMobileChromeVisible = useCallback(\n (visible: boolean, reason: string) => {\n if (chromeVisibleRef.current === visible) return;\n chromeVisibleRef.current = visible;\n setDocumentStateTracked({ mobileChromeVisible: visible }, reason);\n },\n [setDocumentStateTracked]\n );\n\n const resetMobileChromeTracking = useCallback(\n (showChrome: boolean, reason: string) => {\n lastScrollOffsetYRef.current = 0;\n scrollDownAccumRef.current = 0;\n scrollUpAccumRef.current = 0;\n clearPendingChromeShow();\n if (showChrome) {\n setMobileChromeVisible(true, reason);\n }\n },\n [clearPendingChromeShow, setMobileChromeVisible]\n );\n\n const trackMobileChromeByOffset = useCallback(\n (offsetY: number, reasonPrefix: string) => {\n if (isWebView) return;\n if (pageCount <= 0) return;\n\n const safeOffset = Math.max(0, offsetY);\n const delta = safeOffset - lastScrollOffsetYRef.current;\n lastScrollOffsetYRef.current = safeOffset;\n\n if (safeOffset <= MOBILE_CHROME_TOP_RESET) {\n scrollDownAccumRef.current = 0;\n scrollUpAccumRef.current = 0;\n clearPendingChromeShow();\n setMobileChromeVisible(true, `${reasonPrefix}.top`);\n return;\n }\n\n if (Math.abs(delta) < 1) return;\n\n if (delta > 0) {\n scrollDownAccumRef.current += delta;\n scrollUpAccumRef.current = 0;\n clearPendingChromeShow();\n if (\n scrollDownAccumRef.current >= MOBILE_CHROME_HIDE_DELTA &&\n chromeVisibleRef.current\n ) {\n scrollDownAccumRef.current = 0;\n setMobileChromeVisible(false, `${reasonPrefix}.hide`);\n }\n return;\n }\n\n scrollUpAccumRef.current += -delta;\n scrollDownAccumRef.current = 0;\n if (\n scrollUpAccumRef.current >= MOBILE_CHROME_SHOW_DELTA &&\n !chromeVisibleRef.current\n ) {\n if (!pendingChromeShowTimeoutRef.current) {\n pendingChromeShowTimeoutRef.current = setTimeout(() => {\n pendingChromeShowTimeoutRef.current = null;\n scrollUpAccumRef.current = 0;\n if (!chromeVisibleRef.current) {\n setMobileChromeVisible(true, `${reasonPrefix}.show`);\n }\n }, MOBILE_CHROME_SHOW_DELAY_MS);\n }\n }\n },\n [clearPendingChromeShow, isWebView, pageCount, setMobileChromeVisible]\n );\n\n useEffect(() => {\n resetMobileChromeTracking(true, \"mobileChrome.reset\");\n }, [isSingle, isWebView, pageCount, resetMobileChromeTracking]);\n\n useEffect(\n () => () => {\n setDocumentState({ mobileChromeVisible: true });\n },\n [setDocumentState]\n );\n\n const columnGap = 12;\n const horizontalPadding = 16;\n const columnWidth = isDouble\n ? (windowWidth - horizontalPadding * 2 - columnGap) / 2\n : windowWidth;\n\n const listLayoutMetrics = useMemo(() => {\n const offsets: number[] = [];\n const lengths: number[] = [];\n let offset = LIST_TOP_PADDING;\n\n if (isDouble) {\n const safeZoom = Math.max(zoom, 0.25);\n const pageWidth = columnWidth * 0.92 * safeZoom;\n const estimatedLength =\n pageWidth / DEFAULT_PAGE_ASPECT_RATIO + DOUBLE_PAGE_SPACING;\n\n for (let i = 0; i < rows.length; i += 1) {\n const row = rows[i];\n const leftRatio = getPageAspectRatio(row.left);\n const rightRatio =\n row.right === null ? leftRatio : getPageAspectRatio(row.right);\n const leftLength = pageWidth / leftRatio + DOUBLE_PAGE_SPACING;\n const rightLength = pageWidth / rightRatio + DOUBLE_PAGE_SPACING;\n const rowLength = Math.max(leftLength, rightLength);\n offsets.push(offset);\n lengths.push(rowLength);\n offset += rowLength;\n }\n\n return { offsets, lengths, estimatedLength };\n }\n\n const safeZoom = Math.max(zoom, 0.25);\n const pageWidth = windowWidth * 0.92 * safeZoom;\n const estimatedLength =\n pageWidth / DEFAULT_PAGE_ASPECT_RATIO + CONTINUOUS_PAGE_SPACING;\n\n for (let i = 0; i < pageCount; i += 1) {\n const ratio = getPageAspectRatio(i);\n const length = pageWidth / ratio + CONTINUOUS_PAGE_SPACING;\n offsets.push(offset);\n lengths.push(length);\n offset += length;\n }\n\n return { offsets, lengths, estimatedLength };\n }, [\n columnWidth,\n getPageAspectRatio,\n isDouble,\n layoutRevision,\n pageCount,\n rows,\n windowWidth,\n zoom,\n ]);\n\n const getFallbackOffsetForIndex = useCallback(\n (index: number) => {\n if (listLayoutMetrics.lengths.length === 0) {\n return LIST_TOP_PADDING;\n }\n const safeIndex = Math.max(\n 0,\n Math.min(index, listLayoutMetrics.lengths.length - 1)\n );\n const cachedOffset = listLayoutMetrics.offsets[safeIndex];\n if (typeof cachedOffset === \"number\") return cachedOffset;\n return LIST_TOP_PADDING + listLayoutMetrics.estimatedLength * safeIndex;\n },\n [listLayoutMetrics]\n );\n\n const getItemLayout = useCallback(\n (_: unknown, index: number) => {\n if (listLayoutMetrics.lengths.length === 0) {\n return {\n index,\n length: listLayoutMetrics.estimatedLength,\n offset: LIST_TOP_PADDING,\n };\n }\n\n const safeIndex = Math.max(\n 0,\n Math.min(index, listLayoutMetrics.lengths.length - 1)\n );\n\n if (isDouble) {\n const row = rows[safeIndex];\n if (row) {\n ensurePageDimensions(row.left);\n if (row.right !== null) {\n ensurePageDimensions(row.right);\n }\n }\n } else {\n ensurePageDimensions(safeIndex);\n }\n\n const cachedLength = listLayoutMetrics.lengths[safeIndex];\n const cachedOffset = listLayoutMetrics.offsets[safeIndex];\n\n return {\n index,\n length:\n typeof cachedLength === \"number\"\n ? cachedLength\n : listLayoutMetrics.estimatedLength,\n offset:\n typeof cachedOffset === \"number\"\n ? cachedOffset\n : LIST_TOP_PADDING + listLayoutMetrics.estimatedLength * safeIndex,\n };\n },\n [ensurePageDimensions, isDouble, listLayoutMetrics, rows]\n );\n\n useEffect(() => {\n if (isWebView) {\n clearPendingScrollTarget();\n if (scrollToPageSignal === null) return;\n if (pageCount === 0) return;\n if (scrollToPageSignal < 0 || scrollToPageSignal >= pageCount) return;\n const nextPage = scrollToPageSignal + 1;\n engine.goToPage(nextPage);\n setDocumentStateTracked(\n { currentPage: nextPage, scrollToPageSignal: null },\n \"scrollToPageSignal.webview\"\n );\n return;\n }\n\n if (scrollToPageSignal === null) return;\n if (pageCount === 0) return;\n if (scrollToPageSignal < 0 || scrollToPageSignal >= pageCount) return;\n if (isSingle) {\n clearPendingScrollTarget();\n setDocumentStateTracked(\n { currentPage: scrollToPageSignal + 1, scrollToPageSignal: null },\n \"scrollToPageSignal.single\"\n );\n return;\n }\n\n ensurePageDimensions(scrollToPageSignal);\n if (isDouble) {\n ensurePageDimensions(scrollToPageSignal - 1);\n ensurePageDimensions(scrollToPageSignal + 1);\n }\n\n const targetIndex = isDouble\n ? Math.floor(scrollToPageSignal / 2)\n : scrollToPageSignal;\n pendingScrollIndexRef.current = targetIndex;\n pendingScrollAttemptsRef.current = 0;\n clearPendingScrollRetry();\n setDocumentStateTracked(\n {\n currentPage: scrollToPageSignal + 1,\n scrollToPageSignal: null,\n },\n \"scrollToPageSignal.flatList\"\n );\n\n listRef.current?.scrollToIndex({\n index: targetIndex,\n animated: true,\n viewPosition: 0,\n });\n }, [\n clearPendingScrollRetry,\n clearPendingScrollTarget,\n ensurePageDimensions,\n scrollToPageSignal,\n pageCount,\n setDocumentStateTracked,\n isDouble,\n isSingle,\n isWebView,\n engine,\n ]);\n\n const onViewableItemsChanged = useCallback(\n ({ viewableItems }: { viewableItems: Array<ViewToken> }) => {\n if (perfEnabled) {\n viewableBurstRef.current({\n viewableCount: viewableItems.length,\n mode: isDouble ? \"double\" : \"continuous\",\n });\n }\n\n const pendingIndex = pendingScrollIndexRef.current;\n if (pendingIndex !== null) {\n const reachedTarget = viewableItems.some((token) => {\n if (isDouble) {\n const row = token.item as\n | { left: number; right: number | null }\n | undefined;\n if (!row) return false;\n if (row.left === pendingIndex) return true;\n return row.right === pendingIndex;\n }\n\n return token.index === pendingIndex;\n });\n\n if (reachedTarget) {\n if (perfEnabled) {\n logPerfEvent(\"Viewer\", \"scroll.retry.resolved\", {\n targetIndex: pendingIndex,\n attempts: pendingScrollAttemptsRef.current,\n });\n }\n clearPendingScrollTarget();\n }\n }\n\n const first = viewableItems[0];\n if (!first) return;\n if (isDouble) {\n const item = first.item as\n | { left: number; right: number | null }\n | undefined;\n if (!item) return;\n ensurePageDimensions(item.left);\n if (item.right !== null) {\n ensurePageDimensions(item.right);\n }\n const page = item.left + 1;\n if (page !== currentPage) {\n setDocumentStateTracked({ currentPage: page }, \"viewable.double\");\n }\n return;\n }\n\n if (first.index !== null && first.index !== undefined) {\n ensurePageDimensions(first.index);\n const page = first.index + 1;\n if (page !== currentPage) {\n setDocumentStateTracked({ currentPage: page }, \"viewable.continuous\");\n }\n }\n },\n [\n clearPendingScrollTarget,\n currentPage,\n ensurePageDimensions,\n isDouble,\n perfEnabled,\n setDocumentStateTracked,\n ]\n );\n\n const handleViewerScroll = useCallback(\n (\n event: {\n nativeEvent?: { contentOffset?: { y?: number }; timestamp?: unknown };\n },\n mode: \"single\" | \"continuous\"\n ) => {\n const offsetY = event.nativeEvent?.contentOffset?.y ?? 0;\n trackMobileChromeByOffset(offsetY, `scroll.${mode}`);\n if (!perfEnabled) return;\n const timestampValue = event.nativeEvent?.timestamp;\n const timestamp =\n typeof timestampValue === \"number\" ? timestampValue : undefined;\n scrollMonitorRef.current.track(timestamp);\n },\n [perfEnabled, trackMobileChromeByOffset]\n );\n\n const keyExtractor = useCallback(\n (item: number | { left: number; right: number | null }) => {\n if (typeof item === \"number\") return `page-${item}`;\n return `row-${item.left}`;\n },\n []\n );\n\n const renderItem = useCallback(\n ({ item }: { item: number | { left: number; right: number | null } }) => {\n if (isDouble) {\n const row = item as { left: number; right: number | null };\n return (\n <View style={[styles.row, { paddingHorizontal: horizontalPadding }]}>\n <View style={{ width: columnWidth }}>\n <PageRenderer\n engine={engine}\n pageIndex={row.left}\n availableWidth={columnWidth}\n horizontalPadding={8}\n spacing={DOUBLE_PAGE_SPACING}\n />\n </View>\n {row.right !== null ? (\n <View style={{ width: columnWidth }}>\n <PageRenderer\n engine={engine}\n pageIndex={row.right}\n availableWidth={columnWidth}\n horizontalPadding={8}\n spacing={DOUBLE_PAGE_SPACING}\n />\n </View>\n ) : (\n <View style={{ width: columnWidth }} />\n )}\n </View>\n );\n }\n\n return (\n <PageRenderer\n engine={engine}\n pageIndex={item as number}\n spacing={CONTINUOUS_PAGE_SPACING}\n />\n );\n },\n [columnWidth, engine, horizontalPadding, isDouble]\n );\n\n if (isWebView) {\n return (\n <View style={[styles.container, isDark && styles.containerDark]}>\n <WebViewViewer engine={engine} />\n </View>\n );\n }\n\n if (isSingle) {\n return (\n <View style={[styles.container, isDark && styles.containerDark]}>\n <ScrollView\n contentContainerStyle={styles.singleContent}\n showsVerticalScrollIndicator={false}\n scrollEnabled\n onScroll={(event) => handleViewerScroll(event, \"single\")}\n onScrollBeginDrag={\n perfEnabled\n ? () => {\n scrollMonitorRef.current.begin(\"single.beginDrag\");\n }\n : undefined\n }\n onMomentumScrollBegin={\n perfEnabled\n ? () => {\n scrollMonitorRef.current.begin(\"single.momentumBegin\");\n }\n : undefined\n }\n onScrollEndDrag={\n perfEnabled\n ? () => {\n scrollMonitorRef.current.end(\"single.endDrag\");\n sampleMemory(\"Viewer\", \"single.endDrag\", { pageCount });\n }\n : undefined\n }\n onMomentumScrollEnd={\n perfEnabled\n ? () => {\n scrollMonitorRef.current.end(\"single.momentumEnd\");\n sampleMemory(\"Viewer\", \"single.momentumEnd\", { pageCount });\n }\n : undefined\n }\n scrollEventThrottle={16}\n >\n <PageRenderer\n engine={engine}\n pageIndex={Math.max(0, currentPage - 1)}\n spacing={32}\n />\n </ScrollView>\n </View>\n );\n }\n\n return (\n <View style={[styles.container, isDark && styles.containerDark]}>\n <FlatList\n ref={listRef}\n data={isDouble ? rows : pages}\n initialNumToRender={FLATLIST_INITIAL_NUM_TO_RENDER}\n windowSize={resolvedWindowSize}\n maxToRenderPerBatch={resolvedMaxToRenderPerBatch}\n updateCellsBatchingPeriod={FLATLIST_UPDATE_CELLS_BATCHING_PERIOD}\n removeClippedSubviews={resolvedRemoveClippedSubviews}\n getItemLayout={getItemLayout}\n keyExtractor={keyExtractor}\n contentContainerStyle={styles.listContent}\n renderItem={renderItem}\n onViewableItemsChanged={onViewableItemsChanged}\n viewabilityConfig={{ itemVisiblePercentThreshold: 60 }}\n scrollEnabled\n onScrollToIndexFailed={({ index, averageItemLength }) => {\n const dataLength = isDouble ? rows.length : pages.length;\n if (index < 0 || index >= dataLength) return;\n pendingScrollIndexRef.current = index;\n const offset = Math.max(0, getFallbackOffsetForIndex(index));\n listRef.current?.scrollToOffset({ offset, animated: false });\n\n if (!isDouble) {\n ensurePageDimensions(index);\n } else {\n const row = rows[index];\n if (row) {\n ensurePageDimensions(row.left);\n if (row.right !== null) {\n ensurePageDimensions(row.right);\n }\n }\n }\n\n scheduleScrollRetry(\"onScrollToIndexFailed\");\n\n if (perfEnabled) {\n logPerfEvent(\"Viewer\", \"scrollToIndexFailed\", {\n index,\n averageItemLength,\n fallbackOffset: offset,\n fallbackSource: \"cached-item-layout\",\n itemCount: dataLength,\n retryAttempt: pendingScrollAttemptsRef.current,\n });\n }\n }}\n onScroll={(event) => handleViewerScroll(event, \"continuous\")}\n onScrollBeginDrag={\n perfEnabled\n ? () => {\n scrollMonitorRef.current.begin(\"continuous.beginDrag\");\n }\n : undefined\n }\n onMomentumScrollBegin={\n perfEnabled\n ? () => {\n scrollMonitorRef.current.begin(\"continuous.momentumBegin\");\n }\n : undefined\n }\n onScrollEndDrag={\n perfEnabled\n ? () => {\n scrollMonitorRef.current.end(\"continuous.endDrag\");\n sampleMemory(\"Viewer\", \"continuous.endDrag\", { pageCount });\n }\n : undefined\n }\n onMomentumScrollEnd={\n perfEnabled\n ? () => {\n scrollMonitorRef.current.end(\"continuous.momentumEnd\");\n sampleMemory(\"Viewer\", \"continuous.momentumEnd\", { pageCount });\n }\n : undefined\n }\n scrollEventThrottle={16}\n showsVerticalScrollIndicator={false}\n />\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: \"#e9ecef\",\n },\n containerDark: {\n backgroundColor: \"#0f1115\",\n },\n listContent: {\n paddingTop: LIST_TOP_PADDING,\n paddingBottom: LIST_BOTTOM_PADDING,\n },\n singleContent: {\n paddingTop: 18,\n paddingBottom: 140,\n },\n row: {\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n },\n});\n\nexport default Viewer;\n","import React, {\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n View,\n StyleSheet,\n Pressable,\n ScrollView,\n PanResponder,\n Platform,\n findNodeHandle,\n useWindowDimensions,\n type LayoutChangeEvent,\n type GestureResponderEvent,\n} from \"react-native\";\nimport Svg, { Path as SvgPath } from \"react-native-svg\";\nimport { useViewerStore } from \"@papyrus-sdk/core\";\nimport { Annotation, DocumentEngine, TextSelection } from \"@papyrus-sdk/types\";\nimport {\n PapyrusPageView,\n type PapyrusPageViewProps,\n} from \"@papyrus-sdk/engine-native\";\nimport {\n createBurstMonitor,\n isMobilePerfEnabled,\n logPerfEvent,\n perfNow,\n} from \"../perf/mobilePerf\";\n\ntype PageViewComponentType = React.ComponentType<\n PapyrusPageViewProps & React.RefAttributes<any>\n>;\n\ninterface PageRendererProps {\n engine: DocumentEngine;\n pageIndex: number;\n scale?: number;\n PageViewComponent?: PageViewComponentType;\n availableWidth?: number;\n horizontalPadding?: number;\n spacing?: number;\n}\n\ntype NormalizedRect = { x: number; y: number; width: number; height: number };\n\ntype TextMarkupType = \"highlight\" | \"underline\" | \"squiggly\" | \"strikeout\";\n\nconst TEXT_MARKUP_TOOLS = new Set<TextMarkupType>([\n \"highlight\",\n \"underline\",\n \"squiggly\",\n \"strikeout\",\n]);\n\nconst withAlpha = (hex: string, alpha: number) => {\n const normalized = hex.replace(\"#\", \"\").trim();\n const value =\n normalized.length === 3\n ? normalized\n .split(\"\")\n .map((c) => c + c)\n .join(\"\")\n : normalized;\n if (value.length !== 6) return hex;\n const r = parseInt(value.slice(0, 2), 16);\n const g = parseInt(value.slice(2, 4), 16);\n const b = parseInt(value.slice(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n};\n\nconst clamp01 = (value: number) => Math.min(1, Math.max(0, value));\n\nconst getRectKey = (rect: NormalizedRect) =>\n `${Math.round(rect.x * 10000)}-${Math.round(rect.y * 10000)}-${Math.round(\n rect.width * 10000\n )}-${Math.round(rect.height * 10000)}`;\n\nconst mergeSelectionRects = (\n inputRects: NormalizedRect[]\n): NormalizedRect[] => {\n if (!inputRects.length) return [];\n const uniqueRects = inputRects\n .filter((rect) => rect.width > 0 && rect.height > 0)\n .map((rect) => ({\n x: clamp01(rect.x),\n y: clamp01(rect.y),\n width: clamp01(rect.width),\n height: clamp01(rect.height),\n }))\n .filter((rect, index, list) => {\n const key = getRectKey(rect);\n return (\n list.findIndex((candidate) => getRectKey(candidate) === key) === index\n );\n })\n .sort((a, b) => (a.y === b.y ? a.x - b.x : a.y - b.y));\n\n return uniqueRects.reduce<NormalizedRect[]>((acc, rect) => {\n const mergeTarget = acc.find((candidate) => {\n const closeY =\n Math.abs(candidate.y - rect.y) < 0.002 &&\n Math.abs(candidate.height - rect.height) < 0.002;\n const overlaps =\n rect.x <= candidate.x + candidate.width + 0.002 &&\n rect.x + rect.width >= candidate.x - 0.002;\n return closeY && overlaps;\n });\n if (!mergeTarget) {\n acc.push({ ...rect });\n return acc;\n }\n const left = Math.min(mergeTarget.x, rect.x);\n const right = Math.max(\n mergeTarget.x + mergeTarget.width,\n rect.x + rect.width\n );\n mergeTarget.x = left;\n mergeTarget.width = right - left;\n return acc;\n }, []);\n};\n\nconst buildSquigglyPath = (segments = 16) => {\n let path = \"M 0 6\";\n for (let index = 1; index <= segments; index += 1) {\n const x = (index / segments) * 100;\n const y = index % 2 === 0 ? 6 : 2;\n path += ` L ${x} ${y}`;\n }\n return path;\n};\n\nconst SQUIGGLY_PATH = buildSquigglyPath();\n\nconst PageRenderer: React.FC<PageRendererProps> = ({\n engine,\n pageIndex,\n scale = 1,\n PageViewComponent = PapyrusPageView as PageViewComponentType,\n availableWidth,\n horizontalPadding = 16,\n spacing = 24,\n}) => {\n const viewRef = useRef<any>(null);\n const [layout, setLayout] = useState({ width: 0, height: 0 });\n const [pageSize, setPageSize] = useState<{\n width: number;\n height: number;\n } | null>(null);\n const { width: windowWidth } = useWindowDimensions();\n const isNative = Platform.OS === \"android\" || Platform.OS === \"ios\";\n const perfEnabled = isMobilePerfEnabled();\n const renderCountRef = useRef(0);\n const setStateBurstRef = useRef(\n createBurstMonitor(\"PageRenderer\", \"setDocumentState\", 18, 700)\n );\n\n const zoom = useViewerStore((state) => state.zoom);\n const rotation = useViewerStore((state) => state.rotation);\n const pageTheme = useViewerStore((state) => state.pageTheme);\n const annotations = useViewerStore((state) => state.annotations);\n const annotationColor = useViewerStore((state) => state.annotationColor);\n const addAnnotation = useViewerStore((state) => state.addAnnotation);\n const setDocumentState = useViewerStore((state) => state.setDocumentState);\n const activeTool = useViewerStore((state) => state.activeTool);\n const accentColor = useViewerStore((state) => state.accentColor);\n const selectedAnnotationId = useViewerStore(\n (state) => state.selectedAnnotationId\n );\n const setSelectedAnnotation = useViewerStore(\n (state) => state.setSelectedAnnotation\n );\n const removeAnnotation = useViewerStore((state) => state.removeAnnotation);\n const searchResults = useViewerStore((state) => state.searchResults);\n const activeSearchIndex = useViewerStore((state) => state.activeSearchIndex);\n const setSelectionActive = useViewerStore(\n (state) => state.setSelectionActive\n );\n\n const setDocumentStateTracked = useCallback(\n (state: Parameters<typeof setDocumentState>[0], reason: string) => {\n if (perfEnabled) {\n setStateBurstRef.current({\n reason,\n page: pageIndex + 1,\n keys: Object.keys(state).join(\",\"),\n });\n }\n setDocumentState(state);\n },\n [pageIndex, perfEnabled, setDocumentState]\n );\n\n const logSelectionPerf = useCallback(\n (event: string, payload: Record<string, unknown>) => {\n if (!perfEnabled) return;\n logPerfEvent(\"PageRenderer\", event, {\n page: pageIndex + 1,\n ...payload,\n });\n },\n [pageIndex, perfEnabled]\n );\n\n const pageAnnotations = useMemo(\n () => annotations.filter((ann) => ann.pageIndex === pageIndex),\n [annotations, pageIndex]\n );\n\n const pageSearchHits = useMemo(\n () =>\n searchResults\n .map((result, index) => ({ result, index }))\n .filter(({ result }) => result.pageIndex === pageIndex),\n [searchResults, pageIndex]\n );\n\n renderCountRef.current += 1;\n if (\n perfEnabled &&\n (renderCountRef.current === 1 || renderCountRef.current % 20 === 0)\n ) {\n logPerfEvent(\"PageRenderer\", \"render\", {\n page: pageIndex + 1,\n renderCount: renderCountRef.current,\n zoom,\n rotation,\n annotationCount: pageAnnotations.length,\n searchHits: pageSearchHits.length,\n });\n }\n\n const [selectionRect, setSelectionRect] = useState<{\n x: number;\n y: number;\n width: number;\n height: number;\n } | null>(null);\n const [selectionRects, setSelectionRects] = useState<\n Array<{ x: number; y: number; width: number; height: number }>\n >([]);\n const [selectionBounds, setSelectionBounds] = useState<{\n x: number;\n y: number;\n width: number;\n height: number;\n } | null>(null);\n const [selectionText, setSelectionText] = useState(\"\");\n const [isSelecting, setIsSelecting] = useState(false);\n const selectionStart = useRef<{ x: number; y: number } | null>(null);\n const selectionRectRef = useRef<{\n x: number;\n y: number;\n width: number;\n height: number;\n } | null>(null);\n const selectionBoundsRef = useRef<{\n x: number;\n y: number;\n width: number;\n height: number;\n } | null>(null);\n const selectionBoundsStart = useRef<{\n x: number;\n y: number;\n width: number;\n height: number;\n } | null>(null);\n const lastTapRef = useRef<{ time: number; x: number; y: number } | null>(\n null\n );\n const pinchRef = useRef<{ distance: number; zoom: number } | null>(null);\n const isPinchingRef = useRef(false);\n const pinchLogZoomRef = useRef(zoom);\n const [isInkDrawing, setIsInkDrawing] = useState(false);\n const [inkPoints, setInkPoints] = useState<Array<{ x: number; y: number }>>(\n []\n );\n const inkPointsRef = useRef<Array<{ x: number; y: number }>>([]);\n\n useEffect(() => {\n if (!layout.width || !layout.height) return;\n const viewTag = findNodeHandle(viewRef.current);\n if (viewTag) {\n const renderScale = isNative ? scale / Math.max(zoom, 0.5) : scale;\n const startedAt = perfEnabled ? perfNow() : 0;\n void Promise.resolve(engine.renderPage(pageIndex, viewTag, renderScale))\n .then(() => {\n if (!perfEnabled) return;\n const renderDurationMs = perfNow() - startedAt;\n if (renderDurationMs >= 40) {\n logPerfEvent(\"PageRenderer\", \"renderPage.slow\", {\n page: pageIndex + 1,\n renderDurationMs: Math.round(renderDurationMs * 100) / 100,\n layoutWidth: layout.width,\n layoutHeight: layout.height,\n renderScale: Math.round(renderScale * 100) / 100,\n });\n }\n })\n .catch((error: unknown) => {\n logPerfEvent(\"PageRenderer\", \"renderPage.error\", {\n page: pageIndex + 1,\n message: error instanceof Error ? error.message : String(error),\n });\n });\n }\n }, [\n engine,\n pageIndex,\n scale,\n zoom,\n rotation,\n layout.width,\n layout.height,\n isNative,\n perfEnabled,\n ]);\n\n useEffect(() => {\n let active = true;\n const loadDimensions = async () => {\n const startedAt = perfEnabled ? perfNow() : 0;\n const dims = await engine.getPageDimensions(pageIndex);\n if (!active) return;\n if (dims.width > 0 && dims.height > 0) {\n setPageSize({ width: dims.width, height: dims.height });\n }\n if (perfEnabled) {\n const durationMs = perfNow() - startedAt;\n if (durationMs >= 20 || pageIndex === 0) {\n logPerfEvent(\"PageRenderer\", \"pageDimensions\", {\n page: pageIndex + 1,\n durationMs: Math.round(durationMs * 100) / 100,\n width: dims.width,\n height: dims.height,\n });\n }\n }\n };\n void loadDimensions();\n return () => {\n active = false;\n };\n }, [engine, pageIndex, perfEnabled]);\n\n const handleLayout = (event: LayoutChangeEvent) => {\n const { width, height } = event.nativeEvent.layout;\n if (width !== layout.width || height !== layout.height) {\n setLayout({ width, height });\n }\n };\n\n const addAnnotationAt = (\n x: number,\n y: number,\n width: number,\n height: number,\n type: Annotation[\"type\"],\n extras?: Partial<Pick<Annotation, \"rects\" | \"path\" | \"content\">>\n ) => {\n const rect = {\n x: clamp01(x),\n y: clamp01(y),\n width: clamp01(width),\n height: clamp01(height),\n };\n logSelectionPerf(\"annotation.add\", {\n type,\n rect,\n rectCount: extras?.rects?.length ?? 0,\n });\n addAnnotation({\n id: Math.random().toString(36).slice(2, 9),\n pageIndex,\n type,\n rect,\n rects: extras?.rects,\n path: extras?.path,\n color: annotationColor,\n content:\n extras?.content ??\n (type === \"text\" || type === \"comment\" ? \"\" : undefined),\n createdAt: Date.now(),\n });\n };\n\n const clamp = (value: number, min: number, max: number) =>\n Math.min(max, Math.max(min, value));\n\n const getBoundsFromRects = (\n rects: Array<{ x: number; y: number; width: number; height: number }>\n ) => {\n let minX = 1;\n let minY = 1;\n let maxX = 0;\n let maxY = 0;\n rects.forEach((rect) => {\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n });\n if (maxX <= minX || maxY <= minY) return null;\n return {\n x: clamp(minX, 0, 1),\n y: clamp(minY, 0, 1),\n width: clamp(maxX - minX, 0, 1),\n height: clamp(maxY - minY, 0, 1),\n };\n };\n\n useEffect(() => {\n inkPointsRef.current = inkPoints;\n }, [inkPoints]);\n\n useEffect(() => {\n if (activeTool === \"ink\") return;\n setIsInkDrawing(false);\n setInkPoints([]);\n inkPointsRef.current = [];\n }, [activeTool]);\n\n const clearSelection = () => {\n setSelectionRect(null);\n selectionRectRef.current = null;\n setSelectionRects([]);\n setSelectionBounds(null);\n selectionBoundsRef.current = null;\n setSelectionText(\"\");\n setIsSelecting(false);\n selectionStart.current = null;\n selectionBoundsStart.current = null;\n lastTapRef.current = null;\n setSelectionActive(false);\n };\n\n useEffect(() => {\n if (activeTool === \"select\") return;\n clearSelection();\n }, [activeTool]);\n\n const stopPressPropagation = (event: GestureResponderEvent) => {\n event.stopPropagation?.();\n };\n\n const applySelectionResult = (selection: TextSelection | null) => {\n if (!selection || !selection.rects || selection.rects.length === 0) {\n logSelectionPerf(\"selection.empty\", {\n tool: activeTool,\n });\n clearSelection();\n return;\n }\n const mergedRects = mergeSelectionRects(selection.rects);\n if (mergedRects.length === 0) {\n logSelectionPerf(\"selection.merged.empty\", {\n tool: activeTool,\n sourceRectCount: selection.rects.length,\n });\n clearSelection();\n return;\n }\n const bounds = getBoundsFromRects(mergedRects);\n if (!bounds) {\n logSelectionPerf(\"selection.bounds.empty\", {\n tool: activeTool,\n mergedRectCount: mergedRects.length,\n });\n clearSelection();\n return;\n }\n const selectedText = selection.text || \"\";\n logSelectionPerf(\"selection.ready\", {\n tool: activeTool,\n sourceRectCount: selection.rects.length,\n mergedRectCount: mergedRects.length,\n bounds,\n textLength: selectedText.length,\n });\n if (TEXT_MARKUP_TOOLS.has(activeTool as TextMarkupType)) {\n addAnnotationAt(\n bounds.x,\n bounds.y,\n bounds.width,\n bounds.height,\n activeTool as TextMarkupType,\n {\n rects: mergedRects,\n content: selectedText,\n }\n );\n clearSelection();\n return;\n }\n setSelectionRects(mergedRects);\n setSelectionText(selectedText);\n setSelectionBounds(bounds);\n selectionBoundsRef.current = bounds;\n setSelectionActive(true);\n };\n\n const selectFromBounds = async (bounds: {\n x: number;\n y: number;\n width: number;\n height: number;\n }) => {\n const selection = await engine.selectText?.(pageIndex, bounds);\n applySelectionResult(selection ?? null);\n };\n\n const selectAtPoint = async (x: number, y: number) => {\n if (!layout.width || !layout.height) return;\n const size = 26;\n const half = size / 2;\n const left = clamp(x - half, 0, Math.max(0, layout.width - size));\n const top = clamp(y - half, 0, Math.max(0, layout.height - size));\n const bounds = {\n x: left / layout.width,\n y: top / layout.height,\n width: size / layout.width,\n height: size / layout.height,\n };\n await selectFromBounds(bounds);\n };\n\n const getTouchDistance = (\n touches: Array<{ pageX: number; pageY: number }>\n ) => {\n if (touches.length < 2) return 0;\n const [a, b] = touches;\n return Math.hypot(b.pageX - a.pageX, b.pageY - a.pageY);\n };\n\n const shouldHandlePinch = (\n touches: Array<{ pageX: number; pageY: number }>\n ) => isNative && touches.length === 2;\n\n const handlePinchStart = (\n touches: Array<{ pageX: number; pageY: number }>\n ) => {\n if (!shouldHandlePinch(touches)) return;\n const distance = getTouchDistance(touches);\n pinchRef.current = { distance, zoom };\n pinchLogZoomRef.current = zoom;\n logSelectionPerf(\"pinch.start\", {\n tool: activeTool,\n distance: Math.round(distance * 100) / 100,\n zoom: Math.round(zoom * 100) / 100,\n });\n };\n\n const handlePinchMove = (\n touches: Array<{ pageX: number; pageY: number }>\n ) => {\n if (!shouldHandlePinch(touches) || !pinchRef.current) return;\n const distance = getTouchDistance(touches);\n if (!distance) return;\n const scale = distance / pinchRef.current.distance;\n const nextZoom = clamp(pinchRef.current.zoom * scale, 0.5, 4.0);\n setDocumentStateTracked({ zoom: nextZoom }, \"pinchMove\");\n engine.setZoom(nextZoom);\n if (Math.abs(nextZoom - pinchLogZoomRef.current) >= 0.12) {\n pinchLogZoomRef.current = nextZoom;\n logSelectionPerf(\"pinch.move\", {\n tool: activeTool,\n distance: Math.round(distance * 100) / 100,\n zoom: Math.round(nextZoom * 100) / 100,\n });\n }\n };\n\n const handlePinchEnd = () => {\n if (isPinchingRef.current || pinchRef.current) {\n logSelectionPerf(\"pinch.end\", {\n tool: activeTool,\n zoom: Math.round(zoom * 100) / 100,\n });\n }\n pinchRef.current = null;\n };\n\n const handlePress = (event: GestureResponderEvent) => {\n if (!layout.width || !layout.height) return;\n const { locationX, locationY } = event.nativeEvent;\n if (selectionRects.length > 0 || selectionBounds) {\n const selectionPx =\n selectionBounds && layout.width && layout.height\n ? {\n x: selectionBounds.x * layout.width,\n y: selectionBounds.y * layout.height,\n width: selectionBounds.width * layout.width,\n height: selectionBounds.height * layout.height,\n }\n : null;\n if (selectionPx) {\n const toolbarTop =\n selectionPx.y + selectionPx.height + 8 > layout.height - 56\n ? Math.max(8, selectionPx.y - 52)\n : selectionPx.y + selectionPx.height + 8;\n const withinSelectionUi =\n locationX >= selectionPx.x - 24 &&\n locationX <= selectionPx.x + Math.max(220, selectionPx.width) + 24 &&\n locationY >= Math.min(selectionPx.y, toolbarTop) - 24 &&\n locationY <=\n Math.max(selectionPx.y + selectionPx.height, toolbarTop + 56) + 24;\n if (withinSelectionUi) {\n return;\n }\n }\n clearSelection();\n return;\n }\n setSelectedAnnotation(null);\n if (!isNative || activeTool === \"ink\") return;\n\n const now = Date.now();\n const lastTap = lastTapRef.current;\n lastTapRef.current = { time: now, x: locationX, y: locationY };\n\n if (!lastTap) return;\n const timeDelta = now - lastTap.time;\n const distance = Math.hypot(locationX - lastTap.x, locationY - lastTap.y);\n if (timeDelta < 280 && distance < 24 && activeTool === \"select\") {\n void selectAtPoint(locationX, locationY);\n }\n };\n\n const selectionEnabled =\n Platform.OS === \"web\" ||\n (isNative &&\n (activeTool === \"select\" ||\n TEXT_MARKUP_TOOLS.has(activeTool as TextMarkupType)));\n const inkEnabled = isNative && activeTool === \"ink\";\n const pinchEnabled = isNative;\n\n const toNormalizedPoint = (x: number, y: number) => {\n if (!layout.width || !layout.height) return null;\n return {\n x: clamp01(x / layout.width),\n y: clamp01(y / layout.height),\n };\n };\n\n const beginInkDrawing = (x: number, y: number) => {\n const point = toNormalizedPoint(x, y);\n if (!point) return;\n clearSelection();\n setIsInkDrawing(true);\n setInkPoints([point]);\n inkPointsRef.current = [point];\n };\n\n const pushInkPoint = (x: number, y: number) => {\n const point = toNormalizedPoint(x, y);\n if (!point) return;\n const previous = inkPointsRef.current[inkPointsRef.current.length - 1];\n if (previous) {\n const distance = Math.hypot(point.x - previous.x, point.y - previous.y);\n if (distance < 0.0008) return;\n }\n setInkPoints((prev) => [...prev, point]);\n inkPointsRef.current = [...inkPointsRef.current, point];\n };\n\n const finishInkDrawing = () => {\n const points = inkPointsRef.current;\n if (points.length === 0) return;\n setIsInkDrawing(false);\n setInkPoints([]);\n inkPointsRef.current = [];\n if (points.length < 2) return;\n\n const xs = points.map((point) => point.x);\n const ys = points.map((point) => point.y);\n const minX = Math.min(...xs);\n const maxX = Math.max(...xs);\n const minY = Math.min(...ys);\n const maxY = Math.max(...ys);\n addAnnotationAt(\n minX,\n minY,\n Math.max(0.0005, maxX - minX),\n Math.max(0.0005, maxY - minY),\n \"ink\",\n { path: points }\n );\n };\n\n const panResponder = useMemo(\n () =>\n PanResponder.create({\n onStartShouldSetPanResponder: (event) => {\n const touches = event.nativeEvent.touches ?? [];\n return (\n (pinchEnabled && shouldHandlePinch(touches)) ||\n selectionEnabled ||\n inkEnabled\n );\n },\n onMoveShouldSetPanResponder: (event) => {\n const touches = event.nativeEvent.touches ?? [];\n return (\n (pinchEnabled && shouldHandlePinch(touches)) ||\n selectionEnabled ||\n inkEnabled\n );\n },\n onStartShouldSetPanResponderCapture: (event) => {\n const touches = event.nativeEvent.touches ?? [];\n return pinchEnabled && shouldHandlePinch(touches);\n },\n onMoveShouldSetPanResponderCapture: (event) => {\n const touches = event.nativeEvent.touches ?? [];\n return pinchEnabled && shouldHandlePinch(touches);\n },\n onPanResponderGrant: (event) => {\n const touches = event.nativeEvent.touches ?? [];\n if (pinchEnabled && shouldHandlePinch(touches)) {\n isPinchingRef.current = true;\n setIsSelecting(false);\n selectionStart.current = null;\n handlePinchStart(touches);\n return;\n }\n isPinchingRef.current = false;\n\n if (inkEnabled) {\n beginInkDrawing(\n event.nativeEvent.locationX,\n event.nativeEvent.locationY\n );\n return;\n }\n\n if (!selectionEnabled || !layout.width || !layout.height) return;\n const { locationX, locationY } = event.nativeEvent;\n selectionStart.current = { x: locationX, y: locationY };\n setIsSelecting(true);\n const rect = { x: locationX, y: locationY, width: 0, height: 0 };\n selectionRectRef.current = rect;\n setSelectionRect(rect);\n },\n onPanResponderMove: (event, gestureState) => {\n const touches = event.nativeEvent.touches ?? [];\n if (\n pinchEnabled &&\n (shouldHandlePinch(touches) || isPinchingRef.current)\n ) {\n if (shouldHandlePinch(touches)) {\n if (!isPinchingRef.current) {\n isPinchingRef.current = true;\n handlePinchStart(touches);\n }\n handlePinchMove(touches);\n }\n return;\n }\n\n if (inkEnabled) {\n pushInkPoint(\n event.nativeEvent.locationX,\n event.nativeEvent.locationY\n );\n return;\n }\n if (!selectionEnabled || !selectionStart.current) return;\n const start = selectionStart.current;\n const currentX = start.x + gestureState.dx;\n const currentY = start.y + gestureState.dy;\n const left = Math.max(0, Math.min(start.x, currentX));\n const top = Math.max(0, Math.min(start.y, currentY));\n const right = Math.min(layout.width, Math.max(start.x, currentX));\n const bottom = Math.min(layout.height, Math.max(start.y, currentY));\n const rect = {\n x: left,\n y: top,\n width: right - left,\n height: bottom - top,\n };\n selectionRectRef.current = rect;\n setSelectionRect(rect);\n },\n onPanResponderRelease: async () => {\n if (isPinchingRef.current) {\n isPinchingRef.current = false;\n handlePinchEnd();\n return;\n }\n\n if (inkEnabled) {\n finishInkDrawing();\n return;\n }\n\n const rect = selectionRectRef.current;\n if (!selectionEnabled || !rect || !layout.width || !layout.height) {\n setIsSelecting(false);\n selectionStart.current = null;\n return;\n }\n setIsSelecting(false);\n selectionStart.current = null;\n\n const minSize = 6;\n if (rect.width < minSize || rect.height < minSize) {\n clearSelection();\n return;\n }\n\n const normalized = {\n x: rect.x / layout.width,\n y: rect.y / layout.height,\n width: rect.width / layout.width,\n height: rect.height / layout.height,\n };\n\n await selectFromBounds(normalized);\n setSelectionRect(null);\n },\n onPanResponderTerminate: () => {\n if (isPinchingRef.current) {\n isPinchingRef.current = false;\n handlePinchEnd();\n return;\n }\n\n if (inkEnabled) {\n finishInkDrawing();\n return;\n }\n setIsSelecting(false);\n selectionStart.current = null;\n },\n }),\n [\n selectionEnabled,\n inkEnabled,\n pinchEnabled,\n layout.width,\n layout.height,\n annotationColor,\n zoom,\n ]\n );\n\n const selectionBoundsPx = useMemo(() => {\n if (!selectionBounds || !layout.width || !layout.height) return null;\n return {\n x: selectionBounds.x * layout.width,\n y: selectionBounds.y * layout.height,\n width: selectionBounds.width * layout.width,\n height: selectionBounds.height * layout.height,\n };\n }, [selectionBounds, layout.width, layout.height]);\n\n const createHandleResponder = (handle: \"start\" | \"end\") =>\n PanResponder.create({\n onStartShouldSetPanResponder: () => true,\n onMoveShouldSetPanResponder: () => true,\n onPanResponderGrant: () => {\n selectionBoundsStart.current = selectionBoundsRef.current;\n },\n onPanResponderMove: (_, gestureState) => {\n const start = selectionBoundsStart.current;\n if (!start || !layout.width || !layout.height) return;\n const dx = gestureState.dx / layout.width;\n const dy = gestureState.dy / layout.height;\n const minSize = 0.01;\n let next = { ...start };\n\n if (handle === \"start\") {\n const newX = clamp(start.x + dx, 0, start.x + start.width - minSize);\n const newY = clamp(start.y + dy, 0, start.y + start.height - minSize);\n next = {\n x: newX,\n y: newY,\n width: start.x + start.width - newX,\n height: start.y + start.height - newY,\n };\n } else {\n const maxX = clamp(start.x + start.width + dx, start.x + minSize, 1);\n const maxY = clamp(start.y + start.height + dy, start.y + minSize, 1);\n next = {\n x: start.x,\n y: start.y,\n width: maxX - start.x,\n height: maxY - start.y,\n };\n }\n\n selectionBoundsRef.current = next;\n setSelectionBounds(next);\n },\n onPanResponderRelease: async () => {\n const next = selectionBoundsRef.current;\n selectionBoundsStart.current = null;\n if (!next) return;\n await selectFromBounds(next);\n },\n onPanResponderTerminate: () => {\n selectionBoundsStart.current = null;\n },\n });\n\n const startHandleResponder = useMemo(\n () => createHandleResponder(\"start\"),\n [layout.width, layout.height, engine, pageIndex]\n );\n\n const endHandleResponder = useMemo(\n () => createHandleResponder(\"end\"),\n [layout.width, layout.height, engine, pageIndex]\n );\n\n const applySelection = (type: TextMarkupType | \"comment\") => {\n if (selectionRects.length === 0) return;\n const mergedRects = mergeSelectionRects(selectionRects);\n const bounds = getBoundsFromRects(mergedRects);\n if (!bounds || mergedRects.length === 0) {\n clearSelection();\n return;\n }\n\n if (type === \"comment\") {\n const first = mergedRects[0];\n addAnnotationAt(\n first.x,\n first.y,\n Math.max(0.08, first.width),\n Math.max(0.06, first.height),\n \"comment\",\n { content: selectionText }\n );\n clearSelection();\n return;\n }\n\n addAnnotationAt(bounds.x, bounds.y, bounds.width, bounds.height, type, {\n rects: mergedRects,\n content: selectionText,\n });\n clearSelection();\n };\n\n const themeOverlayStyle = useMemo(() => {\n switch (pageTheme) {\n case \"sepia\":\n return styles.themeSepia;\n case \"dark\":\n return styles.themeDark;\n case \"high-contrast\":\n return styles.themeContrast;\n default:\n return styles.themeNone;\n }\n }, [pageTheme]);\n\n const aspectRatio =\n pageSize && pageSize.width > 0 && pageSize.height > 0\n ? pageSize.width / pageSize.height\n : 0.77;\n const containerWidth = availableWidth ?? windowWidth;\n const baseWidth = containerWidth * 0.92;\n const pageWidth = isNative ? baseWidth * zoom : baseWidth;\n const pageHeight = pageWidth / aspectRatio;\n const hasActiveSelection =\n selectionRects.length > 0 || !!selectionBounds || isSelecting;\n const scrollEnabled =\n isNative && zoom > 1 && !hasActiveSelection && !isInkDrawing;\n\n return (\n <ScrollView\n horizontal\n scrollEnabled={scrollEnabled}\n showsHorizontalScrollIndicator={false}\n contentContainerStyle={[\n styles.scrollContent,\n { paddingHorizontal: horizontalPadding },\n ]}\n >\n <Pressable\n {...panResponder.panHandlers}\n style={[\n styles.container,\n { width: pageWidth, height: pageHeight, marginBottom: spacing },\n ]}\n onLayout={handleLayout}\n onPress={handlePress}\n >\n <PageViewComponent ref={viewRef} style={styles.page} />\n <View\n pointerEvents=\"none\"\n style={[styles.themeOverlay, themeOverlayStyle]}\n />\n <View pointerEvents=\"box-none\" style={styles.selectionLayer}>\n <View pointerEvents=\"none\">\n {selectionRects.map((rect, index) => {\n const style = {\n left: `${rect.x * 100}%`,\n top: `${rect.y * 100}%`,\n width: `${rect.width * 100}%`,\n height: `${rect.height * 100}%`,\n } as const;\n return (\n <View\n key={`sel-${index}`}\n style={[styles.selectionHighlight, style]}\n />\n );\n })}\n </View>\n {selectionBoundsPx ? (\n <View\n pointerEvents=\"box-none\"\n style={[\n styles.selectionOutline,\n {\n left: selectionBoundsPx.x,\n top: selectionBoundsPx.y,\n width: selectionBoundsPx.width,\n height: selectionBoundsPx.height,\n borderColor: accentColor,\n },\n ]}\n >\n <View\n {...startHandleResponder.panHandlers}\n style={[\n styles.selectionHandle,\n { left: -8, top: -8, borderColor: accentColor },\n ]}\n />\n <View\n {...endHandleResponder.panHandlers}\n style={[\n styles.selectionHandle,\n { right: -8, bottom: -8, borderColor: accentColor },\n ]}\n />\n </View>\n ) : null}\n {isSelecting && selectionRect ? (\n <View\n pointerEvents=\"none\"\n style={[\n styles.selectionOutline,\n {\n left: selectionRect.x,\n top: selectionRect.y,\n width: selectionRect.width,\n height: selectionRect.height,\n borderColor: accentColor,\n },\n ]}\n />\n ) : null}\n </View>\n <View pointerEvents=\"none\" style={styles.searchLayer}>\n {pageSearchHits.map(({ result, index }) => {\n if (!result.rects || result.rects.length === 0) return null;\n return result.rects.map((rect, rectIndex) => {\n if (rect.width <= 0 || rect.height <= 0) return null;\n const isActive = index === activeSearchIndex;\n const highlightStyle = {\n left: `${rect.x * 100}%`,\n top: `${rect.y * 100}%`,\n width: `${rect.width * 100}%`,\n height: `${rect.height * 100}%`,\n } as const;\n return (\n <View\n key={`${index}-${rectIndex}`}\n style={[\n styles.searchHighlight,\n {\n borderColor: accentColor,\n backgroundColor: `${accentColor}26`,\n },\n isActive && styles.searchHighlightActive,\n isActive && {\n borderColor: accentColor,\n backgroundColor: `${accentColor}40`,\n },\n highlightStyle,\n ]}\n />\n );\n });\n })}\n </View>\n {isInkDrawing && inkPoints.length > 1 ? (\n <View pointerEvents=\"none\" style={styles.inkPreviewLayer}>\n <Svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 1 1\"\n preserveAspectRatio=\"none\"\n >\n <SvgPath\n d={inkPoints\n .map(\n (point, pointIndex) =>\n `${pointIndex === 0 ? \"M\" : \"L\"} ${point.x} ${point.y}`\n )\n .join(\" \")}\n fill=\"none\"\n stroke={annotationColor}\n strokeWidth={0.006}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </View>\n ) : null}\n <View pointerEvents=\"box-none\" style={styles.annotationLayer}>\n {pageAnnotations.map((ann) => {\n const isSelected = selectedAnnotationId === ann.id;\n const isText = ann.type === \"comment\" || ann.type === \"text\";\n const isInk =\n ann.type === \"ink\" &&\n Array.isArray(ann.path) &&\n ann.path.length > 1;\n const isMarkup = TEXT_MARKUP_TOOLS.has(ann.type as TextMarkupType);\n const rects =\n ann.rects && ann.rects.length > 0 ? ann.rects : [ann.rect];\n const hitTargetStyle = {\n left: `${ann.rect.x * 100}%`,\n top: `${ann.rect.y * 100}%`,\n width: `${ann.rect.width * 100}%`,\n height: `${ann.rect.height * 100}%`,\n } as const;\n\n return (\n <View\n key={ann.id}\n pointerEvents=\"box-none\"\n style={styles.annotationGroup}\n >\n {isMarkup\n ? rects.map((rect, rectIndex) => {\n const rectStyle = {\n left: `${rect.x * 100}%`,\n top: `${rect.y * 100}%`,\n width: `${rect.width * 100}%`,\n height: `${rect.height * 100}%`,\n } as const;\n\n if (ann.type === \"highlight\") {\n return (\n <View\n key={`${ann.id}-mark-${rectIndex}`}\n pointerEvents=\"none\"\n style={[\n styles.annotationMarkupRect,\n rectStyle,\n { backgroundColor: withAlpha(ann.color, 0.38) },\n ]}\n />\n );\n }\n\n if (ann.type === \"underline\") {\n return (\n <View\n key={`${ann.id}-mark-${rectIndex}`}\n pointerEvents=\"none\"\n style={[styles.annotationLineContainer, rectStyle]}\n >\n <View\n style={[\n styles.annotationUnderlineLine,\n { backgroundColor: ann.color },\n ]}\n />\n </View>\n );\n }\n\n if (ann.type === \"strikeout\") {\n return (\n <View\n key={`${ann.id}-mark-${rectIndex}`}\n pointerEvents=\"none\"\n style={[styles.annotationLineContainer, rectStyle]}\n >\n <View\n style={[\n styles.annotationStrikeLine,\n { backgroundColor: ann.color },\n ]}\n />\n </View>\n );\n }\n\n return (\n <View\n key={`${ann.id}-mark-${rectIndex}`}\n pointerEvents=\"none\"\n style={[styles.annotationLineContainer, rectStyle]}\n >\n <View style={styles.annotationSquigglyWrap}>\n <Svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 100 8\"\n preserveAspectRatio=\"none\"\n >\n <SvgPath\n d={SQUIGGLY_PATH}\n fill=\"none\"\n stroke={ann.color}\n strokeWidth={1.8}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </View>\n </View>\n );\n })\n : null}\n {isInk && ann.path ? (\n <Svg\n pointerEvents=\"none\"\n style={styles.inkAnnotationLayer}\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 1 1\"\n preserveAspectRatio=\"none\"\n >\n <SvgPath\n d={ann.path\n .map(\n (point, pointIndex) =>\n `${pointIndex === 0 ? \"M\" : \"L\"} ${point.x} ${\n point.y\n }`\n )\n .join(\" \")}\n fill=\"none\"\n stroke={ann.color}\n strokeWidth={0.006}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n ) : null}\n <Pressable\n onPress={(event) => {\n stopPressPropagation(event);\n setSelectedAnnotation(ann.id);\n }}\n style={[\n styles.annotation,\n hitTargetStyle,\n isSelected && styles.annotationSelected,\n isSelected && { borderColor: accentColor },\n ]}\n >\n {isText && (\n <View\n style={[\n styles.annotationBadge,\n { borderColor: ann.color },\n ]}\n >\n <View\n style={[\n styles.annotationDot,\n { backgroundColor: ann.color },\n ]}\n />\n </View>\n )}\n {isSelected && (\n <Pressable\n onPress={(event) => {\n stopPressPropagation(event);\n removeAnnotation(ann.id);\n }}\n style={styles.deleteButton}\n >\n <View style={styles.deleteDot} />\n </Pressable>\n )}\n </Pressable>\n </View>\n );\n })}\n </View>\n {selectionRects.length > 0 &&\n selectionBoundsPx &&\n activeTool === \"select\" ? (\n <View\n pointerEvents=\"box-none\"\n style={[\n styles.selectionToolbar,\n {\n left: selectionBoundsPx.x,\n top:\n selectionBoundsPx.y + selectionBoundsPx.height + 8 >\n layout.height - 56\n ? Math.max(8, selectionBoundsPx.y - 52)\n : selectionBoundsPx.y + selectionBoundsPx.height + 8,\n },\n ]}\n >\n <Pressable\n onPress={(event) => {\n stopPressPropagation(event);\n applySelection(\"comment\");\n }}\n style={styles.selectionAction}\n >\n <View style={styles.selectionActionDot} />\n </Pressable>\n <Pressable\n onPress={(event) => {\n stopPressPropagation(event);\n applySelection(\"highlight\");\n }}\n style={styles.selectionAction}\n >\n <View\n style={[\n styles.selectionSwatch,\n { backgroundColor: annotationColor },\n ]}\n />\n </Pressable>\n <Pressable\n onPress={(event) => {\n stopPressPropagation(event);\n applySelection(\"underline\");\n }}\n style={styles.selectionAction}\n >\n <View\n style={[\n styles.selectionUnderline,\n { backgroundColor: annotationColor },\n ]}\n />\n </Pressable>\n <Pressable\n onPress={(event) => {\n stopPressPropagation(event);\n applySelection(\"squiggly\");\n }}\n style={styles.selectionAction}\n >\n <View style={styles.selectionSquigglyWrap}>\n <Svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 100 8\"\n preserveAspectRatio=\"none\"\n >\n <SvgPath\n d={SQUIGGLY_PATH}\n fill=\"none\"\n stroke={annotationColor}\n strokeWidth={1.8}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </View>\n </Pressable>\n <Pressable\n onPress={(event) => {\n stopPressPropagation(event);\n applySelection(\"strikeout\");\n }}\n style={[styles.selectionAction, styles.selectionActionLast]}\n >\n <View\n style={[\n styles.selectionStrike,\n { backgroundColor: annotationColor },\n ]}\n />\n </Pressable>\n </View>\n ) : null}\n </Pressable>\n </ScrollView>\n );\n};\n\nconst styles = StyleSheet.create({\n scrollContent: {\n alignItems: \"center\",\n },\n container: {\n alignSelf: \"center\",\n borderRadius: 14,\n backgroundColor: \"#ffffff\",\n shadowColor: \"#000000\",\n shadowOpacity: 0.12,\n shadowRadius: 12,\n shadowOffset: { width: 0, height: 6 },\n elevation: 4,\n },\n page: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: \"#ffffff\",\n borderRadius: 14,\n overflow: \"hidden\",\n },\n annotationLayer: {\n position: \"absolute\",\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n },\n annotationGroup: {\n ...StyleSheet.absoluteFillObject,\n },\n searchLayer: {\n position: \"absolute\",\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n },\n inkPreviewLayer: {\n position: \"absolute\",\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n },\n selectionLayer: {\n position: \"absolute\",\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n },\n selectionHighlight: {\n position: \"absolute\",\n backgroundColor: \"rgba(245, 158, 11, 0.28)\",\n borderRadius: 4,\n },\n selectionOutline: {\n position: \"absolute\",\n borderWidth: 2,\n borderStyle: \"dashed\",\n borderColor: \"rgba(37, 99, 235, 0.9)\",\n borderRadius: 6,\n },\n selectionHandle: {\n position: \"absolute\",\n width: 16,\n height: 16,\n borderRadius: 8,\n backgroundColor: \"#ffffff\",\n borderWidth: 2,\n borderColor: \"#2563eb\",\n },\n searchHighlight: {\n position: \"absolute\",\n backgroundColor: \"rgba(59, 130, 246, 0.2)\",\n borderWidth: 1,\n borderColor: \"rgba(59, 130, 246, 0.35)\",\n borderRadius: 4,\n },\n searchHighlightActive: {\n backgroundColor: \"rgba(59, 130, 246, 0.35)\",\n borderColor: \"#3b82f6\",\n },\n themeOverlay: {\n ...StyleSheet.absoluteFillObject,\n borderRadius: 14,\n },\n themeNone: {\n backgroundColor: \"transparent\",\n },\n themeSepia: {\n backgroundColor: \"rgba(244, 236, 216, 0.35)\",\n },\n themeDark: {\n backgroundColor: \"rgba(0, 0, 0, 0.2)\",\n },\n themeContrast: {\n backgroundColor: \"rgba(0, 0, 0, 0.35)\",\n },\n annotation: {\n position: \"absolute\",\n },\n inkAnnotationLayer: {\n ...StyleSheet.absoluteFillObject,\n },\n annotationMarkupRect: {\n position: \"absolute\",\n borderRadius: 2,\n },\n annotationLineContainer: {\n position: \"absolute\",\n },\n annotationUnderlineLine: {\n position: \"absolute\",\n left: 0,\n right: 0,\n bottom: 0,\n height: 2,\n borderRadius: 2,\n },\n annotationStrikeLine: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: \"50%\",\n marginTop: -1,\n height: 2,\n borderRadius: 2,\n },\n annotationSquigglyWrap: {\n position: \"absolute\",\n left: 0,\n right: 0,\n bottom: 0,\n height: 8,\n },\n annotationSelected: {\n borderWidth: 1,\n borderColor: \"#3b82f6\",\n },\n annotationBadge: {\n position: \"absolute\",\n left: 4,\n top: 4,\n width: 14,\n height: 14,\n borderRadius: 7,\n borderWidth: 1,\n backgroundColor: \"#ffffff\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n annotationDot: {\n width: 6,\n height: 6,\n borderRadius: 3,\n },\n deleteButton: {\n position: \"absolute\",\n right: -8,\n top: -8,\n width: 20,\n height: 20,\n borderRadius: 10,\n backgroundColor: \"#ef4444\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n deleteDot: {\n width: 8,\n height: 2,\n backgroundColor: \"#ffffff\",\n borderRadius: 2,\n },\n selectionToolbar: {\n position: \"absolute\",\n paddingHorizontal: 10,\n paddingVertical: 8,\n borderRadius: 14,\n backgroundColor: \"#111827\",\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n selectionAction: {\n width: 28,\n height: 28,\n borderRadius: 10,\n backgroundColor: \"#1f2937\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginRight: 10,\n },\n selectionActionLast: {\n marginRight: 0,\n },\n selectionActionDot: {\n width: 8,\n height: 8,\n borderRadius: 4,\n backgroundColor: \"#f9fafb\",\n },\n selectionSwatch: {\n width: 14,\n height: 14,\n borderRadius: 7,\n borderWidth: 1,\n borderColor: \"#ffffff\",\n },\n selectionUnderline: {\n width: 14,\n height: 2,\n borderRadius: 2,\n },\n selectionSquigglyWrap: {\n width: 14,\n height: 8,\n },\n selectionStrike: {\n width: 14,\n height: 3,\n borderRadius: 3,\n },\n});\n\nconst arePageRendererPropsEqual = (\n previous: Readonly<PageRendererProps>,\n next: Readonly<PageRendererProps>\n) =>\n previous.engine === next.engine &&\n previous.pageIndex === next.pageIndex &&\n previous.scale === next.scale &&\n previous.PageViewComponent === next.PageViewComponent &&\n previous.availableWidth === next.availableWidth &&\n previous.horizontalPadding === next.horizontalPadding &&\n previous.spacing === next.spacing;\n\nexport default memo(PageRenderer, arePageRendererPropsEqual);\n","type PerfPayload = Record<string, unknown>;\r\n\r\ninterface MobilePerfGlobalConfig {\r\n enabled?: boolean;\r\n sampleMemory?: boolean;\r\n logPrefix?: string;\r\n verbose?: boolean;\r\n}\r\n\r\ntype MobilePerfGlobalValue = boolean | MobilePerfGlobalConfig;\r\n\r\nconst DEFAULT_PREFIX = '[Papyrus Perf]';\r\nconst FRAME_BUDGET_MS = 1000 / 60;\r\n\r\nconst getPerfGlobal = (): MobilePerfGlobalValue | undefined =>\r\n (globalThis as Record<string, unknown>).__PAPYRUS_MOBILE_PERF__ as\r\n | MobilePerfGlobalValue\r\n | undefined;\r\n\r\nconst getPerfConfig = () => {\r\n const value = getPerfGlobal();\r\n if (value === true) {\r\n return {\r\n enabled: true,\r\n sampleMemory: true,\r\n logPrefix: DEFAULT_PREFIX,\r\n verbose: false,\r\n };\r\n }\r\n if (!value || typeof value !== 'object') {\r\n return {\r\n enabled: false,\r\n sampleMemory: false,\r\n logPrefix: DEFAULT_PREFIX,\r\n verbose: false,\r\n };\r\n }\r\n return {\r\n enabled: value.enabled ?? true,\r\n sampleMemory: value.sampleMemory ?? true,\r\n logPrefix: value.logPrefix ?? DEFAULT_PREFIX,\r\n verbose: value.verbose ?? false,\r\n };\r\n};\r\n\r\nconst round = (value: number) => Math.round(value * 100) / 100;\r\n\r\nconst bytesToMb = (bytes: number) => round(bytes / (1024 * 1024));\r\n\r\nconst getNumericValue = (value: unknown): number | null =>\r\n typeof value === 'number' && Number.isFinite(value) ? value : null;\r\n\r\nconst readHermesHeapBytes = (): number | null => {\r\n const runtimeProperties = (\r\n globalThis as Record<string, unknown> & {\r\n HermesInternal?: { getRuntimeProperties?: () => Record<string, unknown> };\r\n }\r\n ).HermesInternal?.getRuntimeProperties?.();\r\n if (!runtimeProperties || typeof runtimeProperties !== 'object') return null;\r\n\r\n const candidates = [\r\n 'JSHeapSize',\r\n 'js_heap_size',\r\n 'HeapSize',\r\n 'heapSize',\r\n 'TotalAllocatedBytes',\r\n 'totalAllocatedBytes',\r\n 'mallocSize',\r\n ];\r\n\r\n for (const key of candidates) {\r\n const value = getNumericValue(runtimeProperties[key]);\r\n if (value !== null) return value;\r\n }\r\n return null;\r\n};\r\n\r\nconst logPerf = (scope: string, event: string, payload?: PerfPayload) => {\r\n const config = getPerfConfig();\r\n if (!config.enabled) return;\r\n const line = `${config.logPrefix}[${scope}] ${event}`;\r\n if (payload) {\r\n console.log(line, payload);\r\n return;\r\n }\r\n console.log(line);\r\n};\r\n\r\nexport const isMobilePerfEnabled = () => getPerfConfig().enabled;\r\n\r\nexport const perfNow = () => {\r\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\r\n return performance.now();\r\n }\r\n return Date.now();\r\n};\r\n\r\nexport const sampleMemory = (scope: string, event: string, payload?: PerfPayload) => {\r\n const config = getPerfConfig();\r\n if (!config.enabled || !config.sampleMemory) return;\r\n\r\n const performanceMemory = (\r\n globalThis as Record<string, unknown> & {\r\n performance?: { memory?: { usedJSHeapSize?: number; totalJSHeapSize?: number } };\r\n }\r\n ).performance?.memory;\r\n\r\n const jsHeapUsedBytes = getNumericValue(performanceMemory?.usedJSHeapSize);\r\n const jsHeapTotalBytes = getNumericValue(performanceMemory?.totalJSHeapSize);\r\n const hermesHeapBytes = readHermesHeapBytes();\r\n\r\n if (jsHeapUsedBytes === null && jsHeapTotalBytes === null && hermesHeapBytes === null) return;\r\n\r\n logPerf(scope, `memory.${event}`, {\r\n ...payload,\r\n jsHeapUsedMb: jsHeapUsedBytes === null ? undefined : bytesToMb(jsHeapUsedBytes),\r\n jsHeapTotalMb: jsHeapTotalBytes === null ? undefined : bytesToMb(jsHeapTotalBytes),\r\n hermesHeapMb: hermesHeapBytes === null ? undefined : bytesToMb(hermesHeapBytes),\r\n });\r\n};\r\n\r\nexport const createBurstMonitor = (\r\n scope: string,\r\n label: string,\r\n threshold = 12,\r\n windowMs = 1000\r\n) => {\r\n let windowStart = 0;\r\n let calls = 0;\r\n\r\n return (payload?: PerfPayload) => {\r\n const config = getPerfConfig();\r\n if (!config.enabled) return;\r\n\r\n const now = perfNow();\r\n if (windowStart === 0 || now - windowStart > windowMs) {\r\n windowStart = now;\r\n calls = 0;\r\n }\r\n\r\n calls += 1;\r\n if (calls === threshold || config.verbose) {\r\n logPerf(scope, `${label}.burst`, {\r\n calls,\r\n windowMs: round(now - windowStart),\r\n ...payload,\r\n });\r\n }\r\n };\r\n};\r\n\r\nexport const createRenderCounter = (\r\n scope: string,\r\n label = 'render',\r\n reportEvery = 30\r\n) => {\r\n let count = 0;\r\n return (payload?: PerfPayload) => {\r\n const config = getPerfConfig();\r\n if (!config.enabled) return;\r\n count += 1;\r\n if (count === 1 || count % reportEvery === 0 || config.verbose) {\r\n logPerf(scope, label, {\r\n count,\r\n ...payload,\r\n });\r\n }\r\n };\r\n};\r\n\r\ninterface ScrollMonitor {\r\n begin: (reason?: string, payload?: PerfPayload) => void;\r\n track: (timestampMs?: number) => void;\r\n end: (reason: string, payload?: PerfPayload) => void;\r\n}\r\n\r\nexport const createScrollPerfMonitor = (scope: string, label = 'scroll'): ScrollMonitor => {\r\n let active = false;\r\n let startAt = 0;\r\n let lastEventAt = 0;\r\n let sampleEvents = 0;\r\n let droppedFrames = 0;\r\n let maxFrameGapMs = 0;\r\n\r\n const reset = () => {\r\n active = false;\r\n startAt = 0;\r\n lastEventAt = 0;\r\n sampleEvents = 0;\r\n droppedFrames = 0;\r\n maxFrameGapMs = 0;\r\n };\r\n\r\n return {\r\n begin: (reason, payload) => {\r\n const config = getPerfConfig();\r\n if (!config.enabled) return;\r\n if (active) return;\r\n active = true;\r\n startAt = perfNow();\r\n if (reason && config.verbose) {\r\n logPerf(scope, `${label}.begin`, {\r\n reason,\r\n ...payload,\r\n });\r\n }\r\n },\r\n track: (timestampMs) => {\r\n if (!isMobilePerfEnabled()) return;\r\n\r\n const now = typeof timestampMs === 'number' && Number.isFinite(timestampMs)\r\n ? timestampMs\r\n : perfNow();\r\n\r\n if (!active) {\r\n active = true;\r\n startAt = now;\r\n }\r\n\r\n if (lastEventAt > 0) {\r\n const frameGap = Math.max(0, now - lastEventAt);\r\n maxFrameGapMs = Math.max(maxFrameGapMs, frameGap);\r\n droppedFrames += Math.max(0, Math.round(frameGap / FRAME_BUDGET_MS) - 1);\r\n }\r\n\r\n sampleEvents += 1;\r\n lastEventAt = now;\r\n },\r\n end: (reason, payload) => {\r\n if (!isMobilePerfEnabled() || !active) return;\r\n const stopAt = lastEventAt || perfNow();\r\n const durationMs = Math.max(0, stopAt - startAt);\r\n const estimatedFrameTotal = Math.max(sampleEvents + droppedFrames, 1);\r\n const fpsEstimate = durationMs > 0 ? (sampleEvents * 1000) / durationMs : 0;\r\n\r\n logPerf(scope, `${label}.${reason}`, {\r\n durationMs: round(durationMs),\r\n sampleEvents,\r\n droppedFrames,\r\n droppedFramesPct: round((droppedFrames / estimatedFrameTotal) * 100),\r\n fpsEstimate: round(fpsEstimate),\r\n maxFrameGapMs: round(maxFrameGapMs),\r\n ...payload,\r\n });\r\n\r\n reset();\r\n },\r\n };\r\n};\r\n\r\nexport const logPerfEvent = logPerf;\r\n","import React, { useEffect, useMemo, useRef } from \"react\";\nimport { Image, StyleSheet, View } from \"react-native\";\nimport WebView, {\n type WebViewMessageEvent,\n type WebViewErrorEvent,\n} from \"react-native-webview\";\nimport { useViewerStore } from \"@papyrus-sdk/core\";\nimport { DocumentEngine } from \"@papyrus-sdk/types\";\n\nconst runtimeAsset = require(\"../runtime/index.html\");\nconst runtimeSource = (() => {\n if (typeof runtimeAsset === \"string\") {\n return { html: runtimeAsset };\n }\n if (typeof runtimeAsset === \"number\") {\n const resolved = Image.resolveAssetSource(runtimeAsset);\n if (resolved?.uri) {\n return { uri: resolved.uri };\n }\n }\n if (\n runtimeAsset &&\n typeof runtimeAsset === \"object\" &&\n \"uri\" in runtimeAsset\n ) {\n const uri = (runtimeAsset as { uri?: string }).uri;\n if (uri) return { uri };\n }\n return { html: \"\" };\n})();\n\ntype WebViewBridge = {\n postMessage: (message: string) => void;\n};\n\ntype WebViewBridgeEngine = DocumentEngine & {\n attachWebView?: (bridge: WebViewBridge) => void;\n handleWebViewMessage?: (data: string) => void;\n};\n\ninterface WebViewViewerProps {\n engine: DocumentEngine;\n}\n\nconst WebViewViewer: React.FC<WebViewViewerProps> = ({ engine }) => {\n const webViewRef = useRef<WebView>(null);\n const { pageTheme } = useViewerStore();\n\n useEffect(() => {\n const bridgeEngine = engine as WebViewBridgeEngine;\n bridgeEngine.attachWebView?.({\n postMessage: (message: string) => {\n if (__DEV__) {\n const preview =\n message.length > 200 ? `${message.slice(0, 200)}…` : message;\n console.log(\"[Papyrus WebView] send\", preview);\n }\n webViewRef.current?.postMessage(message);\n },\n });\n }, [engine]);\n\n const handleMessage = (event: WebViewMessageEvent) => {\n const bridgeEngine = engine as WebViewBridgeEngine;\n if (__DEV__) {\n console.log(\"[Papyrus WebView] message\", event.nativeEvent.data);\n }\n bridgeEngine.handleWebViewMessage?.(event.nativeEvent.data);\n };\n\n const handleLoadEnd = () => {\n if (__DEV__) {\n console.log(\"[Papyrus WebView] loaded\");\n }\n };\n\n const handleError = (event: WebViewErrorEvent) => {\n if (__DEV__) {\n console.warn(\"[Papyrus WebView] error\", event.nativeEvent);\n }\n };\n\n const themeOverlayStyle = useMemo(() => {\n switch (pageTheme) {\n case \"sepia\":\n return styles.themeSepia;\n case \"dark\":\n return styles.themeDark;\n case \"high-contrast\":\n return styles.themeContrast;\n default:\n return styles.themeNone;\n }\n }, [pageTheme]);\n\n const allowingReadAccessToURL = useMemo(() => {\n if (!runtimeSource || typeof runtimeSource !== \"object\") return undefined;\n if (\"uri\" in runtimeSource && runtimeSource.uri) {\n return runtimeSource.uri;\n }\n return undefined;\n }, []);\n\n return (\n <View style={styles.container}>\n <WebView\n ref={webViewRef}\n source={runtimeSource}\n originWhitelist={[\"*\"]}\n onMessage={handleMessage}\n onLoadEnd={handleLoadEnd}\n onError={handleError}\n javaScriptEnabled\n domStorageEnabled\n scalesPageToFit\n setBuiltInZoomControls\n setDisplayZoomControls={false}\n allowFileAccess\n allowFileAccessFromFileURLs\n allowUniversalAccessFromFileURLs\n allowingReadAccessToURL={allowingReadAccessToURL}\n style={styles.webview}\n />\n <View\n pointerEvents=\"none\"\n style={[styles.themeOverlay, themeOverlayStyle]}\n />\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: \"#ffffff\",\n },\n webview: {\n flex: 1,\n backgroundColor: \"transparent\",\n },\n themeOverlay: {\n ...StyleSheet.absoluteFillObject,\n },\n themeNone: {\n backgroundColor: \"transparent\",\n },\n themeSepia: {\n backgroundColor: \"rgba(244, 236, 216, 0.35)\",\n },\n themeDark: {\n backgroundColor: \"rgba(0, 0, 0, 0.2)\",\n },\n themeContrast: {\n backgroundColor: \"rgba(0, 0, 0, 0.35)\",\n },\n});\n\nexport default WebViewViewer;\n","import React, { useEffect, useState } from \"react\";\nimport {\n View,\n Text,\n Pressable,\n StyleSheet,\n Modal,\n TextInput,\n} from \"react-native\";\nimport { useViewerStore } from \"@papyrus-sdk/core\";\nimport { IconSettings, IconChevronLeft, IconChevronRight } from \"../icons\";\nimport { DocumentEngine } from \"@papyrus-sdk/types\";\n\nexport interface TopbarProps {\n engine: DocumentEngine;\n onOpenSettings?: () => void;\n title?: string;\n logo?: React.ReactNode;\n onLogoPress?: () => void;\n logoAccessibilityLabel?: string;\n}\n\nconst Topbar: React.FC<TopbarProps> = ({\n engine,\n onOpenSettings,\n title,\n logo,\n onLogoPress,\n logoAccessibilityLabel = \"Logo\",\n}) => {\n const {\n currentPage,\n pageCount,\n uiTheme,\n setDocumentState,\n triggerScrollToPage,\n accentColor,\n mobileChromeVisible,\n } = useViewerStore();\n const [pageLabel, setPageLabel] = useState(`${currentPage}`);\n const [jumpModalOpen, setJumpModalOpen] = useState(false);\n const [jumpValue, setJumpValue] = useState(`${currentPage}`);\n const isDark = uiTheme === \"dark\";\n const navIconColor = isDark ? \"#e5e7eb\" : \"#111827\";\n\n useEffect(() => {\n setPageLabel(`${currentPage}`);\n if (!jumpModalOpen) {\n setJumpValue(`${currentPage}`);\n }\n }, [currentPage, jumpModalOpen]);\n\n const navigateToPage = (targetPage: number) => {\n const next = Math.max(1, Math.min(pageCount, targetPage));\n engine.goToPage(next);\n setDocumentState({ currentPage: next });\n triggerScrollToPage(next - 1);\n };\n\n const handlePageChange = (delta: number) => {\n navigateToPage(currentPage + delta);\n };\n\n const openJumpModal = () => {\n setJumpValue(`${currentPage}`);\n setJumpModalOpen(true);\n };\n\n const confirmJump = () => {\n const parsed = Number.parseInt(jumpValue, 10);\n if (Number.isNaN(parsed)) {\n setJumpModalOpen(false);\n return;\n }\n navigateToPage(parsed);\n setJumpModalOpen(false);\n };\n\n const defaultLogo = (\n <View style={[styles.logoBadge, { backgroundColor: accentColor }]}>\n <Text style={styles.logoText}>P</Text>\n </View>\n );\n const logoElement = logo ?? defaultLogo;\n\n if (!mobileChromeVisible) return null;\n\n return (\n <>\n <View style={[styles.container, isDark && styles.containerDark]}>\n <View style={styles.leftGroup}>\n {onLogoPress ? (\n <Pressable\n onPress={onLogoPress}\n accessibilityRole=\"button\"\n accessibilityLabel={logoAccessibilityLabel}\n style={styles.logoSlot}\n >\n {logoElement}\n </Pressable>\n ) : (\n <View style={styles.logoSlot}>{logoElement}</View>\n )}\n <Text\n numberOfLines={1}\n style={[styles.brandText, isDark && styles.brandTextDark]}\n >\n {title ?? \"Papyrus\"}\n </Text>\n </View>\n\n <View style={styles.pageGroup}>\n <Pressable\n onPress={() => handlePageChange(-1)}\n style={[styles.pageButton, isDark && styles.pageButtonDark]}\n >\n <IconChevronLeft size={16} color={navIconColor} />\n </Pressable>\n <Pressable onPress={openJumpModal} style={styles.pageIndicatorHit}>\n <Text\n style={[styles.pageIndicator, isDark && styles.pageIndicatorDark]}\n >\n {pageLabel}/{pageCount}\n </Text>\n </Pressable>\n <Pressable\n onPress={() => handlePageChange(1)}\n style={[styles.pageButton, isDark && styles.pageButtonDark]}\n >\n <IconChevronRight size={16} color={navIconColor} />\n </Pressable>\n </View>\n\n <View style={styles.rightGroup}>\n <Pressable\n onPress={() => onOpenSettings?.()}\n style={[styles.iconButton, isDark && styles.iconButtonDark]}\n >\n <IconSettings size={16} color={isDark ? \"#e5e7eb\" : \"#111827\"} />\n </Pressable>\n </View>\n </View>\n\n <Modal\n visible={jumpModalOpen}\n transparent\n animationType=\"fade\"\n onRequestClose={() => setJumpModalOpen(false)}\n >\n <Pressable\n style={styles.jumpModalBackdrop}\n onPress={() => setJumpModalOpen(false)}\n >\n <Pressable\n style={[styles.jumpModalCard, isDark && styles.jumpModalCardDark]}\n onPress={(event) => event.stopPropagation()}\n >\n <Text\n style={[\n styles.jumpModalTitle,\n isDark && styles.jumpModalTitleDark,\n ]}\n >\n Ir para página\n </Text>\n <TextInput\n value={jumpValue}\n onChangeText={(text) => setJumpValue(text.replace(/[^0-9]/g, \"\"))}\n keyboardType=\"number-pad\"\n autoFocus\n selectTextOnFocus\n maxLength={6}\n placeholder=\"1\"\n placeholderTextColor={isDark ? \"#6b7280\" : \"#9ca3af\"}\n style={[styles.jumpInput, isDark && styles.jumpInputDark]}\n onSubmitEditing={confirmJump}\n />\n <View style={styles.jumpActions}>\n <Pressable\n onPress={() => setJumpModalOpen(false)}\n style={[\n styles.jumpActionButton,\n styles.jumpActionCancel,\n isDark && styles.jumpActionCancelDark,\n ]}\n >\n <Text\n style={[\n styles.jumpActionText,\n isDark && styles.jumpActionTextDark,\n ]}\n >\n Cancelar\n </Text>\n </Pressable>\n <Pressable\n onPress={confirmJump}\n style={[\n styles.jumpActionButton,\n { backgroundColor: accentColor },\n ]}\n >\n <Text\n style={[styles.jumpActionText, styles.jumpActionTextPrimary]}\n >\n Ir\n </Text>\n </Pressable>\n </View>\n </Pressable>\n </Pressable>\n </Modal>\n </>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n paddingHorizontal: 14,\n paddingVertical: 8,\n backgroundColor: \"#ffffff\",\n borderBottomWidth: 1,\n borderBottomColor: \"#e5e7eb\",\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n containerDark: {\n backgroundColor: \"#0f1115\",\n borderBottomColor: \"#1f2937\",\n },\n leftGroup: {\n flexDirection: \"row\",\n alignItems: \"center\",\n flex: 1,\n },\n logoBadge: {\n width: 26,\n height: 26,\n borderRadius: 8,\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"#2563eb\",\n },\n logoSlot: {\n marginRight: 8,\n borderRadius: 10,\n },\n logoText: {\n color: \"#ffffff\",\n fontWeight: \"800\",\n fontSize: 13,\n },\n brandText: {\n fontSize: 14,\n fontWeight: \"800\",\n color: \"#111827\",\n flexShrink: 1,\n },\n brandTextDark: {\n color: \"#f9fafb\",\n },\n pageGroup: {\n flexDirection: \"row\",\n alignItems: \"center\",\n flex: 1,\n justifyContent: \"center\",\n },\n pageButton: {\n width: 26,\n height: 26,\n borderRadius: 10,\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"#f3f4f6\",\n },\n pageButtonDark: {\n backgroundColor: \"#111827\",\n },\n pageButtonText: {\n fontSize: 11,\n fontWeight: \"600\",\n color: \"#111827\",\n },\n pageButtonTextDark: {\n color: \"#e5e7eb\",\n },\n pageIndicator: {\n fontSize: 12,\n color: \"#374151\",\n minWidth: 52,\n textAlign: \"center\",\n marginHorizontal: 6,\n fontWeight: \"700\",\n },\n pageIndicatorDark: {\n color: \"#d1d5db\",\n },\n pageIndicatorHit: {\n minWidth: 62,\n paddingVertical: 4,\n borderRadius: 8,\n },\n rightGroup: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n flex: 1,\n },\n iconButton: {\n paddingHorizontal: 10,\n paddingVertical: 6,\n borderRadius: 10,\n backgroundColor: \"#f3f4f6\",\n marginLeft: 6,\n },\n iconButtonDark: {\n backgroundColor: \"#111827\",\n },\n iconButtonActive: {\n backgroundColor: \"#2563eb\",\n },\n iconButtonText: {\n fontSize: 11,\n fontWeight: \"700\",\n color: \"#111827\",\n },\n iconButtonTextDark: {\n color: \"#e5e7eb\",\n },\n iconButtonTextActive: {\n color: \"#ffffff\",\n },\n iconRow: {\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n iconRowSpacer: {\n width: 6,\n },\n jumpModalBackdrop: {\n flex: 1,\n backgroundColor: \"rgba(0, 0, 0, 0.35)\",\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingHorizontal: 24,\n },\n jumpModalCard: {\n width: \"100%\",\n maxWidth: 280,\n backgroundColor: \"#ffffff\",\n borderRadius: 14,\n borderWidth: 1,\n borderColor: \"#e5e7eb\",\n padding: 14,\n },\n jumpModalCardDark: {\n backgroundColor: \"#0f1115\",\n borderColor: \"#1f2937\",\n },\n jumpModalTitle: {\n fontSize: 13,\n fontWeight: \"700\",\n color: \"#111827\",\n marginBottom: 10,\n },\n jumpModalTitleDark: {\n color: \"#f3f4f6\",\n },\n jumpInput: {\n borderWidth: 1,\n borderColor: \"#d1d5db\",\n borderRadius: 10,\n paddingHorizontal: 12,\n paddingVertical: 8,\n fontSize: 15,\n color: \"#111827\",\n marginBottom: 12,\n },\n jumpInputDark: {\n borderColor: \"#374151\",\n color: \"#f3f4f6\",\n backgroundColor: \"#111827\",\n },\n jumpActions: {\n flexDirection: \"row\",\n justifyContent: \"flex-end\",\n },\n jumpActionButton: {\n paddingHorizontal: 12,\n paddingVertical: 8,\n borderRadius: 8,\n marginLeft: 8,\n minWidth: 64,\n alignItems: \"center\",\n },\n jumpActionCancel: {\n backgroundColor: \"#f3f4f6\",\n },\n jumpActionCancelDark: {\n backgroundColor: \"#111827\",\n },\n jumpActionText: {\n fontSize: 12,\n fontWeight: \"700\",\n color: \"#111827\",\n },\n jumpActionTextDark: {\n color: \"#e5e7eb\",\n },\n jumpActionTextPrimary: {\n color: \"#ffffff\",\n },\n});\n\nexport default Topbar;\n","import React from 'react';\nimport Svg, { Path } from 'react-native-svg';\n\ntype IconProps = {\n size?: number;\n color?: string;\n strokeWidth?: number;\n};\n\nconst defaultColor = '#111827';\n\nexport const IconDocument: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M10 3v4a1 1 0 0 1-1 1H5m14-4v16a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V7.914a1 1 0 0 1 .293-.707l3.914-3.914A1 1 0 0 1 9.914 3H18a1 1 0 0 1 1 1Z\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconGrid: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M9.143 4H4.857A.857.857 0 0 0 4 4.857v4.286c0 .473.384.857.857.857h4.286A.857.857 0 0 0 10 9.143V4.857A.857.857 0 0 0 9.143 4Zm10 0h-4.286a.857.857 0 0 0-.857.857v4.286c0 .473.384.857.857.857h4.286A.857.857 0 0 0 20 9.143V4.857A.857.857 0 0 0 19.143 4Zm-10 10H4.857a.857.857 0 0 0-.857.857v4.286c0 .473.384.857.857.857h4.286a.857.857 0 0 0 .857-.857v-4.286A.857.857 0 0 0 9.143 14Zm10 0h-4.286a.857.857 0 0 0-.857.857v4.286c0 .473.384.857.857.857h4.286a.857.857 0 0 0 .857-.857v-4.286a.857.857 0 0 0-.857-.857Z\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconSearch: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"m21 21-3.5-3.5M17 10a7 7 0 1 1-14 0 7 7 0 0 1 14 0Z\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n />\n </Svg>\n);\n\nexport const IconZoomIn: React.FC<IconProps> = ({ size = 18, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path d=\"M5 12h14m-7 7V5\" stroke={color} strokeWidth={strokeWidth} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </Svg>\n);\n\nexport const IconZoomOut: React.FC<IconProps> = ({ size = 18, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path d=\"M5 12h14\" stroke={color} strokeWidth={strokeWidth} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </Svg>\n);\n\nexport const IconSettings: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M21 13v-2a1 1 0 0 0-1-1h-.757l-.707-1.707.535-.536a1 1 0 0 0 0-1.414l-1.414-1.414a1 1 0 0 0-1.414 0l-.536.535L14 4.757V4a1 1 0 0 0-1-1h-2a1 1 0 0 0-1 1v.757l-1.707.707-.536-.535a1 1 0 0 0-1.414 0L4.929 6.343a1 1 0 0 0 0 1.414l.536.536L4.757 10H4a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h.757l.707 1.707-.535.536a1 1 0 0 0 0 1.414l1.414 1.414a1 1 0 0 0 1.414 0l.536-.535 1.707.707V20a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-.757l1.707-.708.536.536a1 1 0 0 0 1.414 0l1.414-1.414a1 1 0 0 0 0-1.414l-.535-.536.707-1.707H20a1 1 0 0 0 1-1Z\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconComment: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M7.556 8.5h8m-8 3.5H12m7.111-7H4.89a.896.896 0 0 0-.629.256.868.868 0 0 0-.26.619v9.25c0 .232.094.455.26.619A.896.896 0 0 0 4.89 16H9l3 4 3-4h4.111a.896.896 0 0 0 .629-.256.868.868 0 0 0 .26-.619v-9.25a.868.868 0 0 0-.26-.619.896.896 0 0 0-.63-.256Z\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconCursor: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M9 20H5.5c-.27614 0-.5-.2239-.5-.5v-3c0-.2761.22386-.5.5-.5h13c.2761 0 .5.2239.5.5v3c0 .2761-.2239.5-.5.5H18m-6-1 1.42 1.8933c.04.0534.12.0534.16 0L15 19m-7-6 3.9072-9.76789c.0335-.08381.1521-.08381.1856 0L16 13m-8 0H7m1 0h1.5m6.5 0h-1.5m1.5 0h1m-7-3.00001h4\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n />\n </Svg>\n);\n\nexport const IconPalette: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M12 7h.01m3.486 1.513h.01m-6.978 0h.01M6.99 12H7m9 4h2.706a1.957 1.957 0 0 0 1.883-1.325A9 9 0 1 0 3.043 12.89 9.1 9.1 0 0 0 8.2 20.1a8.62 8.62 0 0 0 3.769.9 2.013 2.013 0 0 0 2.03-2v-.857A2.036 2.036 0 0 1 16 16Z\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconTrash: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M5 7h14m-9 3v8m4-8v8M10 3h4a1 1 0 0 1 1 1v3H9V4a1 1 0 0 1 1-1ZM6 7h12v13a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V7Z\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconLink: React.FC<IconProps> = ({ size = 20, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M13.213 9.787a3.391 3.391 0 0 0-4.795 0l-3.425 3.426a3.39 3.39 0 0 0 4.795 4.794l.321-.304m-.321-4.49a3.39 3.39 0 0 0 4.795 0l3.424-3.426a3.39 3.39 0 0 0-4.794-4.795l-1.028.961\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconEdit: React.FC<{ size?: number; color?: string }> = ({ size = 18, color = defaultColor }) => (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d=\"M5 1a2 2 0 0 0-2 2v9.998a2 2 0 0 0 2 2h1.046l.25-1H5a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3v2.5A1.5 1.5 0 0 0 9.498 6h2.5v1.44a2.535 2.535 0 0 1 1-.405V5.413a1.5 1.5 0 0 0-.44-1.06L9.645 1.439A1.5 1.5 0 0 0 8.585 1H5Zm6.791 4H9.5a.5.5 0 0 1-.5-.5V2.206l2.792 2.792Zm1.207 3.06a1.56 1.56 0 0 0-.662.394L8.05 12.74a2.777 2.777 0 0 0-.722 1.257l-.009.033l-.302 1.211a.61.61 0 0 0 .738.74l1.211-.303a2.776 2.776 0 0 0 1.29-.73l4.288-4.288a1.56 1.56 0 0 0-1.545-2.6Z\"\n fill={color}\n />\n </Svg>\n);\n\nexport const IconChevronRight: React.FC<IconProps> = ({ size = 18, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"m9 5 7 7-7 7\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconChevronLeft: React.FC<IconProps> = ({ size = 18, color = defaultColor, strokeWidth = 2 }) => (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"m15 19-7-7 7-7\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n);\n\nexport const IconHand: React.FC<{ size?: number; color?: string }> = ({ size = 20, color = '#111827' }) => (\n <Svg width={size} height={size} viewBox=\"0 0 56 56\" fill=\"none\">\n <Path\n d=\"M25.129 53.512c8.25 0 14.039-4.477 17.156-13.266l4.125-11.602c1.031-2.93.094-5.343-2.344-6.234c-2.18-.797-4.336.14-5.367 2.555l-1.523 3.75c-.047.094-.117.164-.211.164c-.117 0-.164-.094-.164-.211V9.871c0-2.742-1.711-4.453-4.336-4.453c-.961 0-1.828.328-2.485.938c-.304-2.391-1.851-3.868-4.171-3.868c-2.274 0-3.868 1.524-4.22 3.82c-.585-.585-1.429-.89-2.273-.89c-2.437 0-4.054 1.688-4.054 4.29v2.6c-.633-.656-1.57-1.007-2.578-1.007c-2.438 0-4.125 1.804-4.125 4.43v20.132c0 10.969 6.656 17.649 16.57 17.649m-.117-3.258c-8.297 0-13.36-5.32-13.36-14.766v-19.43c0-.984.633-1.687 1.618-1.687c.96 0 1.664.703 1.664 1.688v11.976c0 .867.703 1.453 1.453 1.453c.797 0 1.523-.586 1.523-1.453V10.13c0-1.008.633-1.688 1.594-1.688c.984 0 1.664.68 1.664 1.688v16.71c0 .868.703 1.454 1.477 1.454c.796 0 1.523-.586 1.523-1.453V7.223c0-.985.656-1.711 1.64-1.711c.938 0 1.618.726 1.618 1.71V26.84c0 .82.656 1.453 1.476 1.453c.797 0 1.5-.633 1.5-1.453V10.129c0-1.008.68-1.688 1.641-1.688c.984 0 1.64.68 1.64 1.688V33.19c0 1.078.68 1.852 1.665 1.852c.843 0 1.547-.375 2.086-1.547l3.187-7.125c.422-1.008 1.266-1.523 2.133-1.195c.937.375 1.266 1.265.82 2.484l-4.148 11.578c-2.86 7.993-7.875 11.016-14.414 11.016\"\n fill={color}\n />\n </Svg>\n);\n","import React from \"react\";\nimport { View, Text, Pressable, StyleSheet } from \"react-native\";\nimport { useViewerStore } from \"@papyrus-sdk/core\";\nimport { getStrings } from \"../strings\";\nimport { IconEdit } from \"../icons\";\n\nconst COLOR_SWATCHES = [\n \"#fbbf24\",\n \"#f97316\",\n \"#ef4444\",\n \"#10b981\",\n \"#22d3ee\",\n \"#3b82f6\",\n \"#8b5cf6\",\n \"#ec4899\",\n \"#f3f4f6\",\n \"#111827\",\n];\n\nconst TOOL_OPTIONS = [\n { id: \"select\", label: \"select\" },\n { id: \"highlight\", label: \"highlight\" },\n { id: \"underline\", label: \"underline\" },\n { id: \"squiggly\", label: \"squiggly\" },\n { id: \"strikeout\", label: \"strikeout\" },\n { id: \"ink\", label: \"ink\" },\n { id: \"comment\", label: \"note\" },\n] as const;\n\nconst ToolDock: React.FC = () => {\n const {\n uiTheme,\n locale,\n annotationColor,\n setAnnotationColor,\n accentColor,\n activeTool,\n toolDockOpen,\n setDocumentState,\n } = useViewerStore();\n const isDark = uiTheme === \"dark\";\n const t = getStrings(locale);\n\n return (\n <View pointerEvents=\"box-none\" style={styles.root}>\n {toolDockOpen ? (\n <View style={[styles.container, isDark && styles.containerDark]}>\n <View style={styles.header}>\n <Text style={[styles.title, isDark && styles.titleDark]}>\n {t.tools}\n </Text>\n <Pressable\n onPress={() => setDocumentState({ toolDockOpen: false })}\n style={[styles.closeButton, isDark && styles.closeButtonDark]}\n >\n <Text\n style={[styles.closeLabel, isDark && styles.closeLabelDark]}\n >\n x\n </Text>\n </Pressable>\n </View>\n\n <View style={styles.toolsRow}>\n {TOOL_OPTIONS.map((tool) => {\n const isSelected = activeTool === tool.id;\n const label =\n tool.label === \"note\"\n ? t.note\n : tool.label === \"select\"\n ? t.select\n : tool.label === \"underline\"\n ? t.underline\n : tool.label === \"squiggly\"\n ? t.squiggly\n : tool.label === \"strikeout\"\n ? t.strikeout\n : tool.label === \"ink\"\n ? t.ink\n : t.highlight;\n return (\n <Pressable\n key={tool.id}\n onPress={() => setDocumentState({ activeTool: tool.id })}\n style={[\n styles.toolButton,\n isDark && styles.toolButtonDark,\n isSelected && { backgroundColor: accentColor },\n ]}\n >\n <Text\n style={[\n styles.toolText,\n isDark && styles.toolTextDark,\n isSelected && styles.toolTextActive,\n ]}\n numberOfLines={1}\n >\n {label}\n </Text>\n </Pressable>\n );\n })}\n </View>\n\n <Text style={[styles.paletteTitle, isDark && styles.titleDark]}>\n {t.color}\n </Text>\n <View style={styles.paletteRow}>\n {COLOR_SWATCHES.map((color) => {\n const isSelected = annotationColor === color;\n return (\n <Pressable\n key={color}\n onPress={() => setAnnotationColor(color)}\n style={[\n styles.swatch,\n { backgroundColor: color },\n isSelected && styles.swatchSelected,\n isSelected && { borderColor: accentColor },\n ]}\n />\n );\n })}\n </View>\n </View>\n ) : (\n <Pressable\n onPress={() => setDocumentState({ toolDockOpen: true })}\n style={[styles.fab, isDark && styles.fabDark]}\n >\n <IconEdit size={16} color={isDark ? \"#e5e7eb\" : \"#111827\"} />\n </Pressable>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n root: {\n ...StyleSheet.absoluteFillObject,\n alignItems: \"flex-end\",\n justifyContent: \"flex-end\",\n paddingHorizontal: 16,\n paddingBottom: 72,\n },\n fab: {\n width: 44,\n height: 44,\n borderRadius: 22,\n backgroundColor: \"#ffffff\",\n borderWidth: 1,\n borderColor: \"#d1d5db\",\n alignItems: \"center\",\n justifyContent: \"center\",\n shadowColor: \"#000000\",\n shadowOpacity: 0.18,\n shadowRadius: 12,\n shadowOffset: { width: 0, height: 6 },\n elevation: 7,\n },\n fabDark: {\n backgroundColor: \"#111827\",\n borderColor: \"#374151\",\n },\n container: {\n width: \"100%\",\n maxWidth: 440,\n paddingVertical: 10,\n paddingHorizontal: 12,\n borderRadius: 16,\n backgroundColor: \"#ffffff\",\n borderWidth: 1,\n borderColor: \"#e5e7eb\",\n shadowColor: \"#000000\",\n shadowOpacity: 0.15,\n shadowRadius: 14,\n shadowOffset: { width: 0, height: 6 },\n elevation: 6,\n },\n containerDark: {\n backgroundColor: \"#0f1115\",\n borderColor: \"#1f2937\",\n },\n header: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: 8,\n },\n closeButton: {\n width: 26,\n height: 26,\n borderRadius: 8,\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"#f3f4f6\",\n },\n closeButtonDark: {\n backgroundColor: \"#111827\",\n },\n closeLabel: {\n fontSize: 12,\n fontWeight: \"700\",\n color: \"#111827\",\n },\n closeLabelDark: {\n color: \"#e5e7eb\",\n },\n title: {\n fontSize: 11,\n fontWeight: \"800\",\n color: \"#111827\",\n },\n titleDark: {\n color: \"#e5e7eb\",\n },\n toolsRow: {\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n marginBottom: 8,\n },\n toolButton: {\n marginRight: 6,\n marginBottom: 6,\n paddingHorizontal: 8,\n paddingVertical: 5,\n borderRadius: 10,\n borderWidth: 1,\n borderColor: \"#d1d5db\",\n backgroundColor: \"#f9fafb\",\n },\n toolButtonDark: {\n borderColor: \"#374151\",\n backgroundColor: \"#111827\",\n },\n toolText: {\n fontSize: 10,\n fontWeight: \"700\",\n color: \"#111827\",\n },\n toolTextDark: {\n color: \"#e5e7eb\",\n },\n toolTextActive: {\n color: \"#ffffff\",\n },\n paletteTitle: {\n fontSize: 10,\n fontWeight: \"700\",\n color: \"#4b5563\",\n marginBottom: 6,\n },\n paletteRow: {\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n },\n swatch: {\n width: 20,\n height: 20,\n borderRadius: 10,\n marginRight: 8,\n marginBottom: 8,\n borderWidth: 1,\n borderColor: \"#e5e7eb\",\n },\n swatchSelected: {\n borderColor: \"#2563eb\",\n borderWidth: 2,\n },\n});\n\nexport default ToolDock;\n","import { Locale } from \"@papyrus-sdk/types\";\n\ntype Strings = {\n pages: string;\n search: string;\n notes: string;\n select: string;\n underline: string;\n squiggly: string;\n strikeout: string;\n ink: string;\n color: string;\n tools: string;\n read: string;\n edit: string;\n done: string;\n page: string;\n summary: string;\n pagesTab: string;\n summaryTab: string;\n searchPlaceholder: string;\n searchGo: string;\n results: string;\n searching: string;\n noResults: string;\n noSummary: string;\n noAnnotations: string;\n untitled: string;\n pageTransition: string;\n continuous: string;\n pageByPage: string;\n layout: string;\n singlePage: string;\n doublePage: string;\n rotate: string;\n clockwise: string;\n counterclockwise: string;\n zoom: string;\n highlight: string;\n strike: string;\n text: string;\n note: string;\n editNote: string;\n notePlaceholder: string;\n cancel: string;\n save: string;\n language: string;\n english: string;\n portuguese: string;\n appearance: string;\n light: string;\n dark: string;\n pageTheme: string;\n themeOriginal: string;\n themeSepia: string;\n themeDark: string;\n themeContrast: string;\n};\n\nconst STRINGS: Record<Locale, Strings> = {\n en: {\n pages: \"Pages\",\n search: \"Search\",\n notes: \"Notes\",\n select: \"Select\",\n underline: \"Underline\",\n squiggly: \"Squiggly\",\n strikeout: \"Strikeout\",\n ink: \"Ink\",\n color: \"Color\",\n tools: \"Tools\",\n read: \"Read\",\n edit: \"Edit\",\n done: \"Done\",\n page: \"Page\",\n summary: \"Summary\",\n pagesTab: \"Pages\",\n summaryTab: \"Summary\",\n searchPlaceholder: \"Search text...\",\n searchGo: \"Go\",\n results: \"results\",\n searching: \"Searching...\",\n noResults: \"No results yet.\",\n noSummary: \"No summary available.\",\n noAnnotations: \"No annotations yet.\",\n untitled: \"Untitled\",\n pageTransition: \"Page transition\",\n continuous: \"Continuous\",\n pageByPage: \"Page by page\",\n layout: \"Layout\",\n singlePage: \"Single page\",\n doublePage: \"Double page\",\n rotate: \"Rotate\",\n clockwise: \"Clockwise\",\n counterclockwise: \"Counterclockwise\",\n zoom: \"Zoom\",\n highlight: \"Highlight\",\n strike: \"Strike\",\n text: \"Text\",\n note: \"Note\",\n editNote: \"Edit note\",\n notePlaceholder: \"Write your note...\",\n cancel: \"Cancel\",\n save: \"Save\",\n language: \"Language\",\n english: \"English\",\n portuguese: \"Portuguese (BR)\",\n appearance: \"Appearance\",\n light: \"Light\",\n dark: \"Dark\",\n pageTheme: \"Page theme\",\n themeOriginal: \"Original\",\n themeSepia: \"Sepia\",\n themeDark: \"Dark\",\n themeContrast: \"High contrast\",\n },\n \"pt-BR\": {\n pages: \"Paginas\",\n search: \"Buscar\",\n notes: \"Notas\",\n select: \"Selecionar\",\n underline: \"Sublinhar\",\n squiggly: \"Ondulado\",\n strikeout: \"Riscado\",\n ink: \"Tinta\",\n color: \"Cor\",\n tools: \"Ferramentas\",\n read: \"Ler\",\n edit: \"Editar\",\n done: \"Concluir\",\n page: \"Pagina\",\n summary: \"Sumario\",\n pagesTab: \"Paginas\",\n summaryTab: \"Sumario\",\n searchPlaceholder: \"Pesquisar texto...\",\n searchGo: \"Buscar\",\n results: \"resultados\",\n searching: \"Pesquisando...\",\n noResults: \"Nenhum resultado.\",\n noSummary: \"Sem sumario.\",\n noAnnotations: \"Sem anotacoes.\",\n untitled: \"Sem titulo\",\n pageTransition: \"Transicao de pagina\",\n continuous: \"Continuo\",\n pageByPage: \"Pagina por pagina\",\n layout: \"Layout\",\n singlePage: \"Pagina unica\",\n doublePage: \"Pagina dupla\",\n rotate: \"Girar\",\n clockwise: \"Sentido horario\",\n counterclockwise: \"Sentido anti-horario\",\n zoom: \"Zoom\",\n highlight: \"Marca texto\",\n strike: \"Risco\",\n text: \"Texto\",\n note: \"Nota\",\n editNote: \"Editar nota\",\n notePlaceholder: \"Escreva sua nota...\",\n cancel: \"Cancelar\",\n save: \"Salvar\",\n language: \"Idioma\",\n english: \"Ingles\",\n portuguese: \"Portugues (BR)\",\n appearance: \"Aparencia\",\n light: \"Claro\",\n dark: \"Escuro\",\n pageTheme: \"Tema da pagina\",\n themeOriginal: \"Original\",\n themeSepia: \"Sepia\",\n themeDark: \"Escuro\",\n themeContrast: \"Contraste\",\n },\n};\n\nexport const getStrings = (locale: Locale | undefined) =>\n STRINGS[locale ?? \"en\"] ?? STRINGS.en;\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n Modal,\n View,\n Text,\n Pressable,\n TextInput,\n StyleSheet,\n ScrollView,\n ActivityIndicator,\n FlatList,\n Dimensions,\n Platform,\n UIManager,\n findNodeHandle,\n type LayoutChangeEvent,\n type ViewToken,\n} from \"react-native\";\nimport { useViewerStore, SearchService } from \"@papyrus-sdk/core\";\nimport { DocumentEngine, OutlineItem } from \"@papyrus-sdk/types\";\nimport { PapyrusPageView } from \"@papyrus-sdk/engine-native\";\nimport { getStrings } from \"../strings\";\nimport { IconChevronLeft, IconChevronRight } from \"../icons\";\nimport {\n createBurstMonitor,\n isMobilePerfEnabled,\n logPerfEvent,\n perfNow,\n sampleMemory,\n} from \"../perf/mobilePerf\";\n\nexport interface RightSheetProps {\n engine: DocumentEngine;\n thumbsInitialCount?: number;\n}\n\nconst withAlpha = (hex: string, alpha: number) => {\n const normalized = hex.replace(\"#\", \"\").trim();\n const value =\n normalized.length === 3\n ? normalized\n .split(\"\")\n .map((c) => c + c)\n .join(\"\")\n : normalized;\n if (value.length !== 6) return hex;\n const r = parseInt(value.slice(0, 2), 16);\n const g = parseInt(value.slice(2, 4), 16);\n const b = parseInt(value.slice(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n};\n\nconst THUMBNAILS_INITIAL_NUM_TO_RENDER = 4;\nconst THUMBNAILS_WINDOW_SIZE = 5;\nconst THUMBNAILS_MAX_TO_RENDER_PER_BATCH = 6;\nconst THUMBNAILS_UPDATE_CELLS_BATCHING_PERIOD = 40;\nconst THUMBNAILS_PREWARM_COUNT = 8;\nconst THUMBNAILS_DEFAULT_ASPECT_RATIO = 1.28;\n\nconst areNumberSetsEqual = (a: Set<number>, b: Set<number>) => {\n if (a.size !== b.size) return false;\n for (const value of a) {\n if (!b.has(value)) return false;\n }\n return true;\n};\n\nconst resolvePositiveInt = (\n value: number | undefined,\n fallback: number,\n min: number,\n max: number\n) => {\n if (typeof value !== \"number\" || !Number.isFinite(value)) return fallback;\n const rounded = Math.round(value);\n return Math.max(min, Math.min(max, rounded));\n};\n\nconst PageThumbnail: React.FC<{\n engine: DocumentEngine;\n pageIndex: number;\n isActive: boolean;\n isDark: boolean;\n zoom: number;\n cardWidth: number;\n frameWidth: number;\n frameHeight: number;\n accentColor: string;\n useNativePreview: boolean;\n shouldRenderPreview: boolean;\n onPress: () => void;\n}> = ({\n engine,\n pageIndex,\n isActive,\n isDark,\n zoom,\n cardWidth,\n frameWidth,\n frameHeight,\n accentColor,\n useNativePreview,\n shouldRenderPreview,\n onPress,\n}) => {\n const viewRef = useRef<any>(null);\n const [layoutReady, setLayoutReady] = useState(false);\n\n useEffect(() => {\n if (!layoutReady || !useNativePreview || !shouldRenderPreview) return;\n const viewTag = findNodeHandle(viewRef.current);\n if (!viewTag) return;\n const isNative = Platform.OS === \"android\" || Platform.OS === \"ios\";\n const renderScale = isNative ? 2.0 / Math.max(zoom, 0.5) : 2.0;\n void engine.renderPage(pageIndex, viewTag, renderScale);\n }, [\n engine,\n pageIndex,\n layoutReady,\n shouldRenderPreview,\n useNativePreview,\n zoom,\n ]);\n\n const handleLayout = (event: LayoutChangeEvent) => {\n if (event.nativeEvent.layout.width && event.nativeEvent.layout.height) {\n setLayoutReady(true);\n }\n };\n\n return (\n <Pressable\n onPress={onPress}\n style={[\n styles.thumbCard,\n { width: cardWidth },\n isDark && styles.thumbCardDark,\n isActive && styles.thumbCardActive,\n isActive && { borderColor: accentColor },\n ]}\n >\n <View\n onLayout={handleLayout}\n style={[styles.thumbFrame, { width: frameWidth, height: frameHeight }]}\n >\n {useNativePreview && shouldRenderPreview ? (\n <PapyrusPageView ref={viewRef} style={styles.thumbView} />\n ) : (\n <View\n style={[styles.thumbFallback, isDark && styles.thumbFallbackDark]}\n >\n <Text\n style={[\n styles.thumbFallbackText,\n isDark && styles.thumbFallbackTextDark,\n ]}\n >\n {pageIndex + 1}\n </Text>\n </View>\n )}\n </View>\n <Text style={[styles.thumbLabel, isDark && styles.thumbLabelDark]}>\n {pageIndex + 1}\n </Text>\n </Pressable>\n );\n};\n\nconst OutlineNode: React.FC<{\n item: OutlineItem;\n depth?: number;\n isDark: boolean;\n onSelect: (pageIndex: number) => void;\n untitledLabel: string;\n}> = ({ item, depth = 0, isDark, onSelect, untitledLabel }) => {\n const hasChildren = item.children && item.children.length > 0;\n const isClickable = item.pageIndex >= 0;\n\n return (\n <View>\n <Pressable\n onPress={() => {\n if (isClickable) onSelect(item.pageIndex);\n }}\n style={[styles.outlineRow, { paddingLeft: 12 + depth * 12 }]}\n >\n <Text\n style={[\n styles.outlineText,\n isDark && styles.outlineTextDark,\n !isClickable && styles.outlineTextMuted,\n ]}\n numberOfLines={2}\n >\n {item.title || untitledLabel}\n </Text>\n </Pressable>\n {hasChildren &&\n item.children!.map((child, index) => (\n <OutlineNode\n key={`${child.title}-${index}`}\n item={child}\n depth={depth + 1}\n isDark={isDark}\n onSelect={onSelect}\n untitledLabel={untitledLabel}\n />\n ))}\n </View>\n );\n};\n\nconst RightSheet: React.FC<RightSheetProps> = ({\n engine,\n thumbsInitialCount,\n}) => {\n const {\n sidebarRightOpen,\n sidebarRightTab,\n toggleSidebarRight,\n outline,\n searchResults,\n searchQuery,\n activeSearchIndex,\n nextSearchResult,\n prevSearchResult,\n annotations,\n uiTheme,\n setSearch,\n setDocumentState,\n triggerScrollToPage,\n setSelectedAnnotation,\n pageCount,\n currentPage,\n zoom,\n locale,\n accentColor,\n } = useViewerStore();\n const [pagesMode, setPagesMode] = useState<\"thumbnails\" | \"summary\">(\n \"thumbnails\"\n );\n const [query, setQuery] = useState(\"\");\n const [isSearching, setIsSearching] = useState(false);\n const searchService = useMemo(() => new SearchService(engine), [engine]);\n const isDark = uiTheme === \"dark\";\n const accentSoft = withAlpha(accentColor, 0.2);\n const accentStrong = withAlpha(accentColor, 0.35);\n const t = getStrings(locale);\n const perfEnabled = isMobilePerfEnabled();\n const setStateBurstRef = useRef(\n createBurstMonitor(\"RightSheet\", \"setDocumentState\", 10, 800)\n );\n const sheetHeight = Math.min(640, Dimensions.get(\"window\").height * 0.72);\n const windowWidth = Dimensions.get(\"window\").width;\n const gridGutter = 12;\n const gridPadding = 16;\n const cardWidth = (windowWidth - gridPadding * 2 - gridGutter) / 2;\n const frameWidth = cardWidth - 16;\n const renderTarget = engine.getRenderTargetType?.();\n const hasNativePageView = Boolean(\n UIManager.getViewManagerConfig?.(\"PapyrusPageView\")\n );\n const useNativePreview = renderTarget !== \"webview\" && hasNativePageView;\n const thumbnailDimensionsCacheRef = useRef<\n Map<number, { width: number; height: number }>\n >(new Map());\n const thumbnailDimensionsPendingRef = useRef<Set<number>>(new Set());\n const thumbnailRefreshTimeoutRef = useRef<ReturnType<\n typeof setTimeout\n > | null>(null);\n const [thumbnailLayoutRevision, setThumbnailLayoutRevision] = useState(0);\n const [visibleThumbnailPages, setVisibleThumbnailPages] = useState<\n Set<number>\n >(() => new Set());\n const resolvedThumbsInitialCount = useMemo(\n () =>\n resolvePositiveInt(\n thumbsInitialCount,\n THUMBNAILS_INITIAL_NUM_TO_RENDER,\n 2,\n 24\n ),\n [thumbsInitialCount]\n );\n const resolvedThumbsPrewarmCount =\n thumbsInitialCount === undefined\n ? THUMBNAILS_PREWARM_COUNT\n : Math.max(resolvedThumbsInitialCount, resolvedThumbsInitialCount * 2);\n const normalizedThumbsInitialCount = Math.min(\n resolvedThumbsInitialCount,\n resolvedThumbsPrewarmCount\n );\n\n const closeSheet = useCallback(() => {\n toggleSidebarRight();\n }, [toggleSidebarRight]);\n\n const scheduleThumbnailLayoutRefresh = useCallback(() => {\n if (thumbnailRefreshTimeoutRef.current) return;\n thumbnailRefreshTimeoutRef.current = setTimeout(() => {\n thumbnailRefreshTimeoutRef.current = null;\n setThumbnailLayoutRevision((value) => value + 1);\n }, 80);\n }, []);\n\n const ensureThumbnailDimensions = useCallback(\n (pageIndex: number) => {\n if (pageIndex < 0 || pageIndex >= pageCount) return;\n if (thumbnailDimensionsCacheRef.current.has(pageIndex)) return;\n if (thumbnailDimensionsPendingRef.current.has(pageIndex)) return;\n\n thumbnailDimensionsPendingRef.current.add(pageIndex);\n void engine\n .getPageDimensions(pageIndex)\n .then((dims) => {\n if (dims.width <= 0 || dims.height <= 0) return;\n thumbnailDimensionsCacheRef.current.set(pageIndex, {\n width: dims.width,\n height: dims.height,\n });\n scheduleThumbnailLayoutRefresh();\n })\n .finally(() => {\n thumbnailDimensionsPendingRef.current.delete(pageIndex);\n });\n },\n [engine, pageCount, scheduleThumbnailLayoutRefresh]\n );\n\n const getThumbnailFrameHeight = useCallback(\n (pageIndex: number) => {\n const dims = thumbnailDimensionsCacheRef.current.get(pageIndex);\n const ratio =\n !dims || dims.width <= 0 || dims.height <= 0\n ? THUMBNAILS_DEFAULT_ASPECT_RATIO\n : dims.height / dims.width;\n const estimatedHeight = frameWidth * ratio;\n return Math.max(\n frameWidth * 0.9,\n Math.min(frameWidth * 1.7, estimatedHeight)\n );\n },\n [frameWidth, thumbnailLayoutRevision]\n );\n\n const setDocumentStateTracked = useCallback(\n (state: Parameters<typeof setDocumentState>[0], reason: string) => {\n if (perfEnabled) {\n setStateBurstRef.current({\n reason,\n keys: Object.keys(state).join(\",\"),\n });\n }\n setDocumentState(state);\n },\n [perfEnabled, setDocumentState]\n );\n\n useEffect(() => {\n if (!perfEnabled || !sidebarRightOpen) return;\n logPerfEvent(\"RightSheet\", \"open\", {\n tab: sidebarRightTab,\n pageCount,\n currentPage,\n thumbsInitialCount: normalizedThumbsInitialCount,\n });\n sampleMemory(\"RightSheet\", \"open\", {\n tab: sidebarRightTab,\n pageCount,\n });\n }, [\n currentPage,\n pageCount,\n perfEnabled,\n normalizedThumbsInitialCount,\n sidebarRightOpen,\n sidebarRightTab,\n ]);\n\n useEffect(() => {\n if (!perfEnabled || !sidebarRightOpen) return;\n return () => {\n logPerfEvent(\"RightSheet\", \"close\");\n };\n }, [perfEnabled, sidebarRightOpen]);\n\n useEffect(() => {\n if (\n !perfEnabled ||\n !sidebarRightOpen ||\n sidebarRightTab !== \"pages\" ||\n pagesMode !== \"thumbnails\"\n )\n return;\n sampleMemory(\"RightSheet\", \"thumbnails.open.start\", { pageCount });\n const timeout = setTimeout(() => {\n sampleMemory(\"RightSheet\", \"thumbnails.open.steady\", { pageCount });\n }, 1200);\n return () => clearTimeout(timeout);\n }, [pageCount, pagesMode, perfEnabled, sidebarRightOpen, sidebarRightTab]);\n\n useEffect(\n () => () => {\n if (thumbnailRefreshTimeoutRef.current) {\n clearTimeout(thumbnailRefreshTimeoutRef.current);\n }\n },\n []\n );\n\n useEffect(() => {\n if (sidebarRightOpen) return;\n setVisibleThumbnailPages(new Set());\n }, [sidebarRightOpen]);\n\n useEffect(() => {\n if (!sidebarRightOpen || sidebarRightTab !== \"pages\") return;\n if (pagesMode !== \"thumbnails\") return;\n if (pageCount <= 0) return;\n\n const initialVisible = new Set<number>();\n const initialCount = Math.min(pageCount, resolvedThumbsPrewarmCount);\n for (let i = 0; i < initialCount; i += 1) {\n initialVisible.add(i);\n ensureThumbnailDimensions(i);\n }\n\n const currentIndex = Math.max(0, currentPage - 1);\n const start = Math.max(0, currentIndex - 2);\n const end = Math.min(pageCount - 1, currentIndex + 2);\n for (let i = start; i <= end; i += 1) {\n initialVisible.add(i);\n ensureThumbnailDimensions(i);\n }\n\n setVisibleThumbnailPages((previous) =>\n previous.size === 0 ? initialVisible : previous\n );\n }, [\n currentPage,\n ensureThumbnailDimensions,\n pageCount,\n pagesMode,\n resolvedThumbsPrewarmCount,\n sidebarRightOpen,\n sidebarRightTab,\n ]);\n\n const handleSearch = async () => {\n const trimmed = query.trim();\n if (!trimmed) {\n setSearch(\"\", []);\n return;\n }\n const startedAt = perfEnabled ? perfNow() : 0;\n setIsSearching(true);\n try {\n const results = await searchService.search(trimmed);\n setSearch(trimmed, results);\n if (perfEnabled) {\n logPerfEvent(\"RightSheet\", \"search.completed\", {\n queryLength: trimmed.length,\n results: results.length,\n durationMs: Math.round((perfNow() - startedAt) * 100) / 100,\n });\n }\n } finally {\n setIsSearching(false);\n }\n };\n\n const pages = useMemo(\n () => Array.from({ length: pageCount }, (_, i) => i),\n [pageCount]\n );\n\n const renderHighlightedSnippet = (text: string, isActive: boolean) => {\n const trimmedQuery = searchQuery.trim();\n if (trimmedQuery.length < 2) {\n return (\n <Text\n style={[\n styles.resultText,\n isDark && styles.resultTextDark,\n isActive && styles.resultTextActive,\n isActive && { color: accentColor },\n ]}\n >\n ...{text}...\n </Text>\n );\n }\n\n const lowerText = text.toLowerCase();\n const lowerQuery = trimmedQuery.toLowerCase();\n const parts: Array<{ text: string; match: boolean }> = [];\n let cursor = 0;\n\n while (cursor < text.length) {\n const index = lowerText.indexOf(lowerQuery, cursor);\n if (index === -1) {\n parts.push({ text: text.slice(cursor), match: false });\n break;\n }\n if (index > cursor) {\n parts.push({ text: text.slice(cursor, index), match: false });\n }\n parts.push({\n text: text.slice(index, index + trimmedQuery.length),\n match: true,\n });\n cursor = index + trimmedQuery.length;\n }\n\n return (\n <Text\n style={[\n styles.resultText,\n isDark && styles.resultTextDark,\n isActive && styles.resultTextActive,\n isActive && { color: accentColor },\n ]}\n >\n {parts.map((part, idx) => (\n <Text\n key={`${idx}-${part.text}`}\n style={[\n part.match && styles.matchText,\n part.match && isDark && styles.matchTextDark,\n part.match && isActive && styles.matchTextActive,\n part.match &&\n isActive && {\n backgroundColor: accentStrong,\n color: accentColor,\n },\n ]}\n >\n {part.text}\n </Text>\n ))}\n </Text>\n );\n };\n\n const onThumbnailsViewableItemsChanged = useCallback(\n ({ viewableItems }: { viewableItems: Array<ViewToken> }) => {\n const nextVisible = new Set<number>();\n viewableItems.forEach((token) => {\n if (typeof token.item !== \"number\") return;\n const pageIndex = token.item;\n nextVisible.add(pageIndex);\n ensureThumbnailDimensions(pageIndex);\n ensureThumbnailDimensions(pageIndex - 1);\n ensureThumbnailDimensions(pageIndex + 1);\n });\n\n setVisibleThumbnailPages((previous) =>\n areNumberSetsEqual(previous, nextVisible) ? previous : nextVisible\n );\n },\n [ensureThumbnailDimensions]\n );\n\n const handleThumbnailPress = useCallback(\n (pageIndex: number) => {\n engine.goToPage(pageIndex + 1);\n setDocumentStateTracked(\n { currentPage: pageIndex + 1 },\n \"thumbnail.press\"\n );\n triggerScrollToPage(pageIndex);\n closeSheet();\n },\n [closeSheet, engine, setDocumentStateTracked, triggerScrollToPage]\n );\n\n const renderThumbnailItem = useCallback(\n ({ item }: { item: number }) => {\n const shouldRenderPreview =\n useNativePreview &&\n (visibleThumbnailPages.has(item) ||\n item < resolvedThumbsPrewarmCount ||\n Math.abs(item + 1 - currentPage) <= 1);\n return (\n <PageThumbnail\n engine={engine}\n pageIndex={item}\n isActive={item + 1 === currentPage}\n isDark={isDark}\n zoom={zoom}\n cardWidth={cardWidth}\n frameWidth={frameWidth}\n frameHeight={getThumbnailFrameHeight(item)}\n accentColor={accentColor}\n useNativePreview={useNativePreview}\n shouldRenderPreview={shouldRenderPreview}\n onPress={() => handleThumbnailPress(item)}\n />\n );\n },\n [\n accentColor,\n cardWidth,\n currentPage,\n engine,\n frameWidth,\n getThumbnailFrameHeight,\n handleThumbnailPress,\n isDark,\n resolvedThumbsPrewarmCount,\n useNativePreview,\n visibleThumbnailPages,\n zoom,\n ]\n );\n\n if (!sidebarRightOpen) return null;\n\n return (\n <Modal\n visible\n transparent\n animationType=\"slide\"\n onRequestClose={closeSheet}\n >\n <View style={styles.modalRoot}>\n <Pressable style={styles.backdrop} onPress={closeSheet} />\n <View\n style={[\n styles.sheet,\n { height: sheetHeight },\n isDark && styles.sheetDark,\n ]}\n >\n <View style={[styles.handle, isDark && styles.handleDark]} />\n <View style={styles.tabs}>\n {[\"pages\", \"search\", \"annotations\"].map((tab) => (\n <Pressable\n key={tab}\n onPress={() =>\n toggleSidebarRight(tab as \"pages\" | \"search\" | \"annotations\")\n }\n style={[\n styles.tabButton,\n isDark && styles.tabButtonDark,\n sidebarRightTab === tab && styles.tabButtonActive,\n sidebarRightTab === tab && { backgroundColor: accentColor },\n ]}\n >\n <Text\n style={[\n styles.tabText,\n isDark && styles.tabTextDark,\n sidebarRightTab === tab && styles.tabTextActive,\n ]}\n >\n {tab === \"pages\"\n ? t.pages\n : tab === \"search\"\n ? t.search\n : t.notes}\n </Text>\n </Pressable>\n ))}\n </View>\n\n {sidebarRightTab === \"pages\" ? (\n <View style={styles.pagesContent}>\n <View style={styles.pageHeader}>\n <Text\n style={[styles.pageStatus, isDark && styles.pageStatusDark]}\n >\n {t.page} {currentPage} / {pageCount}\n </Text>\n <View\n style={[styles.segmented, isDark && styles.segmentedDark]}\n >\n <Pressable\n onPress={() => setPagesMode(\"thumbnails\")}\n style={[\n styles.segmentButton,\n pagesMode === \"thumbnails\" && styles.segmentButtonActive,\n pagesMode === \"thumbnails\" && {\n backgroundColor: accentColor,\n },\n ]}\n >\n <Text\n style={[\n styles.segmentText,\n isDark && styles.segmentTextDark,\n pagesMode === \"thumbnails\" && styles.segmentTextActive,\n ]}\n >\n {t.pagesTab}\n </Text>\n </Pressable>\n <Pressable\n onPress={() => setPagesMode(\"summary\")}\n style={[\n styles.segmentButton,\n pagesMode === \"summary\" && styles.segmentButtonActive,\n pagesMode === \"summary\" && {\n backgroundColor: accentColor,\n },\n ]}\n >\n <Text\n style={[\n styles.segmentText,\n isDark && styles.segmentTextDark,\n pagesMode === \"summary\" && styles.segmentTextActive,\n ]}\n >\n {t.summaryTab}\n </Text>\n </Pressable>\n </View>\n </View>\n {pagesMode === \"thumbnails\" ? (\n <FlatList\n data={pages}\n keyExtractor={(item) => `thumb-${item}`}\n numColumns={2}\n contentContainerStyle={styles.thumbGrid}\n columnWrapperStyle={styles.thumbRow}\n showsVerticalScrollIndicator={false}\n initialNumToRender={normalizedThumbsInitialCount}\n windowSize={THUMBNAILS_WINDOW_SIZE}\n maxToRenderPerBatch={THUMBNAILS_MAX_TO_RENDER_PER_BATCH}\n updateCellsBatchingPeriod={\n THUMBNAILS_UPDATE_CELLS_BATCHING_PERIOD\n }\n removeClippedSubviews\n viewabilityConfig={{ itemVisiblePercentThreshold: 20 }}\n onViewableItemsChanged={onThumbnailsViewableItemsChanged}\n renderItem={renderThumbnailItem}\n />\n ) : (\n <ScrollView\n contentContainerStyle={styles.summaryContent}\n showsVerticalScrollIndicator={false}\n >\n {outline.length === 0 ? (\n <Text\n style={[styles.emptyText, isDark && styles.emptyTextDark]}\n >\n {t.noSummary}\n </Text>\n ) : (\n outline.map((item, index) => (\n <OutlineNode\n key={`${item.title}-${index}`}\n item={item}\n isDark={isDark}\n untitledLabel={t.untitled}\n onSelect={(pageIndex) => {\n engine.goToPage(pageIndex + 1);\n setDocumentStateTracked(\n { currentPage: pageIndex + 1 },\n \"outline.select\"\n );\n triggerScrollToPage(pageIndex);\n closeSheet();\n }}\n />\n ))\n )}\n </ScrollView>\n )}\n </View>\n ) : (\n <ScrollView\n contentContainerStyle={styles.content}\n showsVerticalScrollIndicator={false}\n >\n {sidebarRightTab === \"search\" ? (\n <View>\n <View\n style={[styles.searchBox, isDark && styles.searchBoxDark]}\n >\n <TextInput\n value={query}\n onChangeText={setQuery}\n placeholder={t.searchPlaceholder}\n placeholderTextColor={isDark ? \"#9ca3af\" : \"#6b7280\"}\n style={[\n styles.searchInput,\n isDark && styles.searchInputDark,\n ]}\n onSubmitEditing={handleSearch}\n returnKeyType=\"search\"\n />\n <Pressable\n onPress={handleSearch}\n style={[\n styles.searchButton,\n { backgroundColor: accentColor },\n ]}\n >\n <Text style={styles.searchButtonText}>{t.searchGo}</Text>\n </Pressable>\n </View>\n\n <View style={styles.searchMeta}>\n <Text\n style={[\n styles.searchCount,\n isDark && styles.searchCountDark,\n { color: accentColor },\n ]}\n >\n {searchResults.length} {t.results}\n </Text>\n <View style={styles.searchNav}>\n <Pressable\n onPress={prevSearchResult}\n disabled={searchResults.length === 0}\n style={[\n styles.searchNavButton,\n isDark && styles.searchNavButtonDark,\n searchResults.length === 0 &&\n styles.searchNavButtonDisabled,\n ]}\n >\n <IconChevronLeft\n size={14}\n color={isDark ? \"#e5e7eb\" : \"#111827\"}\n />\n </Pressable>\n <Pressable\n onPress={nextSearchResult}\n disabled={searchResults.length === 0}\n style={[\n styles.searchNavButton,\n isDark && styles.searchNavButtonDark,\n searchResults.length === 0 &&\n styles.searchNavButtonDisabled,\n ]}\n >\n <IconChevronRight\n size={14}\n color={isDark ? \"#e5e7eb\" : \"#111827\"}\n />\n </Pressable>\n </View>\n </View>\n\n {isSearching && (\n <View style={styles.searchStatus}>\n <ActivityIndicator size=\"small\" color={accentColor} />\n <Text\n style={[\n styles.searchStatusText,\n isDark && styles.searchStatusTextDark,\n ]}\n >\n {t.searching}\n </Text>\n </View>\n )}\n\n {!isSearching && searchResults.length === 0 && (\n <Text\n style={[styles.emptyText, isDark && styles.emptyTextDark]}\n >\n {t.noResults}\n </Text>\n )}\n\n {!isSearching &&\n searchResults.map((res, idx) => {\n const isActive = idx === activeSearchIndex;\n return (\n <Pressable\n key={`${res.pageIndex}-${idx}`}\n onPress={() => {\n setDocumentStateTracked(\n { activeSearchIndex: idx },\n \"searchResult.select\"\n );\n triggerScrollToPage(res.pageIndex);\n closeSheet();\n }}\n style={[\n styles.resultCard,\n isDark && styles.resultCardDark,\n isActive && styles.resultCardActive,\n isActive && { borderColor: accentColor },\n ]}\n >\n <Text\n style={[\n styles.resultPage,\n isDark && styles.resultPageDark,\n { color: accentColor },\n ]}\n >\n {t.page} {res.pageIndex + 1}\n </Text>\n {renderHighlightedSnippet(res.text, isActive)}\n </Pressable>\n );\n })}\n </View>\n ) : (\n <View>\n {annotations.length === 0 ? (\n <Text\n style={[styles.emptyText, isDark && styles.emptyTextDark]}\n >\n {t.noAnnotations}\n </Text>\n ) : (\n annotations.map((ann) => (\n <Pressable\n key={ann.id}\n onPress={() => {\n setSelectedAnnotation(ann.id);\n triggerScrollToPage(ann.pageIndex);\n closeSheet();\n }}\n style={[styles.noteCard, isDark && styles.noteCardDark]}\n >\n <View style={styles.noteHeader}>\n <View\n style={[\n styles.noteDot,\n { backgroundColor: ann.color },\n ]}\n />\n <Text\n style={[\n styles.noteTitle,\n isDark && styles.noteTitleDark,\n ]}\n >\n {t.page} {ann.pageIndex + 1}\n </Text>\n </View>\n <Text\n style={[\n styles.noteType,\n isDark && styles.noteTypeDark,\n { color: accentColor },\n ]}\n >\n {ann.type === \"comment\" || ann.type === \"text\"\n ? t.note.toUpperCase()\n : ann.type.toUpperCase()}\n </Text>\n {ann.content ? (\n <Text\n style={[\n styles.noteContent,\n isDark && styles.noteContentDark,\n ]}\n >\n {ann.content}\n </Text>\n ) : null}\n </Pressable>\n ))\n )}\n </View>\n )}\n </ScrollView>\n )}\n </View>\n </View>\n </Modal>\n );\n};\n\nconst styles = StyleSheet.create({\n modalRoot: {\n flex: 1,\n backgroundColor: \"transparent\",\n },\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: \"rgba(0, 0, 0, 0.4)\",\n },\n sheet: {\n position: \"absolute\",\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: \"#ffffff\",\n borderTopLeftRadius: 20,\n borderTopRightRadius: 20,\n borderTopWidth: 1,\n borderTopColor: \"#e5e7eb\",\n paddingBottom: 16,\n },\n sheetDark: {\n backgroundColor: \"#0f1115\",\n borderTopColor: \"#1f2937\",\n },\n handle: {\n width: 44,\n height: 4,\n borderRadius: 999,\n backgroundColor: \"#cbd5f5\",\n alignSelf: \"center\",\n marginTop: 10,\n marginBottom: 12,\n },\n handleDark: {\n backgroundColor: \"#374151\",\n },\n tabs: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingHorizontal: 16,\n marginBottom: 10,\n },\n tabButton: {\n paddingVertical: 6,\n paddingHorizontal: 14,\n borderRadius: 999,\n marginRight: 8,\n backgroundColor: \"#e5e7eb\",\n },\n tabButtonDark: {\n backgroundColor: \"#111827\",\n },\n tabButtonActive: {\n backgroundColor: \"#2563eb\",\n },\n tabText: {\n fontSize: 12,\n fontWeight: \"700\",\n color: \"#111827\",\n },\n tabTextDark: {\n color: \"#e5e7eb\",\n },\n tabTextActive: {\n color: \"#ffffff\",\n },\n pagesContent: {\n paddingHorizontal: 16,\n flex: 1,\n },\n pageHeader: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: 10,\n },\n pageStatus: {\n fontSize: 12,\n fontWeight: \"700\",\n color: \"#111827\",\n },\n pageStatusDark: {\n color: \"#e5e7eb\",\n },\n segmented: {\n flexDirection: \"row\",\n backgroundColor: \"#e5e7eb\",\n borderRadius: 999,\n padding: 2,\n },\n segmentedDark: {\n backgroundColor: \"#111827\",\n },\n segmentButton: {\n paddingHorizontal: 10,\n paddingVertical: 5,\n borderRadius: 999,\n },\n segmentButtonActive: {\n backgroundColor: \"#2563eb\",\n },\n segmentText: {\n fontSize: 11,\n fontWeight: \"700\",\n color: \"#111827\",\n },\n segmentTextDark: {\n color: \"#e5e7eb\",\n },\n segmentTextActive: {\n color: \"#ffffff\",\n },\n thumbGrid: {\n paddingHorizontal: 16,\n paddingBottom: 16,\n },\n thumbRow: {\n justifyContent: \"space-between\",\n marginBottom: 12,\n },\n thumbCard: {\n padding: 8,\n borderRadius: 14,\n backgroundColor: \"#f9fafb\",\n borderWidth: 1,\n borderColor: \"#e5e7eb\",\n alignItems: \"center\",\n },\n thumbCardDark: {\n backgroundColor: \"#111827\",\n borderColor: \"#1f2937\",\n },\n thumbCardActive: {\n borderColor: \"#2563eb\",\n },\n thumbFrame: {\n borderRadius: 10,\n backgroundColor: \"#ffffff\",\n overflow: \"hidden\",\n },\n thumbView: {\n width: \"100%\",\n height: \"100%\",\n },\n thumbFallback: {\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"#ffffff\",\n },\n thumbFallbackDark: {\n backgroundColor: \"#0b0f14\",\n },\n thumbFallbackText: {\n fontSize: 18,\n fontWeight: \"800\",\n color: \"#1f2937\",\n },\n thumbFallbackTextDark: {\n color: \"#e5e7eb\",\n },\n thumbLabel: {\n marginTop: 6,\n fontSize: 11,\n fontWeight: \"700\",\n color: \"#111827\",\n },\n thumbLabelDark: {\n color: \"#e5e7eb\",\n },\n content: {\n paddingHorizontal: 16,\n paddingBottom: 16,\n },\n summaryContent: {\n paddingBottom: 24,\n },\n outlineRow: {\n paddingVertical: 8,\n borderBottomWidth: 1,\n borderBottomColor: \"rgba(148, 163, 184, 0.18)\",\n },\n outlineText: {\n fontSize: 12,\n fontWeight: \"600\",\n color: \"#111827\",\n },\n outlineTextDark: {\n color: \"#e5e7eb\",\n },\n outlineTextMuted: {\n color: \"#9ca3af\",\n },\n searchBox: {\n flexDirection: \"row\",\n alignItems: \"center\",\n borderRadius: 10,\n backgroundColor: \"#f3f4f6\",\n paddingHorizontal: 12,\n paddingVertical: 8,\n borderWidth: 1,\n borderColor: \"#e5e7eb\",\n },\n searchBoxDark: {\n backgroundColor: \"#111827\",\n borderColor: \"#1f2937\",\n },\n searchInput: {\n flex: 1,\n fontSize: 12,\n color: \"#111827\",\n },\n searchInputDark: {\n color: \"#e5e7eb\",\n },\n searchButton: {\n paddingHorizontal: 10,\n paddingVertical: 4,\n borderRadius: 6,\n backgroundColor: \"#2563eb\",\n },\n searchButtonText: {\n fontSize: 11,\n fontWeight: \"700\",\n color: \"#ffffff\",\n },\n searchStatus: {\n marginTop: 12,\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n searchStatusText: {\n marginLeft: 8,\n fontSize: 11,\n color: \"#4b5563\",\n },\n searchStatusTextDark: {\n color: \"#9ca3af\",\n },\n searchMeta: {\n marginTop: 12,\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n },\n searchCount: {\n fontSize: 11,\n fontWeight: \"700\",\n color: \"#2563eb\",\n },\n searchCountDark: {\n color: \"#60a5fa\",\n },\n searchNav: {\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n searchNavButton: {\n width: 28,\n height: 28,\n borderRadius: 10,\n backgroundColor: \"#e5e7eb\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginLeft: 6,\n },\n searchNavButtonDark: {\n backgroundColor: \"#111827\",\n },\n searchNavButtonDisabled: {\n opacity: 0.5,\n },\n emptyText: {\n marginTop: 16,\n fontSize: 12,\n color: \"#6b7280\",\n },\n emptyTextDark: {\n color: \"#9ca3af\",\n },\n resultCard: {\n marginTop: 12,\n padding: 12,\n borderRadius: 12,\n backgroundColor: \"#f9fafb\",\n borderWidth: 1,\n borderColor: \"#e5e7eb\",\n },\n resultCardDark: {\n backgroundColor: \"#111827\",\n borderColor: \"#1f2937\",\n },\n resultCardActive: {\n borderColor: \"#2563eb\",\n },\n resultPage: {\n fontSize: 10,\n fontWeight: \"800\",\n color: \"#2563eb\",\n marginBottom: 6,\n },\n resultPageDark: {\n color: \"#60a5fa\",\n },\n resultText: {\n fontSize: 11,\n color: \"#374151\",\n },\n resultTextDark: {\n color: \"#d1d5db\",\n },\n resultTextActive: {\n color: \"#1d4ed8\",\n },\n matchText: {\n backgroundColor: \"rgba(245, 158, 11, 0.3)\",\n color: \"#111827\",\n fontWeight: \"700\",\n },\n matchTextDark: {\n backgroundColor: \"rgba(245, 158, 11, 0.25)\",\n color: \"#fde68a\",\n },\n matchTextActive: {\n backgroundColor: \"rgba(59, 130, 246, 0.35)\",\n color: \"#1d4ed8\",\n },\n noteCard: {\n padding: 12,\n borderRadius: 12,\n backgroundColor: \"#f9fafb\",\n borderWidth: 1,\n borderColor: \"#e5e7eb\",\n marginBottom: 12,\n },\n noteCardDark: {\n backgroundColor: \"#111827\",\n borderColor: \"#1f2937\",\n },\n noteHeader: {\n flexDirection: \"row\",\n alignItems: \"center\",\n marginBottom: 6,\n },\n noteDot: {\n width: 8,\n height: 8,\n borderRadius: 4,\n marginRight: 6,\n },\n noteTitle: {\n fontSize: 11,\n fontWeight: \"700\",\n color: \"#111827\",\n },\n noteTitleDark: {\n color: \"#e5e7eb\",\n },\n noteType: {\n fontSize: 10,\n fontWeight: \"800\",\n color: \"#2563eb\",\n },\n noteTypeDark: {\n color: \"#60a5fa\",\n },\n noteContent: {\n marginTop: 6,\n fontSize: 11,\n color: \"#4b5563\",\n },\n noteContentDark: {\n color: \"#9ca3af\",\n },\n});\n\nexport default RightSheet;\n","import React, { useEffect, useState } from 'react';\r\nimport { Modal, View, Text, TextInput, Pressable, StyleSheet } from 'react-native';\r\nimport { useViewerStore } from '@papyrus-sdk/core';\r\nimport { getStrings } from '../strings';\r\n\r\nconst AnnotationEditor: React.FC = () => {\r\n const { annotations, selectedAnnotationId, updateAnnotation, setSelectedAnnotation, uiTheme, locale, accentColor } =\r\n useViewerStore();\r\n const annotation = annotations.find((ann) => ann.id === selectedAnnotationId);\r\n const isEditable = annotation && (annotation.type === 'text' || annotation.type === 'comment');\r\n const [draft, setDraft] = useState('');\r\n const isDark = uiTheme === 'dark';\r\n const t = getStrings(locale);\r\n\r\n useEffect(() => {\r\n if (isEditable) {\r\n setDraft(annotation?.content ?? '');\r\n }\r\n }, [annotation?.id, isEditable]);\r\n\r\n if (!isEditable || !annotation) return null;\r\n\r\n const handleClose = () => setSelectedAnnotation(null);\r\n const handleSave = () => {\r\n updateAnnotation(annotation.id, { content: draft });\r\n setSelectedAnnotation(null);\r\n };\r\n\r\n return (\r\n <Modal visible transparent animationType=\"fade\" onRequestClose={handleClose}>\r\n <View style={styles.overlay}>\r\n <View style={[styles.card, isDark && styles.cardDark]}>\r\n <Text style={[styles.title, isDark && styles.titleDark]}>{t.editNote}</Text>\r\n <TextInput\r\n style={[styles.input, isDark && styles.inputDark]}\r\n value={draft}\r\n onChangeText={setDraft}\r\n placeholder={t.notePlaceholder}\r\n placeholderTextColor={isDark ? '#9ca3af' : '#6b7280'}\r\n multiline\r\n />\r\n <View style={styles.actions}>\r\n <Pressable onPress={handleClose} style={[styles.actionButton, styles.actionCancel]}>\r\n <Text style={styles.actionText}>{t.cancel}</Text>\r\n </Pressable>\r\n <Pressable onPress={handleSave} style={[styles.actionButton, styles.actionSave, { backgroundColor: accentColor }]}>\r\n <Text style={[styles.actionText, styles.actionTextLight]}>{t.save}</Text>\r\n </Pressable>\r\n </View>\r\n </View>\r\n </View>\r\n </Modal>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n overlay: {\r\n flex: 1,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\r\n padding: 24,\r\n },\r\n card: {\r\n width: '100%',\r\n borderRadius: 16,\r\n padding: 16,\r\n backgroundColor: '#ffffff',\r\n borderWidth: 1,\r\n borderColor: '#e5e7eb',\r\n },\r\n cardDark: {\r\n backgroundColor: '#0f1115',\r\n borderColor: '#1f2937',\r\n },\r\n title: {\r\n fontSize: 14,\r\n fontWeight: '700',\r\n color: '#111827',\r\n marginBottom: 12,\r\n },\r\n titleDark: {\r\n color: '#f9fafb',\r\n },\r\n input: {\r\n minHeight: 100,\r\n borderRadius: 12,\r\n padding: 12,\r\n backgroundColor: '#f3f4f6',\r\n color: '#111827',\r\n fontSize: 12,\r\n },\r\n inputDark: {\r\n backgroundColor: '#111827',\r\n color: '#e5e7eb',\r\n },\r\n actions: {\r\n marginTop: 16,\r\n flexDirection: 'row',\r\n justifyContent: 'flex-end',\r\n },\r\n actionButton: {\r\n paddingHorizontal: 12,\r\n paddingVertical: 8,\r\n borderRadius: 8,\r\n marginLeft: 8,\r\n },\r\n actionCancel: {\r\n backgroundColor: '#e5e7eb',\r\n },\r\n actionSave: {\r\n backgroundColor: '#2563eb',\r\n },\r\n actionText: {\r\n fontSize: 11,\r\n fontWeight: '700',\r\n color: '#111827',\r\n },\r\n actionTextLight: {\r\n color: '#ffffff',\r\n },\r\n});\r\n\r\nexport default AnnotationEditor;\r\n","import React from \"react\";\nimport { View, Text, Pressable, StyleSheet } from \"react-native\";\nimport { useViewerStore } from \"@papyrus-sdk/core\";\nimport { getStrings } from \"../strings\";\nimport { IconDocument, IconGrid, IconSearch, IconComment } from \"../icons\";\n\nconst BottomBar: React.FC = () => {\n const {\n sidebarRightOpen,\n sidebarRightTab,\n toggleSidebarRight,\n setDocumentState,\n uiTheme,\n locale,\n accentColor,\n mobileChromeVisible,\n } = useViewerStore();\n const isDark = uiTheme === \"dark\";\n const t = getStrings(locale);\n\n const isActive = (tab: \"pages\" | \"search\" | \"annotations\") =>\n sidebarRightOpen && sidebarRightTab === tab;\n\n const iconColor = (active: boolean) => {\n if (active) return \"#ffffff\";\n return isDark ? \"#e5e7eb\" : \"#111827\";\n };\n\n if (!mobileChromeVisible) return null;\n\n return (\n <View style={[styles.container, isDark && styles.containerDark]}>\n <Pressable\n onPress={() => toggleSidebarRight(\"pages\")}\n style={[styles.item, isActive(\"pages\") && styles.itemActive]}\n >\n <View\n style={[\n styles.itemIcon,\n isDark && styles.itemIconDark,\n isActive(\"pages\") && styles.itemIconActive,\n isActive(\"pages\") && { backgroundColor: accentColor },\n ]}\n >\n <IconGrid size={16} color={iconColor(isActive(\"pages\"))} />\n </View>\n <Text\n style={[\n styles.itemLabel,\n isDark && styles.itemLabelDark,\n isActive(\"pages\") && styles.itemLabelActive,\n isActive(\"pages\") && { color: accentColor },\n ]}\n >\n {t.pages}\n </Text>\n </Pressable>\n\n <Pressable\n onPress={() => toggleSidebarRight(\"search\")}\n style={[styles.item, isActive(\"search\") && styles.itemActive]}\n >\n <View\n style={[\n styles.itemIcon,\n isDark && styles.itemIconDark,\n isActive(\"search\") && styles.itemIconActive,\n isActive(\"search\") && { backgroundColor: accentColor },\n ]}\n >\n <IconSearch size={16} color={iconColor(isActive(\"search\"))} />\n </View>\n <Text\n style={[\n styles.itemLabel,\n isDark && styles.itemLabelDark,\n isActive(\"search\") && styles.itemLabelActive,\n isActive(\"search\") && { color: accentColor },\n ]}\n >\n {t.search}\n </Text>\n </Pressable>\n\n <Pressable\n onPress={() => setDocumentState({ sidebarRightOpen: false })}\n style={[styles.item, !sidebarRightOpen && styles.itemActive]}\n >\n <View\n style={[\n styles.itemIcon,\n isDark && styles.itemIconDark,\n !sidebarRightOpen && styles.itemIconActive,\n !sidebarRightOpen && { backgroundColor: accentColor },\n ]}\n >\n <IconDocument size={16} color={iconColor(!sidebarRightOpen)} />\n </View>\n <Text\n style={[\n styles.itemLabel,\n isDark && styles.itemLabelDark,\n !sidebarRightOpen && styles.itemLabelActive,\n !sidebarRightOpen && { color: accentColor },\n ]}\n >\n {t.read}\n </Text>\n </Pressable>\n\n <Pressable\n onPress={() => toggleSidebarRight(\"annotations\")}\n style={[styles.item, isActive(\"annotations\") && styles.itemActive]}\n >\n <View\n style={[\n styles.itemIcon,\n isDark && styles.itemIconDark,\n isActive(\"annotations\") && styles.itemIconActive,\n isActive(\"annotations\") && { backgroundColor: accentColor },\n ]}\n >\n <IconComment size={16} color={iconColor(isActive(\"annotations\"))} />\n </View>\n <Text\n style={[\n styles.itemLabel,\n isDark && styles.itemLabelDark,\n isActive(\"annotations\") && styles.itemLabelActive,\n isActive(\"annotations\") && { color: accentColor },\n ]}\n >\n {t.notes}\n </Text>\n </Pressable>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n justifyContent: \"space-around\",\n alignItems: \"center\",\n paddingVertical: 10,\n paddingHorizontal: 12,\n backgroundColor: \"#ffffff\",\n borderTopWidth: 1,\n borderTopColor: \"#e5e7eb\",\n },\n containerDark: {\n backgroundColor: \"#0f1115\",\n borderTopColor: \"#1f2937\",\n },\n item: {\n alignItems: \"center\",\n paddingHorizontal: 6,\n },\n itemActive: {\n transform: [{ translateY: -2 }],\n },\n itemIcon: {\n width: 28,\n height: 28,\n borderRadius: 10,\n backgroundColor: \"#e5e7eb\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginBottom: 4,\n },\n itemIconDark: {\n backgroundColor: \"#111827\",\n color: \"#e5e7eb\",\n },\n itemIconActive: {\n backgroundColor: \"#2563eb\",\n color: \"#ffffff\",\n },\n itemLabel: {\n fontSize: 10,\n fontWeight: \"700\",\n color: \"#6b7280\",\n },\n itemLabelDark: {\n color: \"#9ca3af\",\n },\n itemLabelActive: {\n color: \"#2563eb\",\n },\n});\n\nexport default BottomBar;\n","import React from 'react';\r\nimport { Modal, View, Text, Pressable, StyleSheet } from 'react-native';\r\nimport { useViewerStore } from '@papyrus-sdk/core';\r\nimport { DocumentEngine } from '@papyrus-sdk/types';\r\nimport { getStrings } from '../strings';\r\nimport { IconZoomIn, IconZoomOut } from '../icons';\r\n\r\ninterface SettingsSheetProps {\r\n engine: DocumentEngine;\r\n visible: boolean;\r\n onClose: () => void;\r\n}\r\n\r\nconst SettingsSheet: React.FC<SettingsSheetProps> = ({ engine, visible, onClose }) => {\r\n const { viewMode, uiTheme, zoom, setDocumentState, locale, accentColor, pageTheme } = useViewerStore();\r\n const isDark = uiTheme === 'dark';\r\n const isPaged = viewMode === 'single';\r\n const isDouble = viewMode === 'double';\r\n const t = getStrings(locale);\r\n\r\n const handleTransition = (mode: 'continuous' | 'paged') => {\r\n if (mode === 'paged') {\r\n setDocumentState({ viewMode: 'single' });\r\n return;\r\n }\r\n setDocumentState({ viewMode: isDouble ? 'double' : 'continuous' });\r\n };\r\n\r\n const handleLayout = (layout: 'single' | 'double') => {\r\n if (layout === 'double') {\r\n setDocumentState({ viewMode: 'double' });\r\n return;\r\n }\r\n if (viewMode === 'double') {\r\n setDocumentState({ viewMode: 'continuous' });\r\n }\r\n };\r\n\r\n const handleRotate = (direction: 'clockwise' | 'counterclockwise') => {\r\n engine.rotate(direction);\r\n setDocumentState({ rotation: engine.getRotation() });\r\n };\r\n\r\n const handleZoom = (delta: number) => {\r\n const next = Math.max(0.5, Math.min(4, zoom + delta));\r\n engine.setZoom(next);\r\n setDocumentState({ zoom: next });\r\n };\r\n\r\n if (!visible) return null;\r\n\r\n return (\r\n <Modal visible transparent animationType=\"slide\" onRequestClose={onClose}>\r\n <View style={styles.modalRoot}>\r\n <Pressable style={styles.backdrop} onPress={onClose} />\r\n <View style={[styles.sheet, isDark && styles.sheetDark]}>\r\n <View style={[styles.handle, isDark && styles.handleDark]} />\r\n\r\n <View style={styles.section}>\r\n <Text style={[styles.sectionTitle, isDark && styles.sectionTitleDark]}>{t.appearance}</Text>\r\n <View style={styles.optionRow}>\r\n <Pressable\r\n onPress={() => setDocumentState({ uiTheme: 'light' })}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n uiTheme === 'light' && styles.optionButtonActive,\r\n uiTheme === 'light' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n uiTheme === 'light' && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.light}\r\n </Text>\r\n </Pressable>\r\n <Pressable\r\n onPress={() => setDocumentState({ uiTheme: 'dark' })}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n uiTheme === 'dark' && styles.optionButtonActive,\r\n uiTheme === 'dark' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n uiTheme === 'dark' && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.dark}\r\n </Text>\r\n </Pressable>\r\n </View>\r\n </View>\r\n\r\n <View style={styles.section}>\r\n <Text style={[styles.sectionTitle, isDark && styles.sectionTitleDark]}>{t.pageTheme}</Text>\r\n <View style={styles.optionRow}>\r\n <Pressable\r\n onPress={() => setDocumentState({ pageTheme: 'normal' })}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n pageTheme === 'normal' && styles.optionButtonActive,\r\n pageTheme === 'normal' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n pageTheme === 'normal' && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.themeOriginal}\r\n </Text>\r\n </Pressable>\r\n <Pressable\r\n onPress={() => setDocumentState({ pageTheme: 'sepia' })}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n pageTheme === 'sepia' && styles.optionButtonActive,\r\n pageTheme === 'sepia' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n pageTheme === 'sepia' && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.themeSepia}\r\n </Text>\r\n </Pressable>\r\n <Pressable\r\n onPress={() => setDocumentState({ pageTheme: 'dark' })}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n pageTheme === 'dark' && styles.optionButtonActive,\r\n pageTheme === 'dark' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n pageTheme === 'dark' && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.themeDark}\r\n </Text>\r\n </Pressable>\r\n <Pressable\r\n onPress={() => setDocumentState({ pageTheme: 'high-contrast' })}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n pageTheme === 'high-contrast' && styles.optionButtonActive,\r\n pageTheme === 'high-contrast' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n pageTheme === 'high-contrast' && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.themeContrast}\r\n </Text>\r\n </Pressable>\r\n </View>\r\n </View>\r\n\r\n <View style={styles.section}>\r\n <Text style={[styles.sectionTitle, isDark && styles.sectionTitleDark]}>{t.pageTransition}</Text>\r\n <View style={styles.optionRow}>\r\n <Pressable\r\n onPress={() => handleTransition('continuous')}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n (!isPaged || isDouble) && styles.optionButtonActive,\r\n (!isPaged || isDouble) && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n (!isPaged || isDouble) && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.continuous}\r\n </Text>\r\n </Pressable>\r\n <Pressable\r\n onPress={() => handleTransition('paged')}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n isPaged && styles.optionButtonActive,\r\n isPaged && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n isPaged && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.pageByPage}\r\n </Text>\r\n </Pressable>\r\n </View>\r\n </View>\r\n\r\n <View style={styles.section}>\r\n <Text style={[styles.sectionTitle, isDark && styles.sectionTitleDark]}>{t.layout}</Text>\r\n <View style={styles.optionRow}>\r\n <Pressable\r\n onPress={() => handleLayout('single')}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n !isDouble && styles.optionButtonActive,\r\n !isDouble && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n !isDouble && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.singlePage}\r\n </Text>\r\n </Pressable>\r\n <Pressable\r\n onPress={() => handleLayout('double')}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n isDouble && styles.optionButtonActive,\r\n isDouble && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n isDouble && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.doublePage}\r\n </Text>\r\n </Pressable>\r\n </View>\r\n </View>\r\n\r\n <View style={styles.section}>\r\n <Text style={[styles.sectionTitle, isDark && styles.sectionTitleDark]}>{t.rotate}</Text>\r\n <View style={styles.optionRow}>\r\n <Pressable\r\n onPress={() => handleRotate('counterclockwise')}\r\n style={[styles.optionButton, isDark && styles.optionButtonDark]}\r\n >\r\n <Text style={[styles.optionText, isDark && styles.optionTextDark]}>{t.counterclockwise}</Text>\r\n </Pressable>\r\n <Pressable\r\n onPress={() => handleRotate('clockwise')}\r\n style={[styles.optionButton, isDark && styles.optionButtonDark]}\r\n >\r\n <Text style={[styles.optionText, isDark && styles.optionTextDark]}>{t.clockwise}</Text>\r\n </Pressable>\r\n </View>\r\n </View>\r\n\r\n <View style={styles.section}>\r\n <Text style={[styles.sectionTitle, isDark && styles.sectionTitleDark]}>{t.zoom}</Text>\r\n <View style={styles.optionRow}>\r\n <Pressable onPress={() => handleZoom(-0.1)} style={[styles.optionButton, isDark && styles.optionButtonDark]}>\r\n <IconZoomOut size={16} color={isDark ? '#e5e7eb' : '#111827'} />\r\n </Pressable>\r\n <View style={styles.zoomValue}>\r\n <Text style={[styles.zoomText, isDark && styles.zoomTextDark]}>\r\n {Math.round(zoom * 100)}%\r\n </Text>\r\n </View>\r\n <Pressable onPress={() => handleZoom(0.1)} style={[styles.optionButton, isDark && styles.optionButtonDark]}>\r\n <IconZoomIn size={16} color={isDark ? '#e5e7eb' : '#111827'} />\r\n </Pressable>\r\n </View>\r\n </View>\r\n\r\n <View style={styles.section}>\r\n <Text style={[styles.sectionTitle, isDark && styles.sectionTitleDark]}>{t.language}</Text>\r\n <View style={styles.optionRow}>\r\n <Pressable\r\n onPress={() => setDocumentState({ locale: 'en' })}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n locale === 'en' && styles.optionButtonActive,\r\n locale === 'en' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n locale === 'en' && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.english}\r\n </Text>\r\n </Pressable>\r\n <Pressable\r\n onPress={() => setDocumentState({ locale: 'pt-BR' })}\r\n style={[\r\n styles.optionButton,\r\n isDark && styles.optionButtonDark,\r\n locale === 'pt-BR' && styles.optionButtonActive,\r\n locale === 'pt-BR' && { backgroundColor: accentColor },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.optionText,\r\n isDark && styles.optionTextDark,\r\n locale === 'pt-BR' && styles.optionTextActive,\r\n ]}\r\n >\r\n {t.portuguese}\r\n </Text>\r\n </Pressable>\r\n </View>\r\n </View>\r\n </View>\r\n </View>\r\n </Modal>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n modalRoot: {\r\n flex: 1,\r\n backgroundColor: 'transparent',\r\n },\r\n backdrop: {\r\n ...StyleSheet.absoluteFillObject,\r\n backgroundColor: 'rgba(0, 0, 0, 0.45)',\r\n },\r\n sheet: {\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n paddingHorizontal: 18,\r\n paddingBottom: 24,\r\n backgroundColor: '#ffffff',\r\n borderTopLeftRadius: 24,\r\n borderTopRightRadius: 24,\r\n borderTopWidth: 1,\r\n borderTopColor: '#e5e7eb',\r\n },\r\n sheetDark: {\r\n backgroundColor: '#0f1115',\r\n borderTopColor: '#1f2937',\r\n },\r\n handle: {\r\n width: 44,\r\n height: 4,\r\n borderRadius: 999,\r\n backgroundColor: '#cbd5f5',\r\n alignSelf: 'center',\r\n marginTop: 10,\r\n marginBottom: 12,\r\n },\r\n handleDark: {\r\n backgroundColor: '#374151',\r\n },\r\n section: {\r\n marginBottom: 16,\r\n },\r\n sectionTitle: {\r\n fontSize: 12,\r\n fontWeight: '800',\r\n color: '#111827',\r\n marginBottom: 8,\r\n },\r\n sectionTitleDark: {\r\n color: '#e5e7eb',\r\n },\r\n optionRow: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n flexWrap: 'wrap',\r\n },\r\n optionButton: {\r\n paddingHorizontal: 12,\r\n paddingVertical: 8,\r\n borderRadius: 12,\r\n backgroundColor: '#e5e7eb',\r\n marginRight: 8,\r\n marginBottom: 8,\r\n },\r\n optionButtonDark: {\r\n backgroundColor: '#111827',\r\n },\r\n optionButtonActive: {\r\n backgroundColor: '#2563eb',\r\n },\r\n optionText: {\r\n fontSize: 11,\r\n fontWeight: '700',\r\n color: '#111827',\r\n },\r\n optionTextDark: {\r\n color: '#e5e7eb',\r\n },\r\n optionTextActive: {\r\n color: '#ffffff',\r\n },\r\n zoomValue: {\r\n minWidth: 52,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n zoomText: {\r\n fontSize: 12,\r\n fontWeight: '700',\r\n color: '#111827',\r\n },\r\n zoomTextDark: {\r\n color: '#e5e7eb',\r\n },\r\n});\r\n\r\nexport default SettingsSheet;\r\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport {\n ActivityIndicator,\n StyleSheet,\n Text,\n UIManager,\n View,\n findNodeHandle,\n type LayoutChangeEvent,\n type StyleProp,\n type ViewStyle,\n} from 'react-native';\nimport { DocumentSource, DocumentType } from '@papyrus-sdk/types';\nimport { MobileDocumentEngine, PapyrusPageView } from '@papyrus-sdk/engine-native';\nimport WebViewViewer from './WebViewViewer';\n\ntype CoverPreviewProps = {\n source: DocumentSource;\n type?: DocumentType;\n pageIndex?: number;\n visible?: boolean;\n keepAlive?: boolean;\n allowInteraction?: boolean;\n renderScale?: number;\n showLoading?: boolean;\n loadingIndicator?: React.ReactNode;\n placeholder?: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n onLoadStart?: () => void;\n onLoadEnd?: () => void;\n onError?: (error: Error) => void;\n};\n\nconst parseDataUri = (value: string): { mime: string } | null => {\n const match = /^data:([^;,]+)?(;base64)?,/.exec(value);\n if (!match) return null;\n return { mime: match[1] ?? '' };\n};\n\nconst inferDocumentType = (source: DocumentSource, explicitType?: DocumentType): DocumentType => {\n if (explicitType) return explicitType;\n if (typeof source === 'string') {\n const dataUri = parseDataUri(source);\n if (dataUri?.mime) {\n const mime = dataUri.mime.toLowerCase();\n if (mime.includes('epub')) return 'epub';\n if (mime.includes('text')) return 'text';\n if (mime.includes('pdf')) return 'pdf';\n }\n const clean = source.split('?')[0].split('#')[0];\n const ext = clean.includes('.') ? clean.split('.').pop()?.toLowerCase() : undefined;\n if (ext === 'epub') return 'epub';\n if (ext === 'txt') return 'text';\n if (ext === 'pdf') return 'pdf';\n return 'pdf';\n }\n if (typeof source === 'object' && source !== null && 'uri' in source) {\n const clean = source.uri.split('?')[0].split('#')[0];\n const ext = clean.includes('.') ? clean.split('.').pop()?.toLowerCase() : undefined;\n if (ext === 'epub') return 'epub';\n if (ext === 'txt') return 'text';\n if (ext === 'pdf') return 'pdf';\n }\n return 'pdf';\n};\n\nconst CoverPreview: React.FC<CoverPreviewProps> = ({\n source,\n type,\n pageIndex = 0,\n visible = true,\n keepAlive = false,\n allowInteraction = false,\n renderScale = 2,\n showLoading = true,\n loadingIndicator,\n placeholder,\n style,\n onLoadStart,\n onLoadEnd,\n onError,\n}) => {\n const [engine, setEngine] = useState<MobileDocumentEngine | null>(null);\n const [layoutReady, setLayoutReady] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const viewRef = useRef<any>(null);\n\n const resolvedType = useMemo(() => inferDocumentType(source, type), [source, type]);\n const isPdf = resolvedType === 'pdf';\n const hasNativePageView = Boolean(UIManager.getViewManagerConfig?.('PapyrusPageView'));\n const canRender = !isPdf || hasNativePageView;\n const shouldRender = Boolean(visible);\n\n useEffect(() => {\n if (!shouldRender) {\n if (!keepAlive) {\n setEngine(null);\n setLoaded(false);\n setError(null);\n }\n return;\n }\n if (!engine && canRender) {\n setEngine(new MobileDocumentEngine());\n }\n }, [shouldRender, keepAlive, engine, canRender]);\n\n useEffect(() => {\n if (!engine || !shouldRender || !canRender) return;\n let active = true;\n setLoading(true);\n setLoaded(false);\n setError(null);\n onLoadStart?.();\n const loadInput = type ? { type, source } : source;\n engine\n .load(loadInput)\n .then(() => {\n if (!active) return;\n if (!isPdf && pageIndex > 0) {\n engine.goToPage(pageIndex + 1);\n }\n setLoaded(true);\n setLoading(false);\n onLoadEnd?.();\n })\n .catch((err) => {\n if (!active) return;\n const errorValue = err instanceof Error ? err : new Error('[Papyrus] Failed to load document');\n setError(errorValue);\n setLoading(false);\n onError?.(errorValue);\n });\n return () => {\n active = false;\n };\n }, [engine, shouldRender, canRender, source, type, pageIndex, isPdf, onLoadStart, onLoadEnd, onError]);\n\n useEffect(() => {\n if (!engine || !isPdf || !loaded || !layoutReady || !shouldRender || !canRender) return;\n const viewTag = findNodeHandle(viewRef.current);\n if (!viewTag) return;\n engine.renderPage(pageIndex, viewTag, renderScale);\n }, [engine, isPdf, loaded, layoutReady, shouldRender, canRender, pageIndex, renderScale]);\n\n useEffect(() => {\n return () => {\n engine?.destroy();\n };\n }, [engine]);\n\n const handleLayout = (event: LayoutChangeEvent) => {\n const { width, height } = event.nativeEvent.layout;\n if (width > 0 && height > 0) {\n setLayoutReady(true);\n }\n };\n\n if (!shouldRender || !canRender) {\n return (\n <View style={[styles.container, style]}>\n {placeholder ?? (\n <View style={styles.placeholder}>\n <Text style={styles.placeholderText}>Preview</Text>\n </View>\n )}\n </View>\n );\n }\n\n return (\n <View style={[styles.container, style]} onLayout={handleLayout}>\n <View style={styles.previewFrame} pointerEvents={allowInteraction ? 'auto' : 'none'}>\n {isPdf ? (\n <PapyrusPageView ref={viewRef} style={styles.pageView} />\n ) : (\n engine && <WebViewViewer engine={engine} />\n )}\n </View>\n {showLoading && loading && (\n <View pointerEvents=\"none\" style={styles.loadingOverlay}>\n {loadingIndicator ?? <ActivityIndicator size=\"small\" color=\"#2563eb\" />}\n </View>\n )}\n {error && (\n <View pointerEvents=\"none\" style={styles.errorOverlay}>\n <Text style={styles.errorText}>Preview unavailable</Text>\n </View>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n backgroundColor: '#f8fafc',\n borderRadius: 12,\n overflow: 'hidden',\n },\n previewFrame: {\n flex: 1,\n backgroundColor: '#ffffff',\n },\n pageView: {\n width: '100%',\n height: '100%',\n backgroundColor: 'transparent',\n },\n loadingOverlay: {\n ...StyleSheet.absoluteFillObject,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'rgba(15, 23, 42, 0.15)',\n },\n errorOverlay: {\n ...StyleSheet.absoluteFillObject,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'rgba(15, 23, 42, 0.4)',\n },\n errorText: {\n fontSize: 12,\n fontWeight: '600',\n color: '#f8fafc',\n },\n placeholder: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#e2e8f0',\n },\n placeholderText: {\n fontSize: 12,\n fontWeight: '600',\n color: '#475569',\n },\n});\n\nexport default CoverPreview;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,uBAAAA,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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","names":["exports","module","import_react","import_react_native","import_core","scale","Svg","SvgPath","import_react","import_react_native","import_core","import_jsx_runtime","styles","WebView","import_jsx_runtime","safeZoom","pageWidth","estimatedLength","styles","import_react","import_react_native","import_core","import_react_native_svg","import_jsx_runtime","Svg","Svg","import_jsx_runtime","styles","import_react_native","import_core","import_jsx_runtime","styles","import_react","import_react_native","import_core","import_engine_native","import_jsx_runtime","withAlpha","resolvePositiveInt","styles","import_react","import_react_native","import_core","import_jsx_runtime","styles","import_react_native","import_core","import_jsx_runtime","styles","import_react_native","import_core","import_jsx_runtime","styles","import_react","import_react_native","import_engine_native","import_jsx_runtime","styles"]}