{
  "version": 3,
  "sources": ["../src/modules/storage.js"],
  "sourcesContent": ["// zelvior-runtime/storage -- IndexedDB-backed key/value store with an\n// automatic localStorage fallback for browsers/extension contexts without\n// IndexedDB (very old WebKit, some locked-down extension sandboxes, private\n// mode in a few legacy browsers). ESM source of truth; bundled by build.mjs.\n//\n// Why IndexedDB by default: localStorage is synchronous and blocks the main\n// thread on every read/write, which is exactly the kind of cost this\n// runtime exists to remove -- worst on low-end hardware where that\n// synchronous I/O competes with everything else. IndexedDB is async and\n// off-thread. Callers who need the old synchronous behavior (or explicitly\n// want to avoid IndexedDB) can force localStorage via `mode`.\n\nvar DB_NAME = 'zelvior-store';\nvar STORE = 'kv';\nvar hasIDB = typeof indexedDB !== 'undefined';\nvar hasLS = (function () {\n  try {\n    var k = '__zelvior_ls_test__';\n    localStorage.setItem(k, '1');\n    localStorage.removeItem(k);\n    return true;\n  } catch (e) { return false; }\n})();\n\nvar dbPromise = null;\nfunction openDb(dbName) {\n  if (dbPromise) return dbPromise;\n  dbPromise = new Promise(function (resolve, reject) {\n    var req = indexedDB.open(dbName || DB_NAME, 1);\n    req.onupgradeneeded = function () {\n      if (!req.result.objectStoreNames.contains(STORE)) req.result.createObjectStore(STORE);\n    };\n    req.onsuccess = function () { resolve(req.result); };\n    req.onerror = function () { reject(req.error); };\n  });\n  return dbPromise;\n}\n\nfunction idbGet(key, dbName) {\n  return openDb(dbName).then(function (db) {\n    return new Promise(function (resolve, reject) {\n      var tx = db.transaction(STORE, 'readonly').objectStore(STORE).get(key);\n      tx.onsuccess = function () { resolve(tx.result); };\n      tx.onerror = function () { reject(tx.error); };\n    });\n  });\n}\nfunction idbSet(key, value, dbName) {\n  return openDb(dbName).then(function (db) {\n    return new Promise(function (resolve, reject) {\n      var tx = db.transaction(STORE, 'readwrite').objectStore(STORE).put(value, key);\n      tx.onsuccess = function () { resolve(); };\n      tx.onerror = function () { reject(tx.error); };\n    });\n  });\n}\nfunction idbDel(key, dbName) {\n  return openDb(dbName).then(function (db) {\n    return new Promise(function (resolve, reject) {\n      var tx = db.transaction(STORE, 'readwrite').objectStore(STORE).delete(key);\n      tx.onsuccess = function () { resolve(); };\n      tx.onerror = function () { reject(tx.error); };\n    });\n  });\n}\nfunction idbClear(dbName) {\n  return openDb(dbName).then(function (db) {\n    return new Promise(function (resolve, reject) {\n      var tx = db.transaction(STORE, 'readwrite').objectStore(STORE).clear();\n      tx.onsuccess = function () { resolve(); };\n      tx.onerror = function () { reject(tx.error); };\n    });\n  });\n}\nfunction idbKeys(dbName) {\n  return openDb(dbName).then(function (db) {\n    return new Promise(function (resolve, reject) {\n      var out = [];\n      var req = db.transaction(STORE, 'readonly').objectStore(STORE).openKeyCursor\n        ? db.transaction(STORE, 'readonly').objectStore(STORE).openKeyCursor()\n        : db.transaction(STORE, 'readonly').objectStore(STORE).openCursor();\n      req.onsuccess = function (e) {\n        var cursor = e.target.result;\n        if (cursor) { out.push(cursor.key); cursor.continue(); } else resolve(out);\n      };\n      req.onerror = function () { reject(req.error); };\n    });\n  });\n}\n\nfunction lsKey(prefix, key) { return prefix + key; }\n\n/**\n * Create a store instance. Defaults to IndexedDB when available, falling\n * back to localStorage automatically (mode: 'auto'). Pass `mode: 'local'`\n * to force localStorage (sync, simple, small data) or `mode: 'idb'` to\n * force IndexedDB and reject if unavailable rather than silently falling\n * back -- useful when a caller needs to guarantee async/off-thread storage.\n *\n * All methods return Promises regardless of backend, so calling code never\n * has to branch on which one is active.\n */\nexport function createStore(opts) {\n  opts = opts || {};\n  var dbName = opts.name || DB_NAME;\n  var prefix = 'zelvior:' + dbName + ':';\n  var mode = opts.mode || 'auto'; // 'auto' | 'idb' | 'local'\n  var backend = mode === 'local' ? 'local' : (hasIDB ? 'idb' : (mode === 'idb' ? null : 'local'));\n\n  if (backend === null) {\n    return {\n      backend: 'none',\n      get: function () { return Promise.reject(new Error('zelvior/storage: IndexedDB unavailable and mode=\"idb\" forbids fallback')); },\n      set: function () { return Promise.reject(new Error('zelvior/storage: IndexedDB unavailable and mode=\"idb\" forbids fallback')); },\n      del: function () { return Promise.reject(new Error('zelvior/storage: IndexedDB unavailable and mode=\"idb\" forbids fallback')); },\n      clear: function () { return Promise.reject(new Error('zelvior/storage: IndexedDB unavailable and mode=\"idb\" forbids fallback')); },\n      keys: function () { return Promise.reject(new Error('zelvior/storage: IndexedDB unavailable and mode=\"idb\" forbids fallback')); }\n    };\n  }\n\n  if (backend === 'local') {\n    if (!hasLS) {\n      return {\n        backend: 'none',\n        get: function () { return Promise.resolve(undefined); },\n        set: function () { return Promise.resolve(); },\n        del: function () { return Promise.resolve(); },\n        clear: function () { return Promise.resolve(); },\n        keys: function () { return Promise.resolve([]); }\n      };\n    }\n    return {\n      backend: 'local',\n      get: function (key) {\n        try {\n          var raw = localStorage.getItem(lsKey(prefix, key));\n          return Promise.resolve(raw == null ? undefined : JSON.parse(raw));\n        } catch (e) { return Promise.reject(e); }\n      },\n      set: function (key, value) {\n        try { localStorage.setItem(lsKey(prefix, key), JSON.stringify(value)); return Promise.resolve(); }\n        catch (e) { return Promise.reject(e); }\n      },\n      del: function (key) {\n        try { localStorage.removeItem(lsKey(prefix, key)); return Promise.resolve(); }\n        catch (e) { return Promise.reject(e); }\n      },\n      clear: function () {\n        try {\n          for (var i = localStorage.length - 1; i >= 0; i--) {\n            var k = localStorage.key(i);\n            if (k && k.indexOf(prefix) === 0) localStorage.removeItem(k);\n          }\n          return Promise.resolve();\n        } catch (e) { return Promise.reject(e); }\n      },\n      keys: function () {\n        try {\n          var out = [];\n          for (var i = 0; i < localStorage.length; i++) {\n            var k = localStorage.key(i);\n            if (k && k.indexOf(prefix) === 0) out.push(k.slice(prefix.length));\n          }\n          return Promise.resolve(out);\n        } catch (e) { return Promise.reject(e); }\n      }\n    };\n  }\n\n  // idb backend, with a silent per-call fallback to localStorage only when\n  // mode === 'auto' and an IndexedDB op fails at runtime (quota, blocked\n  // upgrade, disabled storage in some locked-down extension contexts).\n  var lsFallback = mode === 'auto' ? createStore({ name: dbName, mode: 'local' }) : null;\n  function withFallback(promise, fallbackFn) {\n    if (!lsFallback) return promise;\n    return promise.catch(function () { return fallbackFn(); });\n  }\n\n  return {\n    backend: 'idb',\n    get: function (key) { return withFallback(idbGet(key, dbName), function () { return lsFallback.get(key); }); },\n    set: function (key, value) { return withFallback(idbSet(key, value, dbName), function () { return lsFallback.set(key, value); }); },\n    del: function (key) { return withFallback(idbDel(key, dbName), function () { return lsFallback.del(key); }); },\n    clear: function () { return withFallback(idbClear(dbName), function () { return lsFallback.clear(); }); },\n    keys: function () { return withFallback(idbKeys(dbName), function () { return lsFallback.keys(); }); }\n  };\n}\n\n/** Default shared store, created lazily on first use. */\nvar _default = null;\nexport function defaultStore() {\n  if (!_default) _default = createStore({ name: DB_NAME, mode: 'auto' });\n  return _default;\n}\n\nexport var capabilities = { indexedDB: hasIDB, localStorage: hasLS };\n\n// --- Encryption at rest --------------------------------------------------\n// AES-GCM via the real Web Crypto API (not a hand-rolled cipher), keyed\n// by PBKDF2-derived material from a passphrase. This protects stored\n// values from anyone reading the browser's IndexedDB/localStorage files\n// directly (shared machine, another local process, a malicious browser\n// extension with storage access) -- it does NOT protect against an\n// attacker who can run JS in the same page (they can just call the\n// wrapped store's own `.get()`, same as your legitimate code would), and\n// it is NOT a substitute for not storing secrets you don't need to store\n// client-side at all. Real threat model: at-rest exposure on a shared\n// device, not in-page script isolation.\nvar hasCrypto = typeof crypto !== 'undefined' && !!crypto.subtle;\n\nfunction deriveKey(passphrase, salt) {\n  var enc = new TextEncoder();\n  return crypto.subtle\n    .importKey('raw', enc.encode(passphrase), 'PBKDF2', false, ['deriveKey'])\n    .then(function (keyMaterial) {\n      return crypto.subtle.deriveKey(\n        { name: 'PBKDF2', salt: salt, iterations: 100000, hash: 'SHA-256' },\n        keyMaterial,\n        { name: 'AES-GCM', length: 256 },\n        false,\n        ['encrypt', 'decrypt']\n      );\n    });\n}\n\nfunction toB64(bytes) {\n  var bin = '';\n  for (var i = 0; i < bytes.length; i++) bin += String.fromCharCode(bytes[i]);\n  return btoa(bin);\n}\nfunction fromB64(b64) {\n  var bin = atob(b64);\n  var bytes = new Uint8Array(bin.length);\n  for (var i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i);\n  return bytes;\n}\n\n/**\n * Wrap an existing store (from `createStore()`/`defaultStore()`) so every\n * `.set()` transparently encrypts the value and every `.get()` decrypts\n * it, using AES-GCM with a key derived from `passphrase` via PBKDF2 (a\n * fresh random salt and IV per value, stored alongside the ciphertext --\n * standard practice, not a shortcut). `del`/`clear`/`keys` pass through\n * unchanged (key names themselves are not encrypted, only values).\n *\n * Requires Web Crypto (`crypto.subtle`); throws synchronously if\n * unavailable rather than silently storing plaintext, since silently\n * downgrading a security feature is worse than failing loudly.\n */\nexport function createEncryptedStore(store, passphrase) {\n  if (!hasCrypto) {\n    throw new Error('zelvior-runtime/storage: Web Crypto (crypto.subtle) unavailable, cannot create an encrypted store');\n  }\n  if (!passphrase || typeof passphrase !== 'string') {\n    throw new Error('zelvior-runtime/storage: createEncryptedStore requires a non-empty string passphrase');\n  }\n\n  function encrypt(value) {\n    var salt = crypto.getRandomValues(new Uint8Array(16));\n    var iv = crypto.getRandomValues(new Uint8Array(12));\n    return deriveKey(passphrase, salt).then(function (key) {\n      var enc = new TextEncoder();\n      var data = enc.encode(JSON.stringify(value));\n      return crypto.subtle.encrypt({ name: 'AES-GCM', iv: iv }, key, data).then(function (cipherBuf) {\n        return { s: toB64(salt), iv: toB64(iv), c: toB64(new Uint8Array(cipherBuf)) };\n      });\n    });\n  }\n\n  function decrypt(envelope) {\n    if (!envelope || typeof envelope !== 'object' || !envelope.c) return Promise.resolve(undefined);\n    var salt = fromB64(envelope.s);\n    var iv = fromB64(envelope.iv);\n    var cipher = fromB64(envelope.c);\n    return deriveKey(passphrase, salt).then(function (key) {\n      return crypto.subtle.decrypt({ name: 'AES-GCM', iv: iv }, key, cipher).then(function (plainBuf) {\n        var dec = new TextDecoder();\n        return JSON.parse(dec.decode(plainBuf));\n      });\n    });\n  }\n\n  return {\n    backend: store.backend,\n    get: function (key) { return store.get(key).then(decrypt); },\n    set: function (key, value) { return encrypt(value).then(function (envelope) { return store.set(key, envelope); }); },\n    del: function (key) { return store.del(key); },\n    clear: function () { return store.clear(); },\n    keys: function () { return store.keys(); },\n  };\n}\n"],
  "mappings": ";4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,yBAAAC,EAAA,gBAAAC,EAAA,iBAAAC,IAAA,eAAAC,EAAAN,GAYA,IAAIO,EAAU,gBACVC,EAAQ,KACRC,EAAS,OAAO,WAAc,YAC9BC,EAAS,UAAY,CACvB,GAAI,CACF,IAAIC,EAAI,sBACR,oBAAa,QAAQA,EAAG,GAAG,EAC3B,aAAa,WAAWA,CAAC,EAClB,EACT,OAAS,EAAG,CAAE,MAAO,EAAO,CAC9B,EAAG,EAECC,EAAY,KAChB,SAASC,EAAOC,EAAQ,CACtB,OAAIF,IACJA,EAAY,IAAI,QAAQ,SAAUG,EAASC,EAAQ,CACjD,IAAIC,EAAM,UAAU,KAAKH,GAAUP,EAAS,CAAC,EAC7CU,EAAI,gBAAkB,UAAY,CAC3BA,EAAI,OAAO,iBAAiB,SAAST,CAAK,GAAGS,EAAI,OAAO,kBAAkBT,CAAK,CACtF,EACAS,EAAI,UAAY,UAAY,CAAEF,EAAQE,EAAI,MAAM,CAAG,EACnDA,EAAI,QAAU,UAAY,CAAED,EAAOC,EAAI,KAAK,CAAG,CACjD,CAAC,EACML,EACT,CAEA,SAASM,EAAOC,EAAKL,EAAQ,CAC3B,OAAOD,EAAOC,CAAM,EAAE,KAAK,SAAUM,EAAI,CACvC,OAAO,IAAI,QAAQ,SAAUL,EAASC,EAAQ,CAC5C,IAAIK,EAAKD,EAAG,YAAYZ,EAAO,UAAU,EAAE,YAAYA,CAAK,EAAE,IAAIW,CAAG,EACrEE,EAAG,UAAY,UAAY,CAAEN,EAAQM,EAAG,MAAM,CAAG,EACjDA,EAAG,QAAU,UAAY,CAAEL,EAAOK,EAAG,KAAK,CAAG,CAC/C,CAAC,CACH,CAAC,CACH,CACA,SAASC,EAAOH,EAAKI,EAAOT,EAAQ,CAClC,OAAOD,EAAOC,CAAM,EAAE,KAAK,SAAUM,EAAI,CACvC,OAAO,IAAI,QAAQ,SAAUL,EAASC,EAAQ,CAC5C,IAAIK,EAAKD,EAAG,YAAYZ,EAAO,WAAW,EAAE,YAAYA,CAAK,EAAE,IAAIe,EAAOJ,CAAG,EAC7EE,EAAG,UAAY,UAAY,CAAEN,EAAQ,CAAG,EACxCM,EAAG,QAAU,UAAY,CAAEL,EAAOK,EAAG,KAAK,CAAG,CAC/C,CAAC,CACH,CAAC,CACH,CACA,SAASG,EAAOL,EAAKL,EAAQ,CAC3B,OAAOD,EAAOC,CAAM,EAAE,KAAK,SAAUM,EAAI,CACvC,OAAO,IAAI,QAAQ,SAAUL,EAASC,EAAQ,CAC5C,IAAIK,EAAKD,EAAG,YAAYZ,EAAO,WAAW,EAAE,YAAYA,CAAK,EAAE,OAAOW,CAAG,EACzEE,EAAG,UAAY,UAAY,CAAEN,EAAQ,CAAG,EACxCM,EAAG,QAAU,UAAY,CAAEL,EAAOK,EAAG,KAAK,CAAG,CAC/C,CAAC,CACH,CAAC,CACH,CACA,SAASI,EAASX,EAAQ,CACxB,OAAOD,EAAOC,CAAM,EAAE,KAAK,SAAUM,EAAI,CACvC,OAAO,IAAI,QAAQ,SAAUL,EAASC,EAAQ,CAC5C,IAAIK,EAAKD,EAAG,YAAYZ,EAAO,WAAW,EAAE,YAAYA,CAAK,EAAE,MAAM,EACrEa,EAAG,UAAY,UAAY,CAAEN,EAAQ,CAAG,EACxCM,EAAG,QAAU,UAAY,CAAEL,EAAOK,EAAG,KAAK,CAAG,CAC/C,CAAC,CACH,CAAC,CACH,CACA,SAASK,EAAQZ,EAAQ,CACvB,OAAOD,EAAOC,CAAM,EAAE,KAAK,SAAUM,EAAI,CACvC,OAAO,IAAI,QAAQ,SAAUL,EAASC,EAAQ,CAC5C,IAAIW,EAAM,CAAC,EACPV,EAAMG,EAAG,YAAYZ,EAAO,UAAU,EAAE,YAAYA,CAAK,EAAE,cAC3DY,EAAG,YAAYZ,EAAO,UAAU,EAAE,YAAYA,CAAK,EAAE,cAAc,EACnEY,EAAG,YAAYZ,EAAO,UAAU,EAAE,YAAYA,CAAK,EAAE,WAAW,EACpES,EAAI,UAAY,SAAUW,EAAG,CAC3B,IAAIC,EAASD,EAAE,OAAO,OAClBC,GAAUF,EAAI,KAAKE,EAAO,GAAG,EAAGA,EAAO,SAAS,GAAUd,EAAQY,CAAG,CAC3E,EACAV,EAAI,QAAU,UAAY,CAAED,EAAOC,EAAI,KAAK,CAAG,CACjD,CAAC,CACH,CAAC,CACH,CAEA,SAASa,EAAMC,EAAQZ,EAAK,CAAE,OAAOY,EAASZ,CAAK,CAY5C,SAASf,EAAY4B,EAAM,CAChCA,EAAOA,GAAQ,CAAC,EAChB,IAAIlB,EAASkB,EAAK,MAAQzB,EACtBwB,EAAS,WAAajB,EAAS,IAC/BmB,EAAOD,EAAK,MAAQ,OACpBE,EAAUD,IAAS,QAAU,QAAWxB,EAAS,MAASwB,IAAS,MAAQ,KAAO,QAEtF,GAAIC,IAAY,KACd,MAAO,CACL,QAAS,OACT,IAAK,UAAY,CAAE,OAAO,QAAQ,OAAO,IAAI,MAAM,wEAAwE,CAAC,CAAG,EAC/H,IAAK,UAAY,CAAE,OAAO,QAAQ,OAAO,IAAI,MAAM,wEAAwE,CAAC,CAAG,EAC/H,IAAK,UAAY,CAAE,OAAO,QAAQ,OAAO,IAAI,MAAM,wEAAwE,CAAC,CAAG,EAC/H,MAAO,UAAY,CAAE,OAAO,QAAQ,OAAO,IAAI,MAAM,wEAAwE,CAAC,CAAG,EACjI,KAAM,UAAY,CAAE,OAAO,QAAQ,OAAO,IAAI,MAAM,wEAAwE,CAAC,CAAG,CAClI,EAGF,GAAIA,IAAY,QACd,OAAKxB,EAUE,CACL,QAAS,QACT,IAAK,SAAUS,EAAK,CAClB,GAAI,CACF,IAAIgB,EAAM,aAAa,QAAQL,EAAMC,EAAQZ,CAAG,CAAC,EACjD,OAAO,QAAQ,QAAQgB,GAAO,KAAO,OAAY,KAAK,MAAMA,CAAG,CAAC,CAClE,OAASP,EAAG,CAAE,OAAO,QAAQ,OAAOA,CAAC,CAAG,CAC1C,EACA,IAAK,SAAUT,EAAKI,EAAO,CACzB,GAAI,CAAE,oBAAa,QAAQO,EAAMC,EAAQZ,CAAG,EAAG,KAAK,UAAUI,CAAK,CAAC,EAAU,QAAQ,QAAQ,CAAG,OAC1FK,EAAG,CAAE,OAAO,QAAQ,OAAOA,CAAC,CAAG,CACxC,EACA,IAAK,SAAUT,EAAK,CAClB,GAAI,CAAE,oBAAa,WAAWW,EAAMC,EAAQZ,CAAG,CAAC,EAAU,QAAQ,QAAQ,CAAG,OACtES,EAAG,CAAE,OAAO,QAAQ,OAAOA,CAAC,CAAG,CACxC,EACA,MAAO,UAAY,CACjB,GAAI,CACF,QAASQ,EAAI,aAAa,OAAS,EAAGA,GAAK,EAAGA,IAAK,CACjD,IAAIzB,EAAI,aAAa,IAAIyB,CAAC,EACtBzB,GAAKA,EAAE,QAAQoB,CAAM,IAAM,GAAG,aAAa,WAAWpB,CAAC,CAC7D,CACA,OAAO,QAAQ,QAAQ,CACzB,OAASiB,EAAG,CAAE,OAAO,QAAQ,OAAOA,CAAC,CAAG,CAC1C,EACA,KAAM,UAAY,CAChB,GAAI,CAEF,QADID,EAAM,CAAC,EACFS,EAAI,EAAGA,EAAI,aAAa,OAAQA,IAAK,CAC5C,IAAIzB,EAAI,aAAa,IAAIyB,CAAC,EACtBzB,GAAKA,EAAE,QAAQoB,CAAM,IAAM,GAAGJ,EAAI,KAAKhB,EAAE,MAAMoB,EAAO,MAAM,CAAC,CACnE,CACA,OAAO,QAAQ,QAAQJ,CAAG,CAC5B,OAASC,EAAG,CAAE,OAAO,QAAQ,OAAOA,CAAC,CAAG,CAC1C,CACF,EA5CS,CACL,QAAS,OACT,IAAK,UAAY,CAAE,OAAO,QAAQ,QAAQ,MAAS,CAAG,EACtD,IAAK,UAAY,CAAE,OAAO,QAAQ,QAAQ,CAAG,EAC7C,IAAK,UAAY,CAAE,OAAO,QAAQ,QAAQ,CAAG,EAC7C,MAAO,UAAY,CAAE,OAAO,QAAQ,QAAQ,CAAG,EAC/C,KAAM,UAAY,CAAE,OAAO,QAAQ,QAAQ,CAAC,CAAC,CAAG,CAClD,EA2CJ,IAAIS,EAAaJ,IAAS,OAAS7B,EAAY,CAAE,KAAMU,EAAQ,KAAM,OAAQ,CAAC,EAAI,KAClF,SAASwB,EAAaC,EAASC,EAAY,CACzC,OAAKH,EACEE,EAAQ,MAAM,UAAY,CAAE,OAAOC,EAAW,CAAG,CAAC,EADjCD,CAE1B,CAEA,MAAO,CACL,QAAS,MACT,IAAK,SAAUpB,EAAK,CAAE,OAAOmB,EAAapB,EAAOC,EAAKL,CAAM,EAAG,UAAY,CAAE,OAAOuB,EAAW,IAAIlB,CAAG,CAAG,CAAC,CAAG,EAC7G,IAAK,SAAUA,EAAKI,EAAO,CAAE,OAAOe,EAAahB,EAAOH,EAAKI,EAAOT,CAAM,EAAG,UAAY,CAAE,OAAOuB,EAAW,IAAIlB,EAAKI,CAAK,CAAG,CAAC,CAAG,EAClI,IAAK,SAAUJ,EAAK,CAAE,OAAOmB,EAAad,EAAOL,EAAKL,CAAM,EAAG,UAAY,CAAE,OAAOuB,EAAW,IAAIlB,CAAG,CAAG,CAAC,CAAG,EAC7G,MAAO,UAAY,CAAE,OAAOmB,EAAab,EAASX,CAAM,EAAG,UAAY,CAAE,OAAOuB,EAAW,MAAM,CAAG,CAAC,CAAG,EACxG,KAAM,UAAY,CAAE,OAAOC,EAAaZ,EAAQZ,CAAM,EAAG,UAAY,CAAE,OAAOuB,EAAW,KAAK,CAAG,CAAC,CAAG,CACvG,CACF,CAGA,IAAII,EAAW,KACR,SAASpC,GAAe,CAC7B,OAAKoC,IAAUA,EAAWrC,EAAY,CAAE,KAAMG,EAAS,KAAM,MAAO,CAAC,GAC9DkC,CACT,CAEO,IAAIvC,EAAe,CAAE,UAAWO,EAAQ,aAAcC,CAAM,EAa/DgC,EAAY,OAAO,QAAW,aAAe,CAAC,CAAC,OAAO,OAE1D,SAASC,EAAUC,EAAYC,EAAM,CACnC,IAAIC,EAAM,IAAI,YACd,OAAO,OAAO,OACX,UAAU,MAAOA,EAAI,OAAOF,CAAU,EAAG,SAAU,GAAO,CAAC,WAAW,CAAC,EACvE,KAAK,SAAUG,EAAa,CAC3B,OAAO,OAAO,OAAO,UACnB,CAAE,KAAM,SAAU,KAAMF,EAAM,WAAY,IAAQ,KAAM,SAAU,EAClEE,EACA,CAAE,KAAM,UAAW,OAAQ,GAAI,EAC/B,GACA,CAAC,UAAW,SAAS,CACvB,CACF,CAAC,CACL,CAEA,SAASC,EAAMC,EAAO,CAEpB,QADIC,EAAM,GACDd,EAAI,EAAGA,EAAIa,EAAM,OAAQb,IAAKc,GAAO,OAAO,aAAaD,EAAMb,CAAC,CAAC,EAC1E,OAAO,KAAKc,CAAG,CACjB,CACA,SAASC,EAAQC,EAAK,CAGpB,QAFIF,EAAM,KAAKE,CAAG,EACdH,EAAQ,IAAI,WAAWC,EAAI,MAAM,EAC5Bd,EAAI,EAAGA,EAAIc,EAAI,OAAQd,IAAKa,EAAMb,CAAC,EAAIc,EAAI,WAAWd,CAAC,EAChE,OAAOa,CACT,CAcO,SAAS9C,EAAqBkD,EAAOT,EAAY,CACtD,GAAI,CAACF,EACH,MAAM,IAAI,MAAM,mGAAmG,EAErH,GAAI,CAACE,GAAc,OAAOA,GAAe,SACvC,MAAM,IAAI,MAAM,sFAAsF,EAGxG,SAASU,EAAQ/B,EAAO,CACtB,IAAIsB,EAAO,OAAO,gBAAgB,IAAI,WAAW,EAAE,CAAC,EAChDU,EAAK,OAAO,gBAAgB,IAAI,WAAW,EAAE,CAAC,EAClD,OAAOZ,EAAUC,EAAYC,CAAI,EAAE,KAAK,SAAU1B,EAAK,CACrD,IAAI2B,EAAM,IAAI,YACVU,EAAOV,EAAI,OAAO,KAAK,UAAUvB,CAAK,CAAC,EAC3C,OAAO,OAAO,OAAO,QAAQ,CAAE,KAAM,UAAW,GAAIgC,CAAG,EAAGpC,EAAKqC,CAAI,EAAE,KAAK,SAAUC,EAAW,CAC7F,MAAO,CAAE,EAAGT,EAAMH,CAAI,EAAG,GAAIG,EAAMO,CAAE,EAAG,EAAGP,EAAM,IAAI,WAAWS,CAAS,CAAC,CAAE,CAC9E,CAAC,CACH,CAAC,CACH,CAEA,SAASC,EAAQC,EAAU,CACzB,GAAI,CAACA,GAAY,OAAOA,GAAa,UAAY,CAACA,EAAS,EAAG,OAAO,QAAQ,QAAQ,MAAS,EAC9F,IAAId,EAAOM,EAAQQ,EAAS,CAAC,EACzBJ,EAAKJ,EAAQQ,EAAS,EAAE,EACxBC,EAAST,EAAQQ,EAAS,CAAC,EAC/B,OAAOhB,EAAUC,EAAYC,CAAI,EAAE,KAAK,SAAU1B,EAAK,CACrD,OAAO,OAAO,OAAO,QAAQ,CAAE,KAAM,UAAW,GAAIoC,CAAG,EAAGpC,EAAKyC,CAAM,EAAE,KAAK,SAAUC,EAAU,CAC9F,IAAIC,EAAM,IAAI,YACd,OAAO,KAAK,MAAMA,EAAI,OAAOD,CAAQ,CAAC,CACxC,CAAC,CACH,CAAC,CACH,CAEA,MAAO,CACL,QAASR,EAAM,QACf,IAAK,SAAUlC,EAAK,CAAE,OAAOkC,EAAM,IAAIlC,CAAG,EAAE,KAAKuC,CAAO,CAAG,EAC3D,IAAK,SAAUvC,EAAKI,EAAO,CAAE,OAAO+B,EAAQ/B,CAAK,EAAE,KAAK,SAAUoC,EAAU,CAAE,OAAON,EAAM,IAAIlC,EAAKwC,CAAQ,CAAG,CAAC,CAAG,EACnH,IAAK,SAAUxC,EAAK,CAAE,OAAOkC,EAAM,IAAIlC,CAAG,CAAG,EAC7C,MAAO,UAAY,CAAE,OAAOkC,EAAM,MAAM,CAAG,EAC3C,KAAM,UAAY,CAAE,OAAOA,EAAM,KAAK,CAAG,CAC3C,CACF",
  "names": ["storage_exports", "__export", "capabilities", "createEncryptedStore", "createStore", "defaultStore", "__toCommonJS", "DB_NAME", "STORE", "hasIDB", "hasLS", "k", "dbPromise", "openDb", "dbName", "resolve", "reject", "req", "idbGet", "key", "db", "tx", "idbSet", "value", "idbDel", "idbClear", "idbKeys", "out", "e", "cursor", "lsKey", "prefix", "opts", "mode", "backend", "raw", "i", "lsFallback", "withFallback", "promise", "fallbackFn", "_default", "hasCrypto", "deriveKey", "passphrase", "salt", "enc", "keyMaterial", "toB64", "bytes", "bin", "fromB64", "b64", "store", "encrypt", "iv", "data", "cipherBuf", "decrypt", "envelope", "cipher", "plainBuf", "dec"]
}
