/*! localForage -- Offline Storage, Improved Version 1.7.3 https://localforage.github.io/localForage (c) 2013-2017 Mozilla, Apache License 2.0 */ !(function(a) { if ("object" == typeof exports && "undefined" != typeof module) module.exports = a(); else if ("function" == typeof define && define.amd) define([], a); else { var b; (b = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this), (b.localforage = a()); } })(function() { return (function a(b, c, d) { function e(g, h) { if (!c[g]) { if (!b[g]) { var i = "function" == typeof require && require; if (!h && i) return i(g, !0); if (f) return f(g, !0); var j = new Error("Cannot find module '" + g + "'"); throw ((j.code = "MODULE_NOT_FOUND"), j); } var k = (c[g] = { exports: {} }); b[g][0].call( k.exports, function(a) { var c = b[g][1][a]; return e(c || a); }, k, k.exports, a, b, c, d ); } return c[g].exports; } for (var f = "function" == typeof require && require, g = 0; g < d.length; g++) e(d[g]); return e; })( { 1: [ function(a, b, c) { (function(a) { "use strict"; function c() { k = !0; for (var a, b, c = l.length; c; ) { for (b = l, l = [], a = -1; ++a < c; ) b[a](); c = l.length; } k = !1; } function d(a) { 1 !== l.push(a) || k || e(); } var e, f = a.MutationObserver || a.WebKitMutationObserver; if (f) { var g = 0, h = new f(c), i = a.document.createTextNode(""); h.observe(i, { characterData: !0 }), (e = function() { i.data = g = ++g % 2; }); } else if (a.setImmediate || void 0 === a.MessageChannel) e = "document" in a && "onreadystatechange" in a.document.createElement("script") ? function() { var b = a.document.createElement("script"); (b.onreadystatechange = function() { c(), (b.onreadystatechange = null), b.parentNode.removeChild(b), (b = null); }), a.document.documentElement.appendChild(b); } : function() { setTimeout(c, 0); }; else { var j = new a.MessageChannel(); (j.port1.onmessage = c), (e = function() { j.port2.postMessage(0); }); } var k, l = []; b.exports = d; }.call( this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {} )); }, {} ], 2: [ function(a, b, c) { "use strict"; function d() {} function e(a) { if ("function" != typeof a) throw new TypeError("resolver must be a function"); (this.state = s), (this.queue = []), (this.outcome = void 0), a !== d && i(this, a); } function f(a, b, c) { (this.promise = a), "function" == typeof b && ((this.onFulfilled = b), (this.callFulfilled = this.otherCallFulfilled)), "function" == typeof c && ((this.onRejected = c), (this.callRejected = this.otherCallRejected)); } function g(a, b, c) { o(function() { var d; try { d = b(c); } catch (b) { return p.reject(a, b); } d === a ? p.reject(a, new TypeError("Cannot resolve promise with itself")) : p.resolve(a, d); }); } function h(a) { var b = a && a.then; if (a && ("object" == typeof a || "function" == typeof a) && "function" == typeof b) return function() { b.apply(a, arguments); }; } function i(a, b) { function c(b) { f || ((f = !0), p.reject(a, b)); } function d(b) { f || ((f = !0), p.resolve(a, b)); } function e() { b(d, c); } var f = !1, g = j(e); "error" === g.status && c(g.value); } function j(a, b) { var c = {}; try { (c.value = a(b)), (c.status = "success"); } catch (a) { (c.status = "error"), (c.value = a); } return c; } function k(a) { return a instanceof this ? a : p.resolve(new this(d), a); } function l(a) { var b = new this(d); return p.reject(b, a); } function m(a) { function b(a, b) { function d(a) { (g[b] = a), ++h !== e || f || ((f = !0), p.resolve(j, g)); } c.resolve(a).then(d, function(a) { f || ((f = !0), p.reject(j, a)); }); } var c = this; if ("[object Array]" !== Object.prototype.toString.call(a)) return this.reject(new TypeError("must be an array")); var e = a.length, f = !1; if (!e) return this.resolve([]); for (var g = new Array(e), h = 0, i = -1, j = new this(d); ++i < e; ) b(a[i], i); return j; } function n(a) { function b(a) { c.resolve(a).then( function(a) { f || ((f = !0), p.resolve(h, a)); }, function(a) { f || ((f = !0), p.reject(h, a)); } ); } var c = this; if ("[object Array]" !== Object.prototype.toString.call(a)) return this.reject(new TypeError("must be an array")); var e = a.length, f = !1; if (!e) return this.resolve([]); for (var g = -1, h = new this(d); ++g < e; ) b(a[g]); return h; } var o = a(1), p = {}, q = ["REJECTED"], r = ["FULFILLED"], s = ["PENDING"]; (b.exports = e), (e.prototype.catch = function(a) { return this.then(null, a); }), (e.prototype.then = function(a, b) { if ( ("function" != typeof a && this.state === r) || ("function" != typeof b && this.state === q) ) return this; var c = new this.constructor(d); if (this.state !== s) { g(c, this.state === r ? a : b, this.outcome); } else this.queue.push(new f(c, a, b)); return c; }), (f.prototype.callFulfilled = function(a) { p.resolve(this.promise, a); }), (f.prototype.otherCallFulfilled = function(a) { g(this.promise, this.onFulfilled, a); }), (f.prototype.callRejected = function(a) { p.reject(this.promise, a); }), (f.prototype.otherCallRejected = function(a) { g(this.promise, this.onRejected, a); }), (p.resolve = function(a, b) { var c = j(h, b); if ("error" === c.status) return p.reject(a, c.value); var d = c.value; if (d) i(a, d); else { (a.state = r), (a.outcome = b); for (var e = -1, f = a.queue.length; ++e < f; ) a.queue[e].callFulfilled(b); } return a; }), (p.reject = function(a, b) { (a.state = q), (a.outcome = b); for (var c = -1, d = a.queue.length; ++c < d; ) a.queue[c].callRejected(b); return a; }), (e.resolve = k), (e.reject = l), (e.all = m), (e.race = n); }, { 1: 1 } ], 3: [ function(a, b, c) { (function(b) { "use strict"; "function" != typeof b.Promise && (b.Promise = a(2)); }.call( this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {} )); }, { 2: 2 } ], 4: [ function(a, b, c) { "use strict"; function d(a, b) { if (!(a instanceof b)) throw new TypeError("Cannot call a class as a function"); } function e() { 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 (a) { return; } } function f() { try { if (!ua) return !1; var a = "undefined" != typeof openDatabase && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform), b = "function" == typeof fetch && -1 !== fetch.toString().indexOf("[native code"); return ( (!a || b) && "undefined" != typeof indexedDB && "undefined" != typeof IDBKeyRange ); } catch (a) { return !1; } } function g(a, b) { (a = a || []), (b = b || {}); try { return new Blob(a, b); } catch (f) { if ("TypeError" !== f.name) throw f; for ( var c = "undefined" != typeof BlobBuilder ? BlobBuilder : "undefined" != typeof MSBlobBuilder ? MSBlobBuilder : "undefined" != typeof MozBlobBuilder ? MozBlobBuilder : WebKitBlobBuilder, d = new c(), e = 0; e < a.length; e += 1 ) d.append(a[e]); return d.getBlob(b.type); } } function h(a, b) { b && a.then( function(a) { b(null, a); }, function(a) { b(a); } ); } function i(a, b, c) { "function" == typeof b && a.then(b), "function" == typeof c && a.catch(c); } function j(a) { return ( "string" != typeof a && (console.warn(a + " used as a key, but it is not a string."), (a = String(a))), a ); } function k() { if (arguments.length && "function" == typeof arguments[arguments.length - 1]) return arguments[arguments.length - 1]; } function l(a) { for (var b = a.length, c = new ArrayBuffer(b), d = new Uint8Array(c), e = 0; e < b; e++) d[e] = a.charCodeAt(e); return c; } function m(a) { return new va(function(b) { var c = a.transaction(wa, Ba), d = g([""]); c.objectStore(wa).put(d, "key"), (c.onabort = function(a) { a.preventDefault(), a.stopPropagation(), b(!1); }), (c.oncomplete = function() { var a = navigator.userAgent.match(/Chrome\/(\d+)/), c = navigator.userAgent.match(/Edge\//); b(c || !a || parseInt(a[1], 10) >= 43); }); }).catch(function() { return !1; }); } function n(a) { return "boolean" == typeof xa ? va.resolve(xa) : m(a).then(function(a) { return (xa = a); }); } function o(a) { var b = ya[a.name], c = {}; (c.promise = new va(function(a, b) { (c.resolve = a), (c.reject = b); })), b.deferredOperations.push(c), b.dbReady ? (b.dbReady = b.dbReady.then(function() { return c.promise; })) : (b.dbReady = c.promise); } function p(a) { var b = ya[a.name], c = b.deferredOperations.pop(); if (c) return c.resolve(), c.promise; } function q(a, b) { var c = ya[a.name], d = c.deferredOperations.pop(); if (d) return d.reject(b), d.promise; } function r(a, b) { return new va(function(c, d) { if (((ya[a.name] = ya[a.name] || B()), a.db)) { if (!b) return c(a.db); o(a), a.db.close(); } var e = [a.name]; b && e.push(a.version); var f = ua.open.apply(ua, e); b && (f.onupgradeneeded = function(b) { var c = f.result; try { c.createObjectStore(a.storeName), b.oldVersion <= 1 && c.createObjectStore(wa); } catch (c) { if ("ConstraintError" !== c.name) throw c; console.warn( 'The database "' + a.name + '" has been upgraded from version ' + b.oldVersion + " to version " + b.newVersion + ', but the storage "' + a.storeName + '" already exists.' ); } }), (f.onerror = function(a) { a.preventDefault(), d(f.error); }), (f.onsuccess = function() { c(f.result), p(a); }); }); } function s(a) { return r(a, !1); } function t(a) { return r(a, !0); } function u(a, b) { if (!a.db) return !0; var c = !a.db.objectStoreNames.contains(a.storeName), d = a.version < a.db.version, e = a.version > a.db.version; if ( (d && (a.version !== b && console.warn( 'The database "' + a.name + "\" can't be downgraded from version " + a.db.version + " to version " + a.version + "." ), (a.version = a.db.version)), e || c) ) { if (c) { var f = a.db.version + 1; f > a.version && (a.version = f); } return !0; } return !1; } function v(a) { return new va(function(b, c) { var d = new FileReader(); (d.onerror = c), (d.onloadend = function(c) { var d = btoa(c.target.result || ""); b({ __local_forage_encoded_blob: !0, data: d, type: a.type }); }), d.readAsBinaryString(a); }); } function w(a) { return g([l(atob(a.data))], { type: a.type }); } function x(a) { return a && a.__local_forage_encoded_blob; } function y(a) { var b = this, c = b._initReady().then(function() { var a = ya[b._dbInfo.name]; if (a && a.dbReady) return a.dbReady; }); return i(c, a, a), c; } function z(a) { o(a); for (var b = ya[a.name], c = b.forages, d = 0; d < c.length; d++) { var e = c[d]; e._dbInfo.db && (e._dbInfo.db.close(), (e._dbInfo.db = null)); } return ( (a.db = null), s(a) .then(function(b) { return (a.db = b), u(a) ? t(a) : b; }) .then(function(d) { a.db = b.db = d; for (var e = 0; e < c.length; e++) c[e]._dbInfo.db = d; }) .catch(function(b) { throw (q(a, b), b); }) ); } function A(a, b, c, d) { void 0 === d && (d = 1); try { var e = a.db.transaction(a.storeName, b); c(null, e); } catch (e) { if (d > 0 && (!a.db || "InvalidStateError" === e.name || "NotFoundError" === e.name)) return va .resolve() .then(function() { if ( !a.db || ("NotFoundError" === e.name && !a.db.objectStoreNames.contains(a.storeName) && a.version <= a.db.version) ) return a.db && (a.version = a.db.version + 1), t(a); }) .then(function() { return z(a).then(function() { A(a, b, c, d - 1); }); }) .catch(c); c(e); } } function B() { return { forages: [], db: null, dbReady: null, deferredOperations: [] }; } function C(a) { function b() { return va.resolve(); } var c = this, d = { db: null }; if (a) for (var e in a) d[e] = a[e]; var f = ya[d.name]; f || ((f = B()), (ya[d.name] = f)), f.forages.push(c), c._initReady || ((c._initReady = c.ready), (c.ready = y)); for (var g = [], h = 0; h < f.forages.length; h++) { var i = f.forages[h]; i !== c && g.push(i._initReady().catch(b)); } var j = f.forages.slice(0); return va .all(g) .then(function() { return (d.db = f.db), s(d); }) .then(function(a) { return (d.db = a), u(d, c._defaultConfig.version) ? t(d) : a; }) .then(function(a) { (d.db = f.db = a), (c._dbInfo = d); for (var b = 0; b < j.length; b++) { var e = j[b]; e !== c && ((e._dbInfo.db = d.db), (e._dbInfo.version = d.version)); } }); } function D(a, b) { var c = this; a = j(a); var d = new va(function(b, d) { c.ready() .then(function() { A(c._dbInfo, Aa, function(e, f) { if (e) return d(e); try { var g = f.objectStore(c._dbInfo.storeName), h = g.get(a); (h.onsuccess = function() { var a = h.result; void 0 === a && (a = null), x(a) && (a = w(a)), b(a); }), (h.onerror = function() { d(h.error); }); } catch (a) { d(a); } }); }) .catch(d); }); return h(d, b), d; } function E(a, b) { var c = this, d = new va(function(b, d) { c.ready() .then(function() { A(c._dbInfo, Aa, function(e, f) { if (e) return d(e); try { var g = f.objectStore(c._dbInfo.storeName), h = g.openCursor(), i = 1; (h.onsuccess = function() { var c = h.result; if (c) { var d = c.value; x(d) && (d = w(d)); var e = a(d, c.key, i++); void 0 !== e ? b(e) : c.continue(); } else b(); }), (h.onerror = function() { d(h.error); }); } catch (a) { d(a); } }); }) .catch(d); }); return h(d, b), d; } function F(a, b, c) { var d = this; a = j(a); var e = new va(function(c, e) { var f; d.ready() .then(function() { return ( (f = d._dbInfo), "[object Blob]" === za.call(b) ? n(f.db).then(function(a) { return a ? b : v(b); }) : b ); }) .then(function(b) { A(d._dbInfo, Ba, function(f, g) { if (f) return e(f); try { var h = g.objectStore(d._dbInfo.storeName); null === b && (b = void 0); var i = h.put(b, a); (g.oncomplete = function() { void 0 === b && (b = null), c(b); }), (g.onabort = g.onerror = function() { var a = i.error ? i.error : i.transaction.error; e(a); }); } catch (a) { e(a); } }); }) .catch(e); }); return h(e, c), e; } function G(a, b) { var c = this; a = j(a); var d = new va(function(b, d) { c.ready() .then(function() { A(c._dbInfo, Ba, function(e, f) { if (e) return d(e); try { var g = f.objectStore(c._dbInfo.storeName), h = g.delete(a); (f.oncomplete = function() { b(); }), (f.onerror = function() { d(h.error); }), (f.onabort = function() { var a = h.error ? h.error : h.transaction.error; d(a); }); } catch (a) { d(a); } }); }) .catch(d); }); return h(d, b), d; } function H(a) { var b = this, c = new va(function(a, c) { b.ready() .then(function() { A(b._dbInfo, Ba, function(d, e) { if (d) return c(d); try { var f = e.objectStore(b._dbInfo.storeName), g = f.clear(); (e.oncomplete = function() { a(); }), (e.onabort = e.onerror = function() { var a = g.error ? g.error : g.transaction.error; c(a); }); } catch (a) { c(a); } }); }) .catch(c); }); return h(c, a), c; } function I(a) { var b = this, c = new va(function(a, c) { b.ready() .then(function() { A(b._dbInfo, Aa, function(d, e) { if (d) return c(d); try { var f = e.objectStore(b._dbInfo.storeName), g = f.count(); (g.onsuccess = function() { a(g.result); }), (g.onerror = function() { c(g.error); }); } catch (a) { c(a); } }); }) .catch(c); }); return h(c, a), c; } function J(a, b) { var c = this, d = new va(function(b, d) { if (a < 0) return void b(null); c.ready() .then(function() { A(c._dbInfo, Aa, function(e, f) { if (e) return d(e); try { var g = f.objectStore(c._dbInfo.storeName), h = !1, i = g.openCursor(); (i.onsuccess = function() { var c = i.result; if (!c) return void b(null); 0 === a ? b(c.key) : h ? b(c.key) : ((h = !0), c.advance(a)); }), (i.onerror = function() { d(i.error); }); } catch (a) { d(a); } }); }) .catch(d); }); return h(d, b), d; } function K(a) { var b = this, c = new va(function(a, c) { b.ready() .then(function() { A(b._dbInfo, Aa, function(d, e) { if (d) return c(d); try { var f = e.objectStore(b._dbInfo.storeName), g = f.openCursor(), h = []; (g.onsuccess = function() { var b = g.result; if (!b) return void a(h); h.push(b.key), b.continue(); }), (g.onerror = function() { c(g.error); }); } catch (a) { c(a); } }); }) .catch(c); }); return h(c, a), c; } function L(a, b) { b = k.apply(this, arguments); var c = this.config(); (a = ("function" != typeof a && a) || {}), a.name || ((a.name = a.name || c.name), (a.storeName = a.storeName || c.storeName)); var d, e = this; if (a.name) { var f = a.name === c.name && e._dbInfo.db, g = f ? va.resolve(e._dbInfo.db) : s(a).then(function(b) { var c = ya[a.name], d = c.forages; c.db = b; for (var e = 0; e < d.length; e++) d[e]._dbInfo.db = b; return b; }); d = a.storeName ? g.then(function(b) { if (b.objectStoreNames.contains(a.storeName)) { var c = b.version + 1; o(a); var d = ya[a.name], e = d.forages; b.close(); for (var f = 0; f < e.length; f++) { var g = e[f]; (g._dbInfo.db = null), (g._dbInfo.version = c); } return new va(function(b, d) { var e = ua.open(a.name, c); (e.onerror = function(a) { e.result.close(), d(a); }), (e.onupgradeneeded = function() { e.result.deleteObjectStore(a.storeName); }), (e.onsuccess = function() { var a = e.result; a.close(), b(a); }); }) .then(function(a) { d.db = a; for (var b = 0; b < e.length; b++) { var c = e[b]; (c._dbInfo.db = a), p(c._dbInfo); } }) .catch(function(b) { throw ((q(a, b) || va.resolve()).catch(function() {}), b); }); } }) : g.then(function(b) { o(a); var c = ya[a.name], d = c.forages; b.close(); for (var e = 0; e < d.length; e++) { d[e]._dbInfo.db = null; } return new va(function(b, c) { var d = ua.deleteDatabase(a.name); (d.onerror = d.onblocked = function(a) { var b = d.result; b && b.close(), c(a); }), (d.onsuccess = function() { var a = d.result; a && a.close(), b(a); }); }) .then(function(a) { c.db = a; for (var b = 0; b < d.length; b++) p(d[b]._dbInfo); }) .catch(function(b) { throw ((q(a, b) || va.resolve()).catch(function() {}), b); }); }); } else d = va.reject("Invalid arguments"); return h(d, b), d; } function M() { return "function" == typeof openDatabase; } function N(a) { var b, c, d, e, f, g = 0.75 * a.length, h = a.length, i = 0; "=" === a[a.length - 1] && (g--, "=" === a[a.length - 2] && g--); var j = new ArrayBuffer(g), k = new Uint8Array(j); for (b = 0; b < h; b += 4) (c = Da.indexOf(a[b])), (d = Da.indexOf(a[b + 1])), (e = Da.indexOf(a[b + 2])), (f = Da.indexOf(a[b + 3])), (k[i++] = (c << 2) | (d >> 4)), (k[i++] = ((15 & d) << 4) | (e >> 2)), (k[i++] = ((3 & e) << 6) | (63 & f)); return j; } function O(a) { var b, c = new Uint8Array(a), d = ""; for (b = 0; b < c.length; b += 3) (d += Da[c[b] >> 2]), (d += Da[((3 & c[b]) << 4) | (c[b + 1] >> 4)]), (d += Da[((15 & c[b + 1]) << 2) | (c[b + 2] >> 6)]), (d += Da[63 & c[b + 2]]); return ( c.length % 3 == 2 ? (d = d.substring(0, d.length - 1) + "=") : c.length % 3 == 1 && (d = d.substring(0, d.length - 2) + "=="), d ); } function P(a, b) { var c = ""; if ( (a && (c = Ua.call(a)), a && ("[object ArrayBuffer]" === c || (a.buffer && "[object ArrayBuffer]" === Ua.call(a.buffer)))) ) { var d, e = Ga; a instanceof ArrayBuffer ? ((d = a), (e += Ia)) : ((d = a.buffer), "[object Int8Array]" === c ? (e += Ka) : "[object Uint8Array]" === c ? (e += La) : "[object Uint8ClampedArray]" === c ? (e += Ma) : "[object Int16Array]" === c ? (e += Na) : "[object Uint16Array]" === c ? (e += Pa) : "[object Int32Array]" === c ? (e += Oa) : "[object Uint32Array]" === c ? (e += Qa) : "[object Float32Array]" === c ? (e += Ra) : "[object Float64Array]" === c ? (e += Sa) : b(new Error("Failed to get type for BinaryArray"))), b(e + O(d)); } else if ("[object Blob]" === c) { var f = new FileReader(); (f.onload = function() { var c = Ea + a.type + "~" + O(this.result); b(Ga + Ja + c); }), f.readAsArrayBuffer(a); } else try { b(JSON.stringify(a)); } catch (c) { console.error("Couldn't convert value into a JSON string: ", a), b(null, c); } } function Q(a) { if (a.substring(0, Ha) !== Ga) return JSON.parse(a); var b, c = a.substring(Ta), d = a.substring(Ha, Ta); if (d === Ja && Fa.test(c)) { var e = c.match(Fa); (b = e[1]), (c = c.substring(e[0].length)); } var f = N(c); switch (d) { case Ia: return f; case Ja: return g([f], { type: b }); case Ka: return new Int8Array(f); case La: return new Uint8Array(f); case Ma: return new Uint8ClampedArray(f); case Na: return new Int16Array(f); case Pa: return new Uint16Array(f); case Oa: return new Int32Array(f); case Qa: return new Uint32Array(f); case Ra: return new Float32Array(f); case Sa: return new Float64Array(f); default: throw new Error("Unkown type: " + d); } } function R(a, b, c, d) { a.executeSql( "CREATE TABLE IF NOT EXISTS " + b.storeName + " (id INTEGER PRIMARY KEY, key unique, value)", [], c, d ); } function S(a) { var b = this, c = { db: null }; if (a) for (var d in a) c[d] = "string" != typeof a[d] ? a[d].toString() : a[d]; var e = new va(function(a, d) { try { c.db = openDatabase(c.name, String(c.version), c.description, c.size); } catch (a) { return d(a); } c.db.transaction(function(e) { R( e, c, function() { (b._dbInfo = c), a(); }, function(a, b) { d(b); } ); }, d); }); return (c.serializer = Va), e; } function T(a, b, c, d, e, f) { a.executeSql( c, d, e, function(a, g) { g.code === g.SYNTAX_ERR ? a.executeSql( "SELECT name FROM sqlite_master WHERE type='table' AND name = ?", [b.storeName], function(a, h) { h.rows.length ? f(a, g) : R( a, b, function() { a.executeSql(c, d, e, f); }, f ); }, f ) : f(a, g); }, f ); } function U(a, b) { var c = this; a = j(a); var d = new va(function(b, d) { c.ready() .then(function() { var e = c._dbInfo; e.db.transaction(function(c) { T( c, e, "SELECT * FROM " + e.storeName + " WHERE key = ? LIMIT 1", [a], function(a, c) { var d = c.rows.length ? c.rows.item(0).value : null; d && (d = e.serializer.deserialize(d)), b(d); }, function(a, b) { d(b); } ); }); }) .catch(d); }); return h(d, b), d; } function V(a, b) { var c = this, d = new va(function(b, d) { c.ready() .then(function() { var e = c._dbInfo; e.db.transaction(function(c) { T( c, e, "SELECT * FROM " + e.storeName, [], function(c, d) { for (var f = d.rows, g = f.length, h = 0; h < g; h++) { var i = f.item(h), j = i.value; if ( (j && (j = e.serializer.deserialize(j)), void 0 !== (j = a(j, i.key, h + 1))) ) return void b(j); } b(); }, function(a, b) { d(b); } ); }); }) .catch(d); }); return h(d, b), d; } function W(a, b, c, d) { var e = this; a = j(a); var f = new va(function(f, g) { e.ready() .then(function() { void 0 === b && (b = null); var h = b, i = e._dbInfo; i.serializer.serialize(b, function(b, j) { j ? g(j) : i.db.transaction( function(c) { T( c, i, "INSERT OR REPLACE INTO " + i.storeName + " (key, value) VALUES (?, ?)", [a, b], function() { f(h); }, function(a, b) { g(b); } ); }, function(b) { if (b.code === b.QUOTA_ERR) { if (d > 0) return void f(W.apply(e, [a, h, c, d - 1])); g(b); } } ); }); }) .catch(g); }); return h(f, c), f; } function X(a, b, c) { return W.apply(this, [a, b, c, 1]); } function Y(a, b) { var c = this; a = j(a); var d = new va(function(b, d) { c.ready() .then(function() { var e = c._dbInfo; e.db.transaction(function(c) { T( c, e, "DELETE FROM " + e.storeName + " WHERE key = ?", [a], function() { b(); }, function(a, b) { d(b); } ); }); }) .catch(d); }); return h(d, b), d; } function Z(a) { var b = this, c = new va(function(a, c) { b.ready() .then(function() { var d = b._dbInfo; d.db.transaction(function(b) { T( b, d, "DELETE FROM " + d.storeName, [], function() { a(); }, function(a, b) { c(b); } ); }); }) .catch(c); }); return h(c, a), c; } function $(a) { var b = this, c = new va(function(a, c) { b.ready() .then(function() { var d = b._dbInfo; d.db.transaction(function(b) { T( b, d, "SELECT COUNT(key) as c FROM " + d.storeName, [], function(b, c) { var d = c.rows.item(0).c; a(d); }, function(a, b) { c(b); } ); }); }) .catch(c); }); return h(c, a), c; } function _(a, b) { var c = this, d = new va(function(b, d) { c.ready() .then(function() { var e = c._dbInfo; e.db.transaction(function(c) { T( c, e, "SELECT key FROM " + e.storeName + " WHERE id = ? LIMIT 1", [a + 1], function(a, c) { var d = c.rows.length ? c.rows.item(0).key : null; b(d); }, function(a, b) { d(b); } ); }); }) .catch(d); }); return h(d, b), d; } function aa(a) { var b = this, c = new va(function(a, c) { b.ready() .then(function() { var d = b._dbInfo; d.db.transaction(function(b) { T( b, d, "SELECT key FROM " + d.storeName, [], function(b, c) { for (var d = [], e = 0; e < c.rows.length; e++) d.push(c.rows.item(e).key); a(d); }, function(a, b) { c(b); } ); }); }) .catch(c); }); return h(c, a), c; } function ba(a) { return new va(function(b, c) { a.transaction( function(d) { d.executeSql( "SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'", [], function(c, d) { for (var e = [], f = 0; f < d.rows.length; f++) e.push(d.rows.item(f).name); b({ db: a, storeNames: e }); }, function(a, b) { c(b); } ); }, function(a) { c(a); } ); }); } function ca(a, b) { b = k.apply(this, arguments); var c = this.config(); (a = ("function" != typeof a && a) || {}), a.name || ((a.name = a.name || c.name), (a.storeName = a.storeName || c.storeName)); var d, e = this; return ( (d = a.name ? new va(function(b) { var d; (d = a.name === c.name ? e._dbInfo.db : openDatabase(a.name, "", "", 0)), b(a.storeName ? { db: d, storeNames: [a.storeName] } : ba(d)); }).then(function(a) { return new va(function(b, c) { a.db.transaction( function(d) { function e(a) { return new va(function(b, c) { d.executeSql( "DROP TABLE IF EXISTS " + a, [], function() { b(); }, function(a, b) { c(b); } ); }); } for (var f = [], g = 0, h = a.storeNames.length; g < h; g++) f.push(e(a.storeNames[g])); va.all(f) .then(function() { b(); }) .catch(function(a) { c(a); }); }, function(a) { c(a); } ); }); }) : va.reject("Invalid arguments")), h(d, b), d ); } function da() { try { return ( "undefined" != typeof localStorage && "setItem" in localStorage && !!localStorage.setItem ); } catch (a) { return !1; } } function ea(a, b) { var c = a.name + "/"; return a.storeName !== b.storeName && (c += a.storeName + "/"), c; } function fa() { var a = "_localforage_support_test"; try { return localStorage.setItem(a, !0), localStorage.removeItem(a), !1; } catch (a) { return !0; } } function ga() { return !fa() || localStorage.length > 0; } function ha(a) { var b = this, c = {}; if (a) for (var d in a) c[d] = a[d]; return ( (c.keyPrefix = ea(a, b._defaultConfig)), ga() ? ((b._dbInfo = c), (c.serializer = Va), va.resolve()) : va.reject() ); } function ia(a) { var b = this, c = b.ready().then(function() { for (var a = b._dbInfo.keyPrefix, c = localStorage.length - 1; c >= 0; c--) { var d = localStorage.key(c); 0 === d.indexOf(a) && localStorage.removeItem(d); } }); return h(c, a), c; } function ja(a, b) { var c = this; a = j(a); var d = c.ready().then(function() { var b = c._dbInfo, d = localStorage.getItem(b.keyPrefix + a); return d && (d = b.serializer.deserialize(d)), d; }); return h(d, b), d; } function ka(a, b) { var c = this, d = c.ready().then(function() { for ( var b = c._dbInfo, d = b.keyPrefix, e = d.length, f = localStorage.length, g = 1, h = 0; h < f; h++ ) { var i = localStorage.key(h); if (0 === i.indexOf(d)) { var j = localStorage.getItem(i); if ( (j && (j = b.serializer.deserialize(j)), void 0 !== (j = a(j, i.substring(e), g++))) ) return j; } } }); return h(d, b), d; } function la(a, b) { var c = this, d = c.ready().then(function() { var b, d = c._dbInfo; try { b = localStorage.key(a); } catch (a) { b = null; } return b && (b = b.substring(d.keyPrefix.length)), b; }); return h(d, b), d; } function ma(a) { var b = this, c = b.ready().then(function() { for (var a = b._dbInfo, c = localStorage.length, d = [], e = 0; e < c; e++) { var f = localStorage.key(e); 0 === f.indexOf(a.keyPrefix) && d.push(f.substring(a.keyPrefix.length)); } return d; }); return h(c, a), c; } function na(a) { var b = this, c = b.keys().then(function(a) { return a.length; }); return h(c, a), c; } function oa(a, b) { var c = this; a = j(a); var d = c.ready().then(function() { var b = c._dbInfo; localStorage.removeItem(b.keyPrefix + a); }); return h(d, b), d; } function pa(a, b, c) { var d = this; a = j(a); var e = d.ready().then(function() { void 0 === b && (b = null); var c = b; return new va(function(e, f) { var g = d._dbInfo; g.serializer.serialize(b, function(b, d) { if (d) f(d); else try { localStorage.setItem(g.keyPrefix + a, b), e(c); } catch (a) { ("QuotaExceededError" !== a.name && "NS_ERROR_DOM_QUOTA_REACHED" !== a.name) || f(a), f(a); } }); }); }); return h(e, c), e; } function qa(a, b) { if ( ((b = k.apply(this, arguments)), (a = ("function" != typeof a && a) || {}), !a.name) ) { var c = this.config(); (a.name = a.name || c.name), (a.storeName = a.storeName || c.storeName); } var d, e = this; return ( (d = a.name ? new va(function(b) { b(a.storeName ? ea(a, e._defaultConfig) : a.name + "/"); }).then(function(a) { for (var b = localStorage.length - 1; b >= 0; b--) { var c = localStorage.key(b); 0 === c.indexOf(a) && localStorage.removeItem(c); } }) : va.reject("Invalid arguments")), h(d, b), d ); } function ra(a, b) { a[b] = function() { var c = arguments; return a.ready().then(function() { return a[b].apply(a, c); }); }; } function sa() { for (var a = 1; a < arguments.length; a++) { var b = arguments[a]; if (b) for (var c in b) b.hasOwnProperty(c) && ($a(b[c]) ? (arguments[0][c] = b[c].slice()) : (arguments[0][c] = b[c])); } return arguments[0]; } var ta = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(a) { return typeof a; } : function(a) { return a && "function" == typeof Symbol && a.constructor === Symbol && a !== Symbol.prototype ? "symbol" : typeof a; }, ua = e(); "undefined" == typeof Promise && a(3); var va = Promise, wa = "local-forage-detect-blob-support", xa = void 0, ya = {}, za = Object.prototype.toString, Aa = "readonly", Ba = "readwrite", Ca = { _driver: "asyncStorage", _initStorage: C, _support: f(), iterate: E, getItem: D, setItem: F, removeItem: G, clear: H, length: I, key: J, keys: K, dropInstance: L }, Da = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", Ea = "~~local_forage_type~", Fa = /^~~local_forage_type~([^~]+)~/, Ga = "__lfsc__:", Ha = Ga.length, Ia = "arbf", Ja = "blob", Ka = "si08", La = "ui08", Ma = "uic8", Na = "si16", Oa = "si32", Pa = "ur16", Qa = "ui32", Ra = "fl32", Sa = "fl64", Ta = Ha + Ia.length, Ua = Object.prototype.toString, Va = { serialize: P, deserialize: Q, stringToBuffer: N, bufferToString: O }, Wa = { _driver: "webSQLStorage", _initStorage: S, _support: M(), iterate: V, getItem: U, setItem: X, removeItem: Y, clear: Z, length: $, key: _, keys: aa, dropInstance: ca }, Xa = { _driver: "localStorageWrapper", _initStorage: ha, _support: da(), iterate: ka, getItem: ja, setItem: pa, removeItem: oa, clear: ia, length: na, key: la, keys: ma, dropInstance: qa }, Ya = function(a, b) { return ( a === b || ("number" == typeof a && "number" == typeof b && isNaN(a) && isNaN(b)) ); }, Za = function(a, b) { for (var c = a.length, d = 0; d < c; ) { if (Ya(a[d], b)) return !0; d++; } return !1; }, $a = Array.isArray || function(a) { return "[object Array]" === Object.prototype.toString.call(a); }, _a = {}, ab = {}, bb = { INDEXEDDB: Ca, WEBSQL: Wa, LOCALSTORAGE: Xa }, cb = [bb.INDEXEDDB._driver, bb.WEBSQL._driver, bb.LOCALSTORAGE._driver], db = ["dropInstance"], eb = [ "clear", "getItem", "iterate", "key", "keys", "length", "removeItem", "setItem" ].concat(db), fb = { description: "", driver: cb.slice(), name: "localforage", size: 4980736, storeName: "keyvaluepairs", version: 1 }, gb = (function() { function a(b) { d(this, a); for (var c in bb) if (bb.hasOwnProperty(c)) { var e = bb[c], f = e._driver; (this[c] = f), _a[f] || this.defineDriver(e); } (this._defaultConfig = sa({}, fb)), (this._config = sa({}, this._defaultConfig, b)), (this._driverSet = null), (this._initDriver = null), (this._ready = !1), (this._dbInfo = null), this._wrapLibraryMethodsWithReady(), this.setDriver(this._config.driver).catch(function() {}); } return ( (a.prototype.config = function(a) { if ("object" === (void 0 === a ? "undefined" : ta(a))) { if (this._ready) return new Error("Can't call config() after localforage has been used."); for (var b in a) { if ( ("storeName" === b && (a[b] = a[b].replace(/\W/g, "_")), "version" === b && "number" != typeof a[b]) ) return new Error("Database version must be a number."); this._config[b] = a[b]; } return !("driver" in a && a.driver) || this.setDriver(this._config.driver); } return "string" == typeof a ? this._config[a] : this._config; }), (a.prototype.defineDriver = function(a, b, c) { var d = new va(function(b, c) { try { var d = a._driver, e = new Error( "Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver" ); if (!a._driver) return void c(e); for (var f = eb.concat("_initStorage"), g = 0, i = f.length; g < i; g++) { var j = f[g]; if ((!Za(db, j) || a[j]) && "function" != typeof a[j]) return void c(e); } (function() { for ( var b = function(a) { return function() { var b = new Error( "Method " + a + " is not implemented by the current driver" ), c = va.reject(b); return h(c, arguments[arguments.length - 1]), c; }; }, c = 0, d = db.length; c < d; c++ ) { var e = db[c]; a[e] || (a[e] = b(e)); } })(); var k = function(c) { _a[d] && console.info("Redefining LocalForage driver: " + d), (_a[d] = a), (ab[d] = c), b(); }; "_support" in a ? a._support && "function" == typeof a._support ? a._support().then(k, c) : k(!!a._support) : k(!0); } catch (a) { c(a); } }); return i(d, b, c), d; }), (a.prototype.driver = function() { return this._driver || null; }), (a.prototype.getDriver = function(a, b, c) { var d = _a[a] ? va.resolve(_a[a]) : va.reject(new Error("Driver not found.")); return i(d, b, c), d; }), (a.prototype.getSerializer = function(a) { var b = va.resolve(Va); return i(b, a), b; }), (a.prototype.ready = function(a) { var b = this, c = b._driverSet.then(function() { return null === b._ready && (b._ready = b._initDriver()), b._ready; }); return i(c, a, a), c; }), (a.prototype.setDriver = function(a, b, c) { function d() { g._config.driver = g.driver(); } function e(a) { return g._extend(a), d(), (g._ready = g._initStorage(g._config)), g._ready; } function f(a) { return function() { function b() { for (; c < a.length; ) { var f = a[c]; return ( c++, (g._dbInfo = null), (g._ready = null), g .getDriver(f) .then(e) .catch(b) ); } d(); var h = new Error("No available storage method found."); return (g._driverSet = va.reject(h)), g._driverSet; } var c = 0; return b(); }; } var g = this; $a(a) || (a = [a]); var h = this._getSupportedDrivers(a), j = null !== this._driverSet ? this._driverSet.catch(function() { return va.resolve(); }) : va.resolve(); return ( (this._driverSet = j .then(function() { var a = h[0]; return ( (g._dbInfo = null), (g._ready = null), g.getDriver(a).then(function(a) { (g._driver = a._driver), d(), g._wrapLibraryMethodsWithReady(), (g._initDriver = f(h)); }) ); }) .catch(function() { d(); var a = new Error("No available storage method found."); return (g._driverSet = va.reject(a)), g._driverSet; })), i(this._driverSet, b, c), this._driverSet ); }), (a.prototype.supports = function(a) { return !!ab[a]; }), (a.prototype._extend = function(a) { sa(this, a); }), (a.prototype._getSupportedDrivers = function(a) { for (var b = [], c = 0, d = a.length; c < d; c++) { var e = a[c]; this.supports(e) && b.push(e); } return b; }), (a.prototype._wrapLibraryMethodsWithReady = function() { for (var a = 0, b = eb.length; a < b; a++) ra(this, eb[a]); }), (a.prototype.createInstance = function(b) { return new a(b); }), a ); })(), hb = new gb(); b.exports = hb; }, { 3: 3 } ] }, {}, [4] )(4); });