vault-Byid1YUM.js

18.7 KB · raw

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sync-lifecycle-r3sL29I9.js","assets/preload-helper-D4M6sveU.js","assets/dist-Cgg5UYwv.js","assets/chunk-CilyBKbf.js","assets/license-yq-v83w7.js","assets/pairing-server-state-sWytLvBZ.js","assets/sync-storage-BO4Wffa-.js","assets/sync-CbPi6aeU.js","assets/sync-wire-DfqNV9Yn.js"])))=>i.map(i=>d[i]);2import{t as e}from"./preload-helper-D4M6sveU.js";import{_ as t,g as n,h as r,l as i,p as a}from"./index-uIJ4yAHR.js";async function o(e,t){return await a({password:e,salt:t,parallelism:4,iterations:3,memorySize:65536,hashLength:32,outputType:`binary`})}function s(){return crypto.getRandomValues(new Uint8Array(16))}var c=`autolock`,l=5,u=15;function d(){let e=D().autoLockMinutes;return typeof e==`number`?e:l}function f(){if(!chrome.alarms?.clear||!chrome.alarms?.create)return;chrome.alarms.clear(c);let e=d();e<=0||chrome.alarms.create(c,{delayInMinutes:e})}function ee(){chrome.alarms?.clear&&chrome.alarms.clear(c)}async function te(){if(await O(),!chrome.idle?.setDetectionInterval)return;let e=d(),t=e>0?Math.max(u,e*60):u;chrome.idle.setDetectionInterval(t)}function p(){e(()=>import(`./sync-lifecycle-r3sL29I9.js`).then(e=>e.onVaultLocked()),__vite__mapDeps([0,1,2,3,4,5,6,7,8])).catch(()=>{}),chrome.runtime?.sendMessage?.({type:`VAULT_LOCKED`})?.catch?.(()=>{});try{chrome.tabs.query({},e=>{for(let t of e)t.id!==void 0&&chrome.tabs.sendMessage(t.id,{type:`VAULT_LOCKED`}).catch(()=>{})})}catch{}}chrome.alarms?.onAlarm?.addListener&&chrome.alarms.onAlarm.addListener(e=>{e.name===c&&(W(),p())}),chrome.idle?.onStateChanged&&chrome.idle.onStateChanged.addListener(e=>{d()<=0||(e===`idle`||e===`locked`)&&(W(),p())});var m=`peach_vault_a`,h=`peach_vault_b`,g=`peach_vault`,_=`peach_decoy_vault`,v=`peach_duress`,y=1024,b=null,x=[],S=new Map,C=`real`,w=!1,T=!1,E={};function D(){return E}async function O(){return await A(),E}async function ne(e){await A(),E={...E,...e},await k()}async function k(){try{await chrome.storage.local.set({peach_settings:E})}catch(e){throw re(e)}}function re(e){let t=e instanceof Error?e.message:String(e);return/QUOTA_BYTES|quota/i.test(t)?Error(`STORAGE_QUOTA_EXCEEDED`):e instanceof Error?e:Error(t)}async function A(){E=(await chrome.storage.local.get(`peach_settings`)).peach_settings??{}}async function j(e){let t=new TextEncoder,n=await crypto.subtle.digest(`SHA-1`,t.encode(e)),r=Array.from(new Uint8Array(n)).map(e=>e.toString(16).padStart(2,`0`)).join(``).toUpperCase(),i=r.slice(0,5),a=r.slice(5);try{let e=await fetch(`https://api.pwnedpasswords.com/range/${i}`);if(!e.ok)return 0;let t=(await e.text()).split(`\r3`).find(e=>e.startsWith(a));return t?parseInt(t.split(`:`)[1],10):0}catch{return 0}}async function ie(e,t,n){let r=await M(e,t,n);await A(),E={...E,declinedCardFingerprints:[...E.declinedCardFingerprints??[],r]},await k()}async function ae(e,t,n){await A();let r=await M(e,t,n);return(E.declinedCardFingerprints??[]).includes(r)}async function M(e,t,n){let r=new TextEncoder,i=await crypto.subtle.digest(`SHA-1`,r.encode(`${e}${t}${n}`));return Array.from(new Uint8Array(i)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function N(e){return Array.from(e).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function P(e){let t=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)t[n/2]=parseInt(e.slice(n,n+2),16);return t}async function F(e){return(await chrome.storage.local.get(e))[e]??null}async function I(e,t){try{await chrome.storage.local.set({[e]:t})}catch(e){throw re(e)}}async function L(){if(T)return;T=!0;let e=[g,_,v,m,h],t=await chrome.storage.local.get(e),n=t[m]!==void 0,r=t[h]!==void 0,i=t[g],a=t[_];if(!n&&!i||n&&r&&!i&&!a)return;if(i&&!n&&await I(m,i),!r){let e=i??t[m];a?await I(h,a):e&&await I(h,z(e.ciphertext.length/2))}let o=[];i&&o.push(g),a&&o.push(_),t[v]!==void 0&&o.push(v),o.length>0&&await chrome.storage.local.remove(o)}function oe(e){let t=new TextEncoder().encode(e),n=Math.max(y,Math.ceil(t.length/y)*y)-t.length;return e+` `.repeat(n)}var R=65536;function se(e){for(let t=0;t<e.length;t+=R){let n=Math.min(t+R,e.length),r=new Uint8Array(n-t);crypto.getRandomValues(r),e.set(r,t)}return e}function z(e){let t=crypto.getRandomValues(new Uint8Array(16)),n=crypto.getRandomValues(new Uint8Array(12)),r=se(new Uint8Array(e)),i=crypto.getRandomValues(new Uint8Array(16));return{version:1,salt:N(t),nonce:N(n),ciphertext:N(r),tag:N(i)}}function B(e,t){return oe(JSON.stringify({entries:e,duressConfigured:t}))}function ce(e){if(`created`in e||`updated`in e)return!0;let t=e;return t.type===`passkey`||t.rpId!==void 0&&t.passkey===void 0}function le(e){let t=JSON.parse(e),n=Array.isArray(t)?t:t.entries??[],r=n.some(ce),i=n.map(Ie),{merged:a}=ue(i);return Array.isArray(t)?{entries:i,duressConfigured:!1,migratedFromLegacy:!0}:{entries:i,duressConfigured:t.duressConfigured===!0,migratedFromLegacy:r||a}}function ue(e){let t=!1,n=Date.now(),r=e.filter(e=>!e.deletedAt&&e.passkey),a=new Map;for(let e of r){let t=e.passkey.rpId,n=a.get(t);n?n.push(e):a.set(t,[e])}for(let[r,o]of a){if(o.length===0)continue;o.sort((e,t)=>{let n=e.passkey.lastUsedAt??e.passkey.createdAt??e.modifiedAt??e.createdAt;return(t.passkey.lastUsedAt??t.passkey.createdAt??t.modifiedAt??t.createdAt)-n});let a=o[0],s=e.find(e=>{if(e.deletedAt||e.passkey||e.type!==`login`)return!1;if(e.url&&i(e.url)===r)return!0;for(let t of e.additionalUrls??[])if(i(t)===r)return!0;return!1});if(s){s.passkey=a.passkey,s.modifiedAt=n;for(let e of o)e.deletedAt||(e.deletedAt=n,e.modifiedAt=n);t=!0}else if(o.length>1){for(let e=1;e<o.length;e+=1){let t=o[e];t.deletedAt||(t.deletedAt=n,t.modifiedAt=n)}t=!0}}return{merged:t}}async function V(e,t){try{return le(await r(t,e.nonce,e.ciphertext,e.tag))}catch{return null}}function H(e){S=new Map;for(let t of e){if(t.deletedAt||t.type===`note`||t.type===`card`)continue;let e=new Set,n=i(t.url??``);n&&e.add(n);for(let n of t.additionalUrls??[]){let t=i(n);t&&e.add(t)}if(e.size!==0)for(let n of e){let e=S.get(n)??[];e.push(t),S.set(n,e)}}}async function de(e){await L();let t=s();b=await o(e,t),x=[],C=`real`,w=!1,H(x);let r=B(x,w),{nonce:i,ciphertext:a,tag:c}=await n(b,r);await I(m,{version:1,salt:N(t),nonce:i,ciphertext:a,tag:c}),await I(h,z(a.length/2)),f()}async function fe(){return await L(),await F(m)!==null}async function pe(){return C===`real`&&w}async function me(e){if(!b||C!==`real`)throw Error(`vault must be unlocked in real mode`);await L();let r=await F(m);if(!r)throw Error(`missing slot A`);let i=s(),a=await o(e,i);try{let e=r.ciphertext.length/2,t=B([],!1),o=new TextEncoder().encode(t);o.length<e&&(t+=` `.repeat(e-o.length));let{nonce:s,ciphertext:c,tag:l}=await n(a,t);await I(h,{version:1,salt:N(i),nonce:s,ciphertext:c,tag:l})}finally{t(a)}w=!0,await K()}async function he(){if(!b||C!==`real`)throw Error(`vault must be unlocked in real mode`);await L();let e=await F(m);e&&await I(h,z(e.ciphertext.length/2)),w=!1,await K()}async function U(e){await L();let n=await F(m);if(!n)return!1;let r=await o(e,P(n.salt));try{return await V(n,r)!==null}finally{t(r)}}async function ge(e){await L();let[n,r]=await Promise.all([F(m),F(h)]),[i,a]=await Promise.all([n?o(e,P(n.salt)):Promise.resolve(null),r?o(e,P(r.salt)):Promise.resolve(null)]),[s,c]=await Promise.all([i&&n?V(n,i):Promise.resolve(null),a&&r?V(r,a):Promise.resolve(null)]);return s&&i?(b=i,C=`real`,x=s.entries,w=s.duressConfigured,H(x),await A(),f(),a&&t(a),s.migratedFromLegacy&&await K(),!0):c&&a?(b=a,C=`decoy`,x=c.entries,w=!1,H(x),await A(),f(),i&&t(i),!0):(i&&t(i),a&&t(a),!1)}function W(){b&&=(t(b),null),x=[],S=new Map,C=`real`,w=!1,ee()}function _e(){return b!==null}function ve(){if(!b)throw Error(`vault locked`);return x.filter(e=>!e.deletedAt)}var ye=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function be(){if(!b)throw Error(`vault locked`);let e=x.filter(e=>!e.deletedAt&&e.type===`login`),t=new Map,n=new Map;for(let r of e){let e=r.username?.trim();if(!e)continue;let a=ye.test(e)?t:n,o=a.get(e),s=i(r.url??``)??``,c=r.modifiedAt??r.createdAt??0;!o||c>o.lastUsed?a.set(e,{lastUsed:c,count:(o?.count??0)+1,domain:s}):a.set(e,{...o,count:o.count+1})}let r=e=>([t,n])=>({value:t,type:e,lastUsed:n.lastUsed,useCount:n.count,exampleDomain:n.domain||void 0});return[...[...t.entries()].map(r(`email`)).sort((e,t)=>t.useCount-e.useCount),...[...n.entries()].map(r(`username`)).sort((e,t)=>t.useCount-e.useCount)]}async function xe(e){if(!b)throw Error(`vault locked`);let t=Date.now(),n=[];for(let r of e)try{let e={...J(r),id:crypto.randomUUID(),createdAt:t,modifiedAt:t};x.push(e),n.push(e)}catch{}return n.length>0&&await q(),n}async function Se(e,t){if(!b)throw Error(`vault locked`);if(t===`replace`&&e.length===0)throw Error(`refuse to replace with empty entry set`);let n=0,r=0,i=0;if(t===`replace`){x=[];for(let t of e){let e=G(t);if(!e){i+=1;continue}x.push(e),n+=1}}else{let t=new Map;for(let e of x)t.set(e.id,e);for(let a of e){let e=G(a);if(!e){i+=1;continue}let o=t.get(e.id);if(!o)x.push(e),n+=1;else if(e.modifiedAt>o.modifiedAt){let t=x.findIndex(e=>e.id===o.id);t!==-1&&(x[t]=e,r+=1)}else i+=1}}return await q(`import`),{added:n,updated:r,skipped:i}}function G(e){if(!e||typeof e!=`object`)return null;let t=typeof e.title==`string`?e.title.trim():``;if(!t)return null;let n=typeof e.id==`string`&&e.id?e.id:crypto.randomUUID(),r=Date.now(),i=typeof e.createdAt==`number`?e.createdAt:r,a=typeof e.modifiedAt==`number`?e.modifiedAt:i,o=Y({...e,id:n,title:t,type:e.type??`login`,createdAt:i,modifiedAt:a},e);return o.type===`login`&&!o.passkey&&typeof o.password!=`string`||o.passkey&&!o.passkey.credentialId?null:o}async function Ce(e){if(e!==`REPLACE_ALL`)throw Error(`clearVaultEntries requires explicit confirmation`);if(!b)throw Error(`vault locked`);for(let e of x)e.deletedAt||(e.deletedAt=Date.now(),e.modifiedAt=Date.now());await q()}async function we(e){if(!b)throw Error(`vault locked`);let t=J(e),n=Date.now(),r={...t,id:crypto.randomUUID(),createdAt:n,modifiedAt:n,passwordChangedAt:t.password?n:void 0};return x.push(r),await q(),E.breachMonitoring!==!1&&r.type===`login`&&r.password&&j(r.password).then(async e=>{if(e>0){let t=x.findIndex(e=>e.id===r.id);t!==-1&&(x[t]={...x[t],breach:e,modifiedAt:Date.now()},await q())}}),r}async function Te(e,t){if(!b)throw Error(`vault locked`);let n=x.findIndex(t=>t.id===e);if(n===-1||x[n].deletedAt)throw Error(`entry not found`);let r=x[n],i=Fe(t),a=`password`in t&&typeof i.password==`string`&&i.password!==r.password;if(x[n]={...r,...i,modifiedAt:Date.now(),...a?{passwordChangedAt:Date.now()}:{}},x[n].type===`login`&&!x[n].password&&!x[n].passkey)throw x[n]=r,Error(`password or passkey required`);if(x[n].type===`card`&&!x[n].cardNumber)throw x[n]=r,Error(`card number is required for card entries`);if(await q(),`password`in t&&E.breachMonitoring!==!1&&x[n].type===`login`&&x[n].password){let t=x[n].password;j(t).then(async t=>{let n=x.findIndex(t=>t.id===e);n!==-1&&(x[n]={...x[n],breach:t>0?t:void 0,modifiedAt:Date.now()},await q())})}}async function Ee(e){if(!b)throw Error(`vault locked`);let t=x.find(t=>t.id===e);if(!t||t.deletedAt)throw Error(`entry not found`);t.deletedAt=Date.now(),t.modifiedAt=Date.now(),await q()}function De(){return b?x.filter(e=>!!e.deletedAt):[]}async function Oe(e){if(!b)throw Error(`vault locked`);let t=x.find(t=>t.id===e&&t.deletedAt);if(!t)throw Error(`deleted entry not found`);delete t.deletedAt,t.modifiedAt=Date.now(),await q(),H(x)}async function ke(e){if(!b)throw Error(`vault locked`);let t=x.findIndex(t=>t.id===e&&t.deletedAt);if(t===-1)throw Error(`deleted entry not found`);x.splice(t,1),await q()}async function Ae(e){if(!b||e===0)return 0;let t=Date.now()-e,n=x.length;x=x.filter(e=>!(e.deletedAt&&e.deletedAt<t));let r=n-x.length;return r>0&&await q(),r}function je(e){return S.get(e)??[]}function Me(e){return x.find(t=>t.id===e&&!t.deletedAt)}async function K(e=`local_save`){if(!b)throw Error(`vault locked`);let t=await F(m);if(!t)throw Error(`missing slot A`);await Q(e);let r=B(x,w),{nonce:i,ciphertext:a,tag:o}=await n(b,r),s={...t,nonce:i,ciphertext:a,tag:o};return await I(m,s),w||await I(h,z(a.length/2)),s}async function Ne(){if(!b)throw Error(`vault locked`);let e=await F(h);if(!e)throw Error(`missing slot B`);let t=B(x,!1),{nonce:r,ciphertext:i,tag:a}=await n(b,t);await I(h,{...e,nonce:r,ciphertext:i,tag:a})}async function q(e=`local_save`){if(!b)throw Error(`vault locked`);C===`decoy`?await Ne():await K(e),H(x)}function Pe(e){if(!Array.isArray(e))return;let t=new Set,n=[];for(let r of e){let e=typeof r==`string`?r.trim():``;if(!e)continue;let i=e.toLowerCase();t.has(i)||(t.add(i),n.push(e))}return n.length>0?n:void 0}function J(e){let t=e.title.trim(),n=e.type??`login`;if(n===`passkey`&&(n=`login`),!t)throw Error(`title is required`);if(n===`login`&&!e.password?.trim()&&!e.passkey)throw Error(`password or passkey required`);if(e.passkey){let t=e.passkey;if(!t.rpId||!t.credentialId||!t.publicKeyCose||!t.userHandle||!t.userName||t.algorithm!==-7&&t.algorithm!==-8)throw Error(`invalid passkey credential`)}if(n===`card`&&(!e.cardholderName?.trim()||!e.cardNumber?.trim()))throw Error(`cardholder name and card number are required`);return{type:n,title:t,username:n===`login`?e.username?.trim()??``:void 0,password:n===`login`?e.password:void 0,url:n===`login`?e.url?.trim()??``:void 0,additionalUrls:n===`login`?Pe(e.additionalUrls):void 0,totp:n===`login`&&e.totp?.trim()||void 0,notes:e.notes?.trim()||void 0,breach:n===`login`?e.breach:void 0,canary:n===`login`?e.canary:void 0,tags:e.tags,passkey:e.passkey,cardholderName:n===`card`?e.cardholderName?.trim():void 0,cardNumber:n===`card`?e.cardNumber?.trim():void 0,expMonth:n===`card`?e.expMonth?.trim():void 0,expYear:n===`card`?e.expYear?.trim():void 0,cvc:n===`card`?e.cvc?.trim():void 0,cardNickname:n===`card`&&e.cardNickname?.trim()||void 0,network:n===`card`?e.network:void 0,last4:n===`card`?e.last4?.trim():void 0}}function Fe(e){let t={};if(`type`in e&&(t.type=e.type),`title`in e){let n=e.title?.trim()??``;if(!n)throw Error(`title is required`);t.title=n}if(`url`in e&&(t.url=e.url?.trim()??``),`additionalUrls`in e){let n=Array.isArray(e.additionalUrls)?e.additionalUrls:[],r=new Set,i=[];for(let e of n){let t=typeof e==`string`?e.trim():``;if(!t)continue;let n=t.toLowerCase();r.has(n)||(r.add(n),i.push(t))}t.additionalUrls=i.length>0?i:void 0}return`username`in e&&(t.username=e.username?.trim()??``),`password`in e&&(t.password=(e.password??``)||void 0),`totp`in e&&(t.totp=e.totp?.trim()||void 0),`notes`in e&&(t.notes=e.notes?.trim()||void 0),`breach`in e&&(t.breach=e.breach),`canary`in e&&(t.canary=e.canary),`passkey`in e&&(t.passkey=e.passkey),`tags`in e&&(t.tags=e.tags),`cardholderName`in e&&(t.cardholderName=e.cardholderName?.trim()||void 0),`cardNumber`in e&&(t.cardNumber=(e.cardNumber??``)||void 0),`expMonth`in e&&(t.expMonth=e.expMonth?.trim()||void 0),`expYear`in e&&(t.expYear=e.expYear?.trim()||void 0),`cvc`in e&&(t.cvc=e.cvc?.trim()||void 0),`cardNickname`in e&&(t.cardNickname=e.cardNickname?.trim()||void 0),`network`in e&&(t.network=e.network),`last4`in e&&(t.last4=e.last4?.trim()||void 0),t}function Ie(e){let t=`createdAt`in e?e.createdAt:e.created,n=`modifiedAt`in e?e.modifiedAt:e.updated;return Y({id:e.id,type:`type`in e?e.type:`login`,title:e.title,username:e.username,password:e.password,url:e.url,totp:e.totp,notes:e.notes,breach:e.breach,canary:`canary`in e?e.canary:void 0,passkey:`passkey`in e?e.passkey:void 0,createdAt:t,modifiedAt:n,deletedAt:e.deletedAt,tags:`tags`in e?e.tags:void 0,cardholderName:`cardholderName`in e?e.cardholderName:void 0,cardNumber:`cardNumber`in e?e.cardNumber:void 0,expMonth:`expMonth`in e?e.expMonth:void 0,expYear:`expYear`in e?e.expYear:void 0,cvc:`cvc`in e?e.cvc:void 0,cardNickname:`cardNickname`in e?e.cardNickname:void 0,network:`network`in e?e.network:void 0,last4:`last4`in e?e.last4:void 0},e)}function Y(e,t){if(e.passkey)return e;let n=t,r=e.type===`passkey`,i=typeof n.rpId==`string`&&typeof n.credentialId==`string`&&typeof n.publicKeyCose==`string`&&typeof n.userHandle==`string`&&typeof n.userName==`string`;if(!r&&!i||!i)return e;let a=n.algorithm===-8?-8:-7;return e.passkey={rpId:n.rpId,rpName:n.rpName??n.rpId,credentialId:n.credentialId,publicKeyCose:n.publicKeyCose,privateKeyJwk:n.privateKeyJwk,userHandle:n.userHandle,userName:n.userName,userDisplayName:n.userDisplayName??n.userName,algorithm:a,signCount:n.signCount??0,aaguid:n.aaguid??``,backupEligible:n.backupEligible===!0,backupState:n.backupState===!0,lastUsedAt:n.lastUsedAt,browser:n.browser,transports:n.transports,createdAt:e.createdAt},r&&(e.type=`login`),e.username||=n.userName,e.url||=`https://${n.rpId}`,e}function X(e){return e.type===`note`?`note|${e.title.toLowerCase()}`:e.passkey?`passkey|${e.passkey.rpId.toLowerCase()}|${e.passkey.userName.toLowerCase()}`:`login|${e.title.toLowerCase()}|${(e.url??``).toLowerCase()}|${(e.username??``).toLowerCase()}`}function Le(){let e=new Map,t=0;for(let n of x.filter(e=>!e.deletedAt)){let r=X(n),i=e.get(r);i?(t++,(n.modifiedAt??n.createdAt??0)>(i.modifiedAt??i.createdAt??0)&&e.set(r,n)):e.set(r,n)}return t}async function Re(){if(!b)throw Error(`vault locked`);if(C===`decoy`)throw Error(`deduplicate disabled in decoy mode`);let e=new Map;for(let t of x.filter(e=>!e.deletedAt)){let n=X(t),r=e.get(n);r?(t.modifiedAt??t.createdAt??0)>(r.modifiedAt??r.createdAt??0)&&e.set(n,t):e.set(n,t)}let t=new Set(Array.from(e.values()).map(e=>e.id)),n=Date.now(),r=0;return x=x.map(e=>!e.deletedAt&&!t.has(e.id)?(r++,{...e,deletedAt:n}):e),r>0&&await q(),r}var Z=`peach_vault_history`,ze=10;async function Q(e){try{let t=await chrome.storage.local.get([m,h,Z]),n=t[m],r=t[h];if(!n)return;let i=JSON.stringify(n),a=JSON.stringify(r??n),o=null;if(b&&C===`real`)try{o=x.filter(e=>!e.deletedAt).length}catch{o=null}let s=t[Z],c=s&&Array.isArray(s.snapshots)?s:{snapshots:[]},l=c.snapshots[0];if(l&&l.vault_a===i&&l.vault_b===a)return;c.snapshots=[{id:crypto.randomUUID(),savedAt:Date.now(),reason:e,vault_a:i,vault_b:a,entryCount:o},...c.snapshots].slice(0,ze),await chrome.storage.local.set({[Z]:c})}catch{}}async function Be(){try{await chrome.storage.local.set({[Z]:{snapshots:[]}})}catch{}}async function $(){let e=(await chrome.storage.local.get(Z))[Z];return!e||!Array.isArray(e.snapshots)?[]:e.snapshots}async function Ve(e){let t=(await $()).find(t=>t.id===e);if(!t)return{ok:!1,error:`snapshot_not_found`};await Q(`restore`);let n,r;try{n=JSON.parse(t.vault_a),r=JSON.parse(t.vault_b)}catch{return{ok:!1,error:`snapshot_corrupt`}}return await I(m,n),await I(h,r),W(),{ok:!0}}async function He(e,r){if(!b||C!==`real`||!await U(e))return!1;let i=await F(m);if(!i)return!1;let a=s(),c=await o(r,a),{nonce:l,ciphertext:u,tag:d}=await n(c,B(x,w)),f={...i,salt:N(a),nonce:l,ciphertext:u,tag:d};return await Q(`local_save`),await I(m,f),t(b),b=c,w||await I(h,z(u.length/2)),!0}export{Ve as A,_e as C,je as D,Ae as E,ne as F,U as I,te as L,Q as M,ge as N,Se as O,Te as P,f as R,pe as S,ke as T,be as _,Ce as a,fe as b,de as c,Ee as d,he as f,Me as g,ve as h,j as i,me as j,Oe as k,ie as l,De as m,xe as n,Be as o,O as p,He as r,Le as s,we as t,Re as u,D as v,W as w,ae as x,$ as y};