From caa89e34393224b01246ac4068f80cdb05dee625 Mon Sep 17 00:00:00 2001 From: troyeguo <13820674+troyeguo@users.noreply.github.com> Date: Sat, 13 Dec 2025 16:16:56 +0800 Subject: [PATCH] Refactor drive and login list handling to remove isCNAvailable checks - Updated BackupDialog and ImportDialog components to directly use driveList without filtering based on isCNAvailable. - Removed isCNAvailable property from driveList and loginList constants. - Simplified login option selection in AccountSetting and Login components by eliminating region-based filtering. - Adjusted SyncSetting component to utilize the full driveList without CN availability checks. - Updated yarn.lock to reflect changes in megajs dependency version. --- package.json | 2 +- src/assets/lib/kookit-extra-browser.min.js | 2 +- src/assets/lib/kookit-extra.min.mjs | 2 +- .../dialogs/backupDialog/component.tsx | 14 +- .../dialogs/importDialog/component.tsx | 6 - src/constants/driveList.tsx | 16 -- src/constants/loginList.tsx | 4 - .../settings/accountSetting/component.tsx | 169 ++++++++---------- .../settings/syncSetting/component.tsx | 24 +-- src/pages/login/component.tsx | 94 +++++----- yarn.lock | 8 +- 11 files changed, 130 insertions(+), 211 deletions(-) diff --git a/package.json b/package.json index 3a001b55..ca04478c 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "localforage": "^1.10.0", "mammoth": "^1.8.0", "marked": "^15.0.11", - "megajs": "1.3.9-next.17", + "megajs": "^1.3.9", "mhtml2html": "^3.0.0", "node-machine-id": "^1.1.12", "qs": "^6.11.2", diff --git a/src/assets/lib/kookit-extra-browser.min.js b/src/assets/lib/kookit-extra-browser.min.js index 815fb0a7..241484b5 100644 --- a/src/assets/lib/kookit-extra-browser.min.js +++ b/src/assets/lib/kookit-extra-browser.min.js @@ -1 +1 @@ -import e from"axios";import{Storage as t}from"megajs";import{Buffer as r}from"buffer";import{createClient as n,AuthType as i}from"webdav/dist/web/index.js";import{SSE as o}from"sse.js";import{isElectron as s}from"react-device-detect";function a(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}const c=e=>"json"===e?"application/json":["jpg","jpeg","png","gif","bmp"].includes(e)?"image/"+e:"zip"===e?"application/zip":"epub"===e?"application/epub+zip":"txt"===e?"text/plain":"pdf"===e?"application/pdf":"mobi"===e?"application/x-mobipocket-ebook":"azw3"===e||"azw"===e?"application/vnd.amazon.ebook":"cbz"===e?"application/x-cbz":"cbr"===e?"application/x-cbr":"cbt"===e?"application/x-cbt":"cb7"===e?"application/x-cb7":"fb2"===e?"application/x-fictionbook+xml":"html"===e?"text/html":"css"===e?"text/css":"js"===e?"application/javascript":"xml"===e?"application/xml":"xhtml"===e?"application/xhtml+xml":"opf"===e?"application/oebps-package+xml":"ncx"===e?"application/x-dtbncx+xml":"mp3"===e?"audio/mpeg":"wav"===e?"audio/wav":"ogg"===e?"audio/ogg":"mp4"===e?"video/mp4":"webm"===e?"video/webm":"avi"===e?"video/x-msvideo":"wmv"===e?"video/x-ms-wmv":"flv"===e?"video/x-flv":"m3u8"===e?"application/x-mpegURL":"ts"===e?"video/MP2T":"3gp"===e?"video/3gpp":"3g2"===e?"video/3gpp2":"db"===e?"application/x-sqlite3":void 0,u=["books","notes","bookmarks","plugins","words"],d=e=>{const t=atob(e),r=t.length,n=new Uint8Array(r);for(let e=0;e{let t="";const r=new Uint8Array(e),n=r.byteLength;for(let e=0;ee>>>t|e<<32-t,n=(e,t,r)=>e&t^~e&r,i=(e,t,r)=>e&t^e&r^t&r,o=e=>r(e,2)^r(e,13)^r(e,22),s=e=>r(e,6)^r(e,11)^r(e,25),a=e=>r(e,7)^r(e,18)^e>>>3,c=e=>r(e,17)^r(e,19)^e>>>10,u=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],d=8*e.length,l=(960-(8*e.length+1)%512)%512,h=e.length+Math.ceil((l+1)/8)+8,f=new Uint8Array(h);f.set(e),f[e.length]=128;new DataView(f.buffer,f.byteLength-8).setBigUint64(0,BigInt(d),!1);for(let e=0;e>>0;let[l,h,p,g,m,y,v,b]=u;for(let e=0;e<64;e++){const r=b+s(m)+n(m,y,v)+t[e]+d[e]>>>0,a=o(l)+i(l,h,p)>>>0;b=v,v=y,y=m,m=g+r>>>0,g=p,p=h,h=l,l=r+a>>>0}u[0]=u[0]+l>>>0,u[1]=u[1]+h>>>0,u[2]=u[2]+p>>>0,u[3]=u[3]+g>>>0,u[4]=u[4]+m>>>0,u[5]=u[5]+y>>>0,u[6]=u[6]+v>>>0,u[7]=u[7]+b>>>0}const p=new ArrayBuffer(32),g=new DataView(p);return u.forEach(((e,t)=>{g.setUint32(4*t,e,!1)})),p}const f={_chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",encode(e){if("string"!=typeof e)throw new Error("Input must be a string");let t="",r=0;const n=this._stringToUtf8Bytes(e),i=n.length;for(;r>2,c=(3&e)<<4|o>>4,u=(15&o)<<2|s>>6,d=63&s;t+=this._chars.charAt(a),t+=this._chars.charAt(c),t+=r-2>=i?"=":this._chars.charAt(u),t+=r-1>=i?"=":this._chars.charAt(d)}return t},decode(e){if("string"!=typeof e)throw new Error("Input must be a string");for(e=e.replace(/[^A-Za-z0-9+/]/g,"");e.length%4!=0;)e+="=";const t=[];let r=0;const n=e.length;for(;r>4,c=(15&i)<<4|o>>2,u=(3&o)<<6|s;t.push(a),-1!==o&&t.push(c),-1!==s&&t.push(u)}return this._utf8BytesToString(t)},_stringToUtf8Bytes(e){const t=[];for(let r=0;r>6),t.push(128|63&n);else if(55296==(64512&n)&&r+1>18),t.push(128|e>>12&63),t.push(128|e>>6&63),t.push(128|63&e)}else t.push(239,191,189),r--}else t.push(224|n>>12),t.push(128|n>>6&63),t.push(128|63&n)}return t},_utf8BytesToString(e){let t="",r=0;for(;r65535){const r=e-65536;t+=String.fromCharCode(55296|r>>10),t+=String.fromCharCode(56320|1023&r)}else t+=String.fromCharCode(e)}else t+="�"}else t+="�"}return t},encodeURL(e){return this.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")},decodeURL(e){for(e=e.replace(/-/g,"+").replace(/_/g,"/");e.length%4;)e+="=";return this.decode(e)}};class p{constructor(e){this.queue=[],this.runningTasks=0,this.totalTasks=0,this.completedTasks=0,this.hasFailedTasks=!1,this.downloadedSize=0,this.maxConcurrency=e}addTask(e){return a(this,void 0,void 0,(function*(){return this.totalTasks++,new Promise(((t,r)=>{if(this.hasFailedTasks)return void r(new Error("Task queue has failed tasks. No new tasks can be added."));const n=()=>a(this,void 0,void 0,(function*(){try{this.runningTasks++;const r=yield e();return this.completedTasks++,t(r),r}catch(e){throw this.completedTasks++,r(e),e}finally{this.runningTasks--,this.runNext()}}));this.runningTasks0&&this.runningTasks"application/json"===e?"json":e.startsWith("image/")?e.split("/")[1]:"application/zip"===e?"zip":"application/epub+zip"===e?"epub":"text/plain"===e?"txt":"application/pdf"===e?"pdf":"application/x-mobipocket-ebook"===e?"mobi":"application/vnd.amazon.ebook"===e?"azw3":"application/x-cbz"===e?"cbz":"application/x-cbr"===e?"cbr":"application/x-cbt"===e?"cbt":"application/x-cb7"===e?"cb7":"application/x-fictionbook+xml"===e?"fb2":"text/html"===e?"html":"text/css"===e?"css":"application/javascript"===e?"js":"application/xml"===e?"xml":"application/xhtml+xml"===e?"xhtml":"application/oebps-package+xml"===e?"opf":"application/x-dtbncx+xml"===e?"ncx":"audio/mpeg"===e?"mp3":"audio/wav"===e?"wav":"audio/ogg"===e?"ogg":"video/mp4"===e?"mp4":"video/webm"===e?"webm":"video/x-msvideo"===e?"avi":"video/x-ms-wmv"===e?"wmv":"video/x-flv"===e?"flv":"application/x-mpegURL"===e?"m3u8":"video/MP2T"===e?"ts":"video/3gpp"===e?"3gp":"video/3gpp2"===e?"3g2":"application/x-sqlite3"===e?"db":"",databaseList:u,configList:["themeColors","readingTime","cloudSyncTime","lastSyncTime","recentBooks","recentAdd","deletedBooks","favoriteBooks","shelfList","txtParsers","noteTags","recordLocation","sortedShelfList","kindleDeviceList"],copyArrayBuffer:e=>{var t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(new Uint8Array(e)),t},base64ToArrayBuffer:d,arrayBufferToBase64:l,generateSHA256Hash:function(e){return a(this,void 0,void 0,(function*(){const t=(new TextEncoder).encode(e),r="undefined"!=typeof crypto&&crypto.subtle?yield crypto.subtle.digest("SHA-256",t):h(t),n=Array.from(new Uint8Array(r)).map((e=>e.toString(16).padStart(2,"0"))).join("");return n}))},EmailProviders:["gmail.com","qq.com","163.com","yahoo.com","sina.com","sina.cn","126.com","outlook.com","yeah.net","foxmail.com","hotmail.com","protonmail.com","proton.me","icloud.com","mail.com","live.com","aliyun.com","sohu.com","yandex.com","naver.com","mail.ru","yahoo.co.jp","139.com","189.com"],Base64:f};const m={cloudUrl:"https://cloud.koodoreader.com",cloudCNUrl:"https://cloudv2.koodoreader.cn",testUrl:"https://cloudtest.960960.xyz",devUrl:"http://192.168.28.159:8000"},y={callbackUrl:"https://web.koodoreader.com/",cnCallbackUrl:"https://web.koodoreader.cn/",dropboxClientId:"vnc67byrssocvy1",yandexClientId:"e5305b62f53844b1994f77a840fd0a37",pcloudClientId:"pg8ten0B3vH",boxClientId:"ltimecqanmpxoaicn9qw3es6l3sdl1ya",duboxClientId:"kc0Ls6xLZugGgLLVhZ8yhUU1cRkRoKNU",yiyiwuClientId:"100197197",microsoftClientId:"506df58a-29ab-4020-afc5-6f423dc80f35",googleClientId:"1051055003225-ph1f5fvh328dhv7bco5jitlnfhg6ks2t.apps.googleusercontent.com",appleClientId:"com.koodoreader.auth",facebookClientId:"2845583825559500",githubClientId:"Ov23liJVzfvJMMEEZ8v2",adriveClientId:"a128ae7b9c094545af623de61dc0a1ef"},v={google:{clientId:y.googleClientId,scopes:["openid email profile"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"openid email profile"}},microsoft:{clientId:y.microsoftClientId,scopes:["openid","profile","User.Read","offline_access"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"openid profile User.Read offline_access"}},facebook:{clientId:y.facebookClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:""}},github:{clientId:y.githubClientId,scopes:["user:email"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"user:email"}},apple:{clientId:y.appleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{}},email:{clientId:"",scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:""}}};var b={CloudConfig:m,ThirdpartyConfig:y,LoginAuthRequest:v,LoginDiscovery:{microsoft:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"},facebook:{authorizationEndpoint:"https://www.facebook.com/v12.0/dialog/oauth",tokenEndpoint:"https://graph.facebook.com/v12.0/oauth/access_token"},github:{authorizationEndpoint:"https://github.com/login/oauth/authorize",tokenEndpoint:"https://github.com/login/oauth/access_token"},apple:{authorizationEndpoint:"https://appleid.apple.com/auth/authorize",tokenEndpoint:"https://appleid.apple.com/auth/token"},email:{authorizationEndpoint:"",tokenEndpoint:""}},DriveAuthRequest:{dropbox:{clientId:y.dropboxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{token_access_type:"offline"}},yandex:{clientId:y.yandexClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code",force_confirm:"true"}},boxnet:{clientId:y.boxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}},pcloud:{clientId:y.pcloudClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code"}},dubox:{clientId:y.duboxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code",scope:"basic,netdisk",device_id:"119827642",qrcode:"1"}},yiyiwu:{clientId:y.yiyiwuClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code"}},adrive:{clientId:y.adriveClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}},microsoft:{clientId:y.microsoftClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"files.readwrite.appfolder offline_access"}},google:{clientId:y.googleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"https://www.googleapis.com/auth/drive.file",access_type:"offline"}},microsoft_exp:{clientId:y.microsoftClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"files.readwrite.all offline_access"}},google_exp:{clientId:y.googleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"https://www.googleapis.com/auth/drive",access_type:"offline"}}},DriveDiscovery:{dropbox:{authorizationEndpoint:"https://www.dropbox.com/oauth2/authorize",tokenEndpoint:"https://www.dropbox.com/oauth2/token"},yandex:{authorizationEndpoint:"https://oauth.yandex.com/authorize",tokenEndpoint:"https://oauth.yandex.com/token"},boxnet:{authorizationEndpoint:"https://account.box.com/api/oauth2/authorize",tokenEndpoint:"https://api.box.com/oauth2/token"},pcloud:{authorizationEndpoint:"https://my.pcloud.com/oauth2/authorize",tokenEndpoint:"https://api.pcloud.com/oauth2_token"},dubox:{authorizationEndpoint:"https://openapi.baidu.com/oauth/2.0/authorize",tokenEndpoint:"https://openapi.baidu.com/oauth/2.0/token"},yiyiwu:{authorizationEndpoint:"https://passportapi.115.com/open/authorize",tokenEndpoint:"https://passportapi.115.com/open/authorize"},adrive:{authorizationEndpoint:"https://openapi.alipan.com/oauth/authorize",tokenEndpoint:"https://openapi.alipan.com/oauth/token"},microsoft:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"},microsoft_exp:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google_exp:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"}}};class w{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.driveId="",this.refreshTokenPromise=null,this.taskQueue=new p(1),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getDriveId(){return a(this,void 0,void 0,(function*(){if(this.driveId)return this.driveId;const t=yield this.refreshToken(),r=yield e.post("https://openapi.alipan.com/adrive/v1.0/user/getDriveInfo",{},{headers:{Authorization:`Bearer ${t}`}});return this.driveId=r.data.default_drive_id,this.driveId}))}getFolderIdByPath(t){return a(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),n=yield this.getDriveId();try{try{const i=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(i.data)return i.data.file_id}catch(i){const o=t.split("/").filter((e=>e));let s="",a="root";for(const t of o){s+="/"+t;try{a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:s},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}catch(i){a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:n,parent_file_id:a,name:t,type:"folder",check_name_mode:"refuse"},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}}return a}}catch(e){return console.error("Error getting/creating folder by path:",e),""}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield this.getDriveId(),i=yield this.getFolderIdByPath(this.baseFolder+"/"+t);let o=[],s="",a=!0;for(;a;){const t=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/list",{drive_id:n,parent_file_id:i,marker:s||void 0},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),c=t.data.items||[];o=o.concat(c),s=t.data.next_marker,a=!!s&&100===c.length}return[...new Set(o.map((e=>({name:e.name,size:e.size,type:e.type,modified:e.updated_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield this.getDriveId(),i=yield this.getFolderIdByPath(this.baseFolder+"/"+t);return!i||(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/delete",{drive_id:n,file_id:i},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}checkExists(t){var r;return a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=yield this.getDriveId(),o=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:t},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}});(null===(r=o.data)||void 0===r?void 0:r.file_id)&&(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/recyclebin/trash",{drive_id:i,file_id:o.data.file_id},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}}))}catch(e){}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"adrive",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("adrive_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"adrive",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://openapi.alipan.com/oauth/authorize?${new URLSearchParams({response_type:"code",client_id:y.adriveClientId,redirect_uri:e,grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}).toString()}`}}class k extends w{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return new Promise(((n,i)=>a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=yield this.getDriveId(),s=r.substring(0,r.lastIndexOf("/")),a=r.substring(r.lastIndexOf("/")+1),c=yield this.getFolderIdByPath(this.baseFolder+"/"+s),u=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:o,parent_file_id:c,name:a,type:"file",check_name_mode:"ignore"},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}),{file_id:d,upload_id:l,part_info_list:h}=u.data;yield e.put(h[0].upload_url,t,{headers:{"Content-Type":"application/octet-stream"}}),yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/complete",{drive_id:o,file_id:d,upload_id:l},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}),n(!0)}catch(e){console.error("Error uploading file:",e),n(!1)}}))))}))}downloadFile(t){return new Promise(((r,n)=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const n=yield this.refreshToken(),i=yield this.getDriveId(),o=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:this.baseFolder+"/"+t},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}})).data.file_id,s=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/getDownloadUrl",{drive_id:i,file_id:o},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}}),a=yield e.get(s.data.url,{responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});r(a.data)}catch(e){console.error("Error downloading file:",e),r(!1)}}))))}}class S{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getFolderIdByPath(t){return a(this,void 0,void 0,(function*(){if(""==t)return"0";const r=yield this.refreshToken(),n=t.split("/");let i="0";for(const t of n){const n=`https://api.box.com/2.0/folders/${i}/items?fields=id,name&type=folder&limit=1000`;try{const o=(yield e.get(n,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===t&&"folder"===e.type));if(o)i=o.id;else{const n={name:t,parent:{id:i},type:"folder"};i=(yield e.post("https://api.box.com/2.0/folders",n,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}}catch(e){return console.error("Error occurred during folder creation:",e),""}}return i}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;for(;n.startsWith("/");)n=n.substring(1);let i=yield this.getFolderIdByPath(n),o=[],s=0,a=!0;const c=1e3;for(;a;){const t=yield e.get(`https://api.box.com/2.0/folders/${i}/items`,{params:{limit:c,offset:s},headers:{Authorization:`Bearer ${r}`}}),n=t.data.entries||[];o=o.concat(n),s+=n.length,a=n.length===c&&t.data.total_count>s}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:e.type,modified:e.content_modified_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=t.substring(0,t.lastIndexOf("/")),i=t.substring(t.lastIndexOf("/")+1);let o=this.baseFolder+"/"+n;for(;o.startsWith("/");)o=o.substring(1);const s=yield this.getFolderIdByPath(o);if(!s)return!0;const a=`https://api.box.com/2.0/folders/${s}/items?fields=id,name&type=file&limit=1000`,c=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===i&&"file"===e.type));return!c||(yield e.delete(`https://api.box.com/2.0/files/${c.id}`,{headers:{Authorization:`Bearer ${r}`}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"boxnet",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("boxnet_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"boxnet",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://account.box.com/api/oauth2/authorize?${new URLSearchParams({response_type:"code",client_id:y.boxClientId,redirect_uri:e,grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}).toString()}`}}class E extends S{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=r.substring(0,r.lastIndexOf("/")),o=r.substring(r.lastIndexOf("/")+1);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);const a=yield this.getFolderIdByPath(s);if(!a)throw new Error("Folder not found");const c=(yield this.listFiles(i)).find((e=>e===o));c&&(yield this.deleteFileWithoutQueue(i+"/"+o));let u=new File([t],o,{lastModified:(new Date).getTime(),type:t.type});const d=new FormData;d.append("file",u),d.append("parent_id",a);const l=yield e.post("https://upload.box.com/api/2.0/files/content",d,{headers:{Authorization:`Bearer ${n}`,"Content-Type":"multipart/form-data"},params:{if_match:"false",fields:"name,id"},maxContentLength:1/0,maxBodyLength:1/0});return!(l.status>=300)||(console.error("Error occurred during file upload:",l),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=t.substring(0,t.lastIndexOf("/")),i=t.substring(t.lastIndexOf("/")+1);let o=this.baseFolder+"/"+n;for(;o.startsWith("/");)o=o.substring(1);const s=yield this.getFolderIdByPath(o);if(!s)return console.error("Folder not found"),!0;const a=`https://api.box.com/2.0/folders/${s}/items?fields=id,name&type=file&limit=1000`,c=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===i&&"file"===e.type));if(!c)return console.error("File not found:",i),!0;const u=yield e({url:`https://api.box.com/2.0/files/${c.id}/content`,method:"get",headers:{Authorization:`Bearer ${r}`},responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return u.status>=300?(console.error("Error occurred during file download:",u),!1):u.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class x{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3)}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=[],i=!0,o=null;for(;i;){let s;s=o?yield e.post("https://api.dropboxapi.com/2/files/list_folder/continue",{cursor:o},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}):yield e.post("https://api.dropboxapi.com/2/files/list_folder",{path:"/"+t,limit:2e3},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});const a=s.data.entries||[];n=n.concat(a),i=s.data.has_more,o=s.data.cursor}return[...new Set(n.map((e=>({name:e.name,size:e.size||0,type:e[".tag"],modified:e.client_modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();yield e.post("https://api.dropboxapi.com/2/files/delete_v2",{path:"/"+t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dropbox",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dropbox",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://www.dropbox.com/oauth2/authorize?response_type=code&token_access_type=offline&client_id=${y.dropboxClientId}&redirect_uri=${e}`}}class T extends x{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type});const s=yield e.post("https://content.dropboxapi.com/2/files/upload",o,{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/octet-stream","Dropbox-API-Arg":JSON.stringify({path:"/"+r,mode:"overwrite",autorename:!0,mute:!1})},maxContentLength:1/0,maxBodyLength:1/0});return!(s.status>=300)||(console.error("Error occurred during file upload:",s),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=yield e({url:"https://content.dropboxapi.com/2/files/download",method:"post",headers:{Authorization:`Bearer ${r}`,"Dropbox-API-Arg":JSON.stringify({path:"/"+t})},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return n.status>=300?(console.error("Error occurred during file download:",n),!1):n.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class A{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){var r,n;return a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let o=[],s=0;const a=1e3;let c=!0;for(;c;){const u=yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${i}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",limit:a,offset:s,fields:"_embedded.items.name,_embedded.items.size,_embedded.items.type,_embedded.items.modified,_embedded.total"}}),d=(null===(r=u.data._embedded)||void 0===r?void 0:r.items)||[];o=o.concat(d);const l=(null===(n=u.data._embedded)||void 0===n?void 0:n.total)||0;s+=d.length,c=s({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=yield e.delete("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",permanently:!1}});return 202===n.status||204===n.status}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(t){var r,n;return a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=t.split("/").filter((e=>e.length>0));let s="";for(const t of o){s+="/"+t;try{yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${i}`,"Content-Type":"application/json"},params:{path:s}})}catch(t){if(404!==(null===(r=t.response)||void 0===r?void 0:r.status))return console.error("Error checking directory:",t),!1;try{yield e.put(`https://cloud-api.yandex.net/v1/disk/resources?path=${encodeURIComponent(s)}`,null,{headers:{Authorization:`OAuth ${i}`}})}catch(e){if(409!==(null===(n=e.response)||void 0===n?void 0:n.status))return console.error("Error creating directory:",e),!1}}}return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yandex",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yandex",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://oauth.yandex.com/authorize?response_type=code&client_id=${y.yandexClientId}&redirect_uri=${e}&force_confirm=true`}}class C extends A{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=this.baseFolder+"/"+r;for(;i.startsWith("/");)i=i.substring(1);const o=i.substring(0,i.lastIndexOf("/"));if(o){if(!(yield this.ensureDirectoryExists(o)))return console.error("Failed to create directory:",o),!1}const s=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/upload",{headers:{Authorization:`OAuth ${n}`,"Content-Type":"application/json"},params:{path:`/${i}`,overwrite:!0}});if(200!==s.status)return console.error("Error getting upload URL:",s),!1;const a=s.data.href;let c=r.split("/").pop()||"",u=new File([t],c,{lastModified:(new Date).getTime(),type:t.type});const d=yield e.put(a,u,{headers:{"Content-Type":t.type||"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0});return!(d.status>=300)||(console.error("Error occurred during file upload:",d),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;for(;n.startsWith("/");)n=n.substring(1);const i=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/download",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:`/${n}`}});if(200!==i.status)return console.error("Error getting download URL:",i),!1;const o=i.data.href,s=yield e({url:o,method:"get",maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return s.status>=300?(console.error("Error occurred during file download:",s),!1):s.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class R{constructor(e,t){this.isExp=!1,this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),this.isExp=this.config.isExp||!1,void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getFileId(t,r){return a(this,void 0,void 0,(function*(){const n=yield this.refreshToken(),i=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=yield e.get(i,{headers:{Authorization:"Bearer "+n}});if(0===t.data.files.length)return"";const r=t.data.files;return r.length>0?r[0].id:null}catch(e){return console.error("Error occurred during file list retrieval:",e),""}}))}checkFolder(t){return a(this,void 0,void 0,(function*(){t=this.baseFolder+"/"+t;const r=yield this.refreshToken();if(""===t)return"root";const n=t.split("/").filter((e=>""!==e.trim()));let i="root";for(const t of n){let n=yield this.getFolderId(t,i);if(!n){const o={name:t,mimeType:"application/vnd.google-apps.folder",parents:[i]};try{n=(yield e.post("https://www.googleapis.com/drive/v3/files",o,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}catch(e){throw console.error(`Error occurred during folder creation for ${t}:`,e),e}}i=n}return i}))}getFolderId(t,r){return a(this,void 0,void 0,(function*(){const n=yield this.refreshToken(),i=`https://www.googleapis.com/drive/v3/files?q=name='${t=encodeURIComponent(t)}'+and+mimeType='application/vnd.google-apps.folder'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=(yield e.get(i,{headers:{Authorization:`Bearer ${n}`}})).data.files;return t.length>0?t[0].id:null}catch(e){throw console.error("Error occurred during fetching folder ID:",e),e}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=yield this.checkFolder(t),i=[],o="",s=!0;for(;s;){let t=`https://www.googleapis.com/drive/v3/files?q='${n}'+in+parents&fields=nextPageToken,files(id,name,size,mimeType)&pageSize=1000`;o&&(t+=`&pageToken=${o}`);const a=yield e.get(t,{headers:{Authorization:`Bearer ${r}`}}),c=a.data.files||[];i=i.concat(c),o=a.data.nextPageToken,s=!!o}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:"application/vnd.google-apps.folder"===e.mimeType?"folder":"file",modified:e.modifiedTime}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQue(e)}))))))}))}deleteFileWithoutQue(t){return a(this,void 0,void 0,(function*(){const r=t.split("/")[1],n=yield this.checkFolder(t),i=yield this.refreshToken(),o=yield this.getFileId(r,n);if(""===o)return console.error("File not found:",r),!0;try{const t=yield e.delete(`https://www.googleapis.com/drive/v3/files/${o}`,{headers:{Authorization:`Bearer ${i}`}});return console.error("File deleted:",t),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"google",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"google",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${e}&prompt=consent&response_type=code&client_id=${y.googleClientId}&scope=https://www.googleapis.com/auth/${this.isExp?"drive":"drive.file"}&access_type=offline`}}class O extends R{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type}),s=r.split(".").pop(),a=c(s||""),u=r.split("/")[0],d=yield this.checkFolder(u),l=yield this.getFileId(i||"",d);const h={mimeType:a,name:i,parents:[d]},f=l?`https://www.googleapis.com/upload/drive/v3/files/${l}?uploadType=resumable`:"https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable",p=(yield e({method:l?"PATCH":"POST",url:f,data:l?null:JSON.stringify(h),headers:{Authorization:"Bearer "+n,"Content-Type":"application/json; charset=UTF-8"},maxContentLength:1/0,maxBodyLength:1/0})).headers.location,g=yield this.getData(o);if(0===Object.keys(g).length)return!1;const m=yield e.put(p,g.data,{headers:{Authorization:"Bearer "+n,"Content-Type":"application/zip","Content-Range":`bytes 0-${g.fileSize-1}/${g.fileSize}`},maxContentLength:1/0,maxBodyLength:1/0});return!(m.status>=300)||(console.error("Error occurred during file download:",m),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();let n=t.split("/").pop(),i=t.split("/")[0],o=yield this.checkFolder(i),s=yield this.getFileId(n||"",o);if(!s)return console.error("File not found:",n),!0;const a=`https://www.googleapis.com/drive/v3/files/${s}?alt=media`,c=yield e.get(a,{headers:{Authorization:"Bearer "+r},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return c.status>=300?(console.error("Error occurred during file download:",c),!1):c.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getData(e){return a(this,void 0,void 0,(function*(){return e?new Promise(((t,r)=>{const n=new FileReader;n.onload=r=>t({fileName:e.name,mimeType:e.type,fileSize:e.size,data:r.target.result}),n.onerror=e=>r(e),n.readAsArrayBuffer(e)})):{}}))}}class _{constructor(e){this.folderCreationLocks=new Map,this.config=e,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=2){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getStorage(){return a(this,void 0,void 0,(function*(){if(this.storage)return this.storage;let{email:e,password:r}=this.config;return this.storage=yield new t({email:e,password:r}).ready,this.storage}))}getRoot(){return a(this,void 0,void 0,(function*(){if(this.root)return this.root;const e=(yield this.getStorage()).root;if(""===this.baseFolder)return this.root=e,this.root;let t=e.children.find((e=>e.name===this.baseFolder&&e.directory));return t||(t=yield e.mkdir(this.baseFolder)),this.root=t,this.root}))}createFolder(e,t){return a(this,void 0,void 0,(function*(){const r=`${e.nodeId}_${t}`;if(this.folderCreationLocks.has(r))return yield this.folderCreationLocks.get(r);const n=(()=>a(this,void 0,void 0,(function*(){try{let r=e.children.find((e=>e.name===t&&e.directory));return r||(r=yield e.mkdir(t),r)}finally{this.folderCreationLocks.delete(r)}})))();return this.folderCreationLocks.set(r,n),yield n}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();if(e){const r=e.split("/").filter((e=>e));for(const e of r){const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return[];t=r}}const r=t.children.map((e=>({name:e.name,size:e.size||0,type:e.directory?"folder":"file",modified:e.timestamp?new Date(1e3*e.timestamp).toISOString():""})));return r}catch(e){return console.error("Error listing MEGA files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();const r=e.split("/"),n=r.pop();for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const i=t.children.find((e=>e.name===n&&!e.directory));return!i||(yield i.delete(),!0)}catch(e){return console.error("Error deleting MEGA file:",e),!1}}))}}class P extends _{constructor(e){super(e)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{let n=yield this.getRoot();const i=t.split("/"),o=i.pop()||"";for(const e of i){if(!e)continue;let t=n.children.find((t=>t.name===e&&t.directory));t||(t=yield this.createFolder(n,e)),n=t}const s=new File([e],o,{lastModified:(new Date).getTime(),type:e.type}),a=yield e.arrayBuffer(),c=new Uint8Array(a),u=r.from(c),d=n.children.find((e=>e.name===o&&!e.directory));return d&&(yield d.delete()),yield n.upload({name:o,size:s.size},u).complete,!0}catch(e){return console.error("Error occurred during MEGA file upload:",e),!1}}))))))}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let t=yield this.getRoot();const r=e.split("/"),n=r.pop()||"";for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const i=t.children.find((e=>e.name===n&&!e.directory));if(!i)return!0;const o=yield i.downloadBuffer();return this.taskQueue.setDownloadedSize(o.size),o.buffer}catch(e){return console.error("Error occurred during MEGA file download:",e),!1}}))))))}))}}class I{constructor(e,t){this.isExp=!1,this.baseUrl="https://graph.microsoft.com/v1.0/me/drive/special/approot",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),this.isExp=this.config.isExp||!1,this.baseUrl=this.isExp?"https://graph.microsoft.com/v1.0/me/drive/root":"https://graph.microsoft.com/v1.0/me/drive/special/approot",void 0===this.config.baseFolder?this.baseFolder=this.isExp?"KoodoReader":"":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let n,i=[];if(""===t)n=`${this.baseUrl}/children`;else{const e=encodeURIComponent(t);n=`${this.baseUrl}:/${e}:/children`}for(;n;){const t=yield e.get(n,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(t.status>=300)break;const o=t.data.value||[];i=i.concat(o),n=t.data["@odata.nextLink"]||""}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:e.folder?"folder":"file",modified:e.lastModifiedDateTime}))))]}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=yield e.delete(`${this.baseUrl}:/${t}`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!(n.status>=300)||(console.error("Error deleting file:",n),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"microsoft",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"microsoft",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${y.microsoftClientId}&scope=${this.isExp?"files.readwrite.all":"files.readwrite.appfolder"} offline_access&response_type=code&redirect_uri=${e}`}}class M extends I{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type}),s=this.baseFolder+"/"+r;for(;s.startsWith("/");)s=s.substring(1);const a=this.baseUrl+":/"+s+":/createUploadSession",c=yield e.post(a,null,{headers:{Authorization:"Bearer "+n,"Content-Type":"application/json"},maxContentLength:1/0,maxBodyLength:1/0});let u=o.size;const d=o.type,l=c.data.uploadUrl,h=yield e.put(l,o,{headers:{"Content-Type":d,"Content-Range":`bytes 0-${u-1}/${u}`},maxContentLength:1/0,maxBodyLength:1/0});return!(h.status>=300)||(console.error("Error occurred during file download:",h),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;for(;n.startsWith("/");)n=n.substring(1);const i=`${this.baseUrl}:/${n}:/content`,o=yield e.get(i,{responseType:"arraybuffer",headers:{Authorization:"Bearer "+r},maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error occurred during file download:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class N{downloadFile(e,t){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e([])}))}))}authToken(e){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e("")}))}))}getAuthUrl(){return""}}class F{constructor(e,t){this.baseUrl="https://api.pcloud.com",this.config=e,this.thirdpartyRequest=t,this.taskQueue=new p(3),this.baseUrl="2"===e.region?"https://eapi.pcloud.com":"https://api.pcloud.com"}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}checkFolderExists(t,r){return a(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error checking folder:",e),!1}}))}createFolder(t,r){return a(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/createfolderifnotexists`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error creating folder:",e),!1}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:"/"+t,recursive:0}});return 0!==n.data.result?[]:n.data.metadata.contents.map((e=>({name:e.name,size:e.size||0,type:e.isfolder?"folder":"file",modified:e.modified})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/deletefile`,{params:{access_token:r,path:"/"+t}});return 0===n.data.result||(console.error("Error deleting file:",n.data),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.refresh_token}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"pcloud",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://my.pcloud.com/oauth2/authorize?client_id=${y.pcloudClientId}&response_type=code&redirect_uri=${e}`}}class $ extends F{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=r.split("/").slice(0,-1).join("/");if(!(yield this.checkFolderExists(i,n))){if(!(yield this.createFolder(i,n)))return!1}let o=r.split("/").pop()||"",s=new File([t],o,{lastModified:(new Date).getTime(),type:t.type});const a=new FormData;a.append("file",s);const c=yield e.post(`${this.baseUrl}/uploadfile`,a,{params:{access_token:n,path:`/${i}`,renew:1},maxContentLength:1/0,maxBodyLength:1/0});return 0===c.data.result||(console.error("Error uploading file:",c.data),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/getfilelink`,{params:{access_token:r,path:`/${t}`}});if(0!==n.data.result)return console.error("Error getting file link:",n.data),!0;const i=`https://${n.data.hosts[0]}${n.data.path}`,o=yield e.get(i,{responseType:"arraybuffer",maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error downloading file:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}const U=e=>{let t=e.httpHandler;return{setHttpHandler(e){t=e},httpHandler:()=>t,updateHttpClientConfig(e,r){t.updateHttpClientConfig(e,r)},httpHandlerConfigs:()=>t.httpHandlerConfigs()}};var L,D,B,z,j;!function(e){e.HEADER="header",e.QUERY="query"}(L||(L={})),function(e){e.HEADER="header",e.QUERY="query"}(D||(D={})),function(e){e.HTTP="http",e.HTTPS="https"}(B||(B={})),function(e){e.MD5="md5",e.CRC32="crc32",e.CRC32C="crc32c",e.SHA1="sha1",e.SHA256="sha256"}(z||(z={})),function(e){e[e.HEADER=0]="HEADER",e[e.TRAILER=1]="TRAILER"}(j||(j={}));const q="__smithy_context";var W,H;!function(e){e.PROFILE="profile",e.SSO_SESSION="sso-session",e.SERVICES="services"}(W||(W={})),function(e){e.HTTP_0_9="http/0.9",e.HTTP_1_0="http/1.0",e.TDS_8_0="tds/8.0"}(H||(H={}));class K{constructor(e){this.method=e.method||"GET",this.hostname=e.hostname||"localhost",this.port=e.port,this.query=e.query||{},this.headers=e.headers||{},this.body=e.body,this.protocol=e.protocol?":"!==e.protocol.slice(-1)?`${e.protocol}:`:e.protocol:"https:",this.path=e.path?"/"!==e.path.charAt(0)?`/${e.path}`:e.path:"/",this.username=e.username,this.password=e.password,this.fragment=e.fragment}static clone(e){const t=new K({...e,headers:{...e.headers}});var r;return t.query&&(t.query=(r=t.query,Object.keys(r).reduce(((e,t)=>{const n=r[t];return{...e,[t]:Array.isArray(n)?[...n]:n}}),{}))),t}static isInstance(e){if(!e)return!1;const t=e;return"method"in t&&"protocol"in t&&"hostname"in t&&"path"in t&&"object"==typeof t.query&&"object"==typeof t.headers}clone(){return K.clone(this)}}class V{constructor(e){this.statusCode=e.statusCode,this.reason=e.reason,this.headers=e.headers||{},this.body=e.body}static isInstance(e){if(!e)return!1;const t=e;return"number"==typeof t.statusCode&&"object"==typeof t.headers}}const Q={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0},G=e=>({applyToStack:t=>{t.add(function(e){return t=>async r=>{const{request:n}=r;return K.isInstance(n)&&n.body&&"node"===e.runtime&&"FetchHttpHandler"!==e.requestHandler?.constructor?.name&&(n.headers={...n.headers,Expect:"100-continue"}),t({...r,request:n})}}(e),Q)}}),J="WHEN_SUPPORTED",X=J,Y=J;var Z,ee;!function(e){e.MD5="MD5",e.CRC32="CRC32",e.CRC32C="CRC32C",e.SHA1="SHA1",e.SHA256="SHA256"}(Z||(Z={})),function(e){e.HEADER="header",e.TRAILER="trailer"}(ee||(ee={}));const te=Z.MD5,re=Z.CRC32;var ne;function ie(e,t,r){e.__aws_sdk_context?e.__aws_sdk_context.features||(e.__aws_sdk_context.features={}):e.__aws_sdk_context={features:{}},e.__aws_sdk_context.features[t]=r}!function(e){e.ENV="env",e.CONFIG="shared config entry"}(ne||(ne={}));const oe=e=>V.isInstance(e)?e.headers?.date??e.headers?.Date:void 0,se=e=>new Date(Date.now()+e),ae=(e,t)=>{const r=Date.parse(e);return((e,t)=>Math.abs(se(t).getTime()-e)>=3e5)(r,t)?r-Date.now():t},ce=(e,t)=>{if(!t)throw new Error(`Property \`${e}\` is not resolved for AWS SDK SigV4Auth`);return t},ue=async e=>{const t=ce("context",e.context),r=ce("config",e.config),n=t.endpointV2?.properties?.authSchemes?.[0],i=ce("signer",r.signer),o=await i(n),s=e?.signingRegion,a=e?.signingRegionSet,c=e?.signingName;return{config:r,signer:o,signingRegion:s,signingRegionSet:a,signingName:c}};class de{async sign(e,t,r){if(!K.isInstance(e))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const n=await ue(r),{config:i,signer:o}=n;let{signingRegion:s,signingName:a}=n;const c=r.context;if(c?.authSchemes?.length){const[e,t]=c.authSchemes;"sigv4a"===e?.name&&"sigv4"===t?.name&&(s=t?.signingRegion??s,a=t?.signingName??a)}return await o.sign(e,{signingDate:se(i.systemClockOffset),signingRegion:s,signingService:a})}errorHandler(e){return t=>{const r=t.ServerTime??oe(t.$response);if(r){const n=ce("config",e.config),i=n.systemClockOffset;n.systemClockOffset=ae(r,n.systemClockOffset);n.systemClockOffset!==i&&t.$metadata&&(t.$metadata.clockSkewCorrected=!0)}throw t}}successHandler(e,t){const r=oe(e);if(r){const e=ce("config",t.config);e.systemClockOffset=ae(r,e.systemClockOffset)}}}class le extends de{async sign(e,t,r){if(!K.isInstance(e))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const{config:n,signer:i,signingRegion:o,signingRegionSet:s,signingName:a}=await ue(r),c=(await(n.sigv4aSigningRegionSet?.())??s??[o]).join(",");return await i.sign(e,{signingDate:se(n.systemClockOffset),signingRegion:c,signingService:a})}}const he=e=>e[q]||(e[q]={}),fe=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t};const pe=(e,t)=>(r,n)=>async i=>{const o=e.httpAuthSchemeProvider(await t.httpAuthSchemeParametersProvider(e,n,i.input)),s=function(e){const t=new Map;for(const r of e)t.set(r.schemeId,r);return t}(e.httpAuthSchemes),a=he(n),c=[];for(const r of o){const i=s.get(r.schemeId);if(!i){c.push(`HttpAuthScheme \`${r.schemeId}\` was not enabled for this service.`);continue}const o=i.identityProvider(await t.identityProviderConfigProvider(e));if(!o){c.push(`HttpAuthScheme \`${r.schemeId}\` did not have an IdentityProvider configured.`);continue}const{identityProperties:u={},signingProperties:d={}}=r.propertiesExtractor?.(e,n)||{};r.identityProperties=Object.assign(r.identityProperties||{},u),r.signingProperties=Object.assign(r.signingProperties||{},d),a.selectedHttpAuthScheme={httpAuthOption:r,identity:await o(r.identityProperties),signer:i.signer};break}if(!a.selectedHttpAuthScheme)throw new Error(c.join("\n"));return r(i)},ge={step:"serialize",tags:["HTTP_AUTH_SCHEME"],name:"httpAuthSchemeMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"},me={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},ye={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function ve(e,t,r){return{applyToStack:n=>{n.add(((e,t)=>r=>async n=>{const{response:i}=await r(n);try{return{response:i,output:await t(i,e)}}catch(e){if(Object.defineProperty(e,"$response",{value:i}),!("$metadata"in e)){const t="Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.";e.message+="\n "+t,void 0!==e.$responseBodyText&&e.$response&&(e.$response.body=e.$responseBodyText)}throw e}})(e,r),me),n.add(((e,t)=>(r,n)=>async i=>{const o=n.endpointV2?.url&&e.urlParser?async()=>e.urlParser(n.endpointV2.url):e.endpoint;if(!o)throw new Error("No valid endpoint provider available.");const s=await t(i.input,{...e,endpoint:o});return r({...i,request:s})})(e,t),ye)}}}const be=e=>e=>{throw e},we=(e,t)=>{},ke={step:"finalizeRequest",tags:["HTTP_SIGNING"],name:"httpSigningMiddleware",aliases:["apiKeyMiddleware","tokenMiddleware","awsAuthMiddleware"],override:!0,relation:"after",toMiddleware:"retryMiddleware"},Se=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{if(!K.isInstance(r.request))return e(r);const n=he(t).selectedHttpAuthScheme;if(!n)throw new Error("No HttpAuthScheme was selected: unable to sign request");const{httpAuthOption:{signingProperties:i={}},identity:o,signer:s}=n,a=await e({...r,request:await s.sign(r.request,o,i)}).catch((s.errorHandler||be)(i));return(s.successHandler||we)(a.response,i),a}),ke)}}),Ee=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t},xe={},Te=new Array(64);for(let e=0,t="A".charCodeAt(0),r="Z".charCodeAt(0);e+t<=r;e++){const r=String.fromCharCode(e+t);xe[r]=e,Te[e]=r}for(let e=0,t="a".charCodeAt(0),r="z".charCodeAt(0);e+t<=r;e++){const r=String.fromCharCode(e+t),n=e+26;xe[r]=n,Te[n]=r}for(let e=0;e<10;e++){xe[e.toString(10)]=e+52;const t=e.toString(10),r=e+52;xe[t]=r,Te[r]=t}xe["+"]=62,Te[62]="+",xe["/"]=63,Te[63]="/";const Ae=e=>{let t=e.length/4*3;"=="===e.slice(-2)?t-=2:"="===e.slice(-1)&&t--;const r=new ArrayBuffer(t),n=new DataView(r);for(let t=0;t>=6;const o=t/4*3;r>>=i%8;const s=Math.floor(i/8);for(let e=0;e>t)}}return new Uint8Array(r)},Ce=e=>(new TextEncoder).encode(e),Re=e=>"string"==typeof e?Ce(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e),Oe=e=>{if("string"==typeof e)return e;if("object"!=typeof e||"number"!=typeof e.byteOffset||"number"!=typeof e.byteLength)throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return new TextDecoder("utf-8").decode(e)};function _e(e){let t;t="string"==typeof e?Ce(e):e;const r="object"==typeof t&&"number"==typeof t.length,n="object"==typeof t&&"number"==typeof t.byteOffset&&"number"==typeof t.byteLength;if(!r&&!n)throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");let i="";for(let e=0;e>t]}i+="==".slice(0,4-o)}return i}class Pe extends Uint8Array{static fromString(e,t="utf-8"){if("string"==typeof e)return function(e,t){return"base64"===t?Pe.mutate(Ae(e)):Pe.mutate(Ce(e))}(e,t);throw new Error(`Unsupported conversion from ${typeof e} to Uint8ArrayBlobAdapter.`)}static mutate(e){return Object.setPrototypeOf(e,Pe.prototype),e}transformToString(e="utf-8"){return function(e,t="utf-8"){return"base64"===t?_e(e):Oe(e)}(this,e)}}const Ie=(e,t)=>{const{base64Encoder:r,bodyLengthChecker:n,checksumAlgorithmFn:i,checksumLocationName:o,streamHasher:s}=t,a=void 0!==r&&void 0!==n&&void 0!==i&&void 0!==o&&void 0!==s,c=a?s(i,e):void 0,u=e.getReader();return new ReadableStream({async pull(e){const{value:t,done:i}=await u.read();if(i){if(e.enqueue("0\r\n"),a){const t=r(await c);e.enqueue(`${o}:${t}\r\n`),e.enqueue("\r\n")}e.close()}else e.enqueue(`${(n(t)||0).toString(16)}\r\n${t}\r\n`)}})},Me=e=>encodeURIComponent(e).replace(/[!'()*]/g,Ne),Ne=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`;function Fe(e,t){return new Request(e,t)}function $e(e=0){return new Promise(((t,r)=>{e&&setTimeout((()=>{const t=new Error(`Request did not complete within ${e} ms`);t.name="TimeoutError",r(t)}),e)}))}const Ue={supported:void 0};class Le{static create(e){return"function"==typeof e?.handle?e:new Le(e)}constructor(e){"function"==typeof e?this.configProvider=e().then((e=>e||{})):(this.config=e??{},this.configProvider=Promise.resolve(this.config)),void 0===Ue.supported&&(Ue.supported=Boolean("undefined"!=typeof Request&&"keepalive"in Fe("https://[::1]")))}destroy(){}async handle(e,{abortSignal:t}={}){this.config||(this.config=await this.configProvider);const r=this.config.requestTimeout,n=!0===this.config.keepAlive,i=this.config.credentials;if(t?.aborted){const e=new Error("Request aborted");return e.name="AbortError",Promise.reject(e)}let o=e.path;const s=function(e){const t=[];for(let r of Object.keys(e).sort()){const n=e[r];if(r=Me(r),Array.isArray(n))for(let e=0,i=n.length;e{};const p=Fe(d,h),g=[fetch(p).then((e=>{const t=e.headers,r={};for(const e of t.entries())r[e[0]]=e[1];return null!=e.body?{response:new V({headers:r,reason:e.statusText,statusCode:e.status,body:e.body})}:e.blob().then((t=>({response:new V({headers:r,reason:e.statusText,statusCode:e.status,body:t})})))})),$e(r)];return t&&g.push(new Promise(((e,r)=>{const n=()=>{const e=new Error("Request aborted");e.name="AbortError",r(e)};if("function"==typeof t.addEventListener){const e=t;e.addEventListener("abort",n,{once:!0}),f=()=>e.removeEventListener("abort",n)}else t.onabort=n}))),Promise.race(g).finally(f)}updateHttpClientConfig(e,t){this.config=void 0,this.configProvider=this.configProvider.then((r=>(r[e]=t,r)))}httpHandlerConfigs(){return this.config??{}}}const De=async e=>"function"==typeof Blob&&e instanceof Blob||"Blob"===e.constructor?.name?new Uint8Array(await e.arrayBuffer()):async function(e){const t=[],r=e.getReader();let n=!1,i=0;for(;!n;){const{done:e,value:o}=await r.read();o&&(t.push(o),i+=o.length),n=e}const o=new Uint8Array(i);let s=0;for(const e of t)o.set(e,s),s+=e.length;return o}(e);const Be={},ze={};for(let e=0;e<256;e++){let t=e.toString(16).toLowerCase();1===t.length&&(t=`0${t}`),Be[e]=t,ze[t]=e}function je(e){if(e.length%2!=0)throw new Error("Hex encoded strings must have an even number length");const t=new Uint8Array(e.length/2);for(let r=0;r"function"==typeof ReadableStream&&(e?.constructor?.name===ReadableStream.name||e instanceof ReadableStream),He="The stream has already been transformed.",Ke=e=>{if(!Ve(e)&&!We(e)){throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${e?.__proto__?.constructor?.name||e}`)}let t=!1;const r=async()=>{if(t)throw new Error(He);return t=!0,await De(e)};return Object.assign(e,{transformToByteArray:r,transformToString:async e=>{const t=await r();if("base64"===e)return _e(t);if("hex"===e)return qe(t);if(void 0===e||"utf8"===e||"utf-8"===e)return Oe(t);if("function"==typeof TextDecoder)return new TextDecoder(e).decode(t);throw new Error("TextDecoder is not available, please make sure polyfill is provided.")},transformToWebStream:()=>{if(t)throw new Error(He);if(t=!0,Ve(e))return(e=>{if("function"!=typeof e.stream)throw new Error("Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.\nIf you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body");return e.stream()})(e);if(We(e))return e;throw new Error(`Cannot transform payload to web stream, got ${e}`)}})},Ve=e=>"function"==typeof Blob&&e instanceof Blob;const Qe="function"==typeof ReadableStream?ReadableStream:function(){};class Ge extends Qe{}const Je=({expectedChecksum:e,checksum:t,source:r,checksumSourceLocation:n,base64Encoder:i})=>{if(!We(r))throw new Error(`@smithy/util-stream: unsupported source type ${r?.constructor?.name??r} in ChecksumStream.`);const o=i??_e;if("function"!=typeof TransformStream)throw new Error("@smithy/util-stream: unable to instantiate ChecksumStream because API unavailable: ReadableStream/TransformStream.");const s=new TransformStream({start(){},async transform(e,r){t.update(e),r.enqueue(e)},async flush(r){const i=await t.digest(),s=o(i);if(e!==s){const t=new Error(`Checksum mismatch: expected "${e}" but received "${s}" in response header "${n}".`);r.error(t)}else r.terminate()}});r.pipeThrough(s);const a=s.readable;return Object.setPrototypeOf(a,Ge.prototype),a},Xe=async(e=new Uint8Array,t)=>{if(e instanceof Uint8Array)return Pe.mutate(e);if(!e)return Pe.mutate(new Uint8Array);const r=t.streamCollector(e);return Pe.mutate(await r)};function Ye(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function Ze(e,t){return new et(e,t)}class et{constructor(e,t){this.input=e,this.context=t,this.query={},this.method="",this.headers={},this.path="",this.body=null,this.hostname="",this.resolvePathStack=[]}async build(){const{hostname:e,protocol:t="https",port:r,path:n}=await this.context.endpoint();this.path=n;for(const e of this.resolvePathStack)e(this.path);return new K({protocol:t,hostname:this.hostname||e,port:r,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(e){return this.hostname=e,this}bp(e){return this.resolvePathStack.push((t=>{this.path=`${t?.endsWith("/")?t.slice(0,-1):t||""}`+e})),this}p(e,t,r,n){return this.resolvePathStack.push((i=>{this.path=((e,t,r,n,i,o)=>{if(null==t||void 0===t[r])throw new Error("No value provided for input HTTP label: "+r+".");{const t=n();if(t.length<=0)throw new Error("Empty value provided for input HTTP label: "+r+".");e=e.replace(i,o?t.split("/").map((e=>Ye(e))).join("/"):Ye(t))}return e})(i,this.input,e,t,r,n)})),this}h(e){return this.headers=e,this}q(e){return this.query=e,this}b(e){return this.body=e,this}m(e){return this.method=e,this}}class tt{constructor(e){this.authSchemes=new Map;for(const[t,r]of Object.entries(e))void 0!==r&&this.authSchemes.set(t,r)}getIdentityProvider(e){return this.authSchemes.get(e)}}const rt=(nt=3e5,e=>it(e)&&e.expiration.getTime()-Date.now()void 0!==e.expiration,ot="X-Amz-Date",st="X-Amz-Signature",at="X-Amz-Security-Token",ct="authorization",ut=ot.toLowerCase(),dt=[ct,ut,"date"],lt=st.toLowerCase(),ht="x-amz-content-sha256",ft=at.toLowerCase(),pt={authorization:!0,"cache-control":!0,connection:!0,expect:!0,from:!0,"keep-alive":!0,"max-forwards":!0,pragma:!0,referer:!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0,"user-agent":!0,"x-amzn-trace-id":!0},gt=/^proxy-/,mt=/^sec-/,yt="AWS4-HMAC-SHA256",vt="AWS4-HMAC-SHA256-PAYLOAD",bt="aws4_request",wt={},kt=[],St=(e,t,r)=>`${e}/${t}/${r}/${bt}`,Et=(e,t,r)=>{const n=new e(t);return n.update(Re(r)),n.digest()},xt=({headers:e},t,r)=>{const n={};for(const i of Object.keys(e).sort()){if(null==e[i])continue;const o=i.toLowerCase();(o in pt||t?.has(o)||gt.test(o)||mt.test(o))&&(!r||r&&!r.has(o))||(n[o]=e[i].trim().replace(/\s+/g," "))}return n},Tt=e=>"function"==typeof ArrayBuffer&&e instanceof ArrayBuffer||"[object ArrayBuffer]"===Object.prototype.toString.call(e),At=async({headers:e,body:t},r)=>{for(const t of Object.keys(e))if(t.toLowerCase()===ht)return e[t];if(null==t)return"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";if("string"==typeof t||ArrayBuffer.isView(t)||Tt(t)){const e=new r;return e.update(Re(t)),qe(await e.digest())}return"UNSIGNED-PAYLOAD"};class Ct{format(e){const t=[];for(const r of Object.keys(e)){const n=Ce(r);t.push(Uint8Array.from([n.byteLength]),n,this.formatHeaderValue(e[r]))}const r=new Uint8Array(t.reduce(((e,t)=>e+t.byteLength),0));let n=0;for(const e of t)r.set(e,n),n+=e.byteLength;return r}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":const t=new DataView(new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case"integer":const r=new DataView(new ArrayBuffer(5));return r.setUint8(0,4),r.setInt32(1,e.value,!1),new Uint8Array(r.buffer);case"long":const n=new Uint8Array(9);return n[0]=5,n.set(e.value.bytes,1),n;case"binary":const i=new DataView(new ArrayBuffer(3+e.value.byteLength));i.setUint8(0,6),i.setUint16(1,e.value.byteLength,!1);const o=new Uint8Array(i.buffer);return o.set(e.value,3),o;case"string":const s=Ce(e.value),a=new DataView(new ArrayBuffer(3+s.byteLength));a.setUint8(0,7),a.setUint16(1,s.byteLength,!1);const c=new Uint8Array(a.buffer);return c.set(s,3),c;case"timestamp":const u=new Uint8Array(9);return u[0]=8,u.set(_t.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!Ot.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(je(e.value.replace(/\-/g,"")),1),d}}}var Rt;!function(e){e[e.boolTrue=0]="boolTrue",e[e.boolFalse=1]="boolFalse",e[e.byte=2]="byte",e[e.short=3]="short",e[e.integer=4]="integer",e[e.long=5]="long",e[e.byteArray=6]="byteArray",e[e.string=7]="string",e[e.timestamp=8]="timestamp",e[e.uuid=9]="uuid"}(Rt||(Rt={}));const Ot=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;class _t{constructor(e){if(this.bytes=e,8!==e.byteLength)throw new Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(e){if(e>0x8000000000000000||e<-0x8000000000000000)throw new Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);const t=new Uint8Array(8);for(let r=7,n=Math.abs(Math.round(e));r>-1&&n>0;r--,n/=256)t[r]=n;return e<0&&Pt(t),new _t(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&Pt(e),parseInt(qe(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function Pt(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}const It=e=>{e=K.clone(e);for(const t of Object.keys(e.headers))dt.indexOf(t.toLowerCase())>-1&&delete e.headers[t];return e},Mt=e=>"number"==typeof e?new Date(1e3*e):"string"==typeof e?Number(e)?new Date(1e3*Number(e)):new Date(e):e;class Nt{constructor({applyChecksum:e,credentials:t,region:r,service:n,sha256:i,uriEscapePath:o=!0}){this.headerFormatter=new Ct,this.service=n,this.sha256=i,this.uriEscapePath=o,this.applyChecksum="boolean"!=typeof e||e,this.regionProvider=fe(r),this.credentialProvider=fe(t)}async presign(e,t={}){const{signingDate:r=new Date,expiresIn:n=3600,unsignableHeaders:i,unhoistableHeaders:o,signableHeaders:s,hoistableHeaders:a,signingRegion:c,signingService:u}=t,d=await this.credentialProvider();this.validateResolvedCredentials(d);const l=c??await this.regionProvider(),{longDate:h,shortDate:f}=Ft(r);if(n>604800)return Promise.reject("Signature version 4 presigned URLs must have an expiration date less than one week in the future");const p=St(f,l,u??this.service),g=((e,t={})=>{const{headers:r,query:n={}}=K.clone(e);for(const e of Object.keys(r)){const i=e.toLowerCase();("x-amz-"===i.slice(0,6)&&!t.unhoistableHeaders?.has(i)||t.hoistableHeaders?.has(i))&&(n[e]=r[e],delete r[e])}return{...e,headers:r,query:n}})(It(e),{unhoistableHeaders:o,hoistableHeaders:a});d.sessionToken&&(g.query[at]=d.sessionToken),g.query["X-Amz-Algorithm"]=yt,g.query["X-Amz-Credential"]=`${d.accessKeyId}/${p}`,g.query[ot]=h,g.query["X-Amz-Expires"]=n.toString(10);const m=xt(g,i,s);return g.query["X-Amz-SignedHeaders"]=$t(m),g.query[st]=await this.getSignature(h,p,this.getSigningKey(d,l,f,u),this.createCanonicalRequest(g,m,await At(e,this.sha256))),g}async sign(e,t){return"string"==typeof e?this.signString(e,t):e.headers&&e.payload?this.signEvent(e,t):e.message?this.signMessage(e,t):this.signRequest(e,t)}async signEvent({headers:e,payload:t},{signingDate:r=new Date,priorSignature:n,signingRegion:i,signingService:o}){const s=i??await this.regionProvider(),{shortDate:a,longDate:c}=Ft(r),u=St(a,s,o??this.service),d=await At({headers:{},body:t},this.sha256),l=new this.sha256;l.update(e);const h=qe(await l.digest()),f=[vt,c,u,n,h,d].join("\n");return this.signString(f,{signingDate:r,signingRegion:s,signingService:o})}async signMessage(e,{signingDate:t=new Date,signingRegion:r,signingService:n}){return this.signEvent({headers:this.headerFormatter.format(e.message.headers),payload:e.message.body},{signingDate:t,signingRegion:r,signingService:n,priorSignature:e.priorSignature}).then((t=>({message:e.message,signature:t})))}async signString(e,{signingDate:t=new Date,signingRegion:r,signingService:n}={}){const i=await this.credentialProvider();this.validateResolvedCredentials(i);const o=r??await this.regionProvider(),{shortDate:s}=Ft(t),a=new this.sha256(await this.getSigningKey(i,o,s,n));return a.update(Re(e)),qe(await a.digest())}async signRequest(e,{signingDate:t=new Date,signableHeaders:r,unsignableHeaders:n,signingRegion:i,signingService:o}={}){const s=await this.credentialProvider();this.validateResolvedCredentials(s);const a=i??await this.regionProvider(),c=It(e),{longDate:u,shortDate:d}=Ft(t),l=St(d,a,o??this.service);c.headers[ut]=u,s.sessionToken&&(c.headers[ft]=s.sessionToken);const h=await At(c,this.sha256);!((e,t)=>{e=e.toLowerCase();for(const r of Object.keys(t))if(e===r.toLowerCase())return!0;return!1})(ht,c.headers)&&this.applyChecksum&&(c.headers[ht]=h);const f=xt(c,n,r),p=await this.getSignature(u,l,this.getSigningKey(s,a,d,o),this.createCanonicalRequest(c,f,h));return c.headers[ct]=`${yt} Credential=${s.accessKeyId}/${l}, SignedHeaders=${$t(f)}, Signature=${p}`,c}createCanonicalRequest(e,t,r){const n=Object.keys(t).sort();return`${e.method}\n${this.getCanonicalPath(e)}\n${(({query:e={}})=>{const t=[],r={};for(const n of Object.keys(e)){if(n.toLowerCase()===lt)continue;const i=Me(n);t.push(i);const o=e[n];"string"==typeof o?r[i]=`${i}=${Me(o)}`:Array.isArray(o)&&(r[i]=o.slice(0).reduce(((e,t)=>e.concat([`${i}=${Me(t)}`])),[]).sort().join("&"))}return t.sort().map((e=>r[e])).filter((e=>e)).join("&")})(e)}\n${n.map((e=>`${e}:${t[e]}`)).join("\n")}\n\n${n.join(";")}\n${r}`}async createStringToSign(e,t,r){const n=new this.sha256;n.update(Re(r));const i=await n.digest();return`${yt}\n${e}\n${t}\n${qe(i)}`}getCanonicalPath({path:e}){if(this.uriEscapePath){const t=[];for(const r of e.split("/"))0!==r?.length&&"."!==r&&(".."===r?t.pop():t.push(r));const r=`${e?.startsWith("/")?"/":""}${t.join("/")}${t.length>0&&e?.endsWith("/")?"/":""}`;return Me(r).replace(/%2F/g,"/")}return e}async getSignature(e,t,r,n){const i=await this.createStringToSign(e,t,n),o=new this.sha256(await r);return o.update(Re(i)),qe(await o.digest())}getSigningKey(e,t,r,n){return(async(e,t,r,n,i)=>{const o=`${r}:${n}:${i}:${qe(await Et(e,t.secretAccessKey,t.accessKeyId))}:${t.sessionToken}`;if(o in wt)return wt[o];for(kt.push(o);kt.length>50;)delete wt[kt.shift()];let s=`AWS4${t.secretAccessKey}`;for(const t of[r,n,i,bt])s=await Et(e,s,t);return wt[o]=s})(this.sha256,e,r,t,n||this.service)}validateResolvedCredentials(e){if("object"!=typeof e||"string"!=typeof e.accessKeyId||"string"!=typeof e.secretAccessKey)throw new Error("Resolved credential object is not valid")}}const Ft=e=>{const t=(r=e,Mt(r).toISOString().replace(/\.\d{3}Z$/,"Z")).replace(/[\-:]/g,"");var r;return{longDate:t,shortDate:t.slice(0,8)}},$t=e=>Object.keys(e).sort().join(";"),Ut=e=>{let t,r=!1;e.credentials&&(r=!0,t=((e,t,r)=>{if(void 0===e)return;const n="function"!=typeof e?async()=>Promise.resolve(e):e;let i,o,s,a=!1;const c=async e=>{o||(o=n(e));try{i=await o,s=!0,a=!1}finally{o=void 0}return i};return void 0===t?async e=>(s&&!e?.forceRefresh||(i=await c(e)),i):async e=>(s&&!e?.forceRefresh||(i=await c(e)),a?i:r(i)?t(i)?(await c(e),i):i:(a=!0,i))})(e.credentials,rt,it)),t||(t=e.credentialDefaultProvider?Ee(e.credentialDefaultProvider(Object.assign({},e,{parentClientConfig:e}))):async()=>{throw new Error("`credentials` is missing")});const{signingEscapePath:n=!0,systemClockOffset:i=e.systemClockOffset||0,sha256:o}=e;let s;return s=e.signer?Ee(e.signer):e.regionInfoProvider?()=>Ee(e.region)().then((async t=>[await e.regionInfoProvider(t,{useFipsEndpoint:await e.useFipsEndpoint(),useDualstackEndpoint:await e.useDualstackEndpoint()})||{},t])).then((([r,i])=>{const{signingRegion:s,signingService:a}=r;e.signingRegion=e.signingRegion||s||i,e.signingName=e.signingName||a||e.serviceId;const c={...e,credentials:t,region:e.signingRegion,service:e.signingName,sha256:o,uriEscapePath:n};return new(e.signerConstructor||Nt)(c)})):async r=>{const i=(r=Object.assign({},{name:"sigv4",signingName:e.signingName||e.defaultSigningName,signingRegion:await Ee(e.region)(),properties:{}},r)).signingRegion,s=r.signingName;e.signingRegion=e.signingRegion||i,e.signingName=e.signingName||s||e.serviceId;const a={...e,credentials:t,region:e.signingRegion,service:e.signingName,sha256:o,uriEscapePath:n};return new(e.signerConstructor||Nt)(a)},{...e,systemClockOffset:i,signingEscapePath:n,credentials:r?async()=>t().then((e=>{return r="CREDENTIALS_CODE",n="e",(t=e).$source||(t.$source={}),t.$source[r]=n,t;var t,r,n})):t,signer:s}},Lt=(e,t)=>{const r=[];if(e&&r.push(e),t)for(const e of t)r.push(e);return r},Dt=(e,t)=>`${e||"anonymous"}${t&&t.length>0?` (a.k.a. ${t.join(",")})`:""}`,Bt=()=>{let e=[],t=[],r=!1;const n=new Set,i=r=>(e.forEach((e=>{r.add(e.middleware,{...e})})),t.forEach((e=>{r.addRelativeTo(e.middleware,{...e})})),r.identifyOnResolve?.(a.identifyOnResolve()),r),o=e=>{const t=[];return e.before.forEach((e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...o(e))})),t.push(e),e.after.reverse().forEach((e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...o(e))})),t},s=(r=!1)=>{const n=[],i=[],s={};e.forEach((e=>{const t={...e,before:[],after:[]};for(const e of Lt(t.name,t.aliases))s[e]=t;n.push(t)})),t.forEach((e=>{const t={...e,before:[],after:[]};for(const e of Lt(t.name,t.aliases))s[e]=t;i.push(t)})),i.forEach((e=>{if(e.toMiddleware){const t=s[e.toMiddleware];if(void 0===t){if(r)return;throw new Error(`${e.toMiddleware} is not found when adding ${Dt(e.name,e.aliases)} middleware ${e.relation} ${e.toMiddleware}`)}"after"===e.relation&&t.after.push(e),"before"===e.relation&&t.before.push(e)}}));const a=(c=n,c.sort(((e,t)=>zt[t.step]-zt[e.step]||jt[t.priority||"normal"]-jt[e.priority||"normal"]))).map(o).reduce(((e,t)=>(e.push(...t),e)),[]);var c;return a},a={add:(t,r={})=>{const{name:i,override:o,aliases:s}=r,a={step:"initialize",priority:"normal",middleware:t,...r},c=Lt(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Dt(i,s)}'`);for(const t of c){const r=e.findIndex((e=>e.name===t||e.aliases?.some((e=>e===t))));if(-1===r)continue;const n=e[r];if(n.step!==a.step||a.priority!==n.priority)throw new Error(`"${Dt(n.name,n.aliases)}" middleware with ${n.priority} priority in ${n.step} step cannot be overridden by "${Dt(i,s)}" middleware with ${a.priority} priority in ${a.step} step.`);e.splice(r,1)}}for(const e of c)n.add(e)}e.push(a)},addRelativeTo:(e,r)=>{const{name:i,override:o,aliases:s}=r,a={middleware:e,...r},c=Lt(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Dt(i,s)}'`);for(const e of c){const r=t.findIndex((t=>t.name===e||t.aliases?.some((t=>t===e))));if(-1===r)continue;const n=t[r];if(n.toMiddleware!==a.toMiddleware||n.relation!==a.relation)throw new Error(`"${Dt(n.name,n.aliases)}" middleware ${n.relation} "${n.toMiddleware}" middleware cannot be overridden by "${Dt(i,s)}" middleware ${a.relation} "${a.toMiddleware}" middleware.`);t.splice(r,1)}}for(const e of c)n.add(e)}t.push(a)},clone:()=>i(Bt()),use:e=>{e.applyToStack(a)},remove:r=>"string"==typeof r?(r=>{let i=!1;const o=e=>{const t=Lt(e.name,e.aliases);if(t.includes(r)){i=!0;for(const e of t)n.delete(e);return!1}return!0};return e=e.filter(o),t=t.filter(o),i})(r):(r=>{let i=!1;const o=e=>{if(e.middleware===r){i=!0;for(const t of Lt(e.name,e.aliases))n.delete(t);return!1}return!0};return e=e.filter(o),t=t.filter(o),i})(r),removeByTag:r=>{let i=!1;const o=e=>{const{tags:t,name:o,aliases:s}=e;if(t&&t.includes(r)){const e=Lt(o,s);for(const t of e)n.delete(t);return i=!0,!1}return!0};return e=e.filter(o),t=t.filter(o),i},concat:e=>{const t=i(Bt());return t.use(e),t.identifyOnResolve(r||t.identifyOnResolve()||(e.identifyOnResolve?.()??!1)),t},applyToStack:i,identify:()=>s(!0).map((e=>{const t=e.step??e.relation+" "+e.toMiddleware;return Dt(e.name,e.aliases)+" - "+t})),identifyOnResolve:e=>("boolean"==typeof e&&(r=e),r),resolve:(e,t)=>{for(const r of s().map((e=>e.middleware)).reverse())e=r(e,t);return r&&console.log(a.identify()),e}};return a},zt={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},jt={high:3,normal:2,low:1};class qt{constructor(e){this.config=e,this.middlewareStack=Bt()}send(e,t,r){const n="function"!=typeof t?t:void 0,i="function"==typeof t?t:r;let o;if(void 0===n&&!0===this.config.cacheMiddleware){this.handlers||(this.handlers=new WeakMap);const t=this.handlers;t.has(e.constructor)?o=t.get(e.constructor):(o=e.resolveMiddleware(this.middlewareStack,this.config,n),t.set(e.constructor,o))}else delete this.handlers,o=e.resolveMiddleware(this.middlewareStack,this.config,n);if(!i)return o(e).then((e=>e.output));o(e).then((e=>i(null,e.output)),(e=>i(e))).catch((()=>{}))}destroy(){this.config?.requestHandler?.destroy?.(),delete this.handlers}}class Wt{constructor(){this.middlewareStack=Bt()}static classBuilder(){return new Ht}resolveMiddlewareWithContext(e,t,r,{middlewareFn:n,clientName:i,commandName:o,inputFilterSensitiveLog:s,outputFilterSensitiveLog:a,smithyContext:c,additionalContext:u,CommandCtor:d}){for(const i of n.bind(this)(d,e,t,r))this.middlewareStack.use(i);const l=e.concat(this.middlewareStack),{logger:h}=t,f={logger:h,clientName:i,commandName:o,inputFilterSensitiveLog:s,outputFilterSensitiveLog:a,[q]:{commandInstance:this,...c},...u},{requestHandler:p}=t;return l.resolve((e=>p.handle(e.request,r||{})),f)}}class Ht{constructor(){this._init=()=>{},this._ep={},this._middlewareFn=()=>[],this._commandName="",this._clientName="",this._additionalContext={},this._smithyContext={},this._inputFilterSensitiveLog=e=>e,this._outputFilterSensitiveLog=e=>e,this._serializer=null,this._deserializer=null}init(e){this._init=e}ep(e){return this._ep=e,this}m(e){return this._middlewareFn=e,this}s(e,t,r={}){return this._smithyContext={service:e,operation:t,...r},this}c(e={}){return this._additionalContext=e,this}n(e,t){return this._clientName=e,this._commandName=t,this}f(e=e=>e,t=e=>e){return this._inputFilterSensitiveLog=e,this._outputFilterSensitiveLog=t,this}ser(e){return this._serializer=e,this}de(e){return this._deserializer=e,this}build(){const e=this;let t;return t=class extends Wt{static getEndpointParameterInstructions(){return e._ep}constructor(...[t]){super(),this.serialize=e._serializer,this.deserialize=e._deserializer,this.input=t??{},e._init(this)}resolveMiddleware(r,n,i){return this.resolveMiddlewareWithContext(r,n,i,{CommandCtor:t,middlewareFn:e._middlewareFn,clientName:e._clientName,commandName:e._commandName,inputFilterSensitiveLog:e._inputFilterSensitiveLog,outputFilterSensitiveLog:e._outputFilterSensitiveLog,smithyContext:e._smithyContext,additionalContext:e._additionalContext})}}}}const Kt="***SensitiveInformation***",Vt=e=>{switch(e){case"true":return!0;case"false":return!1;default:throw new Error(`Unable to parse boolean value "${e}"`)}},Qt=Math.ceil(2**127*(2-2**-23)),Gt=e=>{const t=(e=>{if(null!=e){if("string"==typeof e){const t=parseFloat(e);if(!Number.isNaN(t))return String(t)!==String(e)&&lr.warn(dr(`Expected number but observed string: ${e}`)),t}if("number"==typeof e)return e;throw new TypeError(`Expected number, got ${typeof e}: ${e}`)}})(e);if(void 0!==t&&!Number.isNaN(t)&&t!==1/0&&t!==-1/0&&Math.abs(t)>Qt)throw new TypeError(`Expected 32-bit float, got ${e}`);return t},Jt=e=>{if(null!=e){if(Number.isInteger(e)&&!Number.isNaN(e))return e;throw new TypeError(`Expected integer, got ${typeof e}: ${e}`)}},Xt=e=>er(e,32),Yt=e=>er(e,16),Zt=e=>er(e,8),er=(e,t)=>{const r=Jt(e);if(void 0!==r&&tr(r,t)!==r)throw new TypeError(`Expected ${t}-bit integer, got ${e}`);return r},tr=(e,t)=>{switch(t){case 32:return Int32Array.of(e)[0];case 16:return Int16Array.of(e)[0];case 8:return Int8Array.of(e)[0]}},rr=(e,t)=>{if(null==e){if(t)throw new TypeError(`Expected a non-null value for ${t}`);throw new TypeError("Expected a non-null value")}return e},nr=e=>{if(null==e)return;if("object"==typeof e&&!Array.isArray(e))return e;const t=Array.isArray(e)?"array":typeof e;throw new TypeError(`Expected object, got ${t}: ${e}`)},ir=e=>{if(null!=e){if("string"==typeof e)return e;if(["boolean","number","bigint"].includes(typeof e))return lr.warn(dr(`Expected string, got ${typeof e}: ${e}`)),String(e);throw new TypeError(`Expected string, got ${typeof e}: ${e}`)}},or=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,sr=e=>{const t=e.match(or);if(null===t||t[0].length!==e.length)throw new TypeError("Expected real number, got implicit NaN");return parseFloat(e)},ar=e=>Jt("string"==typeof e?sr(e):e),cr=e=>Xt("string"==typeof e?sr(e):e),ur=e=>Yt("string"==typeof e?sr(e):e),dr=e=>String(new TypeError(e).stack||e).split("\n").slice(0,5).filter((e=>!e.includes("stackTraceWarning"))).join("\n"),lr={warn:console.warn},hr=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],fr=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function pr(e){const t=e.getUTCFullYear(),r=e.getUTCMonth(),n=e.getUTCDay(),i=e.getUTCDate(),o=e.getUTCHours(),s=e.getUTCMinutes(),a=e.getUTCSeconds(),c=o<10?`0${o}`:`${o}`,u=s<10?`0${s}`:`${s}`,d=a<10?`0${a}`:`${a}`;return`${hr[n]}, ${i<10?`0${i}`:`${i}`} ${fr[r]} ${t} ${c}:${u}:${d} GMT`}const gr=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/),mr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-3339 date-times must be expressed as strings");const t=gr.exec(e);if(!t)throw new TypeError("Invalid RFC-3339 date-time value");const[r,n,i,o,s,a,c,u,d]=t,l=ur(Pr(n)),h=Rr(i,"month",1,12),f=Rr(o,"day",1,31),p=kr(l,h,f,{hours:s,minutes:a,seconds:c,fractionalMilliseconds:u});return"Z"!=d.toUpperCase()&&p.setTime(p.getTime()-_r(d)),p},yr=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),vr=new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),br=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/),wr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-7231 date-times must be expressed as strings");let t=yr.exec(e);if(t){const[e,r,n,i,o,s,a,c]=t;return kr(ur(Pr(i)),xr(n),Rr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c})}if(t=vr.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return Er(kr(Sr(i),xr(n),Rr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c}))}if(t=br.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return kr(ur(Pr(c)),xr(r),Rr(n.trimLeft(),"day",1,31),{hours:i,minutes:o,seconds:s,fractionalMilliseconds:a})}throw new TypeError("Invalid RFC-7231 date-time value")},kr=(e,t,r,n)=>{const i=t-1;return Ar(e,i,r),new Date(Date.UTC(e,i,r,Rr(n.hours,"hour",0,23),Rr(n.minutes,"minute",0,59),Rr(n.seconds,"seconds",0,60),Or(n.fractionalMilliseconds)))},Sr=e=>{const t=(new Date).getUTCFullYear(),r=100*Math.floor(t/100)+ur(Pr(e));return re.getTime()-(new Date).getTime()>15768e8?new Date(Date.UTC(e.getUTCFullYear()-100,e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds())):e,xr=e=>{const t=fr.indexOf(e);if(t<0)throw new TypeError(`Invalid month: ${e}`);return t+1},Tr=[31,28,31,30,31,30,31,31,30,31,30,31],Ar=(e,t,r)=>{let n=Tr[t];if(1===t&&Cr(e)&&(n=29),r>n)throw new TypeError(`Invalid day for ${fr[t]} in ${e}: ${r}`)},Cr=e=>e%4==0&&(e%100!=0||e%400==0),Rr=(e,t,r,n)=>{const i=(e=>Zt("string"==typeof e?sr(e):e))(Pr(e));if(in)throw new TypeError(`${t} must be between ${r} and ${n}, inclusive`);return i},Or=e=>null==e?0:1e3*(e=>Gt("string"==typeof e?sr(e):e))("0."+e),_r=e=>{const t=e[0];let r=1;if("+"==t)r=1;else{if("-"!=t)throw new TypeError(`Offset direction, ${t}, must be "+" or "-"`);r=-1}return r*(60*Number(e.substring(1,3))+Number(e.substring(4,6)))*60*1e3},Pr=e=>{let t=0;for(;t{Object.entries(t).filter((([,e])=>void 0!==e)).forEach((([t,r])=>{null!=e[t]&&""!==e[t]||(e[t]=r)}));const r=e.message||e.Message||"UnknownError";return e.message=r,delete e.Message,e},Nr=e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}),Fr=e=>{switch(e){case"standard":case"cross-region":return{retryMode:"standard",connectionTimeout:3100};case"in-region":return{retryMode:"standard",connectionTimeout:1100};case"mobile":return{retryMode:"standard",connectionTimeout:3e4};default:return{}}},$r=e=>{const t=[];for(const r in z){const n=z[r];void 0!==e[n]&&t.push({algorithmId:()=>n,checksumConstructor:()=>e[n]})}return{_checksumAlgorithms:t,addChecksumAlgorithm(e){this._checksumAlgorithms.push(e)},checksumAlgorithms(){return this._checksumAlgorithms}}},Ur=e=>{const t={};return e.checksumAlgorithms().forEach((e=>{t[e.algorithmId()]=e.checksumConstructor()})),t},Lr=e=>{let t=e.retryStrategy;return{setRetryStrategy(e){t=e},retryStrategy:()=>t}},Dr=e=>{const t={};return t.retryStrategy=e.retryStrategy(),t},Br=e=>({...$r(e),...Lr(e)}),zr=e=>({...Ur(e),...Dr(e)}),jr=e=>Array.isArray(e)?e:[e],qr=e=>{const t="#text";for(const r in e)e.hasOwnProperty(r)&&void 0!==e[r][t]?e[r]=e[r][t]:"object"==typeof e[r]&&null!==e[r]&&(e[r]=qr(e[r]));return e},Wr=e=>null!=e,Hr=function(){const e=Object.getPrototypeOf(this).constructor,t=new(Function.bind.apply(String,[null,...arguments]));return Object.setPrototypeOf(t,e.prototype),t};Hr.prototype=Object.create(String.prototype,{constructor:{value:Hr,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf(Hr,String);class Kr{trace(){}debug(){}info(){}warn(){}error(){}}function Vr(e,t,r){let n,i,o;if(void 0===t&&void 0===r)n={},o=e;else{if(n=e,"function"==typeof t)return i=t,o=r,Qr(n,i,o);o=t}for(const e of Object.keys(o))Array.isArray(o[e])?Gr(n,null,o,e):n[e]=o[e];return n}const Qr=(e,t,r)=>Vr(e,Object.entries(r).reduce(((e,[r,n])=>(Array.isArray(n)?e[r]=n:e[r]="function"==typeof n?[t,n()]:[t,n],e)),{})),Gr=(e,t,r,n)=>{if(null!==t){let i=r[n];"function"==typeof i&&(i=[,i]);const[o=Jr,s=Xr,a=n]=i;return void(("function"==typeof o&&o(t[a])||"function"!=typeof o&&o)&&(e[n]=s(t[a])))}let[i,o]=r[n];if("function"==typeof o){let t;const r=void 0===i&&null!=(t=o()),s="function"==typeof i&&!!i(void 0)||"function"!=typeof i&&!!i;r?e[n]=t:s&&(e[n]=o())}else{const t=void 0===i&&null!=o,r="function"==typeof i&&!!i(o)||"function"!=typeof i&&!!i;(t||r)&&(e[n]=o)}},Jr=e=>null!=e,Xr=e=>e;function Yr(e){return(e.includes(",")||e.includes('"'))&&(e=`"${e.replace(/"/g,'\\"')}"`),e}function Zr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var en={},tn={};!function(e){const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+t+"]["+(t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040")+"]*",n=new RegExp("^"+r+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,r){if(t){const n=Object.keys(t),i=n.length;for(let o=0;o5&&"xml"===n)return pn("InvalidXml","XML declaration allowed only at the start of the document.",mn(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function an(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let r=1;for(t+=8;t"===e[t]&&(r--,0===r))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t"===e[t+2]){t+=2;break}return t}en.validate=function(e,t){t=Object.assign({},nn,t);const r=[];let n=!1,i=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(let s=0;s"!==e[s]&&" "!==e[s]&&"\t"!==e[s]&&"\n"!==e[s]&&"\r"!==e[s];s++)u+=e[s];if(u=u.trim(),"/"===u[u.length-1]&&(u=u.substring(0,u.length-1),s--),o=u,!rn.isName(o)){let t;return t=0===u.trim().length?"Invalid space after '<'.":"Tag '"+u+"' is an invalid name.",pn("InvalidTag",t,mn(e,s))}const d=dn(e,s);if(!1===d)return pn("InvalidAttr","Attributes for '"+u+"' have open quote.",mn(e,s));let l=d.value;if(s=d.index,"/"===l[l.length-1]){const r=s-l.length;l=l.substring(0,l.length-1);const i=hn(l,t);if(!0!==i)return pn(i.err.code,i.err.msg,mn(e,r+i.err.line));n=!0}else if(c){if(!d.tagClosed)return pn("InvalidTag","Closing tag '"+u+"' doesn't have proper closing.",mn(e,s));if(l.trim().length>0)return pn("InvalidTag","Closing tag '"+u+"' can't have attributes or invalid starting.",mn(e,a));if(0===r.length)return pn("InvalidTag","Closing tag '"+u+"' has not been opened.",mn(e,a));{const t=r.pop();if(u!==t.tagName){let r=mn(e,t.tagStartPos);return pn("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+u+"'.",mn(e,a))}0==r.length&&(i=!0)}}else{const o=hn(l,t);if(!0!==o)return pn(o.err.code,o.err.msg,mn(e,s-l.length+o.err.line));if(!0===i)return pn("InvalidXml","Multiple possible root nodes found.",mn(e,s));-1!==t.unpairedTags.indexOf(u)||r.push({tagName:u,tagStartPos:a}),n=!0}for(s++;s0)||pn("InvalidXml","Invalid '"+JSON.stringify(r.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):pn("InvalidXml","Start tag expected.",1)};const cn='"',un="'";function dn(e,t){let r="",n="",i=!1;for(;t"===e[t]&&""===n){i=!0;break}r+=e[t]}return""===n&&{value:r,index:t,tagClosed:i}}const ln=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function hn(e,t){const r=rn.getAllMatches(e,ln),n={};for(let e=0;e!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,r){return e}};vn.buildOptions=function(e){return Object.assign({},bn,e)},vn.defaultOptions=bn;const wn=tn;function kn(e,t){let r="";for(;t"===e[t]){if(o?"-"===e[t-1]&&"-"===e[t-2]&&(o=!1,n--):n--,0===n)break}else"["===e[t]?i=!0:s+=e[t];else{if(i&&En(e,t))t+=7,[entityName,val,t]=kn(e,t+1),-1===val.indexOf("&")&&(r[Cn(entityName)]={regx:RegExp(`&${entityName};`,"g"),val:val});else if(i&&xn(e,t))t+=8;else if(i&&Tn(e,t))t+=8;else if(i&&An(e,t))t+=9;else{if(!Sn)throw new Error("Invalid DOCTYPE");o=!0}n++,s=""}if(0!==n)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:t}};const On=/^[-+]?0x[a-fA-F0-9]+$/,_n=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,Pn={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};const In=tn,Mn=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}},Nn=Rn,Fn=function(e,t={}){if(t=Object.assign({},Pn,t),!e||"string"!=typeof e)return e;let r=e.trim();if(void 0!==t.skipLike&&t.skipLike.test(r))return e;if("0"===e)return 0;if(t.hex&&On.test(r))return function(e,t){if(parseInt)return parseInt(e,t);if(Number.parseInt)return Number.parseInt(e,t);if(window&&window.parseInt)return window.parseInt(e,t);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r,16);if(-1!==r.search(/[eE]/)){const n=r.match(/^([-\+])?(0*)([0-9]*(\.[0-9]*)?[eE][-\+]?[0-9]+)$/);if(n){if(t.leadingZeros)r=(n[1]||"")+n[3];else if("0"!==n[2]||"."!==n[3][0])return e;return t.eNotation?Number(r):e}return e}{const n=_n.exec(r);if(n){const i=n[1],o=n[2];let s=function(e){if(e&&-1!==e.indexOf("."))return"."===(e=e.replace(/0+$/,""))?e="0":"."===e[0]?e="0"+e:"."===e[e.length-1]&&(e=e.substr(0,e.length-1)),e;return e}(n[3]);if(!t.leadingZeros&&o.length>0&&i&&"."!==r[2])return e;if(!t.leadingZeros&&o.length>0&&!i&&"."!==r[1])return e;if(t.leadingZeros&&o===e)return 0;{const n=Number(r),a=""+n;return-1!==a.search(/[eE]/)?t.eNotation?n:e:-1!==r.indexOf(".")?"0"===a&&""===s||a===s||i&&a==="-"+s?n:e:o?s===a||i+s===a?n:e:r===a||r===i+a?n:e}}return e}};function $n(e){const t=Object.keys(e);for(let r=0;r0)){s||(e=this.replaceEntitiesValue(e));const n=this.options.tagValueProcessor(t,e,r,i,o);if(null==n)return e;if(typeof n!=typeof e||n!==e)return n;if(this.options.trimValues)return Gn(e,this.options.parseTagValue,this.options.numberParseOptions);return e.trim()===e?Gn(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function Ln(e){if(this.options.removeNSPrefix){const t=e.split(":"),r="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=r+t[1])}return e}const Dn=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function Bn(e,t,r){if(!this.options.ignoreAttributes&&"string"==typeof e){const r=In.getAllMatches(e,Dn),n=r.length,i={};for(let e=0;e",o,"Closing Tag is not closed.");let s=e.substring(o+2,t).trim();if(this.options.removeNSPrefix){const e=s.indexOf(":");-1!==e&&(s=s.substr(e+1))}this.options.transformTagName&&(s=this.options.transformTagName(s)),r&&(n=this.saveTextToParentTag(n,r,i));const a=i.substring(i.lastIndexOf(".")+1);if(s&&-1!==this.options.unpairedTags.indexOf(s))throw new Error(`Unpaired tag can not be used as closing tag: `);let c=0;a&&-1!==this.options.unpairedTags.indexOf(a)?(c=i.lastIndexOf(".",i.lastIndexOf(".")-1),this.tagsNodeStack.pop()):c=i.lastIndexOf("."),i=i.substring(0,c),r=this.tagsNodeStack.pop(),n="",o=t}else if("?"===e[o+1]){let t=Vn(e,o,!1,"?>");if(!t)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,i),this.options.ignoreDeclaration&&"?xml"===t.tagName||this.options.ignorePiTags);else{const e=new Mn(t.tagName);e.add(this.options.textNodeName,""),t.tagName!==t.tagExp&&t.attrExpPresent&&(e[":@"]=this.buildAttributesMap(t.tagExp,i,t.tagName)),this.addChild(r,e,i)}o=t.closeIndex+1}else if("!--"===e.substr(o+1,3)){const t=Kn(e,"--\x3e",o+4,"Comment is not closed.");if(this.options.commentPropName){const s=e.substring(o+4,t-2);n=this.saveTextToParentTag(n,r,i),r.add(this.options.commentPropName,[{[this.options.textNodeName]:s}])}o=t}else if("!D"===e.substr(o+1,2)){const t=Nn(e,o);this.docTypeEntities=t.entities,o=t.i}else if("!["===e.substr(o+1,2)){const t=Kn(e,"]]>",o,"CDATA is not closed.")-2,s=e.substring(o+9,t);n=this.saveTextToParentTag(n,r,i);let a=this.parseTextData(s,r.tagname,i,!0,!1,!0,!0);null==a&&(a=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[{[this.options.textNodeName]:s}]):r.add(this.options.textNodeName,a),o=t+2}else{let s=Vn(e,o,this.options.removeNSPrefix),a=s.tagName;const c=s.rawTagName;let u=s.tagExp,d=s.attrExpPresent,l=s.closeIndex;this.options.transformTagName&&(a=this.options.transformTagName(a)),r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,i,!1));const h=r;if(h&&-1!==this.options.unpairedTags.indexOf(h.tagname)&&(r=this.tagsNodeStack.pop(),i=i.substring(0,i.lastIndexOf("."))),a!==t.tagname&&(i+=i?"."+a:a),this.isItStopNode(this.options.stopNodes,i,a)){let t="";if(u.length>0&&u.lastIndexOf("/")===u.length-1)"/"===a[a.length-1]?(a=a.substr(0,a.length-1),i=i.substr(0,i.length-1),u=a):u=u.substr(0,u.length-1),o=s.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(a))o=s.closeIndex;else{const r=this.readStopNodeData(e,c,l+1);if(!r)throw new Error(`Unexpected end of ${c}`);o=r.i,t=r.tagContent}const n=new Mn(a);a!==u&&d&&(n[":@"]=this.buildAttributesMap(u,i,a)),t&&(t=this.parseTextData(t,a,i,!0,d,!0,!0)),i=i.substr(0,i.lastIndexOf(".")),n.add(this.options.textNodeName,t),this.addChild(r,n,i)}else{if(u.length>0&&u.lastIndexOf("/")===u.length-1){"/"===a[a.length-1]?(a=a.substr(0,a.length-1),i=i.substr(0,i.length-1),u=a):u=u.substr(0,u.length-1),this.options.transformTagName&&(a=this.options.transformTagName(a));const e=new Mn(a);a!==u&&d&&(e[":@"]=this.buildAttributesMap(u,i,a)),this.addChild(r,e,i),i=i.substr(0,i.lastIndexOf("."))}else{const e=new Mn(a);this.tagsNodeStack.push(r),a!==u&&d&&(e[":@"]=this.buildAttributesMap(u,i,a)),this.addChild(r,e,i),r=e}n="",o=l}}else n+=e[o]}return t.child};function jn(e,t,r){const n=this.options.updateTag(t.tagname,r,t[":@"]);!1===n||("string"==typeof n?(t.tagname=n,e.addChild(t)):e.addChild(t))}const qn=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const r=this.docTypeEntities[t];e=e.replace(r.regx,r.val)}for(let t in this.lastEntities){const r=this.lastEntities[t];e=e.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const r=this.htmlEntities[t];e=e.replace(r.regex,r.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function Wn(e,t,r,n){return e&&(void 0===n&&(n=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,r,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,n))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function Hn(e,t,r){const n="*."+r;for(const r in e){const i=e[r];if(n===i||t===i)return!0}return!1}function Kn(e,t,r,n){const i=e.indexOf(t,r);if(-1===i)throw new Error(n);return i+t.length-1}function Vn(e,t,r,n=">"){const i=function(e,t,r=">"){let n,i="";for(let o=t;o",r,`${t} is not closed`);if(e.substring(r+2,o).trim()===t&&(i--,0===i))return{tagContent:e.substring(n,r),i:o};r=o}else if("?"===e[r+1]){r=Kn(e,"?>",r+1,"StopNode is not closed.")}else if("!--"===e.substr(r+1,3)){r=Kn(e,"--\x3e",r+3,"StopNode is not closed.")}else if("!["===e.substr(r+1,2)){r=Kn(e,"]]>",r,"StopNode is not closed.")-2}else{const n=Vn(e,r,">");if(n){(n&&n.tagName)===t&&"/"!==n.tagExp[n.tagExp.length-1]&&i++,r=n.closeIndex}}}function Gn(e,t,r){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&Fn(e,r)}return In.isExist(e)?e:""}var Jn=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=$n,this.parseXml=zn,this.parseTextData=Un,this.resolveNameSpace=Ln,this.buildAttributesMap=Bn,this.isItStopNode=Hn,this.replaceEntitiesValue=qn,this.readStopNodeData=Qn,this.saveTextToParentTag=Wn,this.addChild=jn}},Xn={};function Yn(e,t,r){let n;const i={};for(let o=0;o0&&(i[t.textNodeName]=n):void 0!==n&&(i[t.textNodeName]=n),i}function Zn(e){const t=Object.keys(e);for(let e=0;e`,o=!1;continue}if(c===t.commentPropName){i+=n+`\x3c!--${a[c][0][t.textNodeName]}--\x3e`,o=!0;continue}if("?"===c[0]){const e=ui(a[":@"],t),r="?xml"===c?"":n;let s=a[c][0][t.textNodeName];s=0!==s.length?" "+s:"",i+=r+`<${c}${s}${e}?>`,o=!0;continue}let d=n;""!==d&&(d+=t.indentBy);const l=n+`<${c}${ui(a[":@"],t)}`,h=ai(a[c],t,u,d);-1!==t.unpairedTags.indexOf(c)?t.suppressUnpairedNode?i+=l+">":i+=l+"/>":h&&0!==h.length||!t.suppressEmptyNode?h&&h.endsWith(">")?i+=l+`>${h}${n}`:(i+=l+">",h&&""!==n&&(h.includes("/>")||h.includes("`):i+=l+"/>",o=!0}return i}function ci(e){const t=Object.keys(e);for(let r=0;r0&&t.processEntities)for(let r=0;r0&&(r="\n"),ai(e,t,"",r)},fi={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function pi(e){this.options=Object.assign({},fi,e),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=yi),this.processTextOrObjNode=gi,this.options.format?(this.indentate=mi,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function gi(e,t,r){const n=this.j2x(e,r+1);return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,n.attrStr,r):this.buildObjectNode(n.val,t,n.attrStr,r)}function mi(e){return this.options.indentBy.repeat(e)}function yi(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}pi.prototype.build=function(e){return this.options.preserveOrder?hi(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0).val)},pi.prototype.j2x=function(e,t){let r="",n="";for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i))if(void 0===e[i])this.isAttribute(i)&&(n+="");else if(null===e[i])this.isAttribute(i)?n+="":"?"===i[0]?n+=this.indentate(t)+"<"+i+"?"+this.tagEndChar:n+=this.indentate(t)+"<"+i+"/"+this.tagEndChar;else if(e[i]instanceof Date)n+=this.buildTextValNode(e[i],i,"",t);else if("object"!=typeof e[i]){const o=this.isAttribute(i);if(o)r+=this.buildAttrPairStr(o,""+e[i]);else if(i===this.options.textNodeName){let t=this.options.tagValueProcessor(i,""+e[i]);n+=this.replaceEntitiesValue(t)}else n+=this.buildTextValNode(e[i],i,"",t)}else if(Array.isArray(e[i])){const r=e[i].length;let o="",s="";for(let a=0;a"+e+i}},pi.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(n)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(n)+"<"+t+r+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),""===i?this.indentate(n)+"<"+t+r+this.closeTag(t)+this.tagEndChar:this.indentate(n)+"<"+t+r+">"+i+"0&&this.options.processEntities)for(let t=0;t((e,t)=>Xe(e,t).then((e=>t.utf8Encoder(e))))(e,t).then((e=>{if(e.length){const t=new vi.XMLParser({attributeNamePrefix:"",htmlEntities:!0,ignoreAttributes:!1,ignoreDeclaration:!0,parseTagValue:!1,trimValues:!1,tagValueProcessor:(e,t)=>""===t.trim()&&t.includes("\n")?"":void 0});let r;t.addEntity("#xD","\r"),t.addEntity("#10","\n");try{r=t.parse(e,!0)}catch(t){throw t&&"object"==typeof t&&Object.defineProperty(t,"$responseBodyText",{value:e}),t}const n="#text",i=Object.keys(r)[0],o=r[i];return o[n]&&(o[i]=o[n],delete o[n]),qr(o)}return{}})),wi=async(e,t)=>{const r=await bi(e,t);return r.Error&&(r.Error.message=r.Error.message??r.Error.Message),r},ki=[Z.CRC32,Z.CRC32C,Z.SHA1,Z.SHA256],Si=[Z.SHA256,Z.SHA1,Z.CRC32,Z.CRC32C],Ei=e=>e===Z.MD5?"content-md5":`x-amz-checksum-${e.toLowerCase()}`,xi=e=>void 0!==e&&"string"!=typeof e&&!ArrayBuffer.isView(e)&&!Tt(e);function Ti(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function Ai(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1](new TextEncoder).encode(e);function Ri(e){return e instanceof Uint8Array?e:"string"==typeof e?Ci(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}function Oi(e){return"string"==typeof e?0===e.length:0===e.byteLength}function _i(e){return new Uint8Array([(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])}function Pi(e){if(!Uint32Array.from){for(var t=new Uint32Array(e.length),r=0;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),i=n.next();!i.done;i=n.next()){var o=i.value;this.checksum=this.checksum>>>8^Ni[255&(this.checksum^o)]}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return this},e.prototype.digest=function(){return(4294967295^this.checksum)>>>0},e}(),Ni=Pi([0,4067132163,3778769143,324072436,3348797215,904991772,648144872,3570033899,2329499855,2024987596,1809983544,2575936315,1296289744,3207089363,2893594407,1578318884,274646895,3795141740,4049975192,51262619,3619967088,632279923,922689671,3298075524,2592579488,1760304291,2075979607,2312596564,1562183871,2943781820,3156637768,1313733451,549293790,3537243613,3246849577,871202090,3878099393,357341890,102525238,4101499445,2858735121,1477399826,1264559846,3107202533,1845379342,2677391885,2361733625,2125378298,820201905,3263744690,3520608582,598981189,4151959214,85089709,373468761,3827903834,3124367742,1213305469,1526817161,2842354314,2107672161,2412447074,2627466902,1861252501,1098587580,3004210879,2688576843,1378610760,2262928035,1955203488,1742404180,2511436119,3416409459,969524848,714683780,3639785095,205050476,4266873199,3976438427,526918040,1361435347,2739821008,2954799652,1114974503,2529119692,1691668175,2005155131,2247081528,3690758684,697762079,986182379,3366744552,476452099,3993867776,4250756596,255256311,1640403810,2477592673,2164122517,1922457750,2791048317,1412925310,1197962378,3037525897,3944729517,427051182,170179418,4165941337,746937522,3740196785,3451792453,1070968646,1905808397,2213795598,2426610938,1657317369,3053634322,1147748369,1463399397,2773627110,4215344322,153784257,444234805,3893493558,1021025245,3467647198,3722505002,797665321,2197175160,1889384571,1674398607,2443626636,1164749927,3070701412,2757221520,1446797203,137323447,4198817972,3910406976,461344835,3484808360,1037989803,781091935,3705997148,2460548119,1623424788,1939049696,2180517859,1429367560,2807687179,3020495871,1180866812,410100952,3927582683,4182430767,186734380,3756733383,763408580,1053836080,3434856499,2722870694,1344288421,1131464017,2971354706,1708204729,2545590714,2229949006,1988219213,680717673,3673779818,3383336350,1002577565,4010310262,493091189,238226049,4233660802,2987750089,1082061258,1395524158,2705686845,1972364758,2279892693,2494862625,1725896226,952904198,3399985413,3656866545,731699698,4283874585,222117402,510512622,3959836397,3280807620,837199303,582374963,3504198960,68661723,4135334616,3844915500,390545967,1230274059,3141532936,2825850620,1510247935,2395924756,2091215383,1878366691,2644384480,3553878443,565732008,854102364,3229815391,340358836,3861050807,4117890627,119113024,1493875044,2875275879,3090270611,1247431312,2660249211,1828433272,2141937292,2378227087,3811616794,291187481,34330861,4032846830,615137029,3603020806,3314634738,939183345,1776939221,2609017814,2295496738,2058945313,2926798794,1545135305,1330124605,3173225534,4084100981,17165430,307568514,3762199681,888469610,3332340585,3587147933,665062302,2042050490,2346497209,2559330125,1793573966,3190661285,1279665062,1595330642,2910671697]);function Fi(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function $i(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),i=n.next();!i.done;i=n.next()){var o=i.value;this.checksum=this.checksum>>>8^Di[255&(this.checksum^o)]}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return this},e.prototype.digest=function(){return(4294967295^this.checksum)>>>0},e}(),Di=Pi([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);const Bi=(e,t)=>({[Z.MD5]:t.md5,[Z.CRC32]:Ui,[Z.CRC32C]:Ii,[Z.SHA1]:t.sha1,[Z.SHA256]:t.sha256}[e]),zi=(e,t)=>{const r=new e;return r.update(Re(t||"")),r.digest()},ji={name:"flexibleChecksumsMiddleware",step:"build",tags:["BODY_CHECKSUM"],override:!0},qi=(e,t)=>(r,n)=>async i=>{if(!K.isInstance(i.request))return r(i);const{request:o,input:s}=i,{body:a,headers:c}=o,{base64Encoder:u,streamHasher:d}=e,{requestChecksumRequired:l,requestAlgorithmMember:h}=t,f=((e,{requestChecksumRequired:t,requestAlgorithmMember:r},n)=>{const i=n?re:te;if(!r||!e[r])return t?i:void 0;const o=e[r];if(!ki.includes(o))throw new Error(`The checksum algorithm "${o}" is not supported by the client. Select one of ${ki}.`);return o})(s,{requestChecksumRequired:l,requestAlgorithmMember:h},!!n.isS3ExpressBucket);let p=a,g=c;if(f){switch(f){case Z.CRC32:ie(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32","U");break;case Z.CRC32C:ie(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32C","V");break;case Z.SHA1:ie(n,"FLEXIBLE_CHECKSUMS_REQ_SHA1","X");break;case Z.SHA256:ie(n,"FLEXIBLE_CHECKSUMS_REQ_SHA256","Y")}const t=Ei(f),r=Bi(f,e);if(xi(a)){const{getAwsChunkedEncodingStream:n,bodyLengthChecker:i}=e;p=n(a,{base64Encoder:u,bodyLengthChecker:i,checksumLocationName:t,checksumAlgorithmFn:r,streamHasher:d}),g={...c,"content-encoding":c["content-encoding"]?`${c["content-encoding"]},aws-chunked`:"aws-chunked","transfer-encoding":"chunked","x-amz-decoded-content-length":c["content-length"],"x-amz-content-sha256":"STREAMING-UNSIGNED-PAYLOAD-TRAILER","x-amz-trailer":t},delete g["content-length"]}else if(!((e,t)=>{const r=e.toLowerCase();for(const e of Object.keys(t))if(r===e.toLowerCase())return!0;return!1})(t,c)){const e=await zi(r,a);g={...c,[t]:u(e)}}}return await r({...i,request:{...o,headers:g,body:p}})},Wi=(e=[])=>{const t=[];for(const r of Si)e.includes(r)&&ki.includes(r)&&t.push(r);return t};function Hi(e){return new Blob([e]).stream()}const Ki=async(e,{checksumAlgorithmFn:t,base64Encoder:r})=>r(await zi(t,e)),Vi={name:"flexibleChecksumsResponseMiddleware",toMiddleware:"deserializerMiddleware",relation:"after",tags:["BODY_CHECKSUM"],override:!0},Qi=(e,t)=>(r,n)=>async i=>{if(!K.isInstance(i.request))return r(i);const o=i.input,s=await r(i),a=s.response;let c;const{requestValidationModeMember:u,responseAlgorithms:d}=t;if(u&&"ENABLED"===o[u]){const{clientName:t,commandName:r}=n;if("S3Client"===t&&"GetObjectCommand"===r&&Wi(d).every((e=>{const t=Ei(e),r=a.headers[t];return!r||(e=>{const t=e.lastIndexOf("-");if(-1!==t){const r=e.slice(t+1);if(!r.startsWith("0")){const e=parseInt(r,10);if(!isNaN(e)&&e>=1&&e<=1e4)return!0}}return!1})(r)})))return s;const i=xi(a.body);i&&(c=await e.streamCollector(a.body),a.body=Hi(c)),await(async(e,{config:t,responseAlgorithms:r})=>{const n=Wi(r),{body:i,headers:o}=e;for(const r of n){const n=Ei(r),s=o[n];if(s){const o=Bi(r,t),{base64Encoder:a}=t;if(xi(i))return void(e.body=Je({expectedChecksum:s,checksumSourceLocation:n,checksum:new o,source:i,base64Encoder:a}));const c=await Ki(i,{checksumAlgorithmFn:o,base64Encoder:a});if(c===s)break;throw new Error(`Checksum mismatch: expected "${c}" but received "${s}" in response header "${n}".`)}}})(s.response,{config:e,responseAlgorithms:d}),i&&c&&(a.body=Hi(c))}return s},Gi=(e,t)=>({applyToStack:r=>{r.add(qi(e,t),ji),r.addRelativeTo(Qi(e,t),Vi)}});const Ji={name:"hostHeaderMiddleware",step:"build",priority:"low",tags:["HOST"],override:!0},Xi=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{if(!K.isInstance(r.request))return t(r);const{request:n}=r,{handlerProtocol:i=""}=e.requestHandler.metadata||{};if(i.indexOf("h2")>=0&&!n.headers[":authority"])delete n.headers.host,n.headers[":authority"]=n.hostname+(n.port?":"+n.port:"");else if(!n.headers.host){let e=n.hostname;null!=n.port&&(e+=`:${n.port}`),n.headers.host=e}return t(r)})(e),Ji)}}),Yi={name:"loggerMiddleware",tags:["LOGGER"],step:"initialize",override:!0},Zi="X-Amzn-Trace-Id",eo={step:"build",tags:["RECURSION_DETECTION"],name:"recursionDetectionMiddleware",override:!0,priority:"low"},to=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{const{request:n}=r;if(!K.isInstance(n)||"node"!==e.runtime||n.headers.hasOwnProperty(Zi))return t(r);const i=process.env.AWS_LAMBDA_FUNCTION_NAME,o=process.env._X_AMZN_TRACE_ID,s=e=>"string"==typeof e&&e.length>0;return s(i)&&s(o)&&(n.headers[Zi]=o),t({...r,request:n})})(e),eo)}});const ro={step:"finalizeRequest",tags:["CHECK_CONTENT_LENGTH_HEADER"],name:"getCheckContentLengthHeaderPlugin",override:!0},no=e=>({applyToStack:e=>{e.add(((e,t)=>async r=>{const{request:n}=r;if(K.isInstance(n)&&!("content-length"in n.headers)){const e="Are you using a Stream of unknown length as the Body of a PutObject request? Consider using Upload instead from @aws-sdk/lib-storage.";"function"!=typeof t?.logger?.warn||t.logger instanceof Kr?console.warn(e):t.logger.warn(e)}return e({...r})}),ro)}}),io={tags:["REGION_REDIRECT","S3"],name:"regionRedirectEndpointMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"};const oo={step:"initialize",tags:["REGION_REDIRECT","S3"],name:"regionRedirectMiddleware",override:!0},so=e=>({applyToStack:t=>{t.add(function(e){return(t,r)=>async n=>{try{return await t(n)}catch(i){if(e.followRegionRedirects&&(301===i?.$metadata?.httpStatusCode||400===i?.$metadata?.httpStatusCode&&"IllegalLocationConstraintException"===i?.name)){try{const t=i.$response.headers["x-amz-bucket-region"];r.logger?.debug(`Redirecting from ${await e.region()} to ${t}`),r.__s3RegionRedirect=t}catch(e){throw new Error("Region redirect failed: "+e)}return t(n)}throw i}}}(e),oo),t.addRelativeTo((e=>(t,r)=>async n=>{const i=await e.region(),o=e.region;let s=()=>{};r.__s3RegionRedirect&&(Object.defineProperty(e,"region",{writable:!1,value:async()=>r.__s3RegionRedirect}),s=()=>Object.defineProperty(e,"region",{writable:!0,value:o}));try{const o=await t(n);if(r.__s3RegionRedirect&&(s(),i!==await e.region()))throw new Error("Region was not restored following S3 region redirect.");return o}catch(e){throw s(),e}})(e),io)}}),ao={tags:["S3"],name:"s3ExpiresMiddleware",override:!0,relation:"after",toMiddleware:"deserializerMiddleware"},co=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{const n=await e(r),{response:i}=n;if(V.isInstance(i)&&i.headers.expires){i.headers.expiresstring=i.headers.expires;try{wr(i.headers.expires)}catch(e){t.logger?.warn(`AWS SDK Warning for ${t.clientName}::${t.commandName} response parsing (${i.headers.expires}): ${e}`),delete i.headers.expires}}return n}),ao)}});class uo{constructor(e={}){this.data=e,this.lastPurgeTime=Date.now()}get(e){const t=this.data[e];if(t)return t}set(e,t){return this.data[e]=t,t}delete(e){delete this.data[e]}async purgeExpired(){const e=Date.now();if(!(this.lastPurgeTime+uo.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS>e))for(const t in this.data){const r=this.data[t];if(!r.isRefreshing){const n=await r.identity;n.expiration&&n.expiration.getTime(){if((e.expiration?.getTime()??0){n.set(r,new lo(Promise.resolve(e)))}))),e})):n.set(r,new lo(this.getIdentity(r))).identity}async getIdentity(e){await this.cache.purgeExpired().catch((e=>{console.warn("Error while clearing expired entries in S3ExpressIdentityCache: \n"+e)}));const t=await this.createSessionFn(e);if(!t.Credentials?.AccessKeyId||!t.Credentials?.SecretAccessKey)throw new Error("s3#createSession response credential missing AccessKeyId or SecretAccessKey.");return{accessKeyId:t.Credentials.AccessKeyId,secretAccessKey:t.Credentials.SecretAccessKey,sessionToken:t.Credentials.SessionToken,expiration:t.Credentials.Expiration?new Date(t.Credentials.Expiration):void 0}}}var fo;ho.REFRESH_WINDOW_MS=6e4,function(e){e.ENV="env",e.CONFIG="shared config entry"}(fo||(fo={}));const po="X-Amz-S3session-Token",go=po.toLowerCase();class mo extends Nt{async signWithCredentials(e,t,r){const n=yo(t);e.headers[go]=t.sessionToken;return vo(this,n),this.signRequest(e,r??{})}async presignWithCredentials(e,t,r){const n=yo(t);delete e.headers[go],e.headers[po]=t.sessionToken,e.query=e.query??{},e.query[po]=t.sessionToken;return vo(this,n),this.presign(e,r)}}function yo(e){return{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,expiration:e.expiration}}function vo(e,t){const r=setTimeout((()=>{throw new Error("SignatureV4S3Express credential override was created but not called.")}),10),n=e.credentialProvider;e.credentialProvider=()=>(clearTimeout(r),e.credentialProvider=n,Promise.resolve(t))}const bo={name:"s3ExpressMiddleware",step:"build",tags:["S3","S3_EXPRESS"],override:!0},wo=e=>({applyToStack:t=>{t.add((e=>(t,r)=>async n=>{if(r.endpointV2){const t=r.endpointV2,i="sigv4-s3express"===t.properties?.authSchemes?.[0]?.name;if(("S3Express"===t.properties?.backend||"Directory"===t.properties?.bucketType)&&(ie(r,"S3_EXPRESS_BUCKET","J"),r.isS3ExpressBucket=!0),i){const t=n.input.Bucket;if(t){const i=await e.s3ExpressIdentityProvider.getS3ExpressIdentity(await e.credentials(),{Bucket:t});r.s3ExpressIdentity=i,K.isInstance(n.request)&&i.sessionToken&&(n.request.headers[go]=i.sessionToken)}}}return t(n)})(e),bo)}}),ko=e=>e=>{throw e},So=(e,t)=>{},Eo=e=>(t,r)=>async n=>{if(!K.isInstance(n.request))return t(n);const i=he(r).selectedHttpAuthScheme;if(!i)throw new Error("No HttpAuthScheme was selected: unable to sign request");const{httpAuthOption:{signingProperties:o={}},identity:s,signer:a}=i;let c;c=r.s3ExpressIdentity?await(async(e,t,r,n)=>{const i=await n.signWithCredentials(r,e,{});if(i.headers["X-Amz-Security-Token"]||i.headers["x-amz-security-token"])throw new Error("X-Amz-Security-Token must not be set for s3-express requests.");return i})(r.s3ExpressIdentity,0,n.request,await e.signer()):await a.sign(n.request,s,o);const u=await t({...n,request:c}).catch((a.errorHandler||ko)(o));return(a.successHandler||So)(u.response,o),u},xo={CopyObjectCommand:!0,UploadPartCopyCommand:!0,CompleteMultipartUploadCommand:!0},To=e=>(t,r)=>async n=>{const i=await t(n),{response:o}=i;if(!V.isInstance(o))return i;const{statusCode:s,body:a}=o;if(s<200||s>=300)return i;if(!("function"==typeof a?.stream||"function"==typeof a?.pipe||"function"==typeof a?.tee))return i;let c=a,u=a;!a||"object"!=typeof a||a instanceof Uint8Array||([c,u]=await async function(e){return"function"==typeof e.stream&&(e=e.stream()),e.tee()}(a)),o.body=u;const d=await Ao(c,{streamCollector:async e=>async function(e,t){let r=0;const n=[],i=e.getReader();let o=!1;for(;!o;){const{done:e,value:s}=await i.read();if(s&&(n.push(s),r+=s?.byteLength??0),r>=t)break;o=e}i.releaseLock();const s=new Uint8Array(Math.min(t,r));let a=0;for(const e of n){if(e.byteLength>s.byteLength-a){s.set(e.subarray(0,s.byteLength-a),a);break}s.set(e,a),a+=e.length}return s}(e,3e3)});"function"==typeof c?.destroy&&c.destroy();const l=e.utf8Encoder(d.subarray(d.length-16));if(0===d.length&&xo[r.commandName]){const e=new Error("S3 aborted request");throw e.name="InternalError",e}return l&&l.endsWith("")&&(o.statusCode=400),i},Ao=(e=new Uint8Array,t)=>e instanceof Uint8Array?Promise.resolve(e):t.streamCollector(e)||Promise.resolve(new Uint8Array),Co={relation:"after",toMiddleware:"deserializerMiddleware",tags:["THROW_200_EXCEPTIONS","S3"],name:"throw200ExceptionsMiddleware",override:!0},Ro=e=>({applyToStack:t=>{t.addRelativeTo(To(e),Co)}});const Oo={name:"bucketEndpointMiddleware",override:!0,relation:"after",toMiddleware:"endpointV2Middleware"};const _o={step:"initialize",tags:["VALIDATE_BUCKET_NAME"],name:"validateBucketNameMiddleware",override:!0},Po=e=>({applyToStack:t=>{t.add(function({bucketEndpoint:e}){return t=>async r=>{const{input:{Bucket:n}}=r;if(!e&&"string"==typeof n&&!("string"==typeof(i=n)&&0===i.indexOf("arn:")&&i.split(":").length>=6)&&n.indexOf("/")>=0){const e=new Error(`Bucket name shouldn't contain '/', received '${n}'`);throw e.name="InvalidBucketName",e}var i;return t({...r})}}(e),_o),t.addRelativeTo(function(e){return(t,r)=>async n=>{if(e.bucketEndpoint){const e=r.endpointV2;if(e){const t=n.input.Bucket;if("string"==typeof t)try{const n=new URL(t);r.endpointV2={...e,url:n}}catch(e){const n=`@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${t} could not be parsed as URL.`;throw"NoOpLogger"===r.logger?.constructor?.name?console.warn(n):r.logger?.warn?.(n),e}}}return t(n)}}(e),Oo)}});const Io=new RegExp("^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$"),Mo=e=>Io.test(e)||e.startsWith("[")&&e.endsWith("]"),No=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),Fo=(e,t=!1)=>{if(!t)return No.test(e);const r=e.split(".");for(const e of r)if(!Fo(e))return!1;return!0},$o={},Uo="endpoints";function Lo(e){return"object"!=typeof e||null==e?e:"ref"in e?`$${Lo(e.ref)}`:"fn"in e?`${e.fn}(${(e.argv||[]).map(Lo).join(", ")})`:JSON.stringify(e,null,2)}class Do extends Error{constructor(e){super(e),this.name="EndpointError"}}const Bo=(e,t)=>(e=>{const t=e.split("."),r=[];for(const n of t){const t=n.indexOf("[");if(-1!==t){if(n.indexOf("]")!==n.length-1)throw new Do(`Path: '${e}' does not end with ']'`);const i=n.slice(t+1,-1);if(Number.isNaN(parseInt(i)))throw new Do(`Invalid array index: '${i}' in path: '${e}'`);0!==t&&r.push(n.slice(0,t)),r.push(i)}else r.push(n)}return r})(t).reduce(((r,n)=>{if("object"!=typeof r)throw new Do(`Index '${n}' in '${t}' not found in '${JSON.stringify(e)}'`);return Array.isArray(r)?r[parseInt(n)]:r[n]}),e),zo={[B.HTTP]:80,[B.HTTPS]:443},jo={booleanEquals:(e,t)=>e===t,getAttr:Bo,isSet:e=>null!=e,isValidHostLabel:Fo,not:e=>!e,parseURL:e=>{const t=(()=>{try{if(e instanceof URL)return e;if("object"==typeof e&&"hostname"in e){const{hostname:t,port:r,protocol:n="",path:i="",query:o={}}=e,s=new URL(`${n}//${t}${r?`:${r}`:""}${i}`);return s.search=Object.entries(o).map((([e,t])=>`${e}=${t}`)).join("&"),s}return new URL(e)}catch(e){return null}})();if(!t)return console.error(`Unable to parse ${JSON.stringify(e)} as a whatwg URL.`),null;const r=t.href,{host:n,hostname:i,pathname:o,protocol:s,search:a}=t;if(a)return null;const c=s.slice(0,-1);if(!Object.values(B).includes(c))return null;const u=Mo(i);return{scheme:c,authority:`${n}${r.includes(`${n}:${zo[c]}`)||"string"==typeof e&&e.includes(`${n}:${zo[c]}`)?`:${zo[c]}`:""}`,path:o,normalizedPath:o.endsWith("/")?o:`${o}/`,isIp:u}},stringEquals:(e,t)=>e===t,substring:(e,t,r,n)=>t>=r||e.lengthencodeURIComponent(e).replace(/[!*'()]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`))},qo=(e,t)=>{const r=[],n={...t.endpointParams,...t.referenceRecord};let i=0;for(;i{if("string"==typeof e)return qo(e,r);if(e.fn)return Ho(e,r);if(e.ref)return(({ref:e},t)=>({...t.endpointParams,...t.referenceRecord}[e]))(e,r);throw new Do(`'${t}': ${String(e)} is not a string, function or reference.`)},Ho=({fn:e,argv:t},r)=>{const n=t.map((e=>["boolean","number"].includes(typeof e)?e:Wo(e,"arg",r))),i=e.split(".");return i[0]in $o&&null!=i[1]?$o[i[0]][i[1]](...n):jo[e](...n)},Ko=({assign:e,...t},r)=>{if(e&&e in r.referenceRecord)throw new Do(`'${e}' is already defined in Reference Record.`);const n=Ho(t,r);return r.logger?.debug?.(`${Uo} evaluateCondition: ${Lo(t)} = ${Lo(n)}`),{result:""===n||!!n,...null!=e&&{toAssign:{name:e,value:n}}}},Vo=(e=[],t)=>{const r={};for(const n of e){const{result:e,toAssign:i}=Ko(n,{...t,referenceRecord:{...t.referenceRecord,...r}});if(!e)return{result:e};i&&(r[i.name]=i.value,t.logger?.debug?.(`${Uo} assign: ${i.name} := ${Lo(i.value)}`))}return{result:!0,referenceRecord:r}},Qo=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:n.map((e=>{const n=Wo(e,"Header value entry",t);if("string"!=typeof n)throw new Do(`Header '${r}' value '${n}' is not a string`);return n}))})),{}),Go=(e,t)=>{if(Array.isArray(e))return e.map((e=>Go(e,t)));switch(typeof e){case"string":return qo(e,t);case"object":if(null===e)throw new Do(`Unexpected endpoint property: ${e}`);return Jo(e,t);case"boolean":return e;default:throw new Do("Unexpected endpoint property type: "+typeof e)}},Jo=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:Go(n,t)})),{}),Xo=(e,t)=>{const r=Wo(e,"Endpoint URL",t);if("string"==typeof r)try{return new URL(r)}catch(e){throw console.error(`Failed to construct URL with ${r}`,e),e}throw new Do("Endpoint URL must be a string, got "+typeof r)},Yo=(e,t)=>{const{conditions:r,endpoint:n}=e,{result:i,referenceRecord:o}=Vo(r,t);if(!i)return;const s={...t,referenceRecord:{...t.referenceRecord,...o}},{url:a,properties:c,headers:u}=n;return t.logger?.debug?.(`${Uo} Resolving endpoint from template: ${Lo(n)}`),{...null!=u&&{headers:Qo(u,s)},...null!=c&&{properties:Jo(c,s)},url:Xo(a,s)}},Zo=(e,t)=>{const{conditions:r,error:n}=e,{result:i,referenceRecord:o}=Vo(r,t);if(i)throw new Do(Wo(n,"Error",{...t,referenceRecord:{...t.referenceRecord,...o}}))},es=(e,t)=>{const{conditions:r,rules:n}=e,{result:i,referenceRecord:o}=Vo(r,t);if(i)return ts(n,{...t,referenceRecord:{...t.referenceRecord,...o}})},ts=(e,t)=>{for(const r of e)if("endpoint"===r.type){const e=Yo(r,t);if(e)return e}else if("error"===r.type)Zo(r,t);else{if("tree"!==r.type)throw new Do(`Unknown endpoint rule: ${r}`);{const e=es(r,t);if(e)return e}}throw new Do("Rules evaluation failed")},rs=(e,t=!1)=>{if(t){for(const t of e.split("."))if(!rs(t))return!1;return!0}return!!Fo(e)&&(!(e.length<3||e.length>63)&&(e===e.toLowerCase()&&!Mo(e)))};let ns={partitions:[{id:"aws",outputs:{dnsSuffix:"amazonaws.com",dualStackDnsSuffix:"api.aws",implicitGlobalRegion:"us-east-1",name:"aws",supportsDualStack:!0,supportsFIPS:!0},regionRegex:"^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$",regions:{"af-south-1":{description:"Africa (Cape Town)"},"ap-east-1":{description:"Asia Pacific (Hong Kong)"},"ap-northeast-1":{description:"Asia Pacific (Tokyo)"},"ap-northeast-2":{description:"Asia Pacific (Seoul)"},"ap-northeast-3":{description:"Asia Pacific (Osaka)"},"ap-south-1":{description:"Asia Pacific (Mumbai)"},"ap-south-2":{description:"Asia Pacific (Hyderabad)"},"ap-southeast-1":{description:"Asia Pacific (Singapore)"},"ap-southeast-2":{description:"Asia Pacific (Sydney)"},"ap-southeast-3":{description:"Asia Pacific (Jakarta)"},"ap-southeast-4":{description:"Asia Pacific (Melbourne)"},"ap-southeast-5":{description:"Asia Pacific (Malaysia)"},"aws-global":{description:"AWS Standard global region"},"ca-central-1":{description:"Canada (Central)"},"ca-west-1":{description:"Canada West (Calgary)"},"eu-central-1":{description:"Europe (Frankfurt)"},"eu-central-2":{description:"Europe (Zurich)"},"eu-north-1":{description:"Europe (Stockholm)"},"eu-south-1":{description:"Europe (Milan)"},"eu-south-2":{description:"Europe (Spain)"},"eu-west-1":{description:"Europe (Ireland)"},"eu-west-2":{description:"Europe (London)"},"eu-west-3":{description:"Europe (Paris)"},"il-central-1":{description:"Israel (Tel Aviv)"},"me-central-1":{description:"Middle East (UAE)"},"me-south-1":{description:"Middle East (Bahrain)"},"sa-east-1":{description:"South America (Sao Paulo)"},"us-east-1":{description:"US East (N. Virginia)"},"us-east-2":{description:"US East (Ohio)"},"us-west-1":{description:"US West (N. California)"},"us-west-2":{description:"US West (Oregon)"}}},{id:"aws-cn",outputs:{dnsSuffix:"amazonaws.com.cn",dualStackDnsSuffix:"api.amazonwebservices.com.cn",implicitGlobalRegion:"cn-northwest-1",name:"aws-cn",supportsDualStack:!0,supportsFIPS:!0},regionRegex:"^cn\\-\\w+\\-\\d+$",regions:{"aws-cn-global":{description:"AWS China global region"},"cn-north-1":{description:"China (Beijing)"},"cn-northwest-1":{description:"China (Ningxia)"}}},{id:"aws-us-gov",outputs:{dnsSuffix:"amazonaws.com",dualStackDnsSuffix:"api.aws",implicitGlobalRegion:"us-gov-west-1",name:"aws-us-gov",supportsDualStack:!0,supportsFIPS:!0},regionRegex:"^us\\-gov\\-\\w+\\-\\d+$",regions:{"aws-us-gov-global":{description:"AWS GovCloud (US) global region"},"us-gov-east-1":{description:"AWS GovCloud (US-East)"},"us-gov-west-1":{description:"AWS GovCloud (US-West)"}}},{id:"aws-iso",outputs:{dnsSuffix:"c2s.ic.gov",dualStackDnsSuffix:"c2s.ic.gov",implicitGlobalRegion:"us-iso-east-1",name:"aws-iso",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^us\\-iso\\-\\w+\\-\\d+$",regions:{"aws-iso-global":{description:"AWS ISO (US) global region"},"us-iso-east-1":{description:"US ISO East"},"us-iso-west-1":{description:"US ISO WEST"}}},{id:"aws-iso-b",outputs:{dnsSuffix:"sc2s.sgov.gov",dualStackDnsSuffix:"sc2s.sgov.gov",implicitGlobalRegion:"us-isob-east-1",name:"aws-iso-b",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^us\\-isob\\-\\w+\\-\\d+$",regions:{"aws-iso-b-global":{description:"AWS ISOB (US) global region"},"us-isob-east-1":{description:"US ISOB East (Ohio)"}}},{id:"aws-iso-e",outputs:{dnsSuffix:"cloud.adc-e.uk",dualStackDnsSuffix:"cloud.adc-e.uk",implicitGlobalRegion:"eu-isoe-west-1",name:"aws-iso-e",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^eu\\-isoe\\-\\w+\\-\\d+$",regions:{"eu-isoe-west-1":{description:"EU ISOE West"}}},{id:"aws-iso-f",outputs:{dnsSuffix:"csp.hci.ic.gov",dualStackDnsSuffix:"csp.hci.ic.gov",implicitGlobalRegion:"us-isof-south-1",name:"aws-iso-f",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^us\\-isof\\-\\w+\\-\\d+$",regions:{}}],version:"1.1"};const is={isVirtualHostableS3Bucket:rs,parseArn:e=>{const t=e.split(":");if(t.length<6)return null;const[r,n,i,o,s,...a]=t;if("arn"!==r||""===n||""===i||""===a.join(":"))return null;return{partition:n,service:i,region:o,accountId:s,resourceId:a.map((e=>e.split("/"))).flat()}},partition:e=>{const{partitions:t}=ns;for(const r of t){const{regions:t,outputs:n}=r;for(const[r,i]of Object.entries(t))if(r===e)return{...n,...i}}for(const r of t){const{regionRegex:t,outputs:n}=r;if(new RegExp(t).test(e))return{...n}}const r=t.find((e=>"aws"===e.id));if(!r)throw new Error("Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist.");return{...r.outputs}}};$o.aws=is;const os=/\d{12}\.ddb/;const ss="user-agent",as="x-amz-user-agent",cs=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w]/g,us=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w\#]/g;const ds=e=>(t,r)=>async n=>{const{request:i}=n;if(!K.isInstance(i))return t(n);const{headers:o}=i,s=r?.userAgent?.map(ls)||[],a=(await e.defaultUserAgentProvider()).map(ls);await async function(e,t,r){const n=r.request;if("rpc-v2-cbor"===n?.headers?.["smithy-protocol"]&&ie(e,"PROTOCOL_RPC_V2_CBOR","M"),"function"==typeof t.retryStrategy){const r=await t.retryStrategy();"function"==typeof r.acquireInitialRetryToken?r.constructor?.name?.includes("Adaptive")?ie(e,"RETRY_MODE_ADAPTIVE","F"):ie(e,"RETRY_MODE_STANDARD","E"):ie(e,"RETRY_MODE_LEGACY","D")}if("function"==typeof t.accountIdEndpointMode){const r=e.endpointV2;switch(String(r?.url?.hostname).match(os)&&ie(e,"ACCOUNT_ID_ENDPOINT","O"),await(t.accountIdEndpointMode?.())){case"disabled":ie(e,"ACCOUNT_ID_MODE_DISABLED","Q");break;case"preferred":ie(e,"ACCOUNT_ID_MODE_PREFERRED","P");break;case"required":ie(e,"ACCOUNT_ID_MODE_REQUIRED","R")}}const i=e.__smithy_context?.selectedHttpAuthScheme?.identity;if(i?.$source){const t=i;t.accountId&&ie(e,"RESOLVED_ACCOUNT_ID","T");for(const[r,n]of Object.entries(t.$source??{}))ie(e,r,n)}}(r,e,n);const c=r;a.push(`m/${function(e){let t="";for(const r in e){const n=e[r];if(!(t.length+n.length+1<=1024))break;t.length?t+=","+n:t+=n}return t}(Object.assign({},r.__smithy_context?.features,c.__aws_sdk_context?.features))}`);const u=e?.customUserAgent?.map(ls)||[],d=await e.userAgentAppId();d&&a.push(ls([`app/${d}`]));const l=[].concat([...a,...s,...u]).join(" "),h=[...a.filter((e=>e.startsWith("aws-sdk-"))),...u].join(" ");return"browser"!==e.runtime?(h&&(o[as]=o[as]?`${o[ss]} ${h}`:h),o[ss]=l):o[as]=l,t({...n,request:i})},ls=e=>{const t=e[0].split("/").map((e=>e.replace(cs,"-"))).join("/"),r=e[1]?.replace(us,"-"),n=t.indexOf("/"),i=t.substring(0,n);let o=t.substring(n+1);return"api"===i&&(o=o.toLowerCase()),[i,o,r].filter((e=>e&&e.length>0)).reduce(((e,t,r)=>{switch(r){case 0:return t;case 1:return`${e}/${t}`;default:return`${e}#${t}`}}),"")},hs={name:"getUserAgentMiddleware",step:"build",priority:"low",tags:["SET_USER_AGENT","USER_AGENT"],override:!0},fs=e=>"string"==typeof e&&(e.startsWith("fips-")||e.endsWith("-fips")),ps=e=>fs(e)?["fips-aws-global","aws-fips"].includes(e)?"us-east-1":e.replace(/fips-(dkr-|prod-)?|-fips/,""):e,gs="content-length";const ms={step:"build",tags:["SET_CONTENT_LENGTH","CONTENT_LENGTH"],name:"contentLengthMiddleware",override:!0},ys=e=>({applyToStack:t=>{var r;t.add((r=e.bodyLengthChecker,e=>async t=>{const n=t.request;if(K.isInstance(n)){const{body:e,headers:t}=n;if(e&&-1===Object.keys(t).map((e=>e.toLowerCase())).indexOf(gs))try{const t=r(e);n.headers={...n.headers,[gs]:String(t)}}catch(e){}}return e({...t,request:n})}),ms)}}),vs=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,bs=/(\d+\.){3}\d+/,ws=/\.\./,ks=e=>vs.test(e)&&!bs.test(e)&&!ws.test(e),Ss=e=>{const[t,r,n,,,i]=e.split(":"),o="arn"===t&&e.split(":").length>=6,s=Boolean(o&&r&&n&&i);if(o&&!s)throw new Error(`Invalid ARN: ${e} was an invalid ARN.`);return s},Es=(e,t,r)=>{const n=async()=>{const n=r[e]??r[t];return"function"==typeof n?n():n};return"credentialScope"===e||"CredentialScope"===t?async()=>{const e="function"==typeof r.credentials?await r.credentials():r.credentials;return e?.credentialScope??e?.CredentialScope}:"accountId"===e||"AccountId"===t?async()=>{const e="function"==typeof r.credentials?await r.credentials():r.credentials;return e?.accountId??e?.AccountId}:"endpoint"===e||"endpoint"===t?async()=>{const e=await n();if(e&&"object"==typeof e){if("url"in e)return e.url.href;if("hostname"in e){const{protocol:t,hostname:r,port:n,path:i}=e;return`${t}//${r}${n?":"+n:""}${i}`}}return e}:n},xs=async e=>{};const Ts=e=>{if("string"==typeof e)return Ts(new URL(e));const{hostname:t,pathname:r,port:n,protocol:i,search:o}=e;let s;return o&&(s=function(e){const t={};if(e=e.replace(/^\?/,""))for(const r of e.split("&")){let[e,n=null]=r.split("=");e=decodeURIComponent(e),n&&(n=decodeURIComponent(n)),e in t?Array.isArray(t[e])?t[e].push(n):t[e]=[t[e],n]:t[e]=n}return t}(o)),{hostname:t,port:n?parseInt(n):void 0,protocol:i,path:r,query:s}},As=e=>"object"==typeof e?"url"in e?Ts(e.url):e:Ts(e),Cs=async(e,t,r)=>{const n={},i=t?.getEndpointParameterInstructions?.()||{};for(const[t,o]of Object.entries(i))switch(o.type){case"staticContextParams":n[t]=o.value;break;case"contextParams":n[t]=e[o.name];break;case"clientContextParams":case"builtInParams":n[t]=await Es(o.name,t,r)();break;default:throw new Error("Unrecognized endpoint parameter instruction: "+JSON.stringify(o))}return 0===Object.keys(i).length&&Object.assign(n,r),"s3"===String(r.serviceId).toLowerCase()&&await(async e=>{const t=e?.Bucket||"";if("string"==typeof e.Bucket&&(e.Bucket=t.replace(/#/g,encodeURIComponent("#")).replace(/\?/g,encodeURIComponent("?"))),Ss(t)){if(!0===e.ForcePathStyle)throw new Error("Path-style addressing cannot be used with ARN buckets")}else(!ks(t)||-1!==t.indexOf(".")&&!String(e.Endpoint).startsWith("http:")||t.toLowerCase()!==t||t.length<3)&&(e.ForcePathStyle=!0);return e.DisableMultiRegionAccessPoints&&(e.disableMultiRegionAccessPoints=!0,e.DisableMRAP=!0),e})(n),n},Rs=({config:e,instructions:t})=>(r,n)=>async i=>{e.endpoint&&function(e,t,r){e.__smithy_context?e.__smithy_context.features||(e.__smithy_context.features={}):e.__smithy_context={features:{}},e.__smithy_context.features[t]=r}(n,"ENDPOINT_OVERRIDE","N");const o=await(async(e,t,r,n)=>{if(!r.endpoint){let e;e=r.serviceConfiguredEndpoint?await r.serviceConfiguredEndpoint():await xs(r.serviceId),e&&(r.endpoint=()=>Promise.resolve(As(e)))}const i=await Cs(e,t,r);if("function"!=typeof r.endpointProvider)throw new Error("config.endpointProvider is not set.");return r.endpointProvider(i,n)})(i.input,{getEndpointParameterInstructions:()=>t},{...e},n);n.endpointV2=o,n.authSchemes=o.properties?.authSchemes;const s=n.authSchemes?.[0];if(s){n.signing_region=s.signingRegion,n.signing_service=s.signingName;const e=he(n),t=e?.selectedHttpAuthScheme?.httpAuthOption;t&&(t.signingProperties=Object.assign(t.signingProperties||{},{signing_region:s.signingRegion,signingRegion:s.signingRegion,signing_service:s.signingName,signingName:s.signingName,signingRegionSet:s.signingRegionSet},s.properties))}return r({...i})},Os={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:ye.name},_s=(e,t)=>({applyToStack:r=>{r.addRelativeTo(Rs({config:e,instructions:t}),Os)}});var Ps;!function(e){e.STANDARD="standard",e.ADAPTIVE="adaptive"}(Ps||(Ps={}));const Is=Ps.STANDARD,Ms=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Ns=["TimeoutError","RequestTimeout","RequestTimeoutException"],Fs=[500,502,503,504],$s=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Us=e=>429===e.$metadata?.httpStatusCode||Ms.includes(e.name)||1==e.$retryable?.throttling,Ls=e=>(e=>e.$metadata?.clockSkewCorrected)(e)||Ns.includes(e.name)||$s.includes(e?.code||"")||Fs.includes(e.$metadata?.httpStatusCode||0);class Ds{constructor(e){this.currentCapacity=0,this.enabled=!1,this.lastMaxRate=0,this.measuredTxRate=0,this.requestCount=0,this.lastTimestamp=0,this.timeWindow=0,this.beta=e?.beta??.7,this.minCapacity=e?.minCapacity??1,this.minFillRate=e?.minFillRate??.5,this.scaleConstant=e?.scaleConstant??.4,this.smooth=e?.smooth??.8;const t=this.getCurrentTimeInSeconds();this.lastThrottleTime=t,this.lastTxRateBucket=Math.floor(this.getCurrentTimeInSeconds()),this.fillRate=this.minFillRate,this.maxCapacity=this.minCapacity}getCurrentTimeInSeconds(){return Date.now()/1e3}async getSendToken(){return this.acquireTokenBucket(1)}async acquireTokenBucket(e){if(this.enabled){if(this.refillTokenBucket(),e>this.currentCapacity){const t=(e-this.currentCapacity)/this.fillRate*1e3;await new Promise((e=>Ds.setTimeoutFn(e,t)))}this.currentCapacity=this.currentCapacity-e}}refillTokenBucket(){const e=this.getCurrentTimeInSeconds();if(!this.lastTimestamp)return void(this.lastTimestamp=e);const t=(e-this.lastTimestamp)*this.fillRate;this.currentCapacity=Math.min(this.maxCapacity,this.currentCapacity+t),this.lastTimestamp=e}updateClientSendingRate(e){let t;if(this.updateMeasuredRate(),Us(e)){const e=this.enabled?Math.min(this.measuredTxRate,this.fillRate):this.measuredTxRate;this.lastMaxRate=e,this.calculateTimeWindow(),this.lastThrottleTime=this.getCurrentTimeInSeconds(),t=this.cubicThrottle(e),this.enableTokenBucket()}else this.calculateTimeWindow(),t=this.cubicSuccess(this.getCurrentTimeInSeconds());const r=Math.min(t,2*this.measuredTxRate);this.updateTokenBucketRate(r)}calculateTimeWindow(){this.timeWindow=this.getPrecise(Math.pow(this.lastMaxRate*(1-this.beta)/this.scaleConstant,1/3))}cubicThrottle(e){return this.getPrecise(e*this.beta)}cubicSuccess(e){return this.getPrecise(this.scaleConstant*Math.pow(e-this.lastThrottleTime-this.timeWindow,3)+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(e){this.refillTokenBucket(),this.fillRate=Math.max(e,this.minFillRate),this.maxCapacity=Math.max(e,this.minCapacity),this.currentCapacity=Math.min(this.currentCapacity,this.maxCapacity)}updateMeasuredRate(){const e=this.getCurrentTimeInSeconds(),t=Math.floor(2*e)/2;if(this.requestCount++,t>this.lastTxRateBucket){const e=this.requestCount/(t-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(e*this.smooth+this.measuredTxRate*(1-this.smooth)),this.requestCount=0,this.lastTxRateBucket=t}}getPrecise(e){return parseFloat(e.toFixed(8))}}Ds.setTimeoutFn=setTimeout;const Bs=({retryDelay:e,retryCount:t,retryCost:r})=>({getRetryCount:()=>t,getRetryDelay:()=>Math.min(2e4,e),getRetryCost:()=>r});class zs{constructor(e){this.maxAttempts=e,this.mode=Ps.STANDARD,this.capacity=500,this.retryBackoffStrategy=(()=>{let e=100;return{computeNextBackoffDelay:t=>Math.floor(Math.min(2e4,Math.random()*2**t*e)),setDelayBase:t=>{e=t}}})(),this.maxAttemptsProvider="function"==typeof e?e:async()=>e}async acquireInitialRetryToken(e){return Bs({retryDelay:100,retryCount:0})}async refreshRetryTokenForRetry(e,t){const r=await this.getMaxAttempts();if(this.shouldRetry(e,t,r)){const r=t.errorType;this.retryBackoffStrategy.setDelayBase("THROTTLING"===r?500:100);const n=this.retryBackoffStrategy.computeNextBackoffDelay(e.getRetryCount()),i=t.retryAfterHint?Math.max(t.retryAfterHint.getTime()-Date.now()||0,n):n,o=this.getCapacityCost(r);return this.capacity-=o,Bs({retryDelay:i,retryCount:e.getRetryCount()+1,retryCost:o})}throw new Error("No retry token available")}recordSuccess(e){this.capacity=Math.max(500,this.capacity+(e.getRetryCost()??1))}getCapacity(){return this.capacity}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch(e){return console.warn("Max attempts provider could not resolve. Using default of 3"),3}}shouldRetry(e,t,r){return e.getRetryCount()+1=this.getCapacityCost(t.errorType)&&this.isRetryableError(t.errorType)}getCapacityCost(e){return"TRANSIENT"===e?10:5}isRetryableError(e){return"THROTTLING"===e||"TRANSIENT"===e}}class js{constructor(e,t){this.maxAttemptsProvider=e,this.mode=Ps.ADAPTIVE;const{rateLimiter:r}=t??{};this.rateLimiter=r??new Ds,this.standardRetryStrategy=new zs(e)}async acquireInitialRetryToken(e){return await this.rateLimiter.getSendToken(),this.standardRetryStrategy.acquireInitialRetryToken(e)}async refreshRetryTokenForRetry(e,t){return this.rateLimiter.updateClientSendingRate(t),this.standardRetryStrategy.refreshRetryTokenForRetry(e,t)}recordSuccess(e){this.rateLimiter.updateClientSendingRate({}),this.standardRetryStrategy.recordSuccess(e)}}let qs;const Ws=new Uint8Array(16);function Hs(){if(!qs&&(qs="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!qs))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return qs(Ws)}const Ks=[];for(let e=0;e<256;++e)Ks.push((e+256).toString(16).slice(1));var Vs={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Qs(e,t,r){if(Vs.randomUUID&&!t&&!e)return Vs.randomUUID();const n=(e=e||{}).random||(e.rng||Hs)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=n[e];return t}return function(e,t=0){return Ks[e[t+0]]+Ks[e[t+1]]+Ks[e[t+2]]+Ks[e[t+3]]+"-"+Ks[e[t+4]]+Ks[e[t+5]]+"-"+Ks[e[t+6]]+Ks[e[t+7]]+"-"+Ks[e[t+8]]+Ks[e[t+9]]+"-"+Ks[e[t+10]]+Ks[e[t+11]]+Ks[e[t+12]]+Ks[e[t+13]]+Ks[e[t+14]]+Ks[e[t+15]]}(n)}const Gs=e=>e?.body instanceof ReadableStream,Js=e=>void 0!==e.acquireInitialRetryToken&&void 0!==e.refreshRetryTokenForRetry&&void 0!==e.recordSuccess,Xs=e=>{const t={error:e,errorType:Ys(e)},r=ta(e.$response);return r&&(t.retryAfterHint=r),t},Ys=e=>Us(e)?"THROTTLING":Ls(e)?"TRANSIENT":(e=>{if(void 0!==e.$metadata?.httpStatusCode){const t=e.$metadata.httpStatusCode;return 500<=t&&t<=599&&!Ls(e)}return!1})(e)?"SERVER_ERROR":"CLIENT_ERROR",Zs={name:"retryMiddleware",tags:["RETRY"],step:"finalizeRequest",priority:"high",override:!0},ea=e=>({applyToStack:t=>{t.add((e=>(t,r)=>async n=>{let i=await e.retryStrategy();const o=await e.maxAttempts();if(!Js(i))return i?.mode&&(r.userAgent=[...r.userAgent||[],["cfg/retry-mode",i.mode]]),i.retry(t,n);{let e=await i.acquireInitialRetryToken(r.partition_id),a=new Error,c=0,u=0;const{request:d}=n,l=K.isInstance(d);for(l&&(d.headers["amz-sdk-invocation-id"]=Qs());;)try{l&&(d.headers["amz-sdk-request"]=`attempt=${c+1}; max=${o}`);const{response:r,output:s}=await t(n);return i.recordSuccess(e),s.$metadata.attempts=c+1,s.$metadata.totalRetryDelay=u,{response:r,output:s}}catch(t){const n=Xs(t);if(a=(s=t)instanceof Error?s:s instanceof Object?Object.assign(new Error,s):"string"==typeof s?new Error(s):new Error(`AWS SDK error wrapper for ${s}`),l&&Gs(d))throw(r.logger instanceof Kr?console:r.logger)?.warn("An error was encountered in a non-retryable streaming request."),a;try{e=await i.refreshRetryTokenForRetry(e,n)}catch(e){throw a.$metadata||(a.$metadata={}),a.$metadata.attempts=c+1,a.$metadata.totalRetryDelay=u,a}c=e.getRetryCount();const o=e.getRetryDelay();u+=o,await new Promise((e=>setTimeout(e,o)))}}var s})(e),Zs)}}),ta=e=>{if(!V.isInstance(e))return;const t=Object.keys(e.headers).find((e=>"retry-after"===e.toLowerCase()));if(!t)return;const r=e.headers[t],n=Number(r);if(!Number.isNaN(n))return new Date(1e3*n);return new Date(r)},ra=null;class na{constructor(e){this.sigv4Signer=new mo(e),this.signerOptions=e}async sign(e,t={}){if("*"===t.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().sign(e,t)}return this.sigv4Signer.sign(e,t)}async signWithCredentials(e,t,r={}){if("*"===r.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().signWithCredentials(e,t,r)}return this.sigv4Signer.signWithCredentials(e,t,r)}async presign(e,t={}){if("*"===t.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().presign(e,t)}return this.sigv4Signer.presign(e,t)}async presignWithCredentials(e,t,r={}){if("*"===r.signingRegion)throw new Error("Method presignWithCredentials is not supported for [signingRegion=*].");return this.sigv4Signer.presignWithCredentials(e,t,r)}getSigv4aSigner(){if(!this.sigv4aSigner){let e=null;try{if(e=ra,"function"!=typeof e)throw new Error}catch(e){throw e.message=`${e.message}\nPlease check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. \nYou must also register the package by calling [require("@aws-sdk/signature-v4-crt");] or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. \nFor more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`,e}this.sigv4aSigner=new e({...this.signerOptions,signingAlgorithm:1})}return this.sigv4aSigner}}const ia="required",oa="type",sa="conditions",aa="fn",ca="argv",ua="ref",da="assign",la="url",ha="properties",fa="backend",pa="authSchemes",ga="disableDoubleEncoding",ma="signingName",ya="signingRegion",va="headers",ba="signingRegionSet",wa=!0,ka="isSet",Sa="booleanEquals",Ea="error",xa="aws.partition",Ta="stringEquals",Aa="getAttr",Ca="name",Ra="substring",Oa="bucketSuffix",_a="parseURL",Pa="{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}",Ia="endpoint",Ma="tree",Na="aws.isVirtualHostableS3Bucket",Fa="{url#scheme}://{Bucket}.{url#authority}{url#path}",$a="not",Ua="{url#scheme}://{url#authority}{url#path}",La="hardwareType",Da="regionPrefix",Ba="bucketAliasSuffix",za="outpostId",ja="isValidHostLabel",qa="sigv4a",Wa="s3-outposts",Ha="s3",Ka="{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}",Va="https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}",Qa="https://{Bucket}.s3.{partitionResult#dnsSuffix}",Ga="aws.parseArn",Ja="bucketArn",Xa="arnType",Ya="s3-object-lambda",Za="accesspoint",ec="accessPointName",tc="{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}",rc="mrapPartition",nc="outpostType",ic="arnPrefix",oc="{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}",sc="https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",ac="https://s3.{partitionResult#dnsSuffix}",cc={[ia]:!1,[oa]:"String"},uc={[ia]:!0,default:!1,[oa]:"Boolean"},dc={[ia]:!1,[oa]:"Boolean"},lc={[aa]:Sa,[ca]:[{[ua]:"Accelerate"},!0]},hc={[aa]:Sa,[ca]:[{[ua]:"UseFIPS"},!0]},fc={[aa]:Sa,[ca]:[{[ua]:"UseDualStack"},!0]},pc={[aa]:ka,[ca]:[{[ua]:"Endpoint"}]},gc={[aa]:xa,[ca]:[{[ua]:"Region"}],[da]:"partitionResult"},mc={[aa]:Ta,[ca]:[{[aa]:Aa,[ca]:[{[ua]:"partitionResult"},Ca]},"aws-cn"]},yc={[aa]:ka,[ca]:[{[ua]:"Bucket"}]},vc={[ua]:"Bucket"},bc={[aa]:_a,[ca]:[{[ua]:"Endpoint"}],[da]:"url"},wc={[aa]:Sa,[ca]:[{[aa]:Aa,[ca]:[{[ua]:"url"},"isIp"]},!0]},kc={[ua]:"url"},Sc={[aa]:"uriEncode",[ca]:[vc],[da]:"uri_encoded_bucket"},Ec={[fa]:"S3Express",[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:"s3express",[ya]:"{Region}"}]},xc={},Tc={[aa]:Na,[ca]:[vc,!1]},Ac={[Ea]:"S3Express bucket name is not a valid virtual hostable name.",[oa]:Ea},Cc={[fa]:"S3Express",[pa]:[{[ga]:!0,[Ca]:"sigv4-s3express",[ma]:"s3express",[ya]:"{Region}"}]},Rc={[aa]:ka,[ca]:[{[ua]:"UseS3ExpressControlEndpoint"}]},Oc={[aa]:Sa,[ca]:[{[ua]:"UseS3ExpressControlEndpoint"},!0]},_c={[aa]:$a,[ca]:[pc]},Pc={[Ea]:"Unrecognized S3Express bucket name format.",[oa]:Ea},Ic={[aa]:$a,[ca]:[yc]},Mc={[ua]:La},Nc={[sa]:[_c],[Ea]:"Expected a endpoint to be specified but no endpoint was found",[oa]:Ea},Fc={[pa]:[{[ga]:!0,[Ca]:qa,[ma]:Wa,[ba]:["*"]},{[ga]:!0,[Ca]:"sigv4",[ma]:Wa,[ya]:"{Region}"}]},$c={[aa]:Sa,[ca]:[{[ua]:"ForcePathStyle"},!1]},Uc={[ua]:"ForcePathStyle"},Lc={[aa]:Sa,[ca]:[{[ua]:"Accelerate"},!1]},Dc={[aa]:Ta,[ca]:[{[ua]:"Region"},"aws-global"]},Bc={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ha,[ya]:"us-east-1"}]},zc={[aa]:$a,[ca]:[Dc]},jc={[aa]:Sa,[ca]:[{[ua]:"UseGlobalEndpoint"},!0]},qc={[la]:"https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[ha]:{[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ha,[ya]:"{Region}"}]},[va]:{}},Wc={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ha,[ya]:"{Region}"}]},Hc={[aa]:Sa,[ca]:[{[ua]:"UseGlobalEndpoint"},!1]},Kc={[aa]:Sa,[ca]:[{[ua]:"UseDualStack"},!1]},Vc={[la]:"https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Qc={[aa]:Sa,[ca]:[{[ua]:"UseFIPS"},!1]},Gc={[la]:"https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Jc={[la]:"https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Xc={[aa]:Sa,[ca]:[{[aa]:Aa,[ca]:[kc,"isIp"]},!1]},Yc={[la]:Ka,[ha]:Wc,[va]:{}},Zc={[la]:Fa,[ha]:Wc,[va]:{}},eu={[Ia]:Zc,[oa]:Ia},tu={[la]:Va,[ha]:Wc,[va]:{}},ru={[la]:"https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},nu={[Ea]:"Invalid region: region was not a valid DNS name.",[oa]:Ea},iu={[ua]:Ja},ou={[ua]:Xa},su={[aa]:Aa,[ca]:[iu,"service"]},au={[ua]:ec},cu={[sa]:[fc],[Ea]:"S3 Object Lambda does not support Dual-stack",[oa]:Ea},uu={[sa]:[lc],[Ea]:"S3 Object Lambda does not support S3 Accelerate",[oa]:Ea},du={[sa]:[{[aa]:ka,[ca]:[{[ua]:"DisableAccessPoints"}]},{[aa]:Sa,[ca]:[{[ua]:"DisableAccessPoints"},!0]}],[Ea]:"Access points are not supported for this operation",[oa]:Ea},lu={[sa]:[{[aa]:ka,[ca]:[{[ua]:"UseArnRegion"}]},{[aa]:Sa,[ca]:[{[ua]:"UseArnRegion"},!1]},{[aa]:$a,[ca]:[{[aa]:Ta,[ca]:[{[aa]:Aa,[ca]:[iu,"region"]},"{Region}"]}]}],[Ea]:"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`",[oa]:Ea},hu={[aa]:Aa,[ca]:[{[ua]:"bucketPartition"},Ca]},fu={[aa]:Aa,[ca]:[iu,"accountId"]},pu={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ya,[ya]:"{bucketArn#region}"}]},gu={[Ea]:"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`",[oa]:Ea},mu={[Ea]:"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`",[oa]:Ea},yu={[Ea]:"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)",[oa]:Ea},vu={[Ea]:"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`",[oa]:Ea},bu={[Ea]:"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.",[oa]:Ea},wu={[Ea]:"Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided",[oa]:Ea},ku={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ha,[ya]:"{bucketArn#region}"}]},Su={[pa]:[{[ga]:!0,[Ca]:qa,[ma]:Wa,[ba]:["*"]},{[ga]:!0,[Ca]:"sigv4",[ma]:Wa,[ya]:"{bucketArn#region}"}]},Eu={[aa]:Ga,[ca]:[vc]},xu={[la]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Wc,[va]:{}},Tu={[la]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Wc,[va]:{}},Au={[la]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Wc,[va]:{}},Cu={[la]:oc,[ha]:Wc,[va]:{}},Ru={[la]:"https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Wc,[va]:{}},Ou={[ua]:"UseObjectLambdaEndpoint"},_u={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ya,[ya]:"{Region}"}]},Pu={[la]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Iu={[la]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Mu={[la]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Nu={[la]:Ua,[ha]:Wc,[va]:{}},Fu={[la]:"https://s3.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},$u=[{[ua]:"Region"}],Uu=[{[ua]:"Endpoint"}],Lu=[vc],Du=[fc],Bu=[lc],zu=[pc,bc],ju=[{[aa]:ka,[ca]:[{[ua]:"DisableS3ExpressSessionAuth"}]},{[aa]:Sa,[ca]:[{[ua]:"DisableS3ExpressSessionAuth"},!0]}],qu=[wc],Wu=[Sc],Hu=[Tc],Ku=[hc],Vu=[{[aa]:Ra,[ca]:[vc,6,14,!0],[da]:"s3expressAvailabilityZoneId"},{[aa]:Ra,[ca]:[vc,14,16,!0],[da]:"s3expressAvailabilityZoneDelim"},{[aa]:Ta,[ca]:[{[ua]:"s3expressAvailabilityZoneDelim"},"--"]}],Qu=[{[sa]:[hc],[Ia]:{[la]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ha]:Ec,[va]:{}},[oa]:Ia},{[Ia]:{[la]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ha]:Ec,[va]:{}},[oa]:Ia}],Gu=[{[aa]:Ra,[ca]:[vc,6,15,!0],[da]:"s3expressAvailabilityZoneId"},{[aa]:Ra,[ca]:[vc,15,17,!0],[da]:"s3expressAvailabilityZoneDelim"},{[aa]:Ta,[ca]:[{[ua]:"s3expressAvailabilityZoneDelim"},"--"]}],Ju=[{[sa]:[hc],[Ia]:{[la]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ha]:Cc,[va]:{}},[oa]:Ia},{[Ia]:{[la]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ha]:Cc,[va]:{}},[oa]:Ia}],Xu=[yc],Yu=[{[aa]:ja,[ca]:[{[ua]:za},!1]}],Zu=[{[aa]:Ta,[ca]:[{[ua]:Da},"beta"]}],ed=[gc],td=[{[aa]:ja,[ca]:[{[ua]:"Region"},!1]}],rd=[{[aa]:Ta,[ca]:[{[ua]:"Region"},"us-east-1"]}],nd=[{[aa]:Ta,[ca]:[ou,Za]}],id=[{[aa]:Aa,[ca]:[iu,"resourceId[1]"],[da]:ec},{[aa]:$a,[ca]:[{[aa]:Ta,[ca]:[au,""]}]}],od=[iu,"resourceId[1]"],sd=[{[aa]:$a,[ca]:[{[aa]:Ta,[ca]:[{[aa]:Aa,[ca]:[iu,"region"]},""]}]}],ad=[{[aa]:$a,[ca]:[{[aa]:ka,[ca]:[{[aa]:Aa,[ca]:[iu,"resourceId[2]"]}]}]}],cd=[iu,"resourceId[2]"],ud=[{[aa]:xa,[ca]:[{[aa]:Aa,[ca]:[iu,"region"]}],[da]:"bucketPartition"}],dd=[{[aa]:Ta,[ca]:[hu,{[aa]:Aa,[ca]:[{[ua]:"partitionResult"},Ca]}]}],ld=[{[aa]:ja,[ca]:[{[aa]:Aa,[ca]:[iu,"region"]},!0]}],hd=[{[aa]:ja,[ca]:[fu,!1]}],fd=[{[aa]:ja,[ca]:[au,!1]}],pd=[{[aa]:ja,[ca]:[{[ua]:"Region"},!0]}],gd={version:"1.0",parameters:{Bucket:cc,Region:cc,UseFIPS:uc,UseDualStack:uc,Endpoint:cc,ForcePathStyle:uc,Accelerate:uc,UseGlobalEndpoint:uc,UseObjectLambdaEndpoint:dc,Key:cc,Prefix:cc,CopySource:cc,DisableAccessPoints:dc,DisableMultiRegionAccessPoints:uc,UseArnRegion:dc,UseS3ExpressControlEndpoint:dc,DisableS3ExpressSessionAuth:dc},rules:[{[sa]:[{[aa]:ka,[ca]:$u}],rules:[{[sa]:[lc,hc],error:"Accelerate cannot be used with FIPS",[oa]:Ea},{[sa]:[fc,pc],error:"Cannot set dual-stack in combination with a custom endpoint.",[oa]:Ea},{[sa]:[pc,hc],error:"A custom endpoint cannot be combined with FIPS",[oa]:Ea},{[sa]:[pc,lc],error:"A custom endpoint cannot be combined with S3 Accelerate",[oa]:Ea},{[sa]:[hc,gc,mc],error:"Partition does not support FIPS",[oa]:Ea},{[sa]:[yc,{[aa]:Ra,[ca]:[vc,0,6,wa],[da]:Oa},{[aa]:Ta,[ca]:[{[ua]:Oa},"--x-s3"]}],rules:[{[sa]:Du,error:"S3Express does not support Dual-stack.",[oa]:Ea},{[sa]:Bu,error:"S3Express does not support S3 Accelerate.",[oa]:Ea},{[sa]:zu,rules:[{[sa]:ju,rules:[{[sa]:qu,rules:[{[sa]:Wu,rules:[{endpoint:{[la]:Pa,[ha]:Ec,[va]:xc},[oa]:Ia}],[oa]:Ma}],[oa]:Ma},{[sa]:Hu,rules:[{endpoint:{[la]:Fa,[ha]:Ec,[va]:xc},[oa]:Ia}],[oa]:Ma},Ac],[oa]:Ma},{[sa]:qu,rules:[{[sa]:Wu,rules:[{endpoint:{[la]:Pa,[ha]:Cc,[va]:xc},[oa]:Ia}],[oa]:Ma}],[oa]:Ma},{[sa]:Hu,rules:[{endpoint:{[la]:Fa,[ha]:Cc,[va]:xc},[oa]:Ia}],[oa]:Ma},Ac],[oa]:Ma},{[sa]:[Rc,Oc],rules:[{[sa]:[Sc,_c],rules:[{[sa]:Ku,endpoint:{[la]:"https://s3express-control-fips.{Region}.amazonaws.com/{uri_encoded_bucket}",[ha]:Ec,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://s3express-control.{Region}.amazonaws.com/{uri_encoded_bucket}",[ha]:Ec,[va]:xc},[oa]:Ia}],[oa]:Ma}],[oa]:Ma},{[sa]:Hu,rules:[{[sa]:ju,rules:[{[sa]:Vu,rules:Qu,[oa]:Ma},{[sa]:Gu,rules:Qu,[oa]:Ma},Pc],[oa]:Ma},{[sa]:Vu,rules:Ju,[oa]:Ma},{[sa]:Gu,rules:Ju,[oa]:Ma},Pc],[oa]:Ma},Ac],[oa]:Ma},{[sa]:[Ic,Rc,Oc],rules:[{[sa]:zu,endpoint:{[la]:Ua,[ha]:Ec,[va]:xc},[oa]:Ia},{[sa]:Ku,endpoint:{[la]:"https://s3express-control-fips.{Region}.amazonaws.com",[ha]:Ec,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://s3express-control.{Region}.amazonaws.com",[ha]:Ec,[va]:xc},[oa]:Ia}],[oa]:Ma},{[sa]:[yc,{[aa]:Ra,[ca]:[vc,49,50,wa],[da]:La},{[aa]:Ra,[ca]:[vc,8,12,wa],[da]:Da},{[aa]:Ra,[ca]:[vc,0,7,wa],[da]:Ba},{[aa]:Ra,[ca]:[vc,32,49,wa],[da]:za},{[aa]:xa,[ca]:$u,[da]:"regionPartition"},{[aa]:Ta,[ca]:[{[ua]:Ba},"--op-s3"]}],rules:[{[sa]:Yu,rules:[{[sa]:[{[aa]:Ta,[ca]:[Mc,"e"]}],rules:[{[sa]:Zu,rules:[Nc,{[sa]:zu,endpoint:{[la]:"https://{Bucket}.ec2.{url#authority}",[ha]:Fc,[va]:xc},[oa]:Ia}],[oa]:Ma},{endpoint:{[la]:"https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[ha]:Fc,[va]:xc},[oa]:Ia}],[oa]:Ma},{[sa]:[{[aa]:Ta,[ca]:[Mc,"o"]}],rules:[{[sa]:Zu,rules:[Nc,{[sa]:zu,endpoint:{[la]:"https://{Bucket}.op-{outpostId}.{url#authority}",[ha]:Fc,[va]:xc},[oa]:Ia}],[oa]:Ma},{endpoint:{[la]:"https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[ha]:Fc,[va]:xc},[oa]:Ia}],[oa]:Ma},{error:'Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"',[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.",[oa]:Ea}],[oa]:Ma},{[sa]:Xu,rules:[{[sa]:[pc,{[aa]:$a,[ca]:[{[aa]:ka,[ca]:[{[aa]:_a,[ca]:Uu}]}]}],error:"Custom endpoint `{Endpoint}` was not a valid URI",[oa]:Ea},{[sa]:[$c,Tc],rules:[{[sa]:ed,rules:[{[sa]:td,rules:[{[sa]:[lc,mc],error:"S3 Accelerate cannot be used in this region",[oa]:Ea},{[sa]:[fc,hc,Lc,_c,Dc],endpoint:{[la]:"https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,hc,Lc,_c,zc,jc],rules:[{endpoint:qc,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,hc,Lc,_c,zc,Hc],endpoint:qc,[oa]:Ia},{[sa]:[Kc,hc,Lc,_c,Dc],endpoint:{[la]:"https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,hc,Lc,_c,zc,jc],rules:[{endpoint:Vc,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,hc,Lc,_c,zc,Hc],endpoint:Vc,[oa]:Ia},{[sa]:[fc,Qc,lc,_c,Dc],endpoint:{[la]:"https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,Qc,lc,_c,zc,jc],rules:[{endpoint:Gc,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,Qc,lc,_c,zc,Hc],endpoint:Gc,[oa]:Ia},{[sa]:[fc,Qc,Lc,_c,Dc],endpoint:{[la]:"https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,Qc,Lc,_c,zc,jc],rules:[{endpoint:Jc,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,Qc,Lc,_c,zc,Hc],endpoint:Jc,[oa]:Ia},{[sa]:[Kc,Qc,Lc,pc,bc,wc,Dc],endpoint:{[la]:Ka,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Qc,Lc,pc,bc,Xc,Dc],endpoint:{[la]:Fa,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Qc,Lc,pc,bc,wc,zc,jc],rules:[{[sa]:rd,endpoint:Yc,[oa]:Ia},{endpoint:Yc,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,Qc,Lc,pc,bc,Xc,zc,jc],rules:[{[sa]:rd,endpoint:Zc,[oa]:Ia},eu],[oa]:Ma},{[sa]:[Kc,Qc,Lc,pc,bc,wc,zc,Hc],endpoint:Yc,[oa]:Ia},{[sa]:[Kc,Qc,Lc,pc,bc,Xc,zc,Hc],endpoint:Zc,[oa]:Ia},{[sa]:[Kc,Qc,lc,_c,Dc],endpoint:{[la]:Va,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Qc,lc,_c,zc,jc],rules:[{[sa]:rd,endpoint:tu,[oa]:Ia},{endpoint:tu,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,Qc,lc,_c,zc,Hc],endpoint:tu,[oa]:Ia},{[sa]:[Kc,Qc,Lc,_c,Dc],endpoint:{[la]:Qa,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Qc,Lc,_c,zc,jc],rules:[{[sa]:rd,endpoint:{[la]:Qa,[ha]:Wc,[va]:xc},[oa]:Ia},{endpoint:ru,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,Qc,Lc,_c,zc,Hc],endpoint:ru,[oa]:Ia}],[oa]:Ma},nu],[oa]:Ma}],[oa]:Ma},{[sa]:[pc,bc,{[aa]:Ta,[ca]:[{[aa]:Aa,[ca]:[kc,"scheme"]},"http"]},{[aa]:Na,[ca]:[vc,wa]},$c,Qc,Kc,Lc],rules:[{[sa]:ed,rules:[{[sa]:td,rules:[eu],[oa]:Ma},nu],[oa]:Ma}],[oa]:Ma},{[sa]:[$c,{[aa]:Ga,[ca]:Lu,[da]:Ja}],rules:[{[sa]:[{[aa]:Aa,[ca]:[iu,"resourceId[0]"],[da]:Xa},{[aa]:$a,[ca]:[{[aa]:Ta,[ca]:[ou,""]}]}],rules:[{[sa]:[{[aa]:Ta,[ca]:[su,Ya]}],rules:[{[sa]:nd,rules:[{[sa]:id,rules:[cu,uu,{[sa]:sd,rules:[du,{[sa]:ad,rules:[lu,{[sa]:ud,rules:[{[sa]:ed,rules:[{[sa]:dd,rules:[{[sa]:ld,rules:[{[sa]:[{[aa]:Ta,[ca]:[fu,""]}],error:"Invalid ARN: Missing account id",[oa]:Ea},{[sa]:hd,rules:[{[sa]:fd,rules:[{[sa]:zu,endpoint:{[la]:tc,[ha]:pu,[va]:xc},[oa]:Ia},{[sa]:Ku,endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:pu,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:pu,[va]:xc},[oa]:Ia}],[oa]:Ma},gu],[oa]:Ma},mu],[oa]:Ma},yu],[oa]:Ma},vu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},bu],[oa]:Ma},{error:"Invalid ARN: bucket ARN is missing a region",[oa]:Ea}],[oa]:Ma},wu],[oa]:Ma},{error:"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`",[oa]:Ea}],[oa]:Ma},{[sa]:nd,rules:[{[sa]:id,rules:[{[sa]:sd,rules:[{[sa]:nd,rules:[{[sa]:sd,rules:[du,{[sa]:ad,rules:[lu,{[sa]:ud,rules:[{[sa]:ed,rules:[{[sa]:[{[aa]:Ta,[ca]:[hu,"{partitionResult#name}"]}],rules:[{[sa]:ld,rules:[{[sa]:[{[aa]:Ta,[ca]:[su,Ha]}],rules:[{[sa]:hd,rules:[{[sa]:fd,rules:[{[sa]:Bu,error:"Access Points do not support S3 Accelerate",[oa]:Ea},{[sa]:[hc,fc],endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:ku,[va]:xc},[oa]:Ia},{[sa]:[hc,Kc],endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:ku,[va]:xc},[oa]:Ia},{[sa]:[Qc,fc],endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:ku,[va]:xc},[oa]:Ia},{[sa]:[Qc,Kc,pc,bc],endpoint:{[la]:tc,[ha]:ku,[va]:xc},[oa]:Ia},{[sa]:[Qc,Kc],endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:ku,[va]:xc},[oa]:Ia}],[oa]:Ma},gu],[oa]:Ma},mu],[oa]:Ma},{error:"Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}",[oa]:Ea}],[oa]:Ma},yu],[oa]:Ma},vu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},bu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},{[sa]:[{[aa]:ja,[ca]:[au,wa]}],rules:[{[sa]:Du,error:"S3 MRAP does not support dual-stack",[oa]:Ea},{[sa]:Ku,error:"S3 MRAP does not support FIPS",[oa]:Ea},{[sa]:Bu,error:"S3 MRAP does not support S3 Accelerate",[oa]:Ea},{[sa]:[{[aa]:Sa,[ca]:[{[ua]:"DisableMultiRegionAccessPoints"},wa]}],error:"Invalid configuration: Multi-Region Access Point ARNs are disabled.",[oa]:Ea},{[sa]:[{[aa]:xa,[ca]:$u,[da]:rc}],rules:[{[sa]:[{[aa]:Ta,[ca]:[{[aa]:Aa,[ca]:[{[ua]:rc},Ca]},{[aa]:Aa,[ca]:[iu,"partition"]}]}],rules:[{endpoint:{[la]:"https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}",[ha]:{[pa]:[{[ga]:wa,name:qa,[ma]:Ha,[ba]:["*"]}]},[va]:xc},[oa]:Ia}],[oa]:Ma},{error:"Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`",[oa]:Ea}],[oa]:Ma}],[oa]:Ma},{error:"Invalid Access Point Name",[oa]:Ea}],[oa]:Ma},wu],[oa]:Ma},{[sa]:[{[aa]:Ta,[ca]:[su,Wa]}],rules:[{[sa]:Du,error:"S3 Outposts does not support Dual-stack",[oa]:Ea},{[sa]:Ku,error:"S3 Outposts does not support FIPS",[oa]:Ea},{[sa]:Bu,error:"S3 Outposts does not support S3 Accelerate",[oa]:Ea},{[sa]:[{[aa]:ka,[ca]:[{[aa]:Aa,[ca]:[iu,"resourceId[4]"]}]}],error:"Invalid Arn: Outpost Access Point ARN contains sub resources",[oa]:Ea},{[sa]:[{[aa]:Aa,[ca]:od,[da]:za}],rules:[{[sa]:Yu,rules:[lu,{[sa]:ud,rules:[{[sa]:ed,rules:[{[sa]:dd,rules:[{[sa]:ld,rules:[{[sa]:hd,rules:[{[sa]:[{[aa]:Aa,[ca]:cd,[da]:nc}],rules:[{[sa]:[{[aa]:Aa,[ca]:[iu,"resourceId[3]"],[da]:ec}],rules:[{[sa]:[{[aa]:Ta,[ca]:[{[ua]:nc},Za]}],rules:[{[sa]:zu,endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}",[ha]:Su,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:Su,[va]:xc},[oa]:Ia}],[oa]:Ma},{error:"Expected an outpost type `accesspoint`, found {outpostType}",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: expected an access point name",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: Expected a 4-component resource",[oa]:Ea}],[oa]:Ma},mu],[oa]:Ma},yu],[oa]:Ma},vu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},{error:"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: The Outpost Id was not set",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: No ARN type specified",[oa]:Ea}],[oa]:Ma},{[sa]:[{[aa]:Ra,[ca]:[vc,0,4,!1],[da]:ic},{[aa]:Ta,[ca]:[{[ua]:ic},"arn:"]},{[aa]:$a,[ca]:[{[aa]:ka,[ca]:[Eu]}]}],error:"Invalid ARN: `{Bucket}` was not a valid ARN",[oa]:Ea},{[sa]:[{[aa]:Sa,[ca]:[Uc,wa]},Eu],error:"Path-style addressing cannot be used with ARN buckets",[oa]:Ea},{[sa]:Wu,rules:[{[sa]:ed,rules:[{[sa]:[Lc],rules:[{[sa]:[fc,_c,hc,Dc],endpoint:{[la]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,_c,hc,zc,jc],rules:[{endpoint:xu,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,_c,hc,zc,Hc],endpoint:xu,[oa]:Ia},{[sa]:[Kc,_c,hc,Dc],endpoint:{[la]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,_c,hc,zc,jc],rules:[{endpoint:Tu,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,_c,hc,zc,Hc],endpoint:Tu,[oa]:Ia},{[sa]:[fc,_c,Qc,Dc],endpoint:{[la]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,_c,Qc,zc,jc],rules:[{endpoint:Au,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,_c,Qc,zc,Hc],endpoint:Au,[oa]:Ia},{[sa]:[Kc,pc,bc,Qc,Dc],endpoint:{[la]:oc,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,pc,bc,Qc,zc,jc],rules:[{[sa]:rd,endpoint:Cu,[oa]:Ia},{endpoint:Cu,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,pc,bc,Qc,zc,Hc],endpoint:Cu,[oa]:Ia},{[sa]:[Kc,_c,Qc,Dc],endpoint:{[la]:sc,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,_c,Qc,zc,jc],rules:[{[sa]:rd,endpoint:{[la]:sc,[ha]:Wc,[va]:xc},[oa]:Ia},{endpoint:Ru,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,_c,Qc,zc,Hc],endpoint:Ru,[oa]:Ia}],[oa]:Ma},{error:"Path-style addressing cannot be used with S3 Accelerate",[oa]:Ea}],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},{[sa]:[{[aa]:ka,[ca]:[Ou]},{[aa]:Sa,[ca]:[Ou,wa]}],rules:[{[sa]:ed,rules:[{[sa]:pd,rules:[cu,uu,{[sa]:zu,endpoint:{[la]:Ua,[ha]:_u,[va]:xc},[oa]:Ia},{[sa]:Ku,endpoint:{[la]:"https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}",[ha]:_u,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}",[ha]:_u,[va]:xc},[oa]:Ia}],[oa]:Ma},nu],[oa]:Ma}],[oa]:Ma},{[sa]:[Ic],rules:[{[sa]:ed,rules:[{[sa]:pd,rules:[{[sa]:[hc,fc,_c,Dc],endpoint:{[la]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[hc,fc,_c,zc,jc],rules:[{endpoint:Pu,[oa]:Ia}],[oa]:Ma},{[sa]:[hc,fc,_c,zc,Hc],endpoint:Pu,[oa]:Ia},{[sa]:[hc,Kc,_c,Dc],endpoint:{[la]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[hc,Kc,_c,zc,jc],rules:[{endpoint:Iu,[oa]:Ia}],[oa]:Ma},{[sa]:[hc,Kc,_c,zc,Hc],endpoint:Iu,[oa]:Ia},{[sa]:[Qc,fc,_c,Dc],endpoint:{[la]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Qc,fc,_c,zc,jc],rules:[{endpoint:Mu,[oa]:Ia}],[oa]:Ma},{[sa]:[Qc,fc,_c,zc,Hc],endpoint:Mu,[oa]:Ia},{[sa]:[Qc,Kc,pc,bc,Dc],endpoint:{[la]:Ua,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Qc,Kc,pc,bc,zc,jc],rules:[{[sa]:rd,endpoint:Nu,[oa]:Ia},{endpoint:Nu,[oa]:Ia}],[oa]:Ma},{[sa]:[Qc,Kc,pc,bc,zc,Hc],endpoint:Nu,[oa]:Ia},{[sa]:[Qc,Kc,_c,Dc],endpoint:{[la]:ac,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Qc,Kc,_c,zc,jc],rules:[{[sa]:rd,endpoint:{[la]:ac,[ha]:Wc,[va]:xc},[oa]:Ia},{endpoint:Fu,[oa]:Ia}],[oa]:Ma},{[sa]:[Qc,Kc,_c,zc,Hc],endpoint:Fu,[oa]:Ia}],[oa]:Ma},nu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},{error:"A region must be set when sending requests to S3.",[oa]:Ea}]},md=new class{constructor({size:e,params:t}){this.data=new Map,this.parameters=[],this.capacity=e??50,t&&(this.parameters=t)}get(e,t){const r=this.hash(e);if(!1===r)return t();if(!this.data.has(r)){if(this.data.size>this.capacity+10){const e=this.data.keys();let t=0;for(;;){const{value:r,done:n}=e.next();if(this.data.delete(r),n||++t>10)break}}this.data.set(r,t())}return this.data.get(r)}size(){return this.data.size}hash(e){let t="";const{parameters:r}=this;if(0===r.length)return!1;for(const n of r){const r=String(e[n]??"");if(r.includes("|;"))return!1;t+=r+"|;"}return t}}({size:50,params:["Accelerate","Bucket","DisableAccessPoints","DisableMultiRegionAccessPoints","DisableS3ExpressSessionAuth","Endpoint","ForcePathStyle","Region","UseArnRegion","UseDualStack","UseFIPS","UseGlobalEndpoint","UseObjectLambdaEndpoint","UseS3ExpressControlEndpoint"]}),yd=(e,t={})=>md.get(e,(()=>((e,t)=>{const{endpointParams:r,logger:n}=t,{parameters:i,rules:o}=e;t.logger?.debug?.(`${Uo} Initial EndpointParams: ${Lo(r)}`);const s=Object.entries(i).filter((([,e])=>null!=e.default)).map((([e,t])=>[e,t.default]));if(s.length>0)for(const[e,t]of s)r[e]=r[e]??t;const a=Object.entries(i).filter((([,e])=>e.required)).map((([e])=>e));for(const e of a)if(null==r[e])throw new Do(`Missing required parameter: '${e}'`);const c=ts(o,{endpointParams:r,logger:n,referenceRecord:{}});return t.logger?.debug?.(`${Uo} Resolved endpoint: ${Lo(c)}`),c})(gd,{endpointParams:e,logger:t.logger})));$o.aws=is;const vd=(bd=async(e,t,r)=>({operation:he(t).operation,region:await fe(e.region)()||(()=>{throw new Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),async(e,t,r)=>{if(!r)throw new Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`");const n=await bd(e,t,r),i=he(t)?.commandInstance?.constructor?.getEndpointParameterInstructions;if(!i)throw new Error(`getEndpointParameterInstructions() is not defined on \`${t.commandName}\``);const o=await Cs(r,{getEndpointParameterInstructions:i},e);return Object.assign(n,o)});var bd;function wd(e){return{schemeId:"aws.auth#sigv4",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function kd(e){return{schemeId:"aws.auth#sigv4a",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}const Sd=((e,t,r)=>n=>{const i=e(n),o=i.properties?.authSchemes;if(!o)return t(n);const s=[];for(const e of o){const{name:t,properties:i={},...a}=e,c=t.toLowerCase();let u;if(t!==c&&console.warn(`HttpAuthScheme has been normalized with lowercasing: \`${t}\` to \`${c}\``),"sigv4a"===c){u="aws.auth#sigv4a";const e=o.find((e=>{const t=e.name.toLowerCase();return"sigv4a"!==t&&t.startsWith("sigv4")}));if(e)continue}else{if(!c.startsWith("sigv4"))throw new Error(`Unknown HttpAuthScheme found in \`@smithy.rules#endpointRuleSet\`: \`${c}\``);u="aws.auth#sigv4"}const d=r[u];if(!d)throw new Error(`Could not find HttpAuthOption create function for \`${u}\``);const l=d(n);l.schemeId=u,l.signingProperties={...l.signingProperties||{},...a,...i},s.push(l)}return s})(yd,(e=>{const t=[];return e.operation,t.push(wd(e)),t.push(kd(e)),t}),{"aws.auth#sigv4":wd,"aws.auth#sigv4a":kd}),Ed=e=>{const t=(e=>(e.sigv4aSigningRegionSet=Ee(e.sigv4aSigningRegionSet),e))(Ut(e));return{...t}},xd={ForcePathStyle:{type:"clientContextParams",name:"forcePathStyle"},UseArnRegion:{type:"clientContextParams",name:"useArnRegion"},DisableMultiRegionAccessPoints:{type:"clientContextParams",name:"disableMultiregionAccessPoints"},Accelerate:{type:"clientContextParams",name:"useAccelerateEndpoint"},DisableS3ExpressSessionAuth:{type:"clientContextParams",name:"disableS3ExpressSessionAuth"},UseGlobalEndpoint:{type:"builtInParams",name:"useGlobalEndpoint"},UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}};class Td extends Ir{constructor(e){super(e),Object.setPrototypeOf(this,Td.prototype)}}class Ad extends Td{constructor(e){super({name:"NoSuchUpload",$fault:"client",...e}),this.name="NoSuchUpload",this.$fault="client",Object.setPrototypeOf(this,Ad.prototype)}}class Cd extends Td{constructor(e){super({name:"ObjectNotInActiveTierError",$fault:"client",...e}),this.name="ObjectNotInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,Cd.prototype)}}class Rd extends Td{constructor(e){super({name:"BucketAlreadyExists",$fault:"client",...e}),this.name="BucketAlreadyExists",this.$fault="client",Object.setPrototypeOf(this,Rd.prototype)}}class Od extends Td{constructor(e){super({name:"BucketAlreadyOwnedByYou",$fault:"client",...e}),this.name="BucketAlreadyOwnedByYou",this.$fault="client",Object.setPrototypeOf(this,Od.prototype)}}class _d extends Td{constructor(e){super({name:"NoSuchBucket",$fault:"client",...e}),this.name="NoSuchBucket",this.$fault="client",Object.setPrototypeOf(this,_d.prototype)}}var Pd,Id;!function(e){e.visit=(e,t)=>void 0!==e.Prefix?t.Prefix(e.Prefix):void 0!==e.Tag?t.Tag(e.Tag):void 0!==e.And?t.And(e.And):t._(e.$unknown[0],e.$unknown[1])}(Pd||(Pd={})),function(e){e.visit=(e,t)=>void 0!==e.Prefix?t.Prefix(e.Prefix):void 0!==e.Tag?t.Tag(e.Tag):void 0!==e.AccessPointArn?t.AccessPointArn(e.AccessPointArn):void 0!==e.And?t.And(e.And):t._(e.$unknown[0],e.$unknown[1])}(Id||(Id={}));class Md extends Td{constructor(e){super({name:"InvalidObjectState",$fault:"client",...e}),this.name="InvalidObjectState",this.$fault="client",Object.setPrototypeOf(this,Md.prototype),this.StorageClass=e.StorageClass,this.AccessTier=e.AccessTier}}class Nd extends Td{constructor(e){super({name:"NoSuchKey",$fault:"client",...e}),this.name="NoSuchKey",this.$fault="client",Object.setPrototypeOf(this,Nd.prototype)}}class Fd extends Td{constructor(e){super({name:"NotFound",$fault:"client",...e}),this.name="NotFound",this.$fault="client",Object.setPrototypeOf(this,Fd.prototype)}}const $d=e=>({...e,...e.SecretAccessKey&&{SecretAccessKey:Kt},...e.SessionToken&&{SessionToken:Kt}}),Ud=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt},...e.Credentials&&{Credentials:$d(e.Credentials)}}),Ld=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Dd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt}}),Bd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:Kt}});class zd extends Td{constructor(e){super({name:"EncryptionTypeMismatch",$fault:"client",...e}),this.name="EncryptionTypeMismatch",this.$fault="client",Object.setPrototypeOf(this,zd.prototype)}}class jd extends Td{constructor(e){super({name:"InvalidRequest",$fault:"client",...e}),this.name="InvalidRequest",this.$fault="client",Object.setPrototypeOf(this,jd.prototype)}}class qd extends Td{constructor(e){super({name:"InvalidWriteOffset",$fault:"client",...e}),this.name="InvalidWriteOffset",this.$fault="client",Object.setPrototypeOf(this,qd.prototype)}}class Wd extends Td{constructor(e){super({name:"TooManyParts",$fault:"client",...e}),this.name="TooManyParts",this.$fault="client",Object.setPrototypeOf(this,Wd.prototype)}}class Hd extends Td{constructor(e){super({name:"ObjectAlreadyInActiveTierError",$fault:"client",...e}),this.name="ObjectAlreadyInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,Hd.prototype)}}var Kd;!function(e){e.visit=(e,t)=>void 0!==e.Records?t.Records(e.Records):void 0!==e.Stats?t.Stats(e.Stats):void 0!==e.Progress?t.Progress(e.Progress):void 0!==e.Cont?t.Cont(e.Cont):void 0!==e.End?t.End(e.End):t._(e.$unknown[0],e.$unknown[1])}(Kd||(Kd={}));const Vd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Qd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:Kt},...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Gd=async(e,t)=>{const r=Ze(e,t),n=Vr({},Wr,{[rp]:e[Zh],[Ap]:e[ef],[Cp]:e[sf],[Op]:e[of],[Rp]:[()=>Wr(e[Ml]),()=>e[Ml].toString()]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=Vr({[Kf]:[,""]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Jd=async(e,t)=>{const r=Ze(e,t),n=Vr({},Wr,{[hp]:e[xh],[Sp]:e[Kh],[Jf]:[()=>Wr(e[Il]),()=>e[Il].toString()],[op]:e[rh],[_f]:e[fh],[dp]:[()=>Wr(e[ph]),()=>pr(e[ph]).toString()],[lp]:[()=>Wr(e[gh]),()=>e[gh].toString()]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Lp]:[,"DeleteObject"],[Qf]:[,e[lf]]});return r.m("DELETE").h(n).q(i).b(undefined),r.build()},Xd=async(e,t)=>{const r=Ze(e,t),n=Vr({},Wr,{[_f]:e[fh],[Pf]:[()=>Wr(e[mh]),()=>pr(e[mh]).toString()],[If]:e[yh],[Mf]:[()=>Wr(e[wh]),()=>pr(e[wh]).toString()],[Df]:e[Uh],[_p]:e[tf],[Pp]:e[rf],[Ip]:e[nf],[Sp]:e[Kh],[op]:e[rh],[Zf]:e[ql]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Lp]:[,"GetObject"],[Bf]:[,e[Dh]],[zf]:[,e[Bh]],[jf]:[,e[zh]],[qf]:[,e[jh]],[Wf]:[,e[qh]],[Hf]:[()=>void 0!==e.ResponseExpires,()=>pr(e[Wh]).toString()],[Qf]:[,e[lf]],[Uf]:[()=>void 0!==e.PartNumber,()=>e[$h].toString()]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Yd=async(e,t)=>{const r=Ze(e,t),n=Vr({},Wr,{[Sp]:e[Kh],[op]:e[rh],[vp]:[()=>Wr(e[Mh]),()=>(e[Mh]||[]).map(Yr).join(", ")]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=Vr({[Ff]:[,"2"],[xf]:[,e[Yl]],[Af]:[,e[ih]],[$f]:[()=>void 0!==e.MaxKeys,()=>e[Th].toString()],[Lf]:[,e[Nh]],[Ef]:[,e[Jl]],[Of]:[()=>void 0!==e.FetchOwner,()=>e[ah].toString()],[Vf]:[,e[Jh]]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Zd=async(e,t)=>{const r=Ze(e,t),n=Vr({},Wr,{[Sf]:e[Gl]||"application/octet-stream",[Gf]:e[Rl],[gf]:e[$l],[mf]:e[Dl],[yf]:e[Bl],[vf]:e[zl],[bf]:[()=>Wr(e[jl]),()=>e[jl].toString()],[wf]:e[Wl],[Tp]:e[Fl],[Xf]:e[Ul],[Yf]:e[Ll],[ep]:e[Vl],[tp]:e[Ql],[Tf]:[()=>Wr(e[th]),()=>pr(e[th]).toString()],[_f]:e[fh],[If]:e[yh],[sp]:e[ch],[ap]:e[uh],[cp]:e[dh],[up]:e[lh],[$p]:[()=>Wr(e[hf]),()=>e[hf].toString()],[Ap]:e[ef],[xp]:e[Yh],[Up]:e[ff],[_p]:e[tf],[Pp]:e[rf],[Ip]:e[nf],[Cp]:e[sf],[Op]:e[of],[Rp]:[()=>Wr(e[Ml]),()=>e[Ml].toString()],[Sp]:e[Kh],[Mp]:e[uf],[mp]:e[Ph],[yp]:[()=>Wr(e[Ih]),()=>{return(t=e[Ih],t.toISOString().replace(".000Z","Z")).toString();var t}],[gp]:e[_h],[op]:e[rh],...void 0!==e.Metadata&&Object.keys(e.Metadata).reduce(((t,r)=>(t[`x-amz-meta-${r.toLowerCase()}`]=e.Metadata[r],t)),{})});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Lp]:[,"PutObject"]});let o,s;return void 0!==e.Body&&(s=e.Body,o=s),r.m("PUT").h(n).q(i).b(o),r.build()},el=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[ef]:[,e.headers[Ap]],[sf]:[,e.headers[Cp]],[of]:[,e.headers[Op]],[Ml]:[()=>void 0!==e.headers[Rp],()=>Vt(e.headers[Rp])]}),n=rr(nr(await bi(e.body,t)),"body");return null!=n[Nl]&&(r[Nl]=Al(n[Nl])),r},tl=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[Zl]:[()=>void 0!==e.headers[np],()=>Vt(e.headers[np])],[lf]:[,e.headers[Fp]],[Lh]:[,e.headers[kp]]});return await Xe(e.body,t),r},rl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[Zl]:[()=>void 0!==e.headers[np],()=>Vt(e.headers[np])],[_l]:[,e.headers[pf]],[sh]:[,e.headers[ip]],[Gh]:[,e.headers[wp]],[Eh]:[()=>void 0!==e.headers[Nf],()=>rr(wr(e.headers[Nf]))],[jl]:[()=>void 0!==e.headers[bf],()=>ar(e.headers[bf])],[oh]:[,e.headers[Cf]],[Ul]:[,e.headers[Xf]],[Ll]:[,e.headers[Yf]],[Vl]:[,e.headers[ep]],[Ql]:[,e.headers[tp]],[Ah]:[()=>void 0!==e.headers[fp],()=>cr(e.headers[fp])],[lf]:[,e.headers[Fp]],[$l]:[,e.headers[gf]],[Dl]:[,e.headers[mf]],[Bl]:[,e.headers[yf]],[zl]:[,e.headers[vf]],[Kl]:[,e.headers[kf]],[Gl]:[,e.headers[Sf]],[th]:[()=>void 0!==e.headers[Tf],()=>rr(wr(e.headers[Tf]))],[nh]:[,e.headers[Rf]],[ff]:[,e.headers[Up]],[ef]:[,e.headers[Ap]],[tf]:[,e.headers[_p]],[nf]:[,e.headers[Ip]],[sf]:[,e.headers[Cp]],[Ml]:[()=>void 0!==e.headers[Rp],()=>Vt(e.headers[Rp])],[Yh]:[,e.headers[xp]],[Lh]:[,e.headers[kp]],[Vh]:[,e.headers[Ep]],[Fh]:[()=>void 0!==e.headers[pp],()=>cr(e.headers[pp])],[df]:[()=>void 0!==e.headers[Np],()=>cr(e.headers[Np])],[Ph]:[,e.headers[mp]],[Ih]:[()=>void 0!==e.headers[yp],()=>rr(mr(e.headers[yp]))],[_h]:[,e.headers[gp]],Metadata:[,Object.keys(e.headers).filter((e=>e.startsWith("x-amz-meta-"))).reduce(((t,r)=>(t[r.substring(11)]=e.headers[r],t)),{})]}),n=e.body;return t.sdkStreamMixin(n),r.Body=n,r},nl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[Lh]:[,e.headers[kp]]}),n=rr(nr(await bi(e.body,t)),"body");return""===n.CommonPrefixes?r[Hl]=[]:null!=n[Hl]&&(r[Hl]=kl(jr(n[Hl]))),""===n.Contents?r[Xl]=[]:null!=n[Xl]&&(r[Xl]=El(jr(n[Xl]))),null!=n[Jl]&&(r[Jl]=ir(n[Jl])),null!=n[Yl]&&(r[Yl]=ir(n[Yl])),null!=n[ih]&&(r[ih]=ir(n[ih])),null!=n[bh]&&(r[bh]=Vt(n[bh])),null!=n[Sh]&&(r[Sh]=cr(n[Sh])),null!=n[Th]&&(r[Th]=cr(n[Th])),null!=n[Ch]&&(r[Ch]=ir(n[Ch])),null!=n[Rh]&&(r[Rh]=ir(n[Rh])),null!=n[Nh]&&(r[Nh]=ir(n[Nh])),null!=n[Jh]&&(r[Jh]=ir(n[Jh])),r},il=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[sh]:[,e.headers[ip]],[oh]:[,e.headers[Cf]],[Ul]:[,e.headers[Xf]],[Ll]:[,e.headers[Yf]],[Vl]:[,e.headers[ep]],[Ql]:[,e.headers[tp]],[ef]:[,e.headers[Ap]],[lf]:[,e.headers[Fp]],[tf]:[,e.headers[_p]],[nf]:[,e.headers[Ip]],[sf]:[,e.headers[Cp]],[of]:[,e.headers[Op]],[Ml]:[()=>void 0!==e.headers[Rp],()=>Vt(e.headers[Rp])],[cf]:[()=>void 0!==e.headers[bp],()=>ar(e.headers[bp])],[Lh]:[,e.headers[kp]]});return await Xe(e.body,t),r},ol=async(e,t)=>{const r={...e,body:await wi(e.body,t)},n=((e,t)=>void 0!==t?.Error?.Code?t.Error.Code:void 0!==t?.Code?t.Code:404==e.statusCode?"NotFound":void 0)(e,r.body);switch(n){case"NoSuchUpload":case"com.amazonaws.s3#NoSuchUpload":throw await ml(r,t);case"ObjectNotInActiveTierError":case"com.amazonaws.s3#ObjectNotInActiveTierError":throw await bl(r,t);case"BucketAlreadyExists":case"com.amazonaws.s3#BucketAlreadyExists":throw await cl(r,t);case"BucketAlreadyOwnedByYou":case"com.amazonaws.s3#BucketAlreadyOwnedByYou":throw await ul(r,t);case"NoSuchBucket":case"com.amazonaws.s3#NoSuchBucket":throw await pl(r,t);case"InvalidObjectState":case"com.amazonaws.s3#InvalidObjectState":throw await ll(r,t);case"NoSuchKey":case"com.amazonaws.s3#NoSuchKey":throw await gl(r,t);case"NotFound":case"com.amazonaws.s3#NotFound":throw await yl(r,t);case"EncryptionTypeMismatch":case"com.amazonaws.s3#EncryptionTypeMismatch":throw await dl(r,t);case"InvalidRequest":case"com.amazonaws.s3#InvalidRequest":throw await hl(r,t);case"InvalidWriteOffset":case"com.amazonaws.s3#InvalidWriteOffset":throw await fl(r,t);case"TooManyParts":case"com.amazonaws.s3#TooManyParts":throw await wl(r,t);case"ObjectAlreadyInActiveTierError":case"com.amazonaws.s3#ObjectAlreadyInActiveTierError":throw await vl(r,t);default:const i=r.body;return sl({output:e,parsedBody:i,errorCode:n})}},sl=(al=Td,({output:e,parsedBody:t,errorCode:r})=>{(({output:e,parsedBody:t,exceptionCtor:r,errorCode:n})=>{const i=Nr(e),o=i.httpStatusCode?i.httpStatusCode+"":void 0,s=new r({name:t?.code||t?.Code||n||o||"UnknownError",$fault:"client",$metadata:i});throw Mr(s,t)})({output:e,parsedBody:t,exceptionCtor:al,errorCode:r})});var al;const cl=async(e,t)=>{const r=Vr({});e.body;const n=new Rd({$metadata:Cl(e),...r});return Mr(n,e.body)},ul=async(e,t)=>{const r=Vr({});e.body;const n=new Od({$metadata:Cl(e),...r});return Mr(n,e.body)},dl=async(e,t)=>{const r=Vr({});e.body;const n=new zd({$metadata:Cl(e),...r});return Mr(n,e.body)},ll=async(e,t)=>{const r=Vr({}),n=e.body;null!=n[Pl]&&(r[Pl]=ir(n[Pl])),null!=n[Yh]&&(r[Yh]=ir(n[Yh]));const i=new Md({$metadata:Cl(e),...r});return Mr(i,e.body)},hl=async(e,t)=>{const r=Vr({});e.body;const n=new jd({$metadata:Cl(e),...r});return Mr(n,e.body)},fl=async(e,t)=>{const r=Vr({});e.body;const n=new qd({$metadata:Cl(e),...r});return Mr(n,e.body)},pl=async(e,t)=>{const r=Vr({});e.body;const n=new _d({$metadata:Cl(e),...r});return Mr(n,e.body)},gl=async(e,t)=>{const r=Vr({});e.body;const n=new Nd({$metadata:Cl(e),...r});return Mr(n,e.body)},ml=async(e,t)=>{const r=Vr({});e.body;const n=new Ad({$metadata:Cl(e),...r});return Mr(n,e.body)},yl=async(e,t)=>{const r=Vr({});e.body;const n=new Fd({$metadata:Cl(e),...r});return Mr(n,e.body)},vl=async(e,t)=>{const r=Vr({});e.body;const n=new Hd({$metadata:Cl(e),...r});return Mr(n,e.body)},bl=async(e,t)=>{const r=Vr({});e.body;const n=new Cd({$metadata:Cl(e),...r});return Mr(n,e.body)},wl=async(e,t)=>{const r=Vr({});e.body;const n=new Wd({$metadata:Cl(e),...r});return Mr(n,e.body)},kl=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>(e=>{const t={};return null!=e[Nh]&&(t[Nh]=ir(e[Nh])),t})(e))),Sl=(e,t)=>{const r={};return null!=e[kh]&&(r[kh]=ir(e[kh])),null!=e[Eh]&&(r[Eh]=rr(mr(e[Eh]))),null!=e[oh]&&(r[oh]=ir(e[oh])),""===e.ChecksumAlgorithm?r[Fl]=[]:null!=e[Fl]&&(r[Fl]=(e=>(e||[]).filter((e=>null!=e)).map((e=>ir(e))))(jr(e[Fl]))),null!=e[cf]&&(r[cf]=ar(e[cf])),null!=e[Yh]&&(r[Yh]=ir(e[Yh])),null!=e[Oh]&&(r[Oh]=xl(e[Oh])),null!=e[Qh]&&(r[Qh]=Tl(e[Qh])),r},El=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>Sl(e))),xl=(e,t)=>{const r={};return null!=e[eh]&&(r[eh]=ir(e[eh])),null!=e[hh]&&(r[hh]=ir(e[hh])),r},Tl=(e,t)=>{const r={};return null!=e[vh]&&(r[vh]=Vt(e[vh])),null!=e[Hh]&&(r[Hh]=rr(mr(e[Hh]))),r},Al=(e,t)=>{const r={};return null!=e[Ol]&&(r[Ol]=ir(e[Ol])),null!=e[Xh]&&(r[Xh]=ir(e[Xh])),null!=e[af]&&(r[af]=ir(e[af])),null!=e[sh]&&(r[sh]=rr(mr(e[sh]))),r},Cl=e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}),Rl="ACL",Ol="AccessKeyId",_l="AcceptRanges",Pl="AccessTier",Il="BypassGovernanceRetention",Ml="BucketKeyEnabled",Nl="Credentials",Fl="ChecksumAlgorithm",$l="CacheControl",Ul="ChecksumCRC32",Ll="ChecksumCRC32C",Dl="ContentDisposition",Bl="ContentEncoding",zl="ContentLanguage",jl="ContentLength",ql="ChecksumMode",Wl="ContentMD5",Hl="CommonPrefixes",Kl="ContentRange",Vl="ChecksumSHA1",Ql="ChecksumSHA256",Gl="ContentType",Jl="ContinuationToken",Xl="Contents",Yl="Delimiter",Zl="DeleteMarker",eh="DisplayName",th="Expires",rh="ExpectedBucketOwner",nh="ExpiresString",ih="EncodingType",oh="ETag",sh="Expiration",ah="FetchOwner",ch="GrantFullControl",uh="GrantRead",dh="GrantReadACP",lh="GrantWriteACP",hh="ID",fh="IfMatch",ph="IfMatchLastModifiedTime",gh="IfMatchSize",mh="IfModifiedSince",yh="IfNoneMatch",vh="IsRestoreInProgress",bh="IsTruncated",wh="IfUnmodifiedSince",kh="Key",Sh="KeyCount",Eh="LastModified",xh="MFA",Th="MaxKeys",Ah="MissingMeta",Ch="Name",Rh="NextContinuationToken",Oh="Owner",_h="ObjectLockLegalHoldStatus",Ph="ObjectLockMode",Ih="ObjectLockRetainUntilDate",Mh="OptionalObjectAttributes",Nh="Prefix",Fh="PartsCount",$h="PartNumber",Uh="Range",Lh="RequestCharged",Dh="ResponseCacheControl",Bh="ResponseContentDisposition",zh="ResponseContentEncoding",jh="ResponseContentLanguage",qh="ResponseContentType",Wh="ResponseExpires",Hh="RestoreExpiryDate",Kh="RequestPayer",Vh="ReplicationStatus",Qh="RestoreStatus",Gh="Restore",Jh="StartAfter",Xh="SecretAccessKey",Yh="StorageClass",Zh="SessionMode",ef="ServerSideEncryption",tf="SSECustomerAlgorithm",rf="SSECustomerKey",nf="SSECustomerKeyMD5",of="SSEKMSEncryptionContext",sf="SSEKMSKeyId",af="SessionToken",cf="Size",uf="Tagging",df="TagCount",lf="VersionId",hf="WriteOffsetBytes",ff="WebsiteRedirectLocation",pf="accept-ranges",gf="cache-control",mf="content-disposition",yf="content-encoding",vf="content-language",bf="content-length",wf="content-md5",kf="content-range",Sf="content-type",Ef="continuation-token",xf="delimiter",Tf="expires",Af="encoding-type",Cf="etag",Rf="expiresstring",Of="fetch-owner",_f="if-match",Pf="if-modified-since",If="if-none-match",Mf="if-unmodified-since",Nf="last-modified",Ff="list-type",$f="max-keys",Uf="partNumber",Lf="prefix",Df="range",Bf="response-cache-control",zf="response-content-disposition",jf="response-content-encoding",qf="response-content-language",Wf="response-content-type",Hf="response-expires",Kf="session",Vf="start-after",Qf="versionId",Gf="x-amz-acl",Jf="x-amz-bypass-governance-retention",Xf="x-amz-checksum-crc32",Yf="x-amz-checksum-crc32c",Zf="x-amz-checksum-mode",ep="x-amz-checksum-sha1",tp="x-amz-checksum-sha256",rp="x-amz-create-session-mode",np="x-amz-delete-marker",ip="x-amz-expiration",op="x-amz-expected-bucket-owner",sp="x-amz-grant-full-control",ap="x-amz-grant-read",cp="x-amz-grant-read-acp",up="x-amz-grant-write-acp",dp="x-amz-if-match-last-modified-time",lp="x-amz-if-match-size",hp="x-amz-mfa",fp="x-amz-missing-meta",pp="x-amz-mp-parts-count",gp="x-amz-object-lock-legal-hold",mp="x-amz-object-lock-mode",yp="x-amz-object-lock-retain-until-date",vp="x-amz-optional-object-attributes",bp="x-amz-object-size",wp="x-amz-restore",kp="x-amz-request-charged",Sp="x-amz-request-payer",Ep="x-amz-replication-status",xp="x-amz-storage-class",Tp="x-amz-sdk-checksum-algorithm",Ap="x-amz-server-side-encryption",Cp="x-amz-server-side-encryption-aws-kms-key-id",Rp="x-amz-server-side-encryption-bucket-key-enabled",Op="x-amz-server-side-encryption-context",_p="x-amz-server-side-encryption-customer-algorithm",Pp="x-amz-server-side-encryption-customer-key",Ip="x-amz-server-side-encryption-customer-key-md5",Mp="x-amz-tagging",Np="x-amz-tagging-count",Fp="x-amz-version-id",$p="x-amz-write-offset-bytes",Up="x-amz-website-redirect-location",Lp="x-id";class Dp extends(Wt.classBuilder().ep({...xd,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),_s(r,e.getEndpointParameterInstructions()),Ro(r)]})).s("AmazonS3","CreateSession",{}).n("S3Client","CreateSessionCommand").f(Ld,Ud).ser(Gd).de(el).build()){}var Bp="3.701.0";function zp(e){return"string"==typeof e?0===e.length:0===e.byteLength}var jp={name:"SHA-1"},qp={name:"HMAC",hash:jp},Wp=new Uint8Array([218,57,163,238,94,107,75,13,50,85,191,239,149,96,24,144,175,216,7,9]);const Hp={};function Kp(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:Hp}var Vp=function(){function e(e){this.toHash=new Uint8Array(0),void 0!==e&&(this.key=new Promise((function(t,r){Kp().crypto.subtle.importKey("raw",Qp(e),qp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))}return e.prototype.update=function(e){if(!zp(e)){var t=Qp(e),r=new Uint8Array(this.toHash.byteLength+t.byteLength);r.set(this.toHash,0),r.set(t,this.toHash.byteLength),this.toHash=r}},e.prototype.digest=function(){var e=this;return this.key?this.key.then((function(t){return Kp().crypto.subtle.sign(qp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):zp(this.toHash)?Promise.resolve(Wp):Promise.resolve().then((function(){return Kp().crypto.subtle.digest(jp,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){this.toHash=new Uint8Array(0)},e}();function Qp(e){return"string"==typeof e?(t=e,(new TextEncoder).encode(t)):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e);var t}var Gp=["decrypt","digest","encrypt","exportKey","generateKey","importKey","sign","verify"];function Jp(e){return!(!function(e){if("object"==typeof e&&"object"==typeof e.crypto){return"function"==typeof e.crypto.getRandomValues}return!1}(e)||"object"!=typeof e.crypto.subtle)&&function(e){return e&&Gp.every((function(t){return"function"==typeof e[t]}))}(e.crypto.subtle)}var Xp=function(){function e(e){if(!Jp(Kp()))throw new Error("SHA1 not supported");this.hash=new Vp(e)}return e.prototype.update=function(e,t){this.hash.update(Ri(e))},e.prototype.digest=function(){return this.hash.digest()},e.prototype.reset=function(){this.hash.reset()},e}(),Yp={name:"SHA-256"},Zp={name:"HMAC",hash:Yp},eg=new Uint8Array([227,176,196,66,152,252,28,20,154,251,244,200,153,111,185,36,39,174,65,228,100,155,147,76,164,149,153,27,120,82,184,85]),tg=function(){function e(e){this.toHash=new Uint8Array(0),this.secret=e,this.reset()}return e.prototype.update=function(e){if(!Oi(e)){var t=Ri(e),r=new Uint8Array(this.toHash.byteLength+t.byteLength);r.set(this.toHash,0),r.set(t,this.toHash.byteLength),this.toHash=r}},e.prototype.digest=function(){var e=this;return this.key?this.key.then((function(t){return Kp().crypto.subtle.sign(Zp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):Oi(this.toHash)?Promise.resolve(eg):Promise.resolve().then((function(){return Kp().crypto.subtle.digest(Yp,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){var e=this;this.toHash=new Uint8Array(0),this.secret&&void 0!==this.secret&&(this.key=new Promise((function(t,r){Kp().crypto.subtle.importKey("raw",Ri(e.secret),Zp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))},e}();function rg(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function ng(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]ag)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;r>0;)this.buffer[this.bufferLength++]=e[t++],r--,this.bufferLength===ig&&(this.hashBuffer(),this.bufferLength=0)},e.prototype.digest=function(){if(!this.finished){var e=8*this.bytesHashed,t=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),r=this.bufferLength;if(t.setUint8(this.bufferLength++,128),r%ig>=56){for(var n=this.bufferLength;n>>24&255,i[4*n+1]=this.state[n]>>>16&255,i[4*n+2]=this.state[n]>>>8&255,i[4*n+3]=this.state[n]>>>0&255;return i},e.prototype.hashBuffer=function(){for(var e=this.buffer,t=this.state,r=t[0],n=t[1],i=t[2],o=t[3],s=t[4],a=t[5],c=t[6],u=t[7],d=0;d>>17|l<<15)^(l>>>19|l<<13)^l>>>10,f=((l=this.temp[d-15])>>>7|l<<25)^(l>>>18|l<<14)^l>>>3;this.temp[d]=(h+this.temp[d-7]|0)+(f+this.temp[d-16]|0)}var p=(((s>>>6|s<<26)^(s>>>11|s<<21)^(s>>>25|s<<7))+(s&a^~s&c)|0)+(u+(og[d]+this.temp[d]|0)|0)|0,g=((r>>>2|r<<30)^(r>>>13|r<<19)^(r>>>22|r<<10))+(r&n^r&i^n&i)|0;u=c,c=a,a=s,s=o+p|0,o=i,i=n,n=r,r=p+g|0}t[0]+=r,t[1]+=n,t[2]+=i,t[3]+=o,t[4]+=s,t[5]+=a,t[6]+=c,t[7]+=u},e}(),ug=function(){function e(e){this.secret=e,this.hash=new cg,this.reset()}return e.prototype.update=function(e){if(!Oi(e)&&!this.error)try{this.hash.update(Ri(e))}catch(e){this.error=e}},e.prototype.digestSync=function(){if(this.error)throw this.error;return this.outer?(this.outer.finished||this.outer.update(this.hash.digest()),this.outer.digest()):this.hash.digest()},e.prototype.digest=function(){return rg(this,void 0,void 0,(function(){return ng(this,(function(e){return[2,this.digestSync()]}))}))},e.prototype.reset=function(){if(this.hash=new cg,this.secret){this.outer=new cg;var e=function(e){var t=Ri(e);if(t.byteLength>ig){var r=new cg;r.update(t),t=r.digest()}var n=new Uint8Array(ig);return n.set(t),n}(this.secret),t=new Uint8Array(ig);t.set(e);for(var r=0;r0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),o=e.getVersionPrecision(r),s=Math.max(i,o),a=0,c=e.map([t,r],(function(t){var r=s-e.getVersionPrecision(t),n=t+new Array(r+1).join(".0");return e.map(n.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(n&&(a=s-Math.min(i,o)),s-=1;s>=a;){if(c[0][s]>c[1][s])return 1;if(c[0][s]===c[1][s]){if(s===a)return 0;s-=1}else if(c[0][s]1?i-1:0),s=1;s0){var s=Object.keys(r),c=a.default.find(s,(function(e){return t.isOS(e)}));if(c){var u=this.satisfies(r[c]);if(void 0!==u)return u}var d=a.default.find(s,(function(e){return t.isPlatform(e)}));if(d){var l=this.satisfies(r[d]);if(void 0!==l)return l}}if(o>0){var h=Object.keys(i),f=a.default.find(h,(function(e){return t.isBrowser(e,!0)}));if(void 0!==f)return this.compareVersion(i[f])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=a.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(n=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(a.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=u,e.exports=t.default},92:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=/version\/(\d+(\.?_?\d+)+)/i,s=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=s,e.exports=t.default},93:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:[/Roku\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:o.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=i.default.getWindowsVersionName(t);return{name:o.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:o.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=i.default.getMacOSVersionName(t),n={name:o.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:o.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:o.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:o.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:o.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:o.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:o.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.PlayStation4,version:t}}}];t.default=s,e.exports=t.default},94:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:o.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:o.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}}];t.default=s,e.exports=t.default},95:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:o.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:o.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:o.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:o.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:o.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:o.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:o.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=s,e.exports=t.default}});var hg=Zr(lg.exports);const fg=({serviceId:e,clientVersion:t})=>async r=>{const n="undefined"!=typeof window&&window?.navigator?.userAgent?hg.parse(window.navigator.userAgent):void 0,i=[["aws-sdk-js",t],["ua","2.1"],[`os/${n?.os?.name||"other"}`,n?.os?.version],["lang/js"],["md/browser",`${n?.browser?.name??"unknown"}_${n?.browser?.version??"unknown"}`]];e&&i.push([`api/${e}`,t]);const o=await(r?.userAgentAppId?.());return o&&i.push([`app/${o}`]),i};class pg{constructor(e){if(this.bytes=e,8!==e.byteLength)throw new Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(e){if(e>0x8000000000000000||e<-0x8000000000000000)throw new Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);const t=new Uint8Array(8);for(let r=7,n=Math.abs(Math.round(e));r>-1&&n>0;r--,n/=256)t[r]=n;return e<0&&gg(t),new pg(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&gg(e),parseInt(qe(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function gg(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}class mg{constructor(e,t){this.toUtf8=e,this.fromUtf8=t}format(e){const t=[];for(const r of Object.keys(e)){const n=this.fromUtf8(r);t.push(Uint8Array.from([n.byteLength]),n,this.formatHeaderValue(e[r]))}const r=new Uint8Array(t.reduce(((e,t)=>e+t.byteLength),0));let n=0;for(const e of t)r.set(e,n),n+=e.byteLength;return r}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":const t=new DataView(new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case"integer":const r=new DataView(new ArrayBuffer(5));return r.setUint8(0,4),r.setInt32(1,e.value,!1),new Uint8Array(r.buffer);case"long":const n=new Uint8Array(9);return n[0]=5,n.set(e.value.bytes,1),n;case"binary":const i=new DataView(new ArrayBuffer(3+e.value.byteLength));i.setUint8(0,6),i.setUint16(1,e.value.byteLength,!1);const o=new Uint8Array(i.buffer);return o.set(e.value,3),o;case"string":const s=this.fromUtf8(e.value),a=new DataView(new ArrayBuffer(3+s.byteLength));a.setUint8(0,7),a.setUint16(1,s.byteLength,!1);const c=new Uint8Array(a.buffer);return c.set(s,3),c;case"timestamp":const u=new Uint8Array(9);return u[0]=8,u.set(pg.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!Cg.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(je(e.value.replace(/\-/g,"")),1),d}}parse(e){const t={};let r=0;for(;re,isEndOfStream:()=>t}}getAvailableMessages(){const e=this.messageBuffer;this.messageBuffer=[];const t=this.isEndOfStream;return{getMessages:()=>e,isEndOfStream:()=>t}}encode({headers:e,body:t}){const r=this.headerMarshaller.format(e),n=r.byteLength+t.byteLength+16,i=new Uint8Array(n),o=new DataView(i.buffer,i.byteOffset,i.byteLength),s=new Li;return o.setUint32(0,n,!1),o.setUint32(4,r.byteLength,!1),o.setUint32(8,s.update(i.subarray(0,8)).digest(),!1),i.set(r,12),i.set(t,r.byteLength+12),o.setUint32(n-4,s.update(i.subarray(8,n-4)).digest(),!1),i}decode(e){const{headers:t,body:r}=function({byteLength:e,byteOffset:t,buffer:r}){if(e<16)throw new Error("Provided message too short to accommodate event stream message overhead");const n=new DataView(r,t,e),i=n.getUint32(0,!1);if(e!==i)throw new Error("Reported message length does not match received message length");const o=n.getUint32(4,!1),s=n.getUint32(8,!1),a=n.getUint32(e-4,!1),c=(new Li).update(new Uint8Array(r,t,8));if(s!==c.digest())throw new Error(`The prelude checksum specified in the message (${s}) does not match the calculated CRC32 checksum (${c.digest()})`);if(c.update(new Uint8Array(r,t+8,e-12)),a!==c.digest())throw new Error(`The message checksum (${c.digest()}) did not match the expected value of ${a}`);return{headers:new DataView(r,t+8+4,o),body:new Uint8Array(r,t+8+4+o,i-o-16)}}(e);return{headers:this.headerMarshaller.parse(t),body:r}}formatHeaders(e){return this.headerMarshaller.format(e)}}class Og{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.inputStream){const t=this.options.decoder.decode(e);yield t}}}class _g{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.messageStream){const t=this.options.encoder.encode(e);yield t}this.options.includeEndFrame&&(yield new Uint8Array(0))}}class Pg{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.messageStream){const t=await this.options.deserializer(e);void 0!==t&&(yield t)}}}class Ig{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.inputStream){const t=this.options.serializer(e);yield t}}}function Mg(e,t){return async function(r){const{value:n}=r.headers[":message-type"];if("error"===n){const e=new Error(r.headers[":error-message"].value||"UnknownError");throw e.name=r.headers[":error-code"].value,e}if("exception"===n){const n=r.headers[":exception-type"].value,i={[n]:r},o=await e(i);if(o.$unknown){const e=new Error(t(r.body));throw e.name=n,e}throw o[n]}if("event"===n){const t={[r.headers[":event-type"].value]:r},n=await e(t);if(n.$unknown)return;return n}throw Error(`Unrecognizable event type: ${r.headers[":event-type"].value}`)}}class Ng{constructor({utf8Encoder:e,utf8Decoder:t}){this.eventStreamCodec=new Rg(e,t),this.utfEncoder=e}deserialize(e,t){const r=function(e){let t=0,r=0,n=null,i=null;const o=e=>{if("number"!=typeof e)throw new Error("Attempted to allocate an event message where size was not a number: "+e);t=e,r=4,n=new Uint8Array(e),new DataView(n.buffer).setUint32(0,e,!1)};return{[Symbol.asyncIterator]:async function*(){const s=e[Symbol.asyncIterator]();for(;;){const{value:e,done:a}=await s.next();if(a){if(!t)return;if(t!==r)throw new Error("Truncated event message received.");return void(yield n)}const c=e.length;let u=0;for(;u{const t=e[Symbol.asyncIterator]();return new ReadableStream({async pull(e){const{done:r,value:n}=await t.next();if(r)return e.close();e.enqueue(n)}})})(r):r}}const $g=e=>"function"==typeof ReadableStream&&e instanceof ReadableStream,Ug=e=>new Fg(e);const Lg=async function(e,t){const r=new e;return await async function(e,t,r=1048576){const n=e.size;let i=0;for(;i{r.update(e)})),r.digest()},Dg=64,Bg=[1732584193,4023233417,2562383102,271733878];class zg{constructor(){this.reset()}update(e){if(function(e){if("string"==typeof e)return 0===e.length;return 0===e.byteLength}(e))return;if(this.finished)throw new Error("Attempted to update an already finished hash.");const t=function(e){if("string"==typeof e)return Ce(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT);return new Uint8Array(e)}(e);let r=0,{byteLength:n}=t;for(this.bytesHashed+=n;n>0;)this.buffer.setUint8(this.bufferLength++,t[r++]),n--,this.bufferLength===Dg&&(this.hashBuffer(),this.bufferLength=0)}async digest(){if(!this.finished){const{buffer:e,bufferLength:t,bytesHashed:r}=this,n=8*r;if(e.setUint8(this.bufferLength++,128),t%Dg>=56){for(let t=this.bufferLength;t>>0,!0),e.setUint32(60,Math.floor(n/4294967296),!0),this.hashBuffer(),this.finished=!0}const e=new DataView(new ArrayBuffer(16));for(let t=0;t<4;t++)e.setUint32(4*t,this.state[t],!0);return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}hashBuffer(){const{buffer:e,state:t}=this;let r=t[0],n=t[1],i=t[2],o=t[3];r=qg(r,n,i,o,e.getUint32(0,!0),7,3614090360),o=qg(o,r,n,i,e.getUint32(4,!0),12,3905402710),i=qg(i,o,r,n,e.getUint32(8,!0),17,606105819),n=qg(n,i,o,r,e.getUint32(12,!0),22,3250441966),r=qg(r,n,i,o,e.getUint32(16,!0),7,4118548399),o=qg(o,r,n,i,e.getUint32(20,!0),12,1200080426),i=qg(i,o,r,n,e.getUint32(24,!0),17,2821735955),n=qg(n,i,o,r,e.getUint32(28,!0),22,4249261313),r=qg(r,n,i,o,e.getUint32(32,!0),7,1770035416),o=qg(o,r,n,i,e.getUint32(36,!0),12,2336552879),i=qg(i,o,r,n,e.getUint32(40,!0),17,4294925233),n=qg(n,i,o,r,e.getUint32(44,!0),22,2304563134),r=qg(r,n,i,o,e.getUint32(48,!0),7,1804603682),o=qg(o,r,n,i,e.getUint32(52,!0),12,4254626195),i=qg(i,o,r,n,e.getUint32(56,!0),17,2792965006),n=qg(n,i,o,r,e.getUint32(60,!0),22,1236535329),r=Wg(r,n,i,o,e.getUint32(4,!0),5,4129170786),o=Wg(o,r,n,i,e.getUint32(24,!0),9,3225465664),i=Wg(i,o,r,n,e.getUint32(44,!0),14,643717713),n=Wg(n,i,o,r,e.getUint32(0,!0),20,3921069994),r=Wg(r,n,i,o,e.getUint32(20,!0),5,3593408605),o=Wg(o,r,n,i,e.getUint32(40,!0),9,38016083),i=Wg(i,o,r,n,e.getUint32(60,!0),14,3634488961),n=Wg(n,i,o,r,e.getUint32(16,!0),20,3889429448),r=Wg(r,n,i,o,e.getUint32(36,!0),5,568446438),o=Wg(o,r,n,i,e.getUint32(56,!0),9,3275163606),i=Wg(i,o,r,n,e.getUint32(12,!0),14,4107603335),n=Wg(n,i,o,r,e.getUint32(32,!0),20,1163531501),r=Wg(r,n,i,o,e.getUint32(52,!0),5,2850285829),o=Wg(o,r,n,i,e.getUint32(8,!0),9,4243563512),i=Wg(i,o,r,n,e.getUint32(28,!0),14,1735328473),n=Wg(n,i,o,r,e.getUint32(48,!0),20,2368359562),r=Hg(r,n,i,o,e.getUint32(20,!0),4,4294588738),o=Hg(o,r,n,i,e.getUint32(32,!0),11,2272392833),i=Hg(i,o,r,n,e.getUint32(44,!0),16,1839030562),n=Hg(n,i,o,r,e.getUint32(56,!0),23,4259657740),r=Hg(r,n,i,o,e.getUint32(4,!0),4,2763975236),o=Hg(o,r,n,i,e.getUint32(16,!0),11,1272893353),i=Hg(i,o,r,n,e.getUint32(28,!0),16,4139469664),n=Hg(n,i,o,r,e.getUint32(40,!0),23,3200236656),r=Hg(r,n,i,o,e.getUint32(52,!0),4,681279174),o=Hg(o,r,n,i,e.getUint32(0,!0),11,3936430074),i=Hg(i,o,r,n,e.getUint32(12,!0),16,3572445317),n=Hg(n,i,o,r,e.getUint32(24,!0),23,76029189),r=Hg(r,n,i,o,e.getUint32(36,!0),4,3654602809),o=Hg(o,r,n,i,e.getUint32(48,!0),11,3873151461),i=Hg(i,o,r,n,e.getUint32(60,!0),16,530742520),n=Hg(n,i,o,r,e.getUint32(8,!0),23,3299628645),r=Kg(r,n,i,o,e.getUint32(0,!0),6,4096336452),o=Kg(o,r,n,i,e.getUint32(28,!0),10,1126891415),i=Kg(i,o,r,n,e.getUint32(56,!0),15,2878612391),n=Kg(n,i,o,r,e.getUint32(20,!0),21,4237533241),r=Kg(r,n,i,o,e.getUint32(48,!0),6,1700485571),o=Kg(o,r,n,i,e.getUint32(12,!0),10,2399980690),i=Kg(i,o,r,n,e.getUint32(40,!0),15,4293915773),n=Kg(n,i,o,r,e.getUint32(4,!0),21,2240044497),r=Kg(r,n,i,o,e.getUint32(32,!0),6,1873313359),o=Kg(o,r,n,i,e.getUint32(60,!0),10,4264355552),i=Kg(i,o,r,n,e.getUint32(24,!0),15,2734768916),n=Kg(n,i,o,r,e.getUint32(52,!0),21,1309151649),r=Kg(r,n,i,o,e.getUint32(16,!0),6,4149444226),o=Kg(o,r,n,i,e.getUint32(44,!0),10,3174756917),i=Kg(i,o,r,n,e.getUint32(8,!0),15,718787259),n=Kg(n,i,o,r,e.getUint32(36,!0),21,3951481745),t[0]=r+t[0]&4294967295,t[1]=n+t[1]&4294967295,t[2]=i+t[2]&4294967295,t[3]=o+t[3]&4294967295}reset(){this.state=Uint32Array.from(Bg),this.buffer=new DataView(new ArrayBuffer(Dg)),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}}function jg(e,t,r,n,i,o){return((t=(t+e&4294967295)+(n+o&4294967295)&4294967295)<>>32-i)+r&4294967295}function qg(e,t,r,n,i,o,s){return jg(t&r|~t&n,e,t,i,o,s)}function Wg(e,t,r,n,i,o,s){return jg(t&n|r&~n,e,t,i,o,s)}function Hg(e,t,r,n,i,o,s){return jg(t^r^n,e,t,i,o,s)}function Kg(e,t,r,n,i,o,s){return jg(r^(t|~n),e,t,i,o,s)}const Vg="function"==typeof TextEncoder?new TextEncoder:null,Qg=e=>{if("string"==typeof e){if(Vg)return Vg.encode(e).byteLength;let t=e.length;for(let r=t-1;r>=0;r--){const n=e.charCodeAt(r);n>127&&n<=2047?t++:n>2047&&n<=65535&&(t+=2),n>=56320&&n<=57343&&r--}return t}if("number"==typeof e.byteLength)return e.byteLength;if("number"==typeof e.size)return e.size;throw new Error(`Body Length computation failed for ${e}`)},Gg=["in-region","cross-region","mobile","standard","legacy"],Jg=()=>{const e="undefined"!=typeof window&&window?.navigator?.userAgent?hg.parse(window.navigator.userAgent):void 0,t=e?.platform?.type;return"tablet"===t||"mobile"===t},Xg=e=>{const t=(({defaultsMode:e}={})=>((e,t,r)=>{let n,i,o,s=!1;const a=async()=>{i||(i=e());try{n=await i,o=!0,s=!1}finally{i=void 0}return n};return void 0===t?async e=>(o&&!e?.forceRefresh||(n=await a()),n):async e=>(o&&!e?.forceRefresh||(n=await a()),s?n:r&&!r(n)?(s=!0,n):t(n)?(await a(),n):n)})((async()=>{const t="function"==typeof e?await e():e;switch(t?.toLowerCase()){case"auto":return Promise.resolve(Jg()?"mobile":"standard");case"mobile":case"in-region":case"cross-region":case"standard":case"legacy":return Promise.resolve(t?.toLocaleLowerCase());case void 0:return Promise.resolve("legacy");default:throw new Error(`Invalid parameter for "defaultsMode", expect ${Gg.join(", ")}, got ${t}`)}})))(e),r=()=>t().then(Fr),n=(e=>({apiVersion:"2006-03-01",base64Decoder:e?.base64Decoder??Ae,base64Encoder:e?.base64Encoder??_e,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??yd,extensions:e?.extensions??[],getAwsChunkedEncodingStream:e?.getAwsChunkedEncodingStream??Ie,httpAuthSchemeProvider:e?.httpAuthSchemeProvider??Sd,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4"),signer:new de},{schemeId:"aws.auth#sigv4a",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4a"),signer:new le}],logger:e?.logger??new Kr,sdkStreamMixin:e?.sdkStreamMixin??Ke,serviceId:e?.serviceId??"S3",signerConstructor:e?.signerConstructor??na,signingEscapePath:e?.signingEscapePath??!1,urlParser:e?.urlParser??Ts,useArnRegion:e?.useArnRegion??!1,utf8Decoder:e?.utf8Decoder??Ce,utf8Encoder:e?.utf8Encoder??Oe}))(e);return{...n,...e,runtime:"browser",defaultsMode:t,bodyLengthChecker:e?.bodyLengthChecker??Qg,credentialDefaultProvider:e?.credentialDefaultProvider??(e=>()=>Promise.reject(new Error("Credential is missing"))),defaultUserAgentProvider:e?.defaultUserAgentProvider??fg({serviceId:n.serviceId,clientVersion:Bp}),eventStreamSerdeProvider:e?.eventStreamSerdeProvider??Ug,maxAttempts:e?.maxAttempts??3,md5:e?.md5??zg,region:e?.region??(i="Region is missing",()=>Promise.reject(i)),requestHandler:Le.create(e?.requestHandler??r),retryMode:e?.retryMode??(async()=>(await r()).retryMode||Is),sha1:e?.sha1??Xp,sha256:e?.sha256??dg,streamCollector:e?.streamCollector??De,streamHasher:e?.streamHasher??Lg,useDualstackEndpoint:e?.useDualstackEndpoint??(()=>Promise.resolve(false)),useFipsEndpoint:e?.useFipsEndpoint??(()=>Promise.resolve(false))};var i},Yg=e=>{let t=async()=>{if(void 0===e.region)throw new Error("Region is missing from runtimeConfig");const t=e.region;return"string"==typeof t?t:t()};return{setRegion(e){t=e},region:()=>t}},Zg=e=>{const t=e.httpAuthSchemes;let r=e.httpAuthSchemeProvider,n=e.credentials;return{setHttpAuthScheme(e){const r=t.findIndex((t=>t.schemeId===e.schemeId));-1===r?t.push(e):t.splice(r,1,e)},httpAuthSchemes:()=>t,setHttpAuthSchemeProvider(e){r=e},httpAuthSchemeProvider:()=>r,setCredentials(e){n=e},credentials:()=>n}},em=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()});class tm extends qt{constructor(...[e]){const t=Xg(e||{});var r;const n=function(e){const t=Ee(e.userAgentAppId??void 0);return{...e,customUserAgent:"string"==typeof e.customUserAgent?[[e.customUserAgent]]:e.customUserAgent,userAgentAppId:async()=>{const r=await t();if(!function(e){return void 0===e||"string"==typeof e&&e.length<=50}(r)){const t="NoOpLogger"!==e.logger?.constructor?.name&&e.logger?e.logger:console;"string"!=typeof r?t?.warn("userAgentAppId must be a string or undefined."):r.length>50&&t?.warn("The provided userAgentAppId exceeds the maximum length of 50 characters.")}return r}}}((r=t,{...r,useFipsEndpoint:r.useFipsEndpoint??!1,useDualstackEndpoint:r.useDualstackEndpoint??!1,forcePathStyle:r.forcePathStyle??!1,useAccelerateEndpoint:r.useAccelerateEndpoint??!1,useGlobalEndpoint:r.useGlobalEndpoint??!1,disableMultiregionAccessPoints:r.disableMultiregionAccessPoints??!1,defaultSigningName:"s3"}));var i;const o=(e=>({...e,eventStreamMarshaller:e.eventStreamSerdeProvider(e)}))((e=>{const t=e.tls??!0,{endpoint:r}=e,n=null!=r?async()=>As(await fe(r)()):void 0,i=!!r,o={...e,endpoint:n,tls:t,isCustomEndpoint:i,useDualstackEndpoint:fe(e.useDualstackEndpoint??!1),useFipsEndpoint:fe(e.useFipsEndpoint??!1)};let s;return o.serviceConfiguredEndpoint=async()=>(e.serviceId&&!s&&(s=xs(e.serviceId)),s),o})((e=>{const{region:t,useFipsEndpoint:r}=e;if(!t)throw new Error("Region is missing");return{...e,region:async()=>{if("string"==typeof t)return ps(t);const e=await t();return ps(e)},useFipsEndpoint:async()=>{const e="string"==typeof t?t:await t();return!!fs(e)||("function"!=typeof r?Promise.resolve(!!r):r())}}})((e=>{const{retryStrategy:t}=e,r=fe(e.maxAttempts??3);return{...e,maxAttempts:r,retryStrategy:async()=>t||(await fe(e.retryMode)()===Ps.ADAPTIVE?new js(r):new zs(r))}})((i=n,{...i,requestChecksumCalculation:fe(i.requestChecksumCalculation??X),responseChecksumValidation:fe(i.responseChecksumValidation??Y)}))))),s=((e,{session:t})=>{const[r,n]=t;return{...e,forcePathStyle:e.forcePathStyle??!1,useAccelerateEndpoint:e.useAccelerateEndpoint??!1,disableMultiregionAccessPoints:e.disableMultiregionAccessPoints??!1,followRegionRedirects:e.followRegionRedirects??!1,s3ExpressIdentityProvider:e.s3ExpressIdentityProvider??new ho((async e=>r().send(new n({Bucket:e,SessionMode:"ReadWrite"})))),bucketEndpoint:e.bucketEndpoint??!1}})(Ed(o),{session:[()=>this,Dp]}),a=((e,t)=>{const r={...Yg(e),...Br(e),...U(e),...Zg(e)};return t.forEach((e=>e.configure(r))),{...e,...(i=r,{region:i.region()}),...zr(r),...(n=r,{httpHandler:n.httpHandler()}),...em(r)};var n,i})(s,e?.extensions||[]);super(a),this.config=a,this.middlewareStack.use((e=>({applyToStack:t=>{t.add(ds(e),hs)}}))(this.config)),this.middlewareStack.use(ea(this.config)),this.middlewareStack.use(ys(this.config)),this.middlewareStack.use(Xi(this.config)),this.middlewareStack.use((this.config,{applyToStack:e=>{e.add(((e,t)=>async r=>{try{const n=await e(r),{clientName:i,commandName:o,logger:s,dynamoDbDocumentClientOptions:a={}}=t,{overrideInputFilterSensitiveLog:c,overrideOutputFilterSensitiveLog:u}=a,d=c??t.inputFilterSensitiveLog,l=u??t.outputFilterSensitiveLog,{$metadata:h,...f}=n.output;return s?.info?.({clientName:i,commandName:o,input:d(r.input),output:l(f),metadata:h}),n}catch(e){const{clientName:n,commandName:i,logger:o,dynamoDbDocumentClientOptions:s={}}=t,{overrideInputFilterSensitiveLog:a}=s,c=a??t.inputFilterSensitiveLog;throw o?.error?.({clientName:n,commandName:i,input:c(r.input),error:e,metadata:e.$metadata}),e}}),Yi)}})),this.middlewareStack.use(to(this.config)),this.middlewareStack.use(((e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r})=>({applyToStack:n=>{n.addRelativeTo(pe(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r}),ge)}}))(this.config,{httpAuthSchemeParametersProvider:vd,identityProviderConfigProvider:async e=>new tt({"aws.auth#sigv4":e.credentials,"aws.auth#sigv4a":e.credentials})})),this.middlewareStack.use(Se(this.config)),this.middlewareStack.use(Po(this.config)),this.middlewareStack.use(G(this.config)),this.middlewareStack.use(so(this.config)),this.middlewareStack.use(wo(this.config)),this.middlewareStack.use((e=>({applyToStack:t=>{t.addRelativeTo(Eo(e),ke)}}))(this.config))}destroy(){super.destroy()}}const rm={name:"ssecMiddleware",step:"initialize",tags:["SSE"],override:!0},nm=e=>({applyToStack:t=>{var r;t.add((r=e,e=>async t=>{const n={...t.input},i=[{target:"SSECustomerKey",hash:"SSECustomerKeyMD5"},{target:"CopySourceSSECustomerKey",hash:"CopySourceSSECustomerKeyMD5"}];for(const e of i){const t=n[e.target];if(t){let i;"string"==typeof t?im(t,r)?i=r.base64Decoder(t):(i=r.utf8Decoder(t),n[e.target]=r.base64Encoder(i)):(i=ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(t),n[e.target]=r.base64Encoder(i));const o=new r.md5;o.update(i),n[e.hash]=r.base64Encoder(await o.digest())}}return e({...t,input:n})}),rm)}});function im(e,t){if(!/^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e))return!1;try{return 32===t.base64Decoder(e).length}catch{return!1}}class om extends(Wt.classBuilder().ep({...xd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),_s(r,e.getEndpointParameterInstructions()),Ro(r)]})).s("AmazonS3","DeleteObject",{}).n("S3Client","DeleteObjectCommand").f(void 0,void 0).ser(Jd).de(tl).build()){}class sm extends(Wt.classBuilder().ep({...xd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),_s(r,e.getEndpointParameterInstructions()),Gi(r,{requestChecksumRequired:!1,requestValidationModeMember:"ChecksumMode",responseAlgorithms:["CRC32","CRC32C","SHA256","SHA1"]}),nm(r),co()]})).s("AmazonS3","GetObject",{}).n("S3Client","GetObjectCommand").f(Bd,Dd).ser(Xd).de(rl).build()){}class am extends(Wt.classBuilder().ep({...xd,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),_s(r,e.getEndpointParameterInstructions()),Ro(r)]})).s("AmazonS3","ListObjectsV2",{}).n("S3Client","ListObjectsV2Command").f(void 0,void 0).ser(Yd).de(nl).build()){}class cm extends(Wt.classBuilder().ep({...xd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),_s(r,e.getEndpointParameterInstructions()),Gi(r,{requestAlgorithmMember:"ChecksumAlgorithm",requestAlgorithmMemberHttpHeader:"x-amz-sdk-checksum-algorithm",requestChecksumRequired:!1}),no(),Ro(r),nm(r)]})).s("AmazonS3","PutObject",{}).n("S3Client","PutObjectCommand").f(Qd,Vd).ser(Zd).de(il).build()){}class um{constructor(e){this.config=e,this.taskQueue=new p(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}shouldUsePathStyle(e){try{const t=new URL(e),r=t.hostname,n=/^(\d{1,3}\.){3}\d{1,3}$/.test(r),i=""!==t.port;return!n&&i}catch(e){return!0}}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;let a=s+"/"+e;for(;a.startsWith("/");)a=a.substring(1);""===a||a.endsWith("/")||(a+="/");const c=new tm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});try{let e,t=[],r=[],i=!0;for(;i;){const o=yield c.send(new am({Bucket:n,Prefix:a,Delimiter:"/",ContinuationToken:e}));o.Contents&&(t=t.concat(o.Contents)),o.CommonPrefixes&&(r=r.concat(o.CommonPrefixes)),e=o.NextContinuationToken,i=!!e}let o=[];return t.forEach((e=>{if(!e.Key.endsWith("/")){const t=e.Key.substring(a.length);t.includes("/")||o.push({name:t,size:e.Size||0,type:"file",modified:e.LastModified?e.LastModified.toISOString():""})}})),r.forEach((e=>{const t=e.Prefix.substring(a.length).replace(/\/$/,"");t&&o.push({name:t,size:0,type:"folder",modified:""})})),o}catch(e){return console.error(e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;const a=new tm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});let c=s+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{return yield a.send(new om({Bucket:n,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class dm extends um{constructor(e){super(e)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){let{endpoint:r,region:n,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:a}=this.config;const c=new tm({endpoint:r,region:n,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(r)});a=a&&"KoodoReader"===this.baseFolder?a:this.baseFolder;let u=a+"/"+t;for(;u.startsWith("/");)u=u.substring(1);try{let t=yield c.send(new cm({Bucket:i,Key:u,Body:e}));return 200===t.$metadata.httpStatusCode||(console.error("Error uploading file:",t),!1)}catch(e){return console.error("Error: ",e),!1}}))))))}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;const a=new tm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});let c=s+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{const e=yield a.send(new sm({Bucket:n,Key:c}));if(!e.Body)return console.error("No response body"),!1;const t=yield e.Body.transformToByteArray();return this.taskQueue.setDownloadedSize(t.length),t.buffer}catch(t){return console.error("Error downloading file:",t,e),!1}}))))))}))}}class lm{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder;t&&""!==t.trim()&&(n=n+"/"+t),n=n.replace(/\/+/g,"/"),n.startsWith("/")&&(n=n.substring(1));let i=[],o=0;const s=1e3;for(;;){const t=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:r,dir:"/"+n,start:o,limit:s,order:"name",desc:0,web:1,folder:0},headers:{"User-Agent":"pan.baidu.com"}});if(t.status>=300||0!==t.data.errno){console.error("百度网盘API错误:",t.data);break}const a=t.data.list||[];if(0===a.length)break;if(i=i.concat(a),a.length({name:e.server_filename,size:e.size||0,type:e.isdir?"folder":"file",modified:new Date(1e3*e.server_mtime).toISOString(),path:e.path})))}catch(e){return console.error("获取百度网盘文件列表时发生错误:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;n=n.replace(/\/+/g,"/"),n.startsWith("/")&&(n=n.substring(1));const i=new URLSearchParams({async:"0",filelist:JSON.stringify(["/"+n])}),o=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=filemanager&access_token=${r}&opera=delete`,i.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==o.data.errno)return console.error("百度网盘删除文件API错误:",o.data),-9===o.data.errno?console.error("文件不存在"):111===o.data.errno?console.error("有其他异步任务正在执行"):-7===o.data.errno&&console.error("文件名非法"),!1;const s=o.data.info||[];for(const e of s)if(0!==e.errno)return console.error(`文件删除失败: ${e.path}, 错误码: ${e.errno}`),!1;return!0}catch(e){return console.error("删除文件时发生错误:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dubox",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("dubox_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dubox",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=${y.duboxClientId}&redirect_uri=${e}&scope=basic,netdisk&device_id=119827642&display=page&qrcode=1`}}class hm extends lm{constructor(e,t){super(e,t)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return!0}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return!1}))}}class fm{constructor(e,t){this.baseUrl="https://proapi.115.com",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getUploadCredentials(t){return a(this,void 0,void 0,(function*(){try{const r=yield e.get(`${this.baseUrl}/open/upload/get_token`,{headers:{Authorization:`Bearer ${t}`}});return r.status>=300||!r.data.state?(console.error("Error getting upload credentials:",r.data),null):r.data.data}catch(e){return console.error("Error occurred during get upload credentials:",e),null}}))}generateOSSPolicy(e,t,r=new Date(Date.now()+36e5)){const n={expiration:r.toISOString(),conditions:[{bucket:e},{key:t},["starts-with","$success_action_status","2"],["content-length-range",0,1073741824]]};return JSON.stringify(n)}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token;if(!e)throw new Error("No refresh token available");let t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yiyiwu",refresh_token:e});if(!t.data.access_token)return"";if(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+18e5,!t.data.refresh_token)throw new Error("No refresh token returned");this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("yiyiwu_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yiyiwu",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://passportapi.115.com/open/authorize?client_id=${y.yiyiwuClientId}&response_type=code&redirect_uri=${e}`}}class pm extends fm{constructor(e,t){super(e,t)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return!0}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return!1}))}}class gm{constructor(e){let{username:t,password:r,url:o,dir:s}=e;void 0===e.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=e.baseFolder,s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder,this.client=n(o,{authType:i.Password,username:t,password:r}),this.username=t,this.password=r,this.url=o,this.dir=s,this.taskQueue=new p(5)}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{let n=this.dir+"/"+r;const i=this.client.exists(n.substring(0,n.lastIndexOf("/"))),o=new Promise(((e,t)=>{setTimeout((()=>t(new Error("WebDAV exists check timeout"))),5e3)}));!1===(yield Promise.race([i,o]))&&(yield this.ensureDirectoryExists(n.substring(0,n.lastIndexOf("/"))));let s=r.split("/").pop()||"",a=new File([t],s,{lastModified:(new Date).getTime(),type:t.type}),c=this.client.getFileUploadLink(this.dir+"/"+r);const u=new URL(c);u.search="",c=u.toString();const d=btoa(this.username+":"+this.password),l=yield e.put(c,a,{headers:{Authorization:"Basic "+d},maxContentLength:1/0,maxBodyLength:1/0});return!(l.status>=300)||(console.error("Error occurred during file upload:",l),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){if(this.taskQueue.setDownloadedSize(0),-1===t.indexOf("."))return new ArrayBuffer(0);try{const r=btoa(this.username+":"+this.password);let n=this.url.endsWith("/")?this.url:this.url+"/",i=this.dir.startsWith("/")?this.dir.substring(1):this.dir;const o=yield e({url:n+i+"/"+t,method:"get",headers:{Authorization:"Basic "+r},responseType:"arraybuffer",maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error occurred during file download:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){try{return(yield this.client.getDirectoryContents(this.dir+"/"+e)).filter((t=>"."!==t.filename&&".."!==t.filename&&t.filename!==e)).map((e=>({name:e.basename,size:e.size||0,type:"directory"===e.type?"folder":"file",modified:e.lastmod})))}catch(t){return t.response&&404===t.response.status&&(yield this.client.createDirectory(this.dir+"/"+e)),console.error("Error listing files:",t),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){try{return yield this.client.deleteFile(this.dir+"/"+e),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(e){return a(this,void 0,void 0,(function*(){try{const t=e.replace(/^\/+|\/+$/g,"").split("/").filter((e=>e.length>0));let r="";for(const e of t)r=r?`${r}/${e}`:e,(yield this.client.exists(`/${r}`))||(yield this.client.createDirectory(`/${r}`));return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}}class mm{constructor(e){this.username=e.username,this.password=e.password,this.url=e.url,this.refreshTokenPromise=null,this.taskQueue=new p(3)}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{return(yield e.get(`${this.url}/list`,{params:{dir:t},auth:{username:this.username,password:this.password}})).data.files.map((e=>({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modifiedTime})))||[]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{return(yield e.delete(`${this.url}/delete`,{params:{dir:t.split("/").slice(0,-1).join("/")||"",filename:t.split("/").pop()},auth:{username:this.username,password:this.password}})).data.success}catch(e){return console.error("Error deleting file:",e),!1}}))}}class ym extends mm{constructor(e){super(e)}getAuthHeader(){return`Basic ${btoa(`${this.username}:${this.password}`)}`}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=r.split("/").pop()||"",i=r.substring(0,r.lastIndexOf("/"))||"";let o=this.listFiles("");const s=new Promise(((e,t)=>{setTimeout((()=>t(new Error("Docker connection timeout"))),5e3)}));yield Promise.race([o,s]);let a=new File([t],n,{lastModified:(new Date).getTime(),type:t.type});const c=new FormData;c.append("file",a);const u=yield e.post(`${this.url}/upload?dir=${encodeURIComponent(i)}`,c,{headers:{Authorization:this.getAuthHeader(),"Content-Type":"multipart/form-data"},maxContentLength:1/0,maxBodyLength:1/0});return!(u.status>=300)||(console.error("Error occurred during file upload:",u),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=t.split("/").pop()||"",n=t.substring(0,t.lastIndexOf("/"))||"",i=yield e({url:`${this.url}/download`,method:"GET",params:{dir:n,filename:r},headers:{Authorization:this.getAuthHeader()},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return i.status>=300?(console.error("Error occurred during file download:",i),!1):i.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}const vm=["book","config","cover","font"];class bm{constructor(e,t,r){this.type=e,this.remote="dropbox"===e?new T(t,r):"microsoft"===e?new M(t,r):"google"===e?new O(t,r):"microsoft_exp"===e?new M(Object.assign(Object.assign({},t),{isExp:!0}),r):"google_exp"===e?new O(Object.assign(Object.assign({},t),{isExp:!0}),r):"s3compatible"===e?new dm(t):"webdav"===e?new gm(t):"docker"===e?new ym(t):"boxnet"===e?new E(t,r):"mega"===e?new P(t):"adrive"===e?new k(t,r):"pcloud"===e?new $(t,r):"dubox"===e?new hm(t,r):"yandex"===e?new C(t,r):"yiyiwu"===e?new pm(t,r):new N}downloadFile(e,t){return a(this,void 0,void 0,(function*(){if("cover"!==t){if(!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1)))return!1}return yield this.remote.downloadFile(t+"/"+e)}))}uploadFile(e,t,r){return a(this,void 0,void 0,(function*(){return yield this.remote.uploadFile(r,t+"/"+e)}))}deleteFile(e,t){return a(this,void 0,void 0,(function*(){return!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1))||(yield this.remote.deleteFile(t+"/"+e))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return yield this.remote.listFiles(e)}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){return yield this.remote.listFileInfos(e)}))}isExist(e,t){return a(this,void 0,void 0,(function*(){return(yield this.listFiles(t)).find((t=>-1!==t.indexOf(e)))}))}downloadAllFiles(){return a(this,void 0,void 0,(function*(){for(let e of vm){let t=yield this.listFiles(e);for(let r of t)yield this.downloadFile(r,e)}}))}authToken(e){return a(this,void 0,void 0,(function*(){return yield this.remote.authToken(e)}))}getAuthUrl(e){return this.remote.getAuthUrl?this.remote.getAuthUrl(e):""}getStats(){return this.remote.taskQueue.getStats()}resetCounters(){this.remote.taskQueue.resetCounters()}getDownloadedSize(){return this.remote.taskQueue.getDownloadedSize()}}const wm={notes:"SELECT * FROM notes WHERE key = ?",bookmarks:"SELECT * FROM bookmarks WHERE key = ?",books:"SELECT * FROM books WHERE key = ?",plugins:"SELECT * FROM plugins WHERE key = ?",words:"SELECT * FROM words WHERE key = ?"},km={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},Sm={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"},Em={createTableStatement:xm({notes:'\n CREATE TABLE IF NOT EXISTS "notes" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "chapter" text,\n "chapterIndex" integer,\n "text" text,\n "cfi" text,\n "range" text,\n "notes" text,\n "percentage" text,\n "color" integer,\n "tag" array\n )\n ',bookmarks:'\n CREATE TABLE IF NOT EXISTS "bookmarks" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "cfi" text,\n "label" text,\n "percentage" text,\n "chapter" text\n );\n ',books:'\n CREATE TABLE IF NOT EXISTS "books" (\n "key" text PRIMARY KEY,\n "name" text,\n "author" text,\n "description" text,\n "md5" text,\n "cover" text,\n "format" text,\n "publisher" text,\n "size" integer,\n "page" integer,\n "path" text,\n "charset" text\n );\n ',plugins:'\n CREATE TABLE IF NOT EXISTS "plugins" (\n "key" text PRIMARY KEY,\n "type" text,\n "displayName" text,\n "icon" text,\n "version" text,\n "config" object,\n "autoValue" string,\n "langList" text,\n "voiceList" text,\n "scriptSHA256" text,\n "script" text\n );\n ',words:'\n CREATE TABLE IF NOT EXISTS "words" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "word" text,\n "chapter" text\n );\n '}),getAllStatement:xm({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),getPagedStatement:xm({notes:"SELECT * FROM notes LIMIT ? OFFSET ?",bookmarks:"SELECT * FROM bookmarks LIMIT ? OFFSET ?",books:"SELECT * FROM books LIMIT ? OFFSET ?",plugins:"SELECT * FROM plugins LIMIT ? OFFSET ?",words:"SELECT * FROM words LIMIT ? OFFSET ?"}),getCountStatement:xm({notes:"SELECT COUNT(*) as count FROM notes",bookmarks:"SELECT COUNT(*) as count FROM bookmarks",books:"SELECT COUNT(*) as count FROM books",plugins:"SELECT COUNT(*) as count FROM plugins",words:"SELECT COUNT(*) as count FROM words"}),saveStatement:xm({notes:"INSERT OR REPLACE INTO notes (key, bookKey, chapter, chapterIndex, text, cfi, range, notes, date, percentage, color, tag) VALUES (@key, @bookKey, @chapter, @chapterIndex, @text, @cfi, @range, @notes, @date, @percentage, @color, @tag)",bookmarks:"INSERT OR REPLACE INTO bookmarks (key, bookKey, cfi, label, percentage, chapter) VALUES (@key, @bookKey, @cfi, @label, @percentage, @chapter)",books:"INSERT OR REPLACE INTO books (key, name, author, description, md5, cover, format, publisher, size, page, path, charset) VALUES (@key, @name, @author, @description, @md5, @cover, @format, @publisher, @size, @page, @path, @charset)",plugins:"INSERT OR REPLACE INTO plugins (key, type, displayName, icon, version, config, autoValue, langList, voiceList, scriptSHA256, script) VALUES (@key, @type, @displayName, @icon, @version, @config, @autoValue, @langList, @voiceList, @scriptSHA256, @script)",words:"INSERT OR REPLACE INTO words (key, bookKey, date, word, chapter) VALUES (@key, @bookKey, @date, @word, @chapter)"}),deleteAllStatement:xm({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:xm({notes:"UPDATE notes SET bookKey = @bookKey, chapter = @chapter, chapterIndex = @chapterIndex, text = @text, cfi = @cfi, range = @range, notes = @notes, date = @date, percentage = @percentage, color = @color, tag = @tag WHERE key = @key",bookmarks:"UPDATE bookmarks SET bookKey = @bookKey, cfi = @cfi, label = @label, percentage = @percentage, chapter = @chapter WHERE key = @key",books:"UPDATE books SET name = @name, author = @author, description = @description, md5 = @md5, cover = @cover, format = @format, publisher = @publisher, size = @size, page = @page, path = @path, charset = @charset WHERE key = @key",plugins:"UPDATE plugins SET type = @type, displayName = @displayName, icon = @icon, version = @version, config = @config, autoValue = @autoValue, langList = @langList, voiceList = @voiceList, scriptSHA256 = @scriptSHA256, script = @script WHERE key = @key",words:"UPDATE words SET bookKey = @bookKey, date = @date, word = @word, chapter = @chapter WHERE key = @key"}),deleteStatement:xm({notes:"DELETE FROM notes WHERE key = ?",bookmarks:"DELETE FROM bookmarks WHERE key = ?",books:"DELETE FROM books WHERE key = ?",plugins:"DELETE FROM plugins WHERE key = ?",words:"DELETE FROM words WHERE key = ?"}),dropStatement:xm({notes:"DROP TABLE IF EXISTS notes",bookmarks:"DROP TABLE IF EXISTS bookmarks",books:"DROP TABLE IF EXISTS books",plugins:"DROP TABLE IF EXISTS plugins",words:"DROP TABLE IF EXISTS words"}),getStatement:xm(wm),getByBookKeyStatement:xm(km),getByBookKeysStatement:xm({notes:e=>`SELECT * FROM notes WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,bookmarks:e=>`SELECT * FROM bookmarks WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,words:e=>`SELECT * FROM words WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,books:e=>`SELECT * FROM books WHERE key IN (${e.map((()=>"?")).join(",")})`}),getKeysStatement:xm({notes:"SELECT key FROM notes",bookmarks:"SELECT key FROM bookmarks",books:"SELECT key FROM books",plugins:"SELECT key FROM plugins",words:"SELECT key FROM words"}),getWithSortAndPageStatement:xm({notes:(e,t,r,n)=>`SELECT * FROM notes ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${n}`,bookmarks:(e,t,r,n)=>`SELECT * FROM bookmarks ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${n}`,books:(e,t,r,n)=>`SELECT * FROM books ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${n}`,plugins:(e,t,r,n)=>`SELECT * FROM plugins ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${n}`,words:(e,t,r,n)=>`SELECT * FROM words ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${n}`}),getByKeysStatement:xm({notes:e=>`SELECT * FROM notes WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`,bookmarks:e=>`SELECT * FROM bookmarks WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`,books:e=>`SELECT * FROM books WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`,plugins:e=>`SELECT * FROM plugins WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`,words:e=>`SELECT * FROM words WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`}),deleteByBookKeyStatement:xm(Sm)};function xm(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const Tm={notes:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t.tag=JSON.parse(e.tag),t},bookmarks:e=>e,books:e=>e,plugins:e=>{let t=Object.assign({},e);return e.autoValue||delete t.autoValue,e.langList?t.langList=JSON.parse(e.langList):delete t.langList,e.voiceList?t.voiceList=JSON.parse(e.voiceList):delete t.voiceList,t.config=JSON.parse(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t}};var Am,Cm={sqlStatement:Em,jsonToSqlite:xm({notes:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t.tag=JSON.stringify(e.tag),t},bookmarks:e=>e,books:e=>{let t=Object.assign({},e);return t.page=e.page||0,t},plugins:e=>{let t=Object.assign({},e);return e.autoValue||(t.autoValue=null),e.langList?t.langList=JSON.stringify(e.langList):t.langList=null,e.voiceList?t.voiceList=JSON.stringify(e.voiceList):t.voiceList=null,t.config=JSON.stringify(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t}}),sqliteToJson:xm(Tm)};class Rm{constructor(e,t,r,n,i,o,s,a,c,u,d,l){this.key=e,this.name=t,this.author=r,this.description=n,this.md5=i,this.cover=o,this.format=s,this.publisher=a,this.size=c,this.page=u,this.path=d,this.charset=l}}class Om{static generateBook(e,t,r,n,i,o,s){return new Promise(((c,u)=>a(this,void 0,void 0,(function*(){try{let a,u,d,l,h,f,p,g,m="";switch([u,d,h,l,f,p]=[e,"","","","",0],t){case"pdf":case"epub":case"mobi":case"azw":case"azw3":case"fb2":g=yield s.getMetadata(),[u,d,h,l,m]=[g.name||e,g.author||"",g.description||"",g.publisher||"",g.cover||""];break;case"cbr":case"cbt":case"cbz":case"cb7":g=yield s.getMetadata(),m=g.cover;break;case"txt":g=yield s.getMetadata(o),f=g.charset}let y=t.toUpperCase();a=(new Date).getTime()+"",c(new Rm(a,u,d,h,r,m,y,l,n,p,i,f))}catch(e){console.error(e),u(e)}}))))}}Am=Om,Om.getRendition=(e,t,r)=>{let n,i=t.format.toUpperCase();var o,s;return"CACHE"===i?n=new r.CacheRender(e,t):"MOBI"===i||"AZW3"===i||"AZW"===i?n=new r.MobiRender(e,t):"EPUB"===i?n=new r.EpubRender(e,t):"TXT"===i?n=new r.TxtRender(e,t):"MD"===i?n=new r.MdRender(e,t):"PDF"===i?n="yes"===t.isConvertPDF?new r.PdfTextRender(e,t):new r.PdfRender(e,t):"FB2"===i?n=new r.Fb2Render(e,t):"DOCX"===i?n=new r.DocxRender(e,t):"HTML"===i||"XHTML"===i||"MHTML"===i||"HTM"===i||"XML"===i?n=new r.HtmlRender(e,t):"CBR"!==i&&"CBT"!==i&&"CBZ"!==i&&"CB7"!==i||(n=new r.ComicRender((o=e,s=new ArrayBuffer(o.byteLength),new Uint8Array(s).set(new Uint8Array(o)),s),t)),n},Om.initMobileBook=(e,t)=>a(void 0,void 0,void 0,(function*(){try{window.ReactNativeWebView.postMessage(JSON.stringify({event:"user-agent",userAgent:navigator.userAgent}));const r=yield fetch(e);if(!r.ok)throw new Error(`Failed to download book: ${r.status} ${r.statusText}`);const n=yield r.arrayBuffer();window.ReactNativeWebView.postMessage(JSON.stringify({event:"finish-download"})),window.file_content=n;let i=Am.getRendition(n,Object.assign(Object.assign({},t),{isMobile:"yes"}),window.Kookit);window.rendition=i;let o=document.getElementById("page-area");t.format&&"TXT"===t.format.toUpperCase()?yield window.rendition.renderTo(o,t.bookLocation):yield window.rendition.renderTo(o),window.rendition.on("rendered",(()=>a(void 0,void 0,void 0,(function*(){let e=Object.assign({},window.rendition.getPosition()),r=Object.assign({},yield window.rendition.getProgress());"PDF"===t.format&&"android"===t.platform&&(e.chapterDocIndex=window.chapterDocIndex),window.ReactNativeWebView.postMessage(JSON.stringify({event:"content-loaded",bookLocation:e,progress:r})),window.rendition.tranformText()}))));const s=function(e,t){let r=0,n=null,i=null;return function(...o){const s=Date.now();s-r>=t?(r=s,e.apply(this,o)):(clearTimeout(n),i=o,n=setTimeout((()=>{r=Date.now(),e.apply(this,null!=i?i:[])}),t-(s-r)))}}((()=>a(void 0,void 0,void 0,(function*(){let e=Object.assign({},window.rendition.getPosition()),t=Object.assign({},yield window.rendition.getProgress());window.ReactNativeWebView.postMessage(JSON.stringify({event:"page-changed",bookLocation:e,progress:t}))}))),6e3);let c=null;window.rendition.on("page-changed",(()=>{c&&clearTimeout(c),c=setTimeout((()=>{s(),c=null}),window.isTouchNavigation?2e3:0)})),window.ReactNativeWebView.postMessage(JSON.stringify({event:"book-inited",chapterList:window.rendition.getChapter()}))}catch(e){window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}))}})),Om.addMobileBook=(e,t,r,n,i,o,s="")=>a(void 0,void 0,void 0,(function*(){var a;try{if(window.ReactNativeWebView.postMessage(JSON.stringify({event:"user-agent",userAgent:navigator.userAgent})),"PDF"===r.toUpperCase()&&i>314572800){t=t.replace(/\.[^/.]+$/,"");let e=r.toUpperCase(),s=(new Date).getTime()+"",a=new Rm(s,t,"","",n,"",e,"",i,0,o,"");return void window.ReactNativeWebView.postMessage(JSON.stringify({event:"metadata",bookInfo:a}))}const c=yield fetch(e);if(!c.ok)throw new Error(`Failed to download book: ${c.status} ${c.statusText}`);const u=yield c.arrayBuffer();null===(a=window.ReactNativeWebView)||void 0===a||a.postMessage(JSON.stringify({event:"finish-download"})),window.file_content=u;let d=Am.getRendition(u,{format:r.toUpperCase(),readerMode:"",charset:"",animation:"",convertChinese:"no",parserRegex:s||"",isDarkMode:"no",isMobile:"yes",password:"",isConvertPDF:"no"},window.Kookit);window.rendition=d,t=t.replace(/\.[^/.]+$/,"");let l=yield Om.generateBook(t,r,n,i,o,u,d);if(!l||!l.key)return;window.ReactNativeWebView.postMessage(JSON.stringify({event:"metadata",bookInfo:l}))}catch(e){window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}))}})),Om.precacheMobileBook=(e,t)=>a(void 0,void 0,void 0,(function*(){let r=yield window.rendition.preCache(window.file_content);if(""===r)window.ReactNativeWebView.postMessage(JSON.stringify({event:"cache",cacheBase64:"",key:t}));else if("err"!==r){try{const n=`${e}/dav/${"cache-"+t+".zip"}`,i=yield fetch(n,{method:"PUT",headers:{"Content-Type":"application/octet-stream",Overwrite:"T"},body:r});if(!i.ok)throw new Error(`上传失败: ${i.status}`);console.info("文件上传成功")}catch(e){console.error("操作失败:"+e)}window.ReactNativeWebView.postMessage(JSON.stringify({event:"cache",key:t}))}else window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}));window.file_content=null,window.rendition=null}));const _m=m.devUrl,Pm=m.cloudCNUrl;class Im{constructor(e,t,r){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===r?Pm:_m,this.refreshToken="",this.accessToken="",this.streamPromise=null,this.expiresAt=0}refreshUserToken(){return a(this,void 0,void 0,(function*(){if(this.refreshToken=yield this.TokenService.getToken("refresh_token"),!this.refreshToken)return{code:401,message:"refresh token not found"};let t=(yield e.post(this.baseUrl+"/api/v1/public/user/refresh_token",{refresh_token:this.refreshToken})).data;return 200===t.code&&(yield this.TokenService.setToken("access_token",t.data.access_token),yield this.TokenService.setToken("refresh_token",t.data.refresh_token),yield this.TokenService.setToken("expires_at",(1e3*t.data.expires_at).toString()),this.accessToken=t.data.access_token,this.refreshToken=t.data.refresh_token,this.expiresAt=1e3*t.data.expires_at),t}))}requestWithRetry(e){return a(this,void 0,void 0,(function*(){return Im.requestQueue||(Im.requestQueue=[]),new Promise(((t,r)=>{Im.requestQueue.push({config:e,resolve:t,reject:r}),Im.processingQueue||this.processQueue()}))}))}isTokenValid(){return a(this,void 0,void 0,(function*(){if(this.accessToken||(this.accessToken=(yield this.TokenService.getToken("access_token"))||""),!this.expiresAt){const e=yield this.TokenService.getToken("expires_at");this.expiresAt=e?parseInt(e):(new Date).getTime()+31536e9}return""!==this.accessToken&&this.expiresAt>(new Date).getTime()+6e4}))}processQueue(){return a(this,void 0,void 0,(function*(){if(!Im.processingQueue){Im.processingQueue=!0;try{for(;Im.requestQueue.length>0;){const e=Im.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{Im.processingQueue=!1}}}))}executeRequest(t){return a(this,void 0,void 0,(function*(){try{try{this.accessToken=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let r="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);if(t.baseURL=this.baseUrl,t.headers)t.headers.Authorization="Bearer "+this.accessToken,t.headers["X-Request-ID"]=r;else{let e=this.ConfigService.getItem("appVersion"),n=this.ConfigService.getItem("appPlatform");t.headers={Authorization:"Bearer "+this.accessToken,"X-Request-ID":r,"X-App-Version":e||"1.0.0","X-App-Platform":n||"web"}}let n=(yield e(t)).data;if(402===n.code){let r=yield this.refreshUserToken();if(200===r.code){return t.headers=t.headers||{},t.headers.Authorization="Bearer "+this.accessToken,(yield e(t)).data}return r}return 200!==n.code&&this.ConfigService.setItem("errorLog",this.ConfigService.getItem("errorLog")+"\n"+JSON.stringify({request:t.data,url:t.url,result:n,requestID:r})),n}catch(e){return console.error("Request execution error:",e),{code:503,message:"network error",data:null}}}))}requestWithStream(e,t,r){return a(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>a(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let n=this.accessToken||"",i="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((o,s)=>{let c=this.ConfigService.getItem("appVersion"),u=this.ConfigService.getItem("appPlatform");const d=new r(this.baseUrl+e.url,{headers:{"Content-Type":"application/json",Authorization:"Bearer "+n,"X-Request-ID":i,"X-App-Version":c||"1.0.0","X-App-Platform":u||"web"},method:e.method,body:JSON.stringify(e.data),pollingInterval:0});d.addEventListener("open",(()=>{console.info("Connection to OpenAI established.")})),d.addEventListener("message",(e=>a(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(d.close(),o(r)):t(r.data)})))),d.addEventListener("error",(e=>{if(console.info("Error:",e),!e.data)return;const t=JSON.parse(e.data);o(t),d.close()}))}))}finally{this.streamPromise=null}})))()),this.streamPromise}))}requestWithFetch(e,t){return a(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>a(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let r=this.accessToken||"",n="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((i,s)=>a(this,void 0,void 0,(function*(){let s=this.ConfigService.getItem("appVersion"),c=this.ConfigService.getItem("appPlatform");var u=new o(this.baseUrl+e.url,{headers:{"Content-Type":"text/plain",Authorization:"Bearer "+r,"X-Request-ID":n,"X-App-Version":s||"1.0.0","X-App-Platform":c||"web"},payload:JSON.stringify(e.data),method:"POST"});u.addEventListener("message",(e=>a(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(u.close(),i(r)):t(r.data)})))),u.addEventListener("open",(e=>{console.info(e,"Connection to OpenAI established.")})),u.addEventListener("error",(e=>{if(console.error(e,"Error occurred while connecting to OpenAI"),!e.data)return;const t=JSON.parse(e.data);i(t),u.close()}))}))))}finally{this.streamPromise=null}})))()),this.streamPromise}))}}Im.processingQueue=!1,Im.requestQueue=[];class Mm extends Im{constructor(e,t,r){super(e,t,r)}getTransStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_trans_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getTransFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_trans_stream",data:e};return yield this.requestWithFetch(r,t)}))}getDictionary(e){return a(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/reader/get_llm_dict",data:e};return yield this.requestWithRetry(t)}))}getSummaryStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_sum_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getAnswerStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_answer_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getAnswerFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_answer_stream",data:e};return yield this.requestWithFetch(r,t)}))}getSummaryFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_sum_stream",data:e};return yield this.requestWithFetch(r,t)}))}getGoogleFont(e){return a(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/reader/get_google_font",data:e};return yield this.requestWithRetry(t)}))}sendToKindle(e){return a(this,void 0,void 0,(function*(){let t=new FormData;t.append("file",e.file),t.append("email",e.email),t.append("file_name",e.fileName);const r={method:"post",url:"/api/v1/pro/reader/send_to_kindle",headers:{"Content-Type":"multipart/form-data"},data:t};return yield this.requestWithRetry(r)}))}detectLanguage(e){return a(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/reader/detect_language",data:e};return yield this.requestWithRetry(t)}))}}class Nm extends Im{constructor(e,t,r){super(e,t,r),this.serverRegion=r}encryptToken(e){return a(this,void 0,void 0,(function*(){let t=e.token,r=f.encode(t),{extracted:n,remaining:i}=function(e){let t="",r="",n=[],i=1;for(;i<=e.length;)n.push(i-1),i*=2;for(let i=0;i-1){let r=t.split("#");e.encrypted_token=r[1]}const r={method:"post",url:"/api/v1/pro/thirdparty/decrypt_token",data:e};let n=yield this.requestWithRetry(r);if(t.indexOf("#")>-1&&n.data&&n.data.token){let e=t.split("#"),r=function(e,t){let r="",n=[],i=1,o=e.length+t.length;for(;i<=o;)n.push(i-1),i*=2;let s=0,a=0;for(let i=0;i{let n="";if("github"===e?n=`https://github.com/login/oauth/authorize?client_id=${y.githubClientId}&redirect_uri=${r}&scope=${v.github.scopes.join(" ")}&response_type=code`:"google"===e?n=`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${r}&prompt=consent&response_type=code&client_id=${y.googleClientId}&scope=${v.google.scopes.join(" ")}&access_type=offline`:"facebook"===e?n=`https://www.facebook.com/v12.0/dialog/oauth?client_id=${y.facebookClientId}&redirect_uri=${r}&scope=&response_type=code`:"microsoft"===e&&(n=`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${y.microsoftClientId}&scope=${v.microsoft.scopes.join(" ")}&response_type=code&redirect_uri=${r}`),"manual"===t)return n;let i=JSON.stringify({deeplink:"desktop"===t?"koodo-reader://callback":"browser"===t?`${y.callbackUrl}#/login`:"",service:e});return`${n}&state=${"state|"+encodeURIComponent(i)}`}};class Um{static CompareDatabase(e,t,r){return a(this,void 0,void 0,(function*(){let n=Object.keys(e).filter((e=>e.startsWith("database.sqlite.books"))),i=Object.keys(e).filter((e=>e.startsWith("database.sqlite.notes"))),o=Object.keys(e).filter((e=>e.startsWith("database.sqlite.bookmarks"))),s=Object.keys(e).filter((e=>e.startsWith("database.sqlite.plugins"))),a=Object.keys(e).filter((e=>e.startsWith("database.sqlite.words"))),c=Object.keys(t).filter((e=>e.startsWith("database.sqlite.books"))),u=Object.keys(t).filter((e=>e.startsWith("database.sqlite.notes"))),d=Object.keys(t).filter((e=>e.startsWith("database.sqlite.bookmarks"))),l=Object.keys(t).filter((e=>e.startsWith("database.sqlite.plugins"))),h=Object.keys(t).filter((e=>e.startsWith("database.sqlite.words"))),f={books:Array.from(new Set(n.concat(c))),notes:Array.from(new Set(i.concat(u))),bookmarks:Array.from(new Set(o.concat(d))),plugins:Array.from(new Set(s.concat(l))),words:Array.from(new Set(a.concat(h)))},p={books:{save:[],update:[],delete:[],conflict:[],upload:[]},notes:{save:[],update:[],delete:[],conflict:[],upload:[]},bookmarks:{save:[],update:[],delete:[],conflict:[],upload:[]},plugins:{save:[],update:[],delete:[],conflict:[],upload:[]},words:{save:[],update:[],delete:[],conflict:[],upload:[]}},g=["books","notes","bookmarks","plugins","words"];for(let n of g)for(let i of f[n]){let o=i.split(".")[3],s=e[i],a=t[i];s?a?("save"===a.operation&&("update"!==s.operation&&"delete"!==s.operation||p[n].upload.push(o)),"delete"===a.operation&&("save"===s.operation&&(p[n].delete.push(o),e[i]=a),"update"===s.operation&&(s.timea.time&&(p[n].conflict.push(o),"cloud"===r?(p[n].delete.push(o),e[i]=a):p[n].upload.push(o))),s.operation),"update"===a.operation&&("save"===s.operation&&(p[n].update.push(o),e[i]=a),"update"===s.operation&&(s.timea.time&&p[n].upload.push(o)),"delete"===s.operation&&(s.timea.time&&p[n].upload.push(o)))):p[n].upload.push(o):(p[n].save.push(o),e[i]=a)}return{compareResult:p,syncRecords:e}}))}static CompareConfig(e,t,r){return a(this,void 0,void 0,(function*(){let n=Object.keys(e).filter((e=>e.startsWith("config.readerConfig"))),i=Object.keys(e).filter((e=>e.startsWith("config.listConfig"))),o=Object.keys(e).filter((e=>e.startsWith("config.objectConfig"))),s=Object.keys(e).filter((e=>e.startsWith("config.mapConfig"))),a=Object.keys(t).filter((e=>e.startsWith("config.readerConfig"))),c=Object.keys(t).filter((e=>e.startsWith("config.listConfig"))),u=Object.keys(t).filter((e=>e.startsWith("config.objectConfig"))),d=Object.keys(t).filter((e=>e.startsWith("config.mapConfig"))),l={readerConfig:Array.from(new Set(n.concat(a))),listConfig:Array.from(new Set(i.concat(c))),objectConfig:Array.from(new Set(o.concat(u))),mapConfig:Array.from(new Set(s.concat(d)))},h={readerConfig:{update:[],upload:[]},listConfig:{update:[],upload:[]},objectConfig:{update:[],delete:[],conflict:[],save:[],upload:[]},mapConfig:{update:[],delete:[],conflict:[],save:[],upload:[]}},f=["readerConfig","listConfig"];for(let r of f)for(let n of l[r]){let i=n,o=e[n],s=t[n];o?s?o.times.time&&h[r].upload.push(i):h[r].upload.push(i):(h[r].update.push(i),e[n]=s)}let p=["objectConfig","mapConfig"];for(let n of p)for(let i of l[n]){let o=i,s=e[i],a=t[i];s?a?("delete"===a.operation&&("update"===s.operation&&(s.timea.time&&(h[n].conflict.push(o),"cloud"===r?(h[n].delete.push(o),e[i]=a):h[n].upload.push(o))),s.operation),"update"===a.operation&&("update"===s.operation&&(s.timea.time&&h[n].upload.push(o)),"delete"===s.operation&&(s.timea.time&&h[n].upload.push(o)))):h[n].upload.push(o):(h[n].update.push(o),e[i]=a)}return{compareResult:h,syncRecords:e}}))}static compareAll(e,t,r,n,i){return a(this,void 0,void 0,(function*(){let o="cloud";if("yes"===r.getReaderConfig("isKeepLocal")){o="local";let e=r.getObjectConfig(yield n.getFingerprint(),"cloudSyncTime",{time:0,conflictMode:"cloud"}),t=yield i.getCloudConfig("config"),s=JSON.parse(t.cloudSyncTime||"{}");delete s[yield n.getFingerprint()],Object.values(s).filter((t=>"local"===t.conflictMode&&t.time>e.time)).length>0&&(o="cloud")}let{compareResult:s,syncRecords:a}=yield this.CompareDatabase(e,t,o),{compareResult:c,syncRecords:u}=yield this.CompareConfig(a,t,o),d=Object.assign(Object.assign({},s),c);return r.setAllSyncRecord(u),"local"===o&&(d.books.conflict.length>0||d.notes.conflict.length>0||d.bookmarks.conflict.length>0||d.plugins.conflict.length>0||d.words.conflict.length>0||d.objectConfig.conflict.length>0||d.mapConfig.conflict.length>0)?r.setObjectConfig(yield n.getFingerprint(),{time:(new Date).getTime(),conflictMode:"local"},"cloudSyncTime"):r.setObjectConfig(yield n.getFingerprint(),{time:(new Date).getTime(),conflictMode:"cloud"},"cloudSyncTime"),d}))}static startSync(e,t,r,n,i,o){return a(this,void 0,void 0,(function*(){let s=yield this.syncConfig(e,t,r,i,n);if(e.books.save.length>0||e.books.upload.length>0){let e=yield this.syncCover(t,o,i),r=yield this.syncBook(t,i);return[...s,...e,...r]}return s}))}static syncConfig(e,t,r,n,i){return a(this,void 0,void 0,(function*(){let o=[];for(let t of u){if(e[t].save.length+e[t].update.length>0){let n=yield i.getCloudDatabase(t);for(let i of e[t].save){let e=n.find((e=>e.key===i));e&&(yield r.saveRecord(e,t))}for(let i of e[t].update){let e=n.find((e=>e.key===i));e&&(yield r.updateRecord(e,t,!1))}}if(e[t].delete.length>0)for(let i of e[t].delete)yield r.deleteRecord(i,t),"books"===t&&(yield n.deleteOfflineBook(i))}if(e.readerConfig.update.length>0||e.listConfig.update.length>0||e.objectConfig.update.length>0||e.mapConfig.update.length>0){let r=yield i.getCloudConfig("config");for(let n of e.readerConfig.update){let e=n.split(".")[3];r.readerConfig&&t.setReaderConfig(e,JSON.parse(r.readerConfig)[e],!1)}for(let n of e.listConfig.update){let e=n.split(".")[3];r[e]&&t.setAllListConfig(JSON.parse(r[e]),e,!1)}for(let n of e.objectConfig.update){let e=n.split(".")[3],i=n.split(".")[2];r[i]&&JSON.parse(r[i])&&JSON.parse(r[i])[e]&&t.setObjectConfig(e,JSON.parse(r[i])[e],i,!1)}for(let n of e.mapConfig.update){let e=n.split(".")[3],i=n.split(".")[2];if(r[i]&&JSON.parse(r[i])&&JSON.parse(r[i])[e]){let n=JSON.parse(r[i])[e];t.setOneMapConfig(e,n,i,!1)}}}if(e.objectConfig.delete.length>0||e.mapConfig.delete.length>0){for(let r of e.objectConfig.delete){let e=r.split(".")[3],n=r.split(".")[2];t.deleteObjectConfig(e,n)}for(let r of e.mapConfig.delete){let e=r.split(".")[3],n=r.split(".")[2];t.deleteMapConfig(e,n)}}for(let t of u)e[t].upload.length>0&&o.push((()=>i.uploadDatabase(t)));return o.push((()=>i.uploadConfig("config"))),o.push((()=>i.uploadConfig("sync"))),o}))}static syncCover(e,t,r){return a(this,void 0,void 0,(function*(){let r=yield t.getLocalCoverList(),n=yield t.getCloudCoverList(),i=Array.from(new Set([...r,...n])),o=[];for(let s of i)r.includes(s)&&!n.includes(s)&&o.push((()=>t.uploadCover(s))),!r.includes(s)&&n.includes(s)&&"adrive"!==e.getItem("defaultSyncOption")&&o.push((()=>t.downloadCover(s)));return o}))}static syncBook(e,t){return a(this,void 0,void 0,(function*(){let r=yield t.getLocalBookList(),n=yield t.getCloudBookList(),i=[],o=Array.from(new Set([...r,...n]));for(let s of o){if(r.includes(s)&&!n.includes(s)){let e=s.split(".")[0],r=s.split(".")[1];i.push((()=>t.uploadBook(e,r)))}let o="yes"===e.getReaderConfig("autoOffline");if(!r.includes(s)&&n.includes(s)&&o&&"adrive"!==e.getItem("defaultSyncOption")){let e=s.split(".")[0],r=s.split(".")[1];i.push((()=>t.offlineBook(e,r.toUpperCase())))}}return i}))}static runTasksWithLimit(e,t,r){return a(this,void 0,void 0,(function*(){if("ftp"!==r&&"adrive"!==r){const r=[],n=[];for(const i of e){const e=i().then((t=>(n.splice(n.indexOf(e),1),t)));r.push(e),n.push(e),n.length>=t&&(yield Promise.race(n))}return Promise.all(r)}for(let t of e)yield t()}))}}const Lm=((e,t)=>{var r;return(r=class extends e{static getReaderConfig(e){return JSON.parse(this.getItem("readerConfig")||"{}")[e]}static setReaderConfig(e,r,n=!0){let i=JSON.parse(this.getItem("readerConfig")||"{}");i[e]=r,this.setItem("readerConfig",JSON.stringify(i)),n&&this.setSyncRecord({type:"config",catergory:"readerConfig",name:t,key:e},{operation:"update",time:Date.now()})}static getAllListConfig(e){return("{}"!==this.getItem(e)&&this.getItem(e)?JSON.parse(this.getItem(e)||""):[])||[]}static deleteListConfig(e,t){let r=this.getAllListConfig(t);const n=r.indexOf(e);n>-1&&r.splice(n,1),this.setAllListConfig(r,t)}static setListConfig(e,t){let r=this.getAllListConfig(t);const n=r.indexOf(e);n>-1?(r.splice(n,1),r.unshift(e)):r.unshift(e),this.setAllListConfig(r,t)}static setAllListConfig(e,t,r=!0){this.setItem(t,JSON.stringify(e)),r&&this.setSyncRecord({type:"config",catergory:"listConfig",name:"general",key:t},{operation:"update",time:Date.now()})}static setObjectConfig(e,t,r,n=!0){let i=this.getAllObjectConfig(r);i[e]=t,n&&this.setSyncRecord({type:"config",catergory:"objectConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllObjectConfig(i,r)}static getObjectConfig(e,t,r){return this.getAllObjectConfig(t)[e]||r}static getAllObjectConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static setAllObjectConfig(e,t){this.setItem(t,JSON.stringify(e))}static deleteObjectConfig(e,t){let r=this.getAllObjectConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"objectConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllObjectConfig(r,t)}static getAllMapConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static getMapConfig(e,t){return this.getAllMapConfig(t)[e]||[]}static setAllMapConfig(e,t){this.setItem(t,JSON.stringify(e))}static setMapConfig(e,t,r){let n=this.getAllMapConfig(r);void 0===n[e]&&(n[e]=[]),t&&-1===n[e].indexOf(t)&&n[e].unshift(t),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(n,r)}static setOneMapConfig(e,t,r,n=!0){let i=this.getAllMapConfig(r);i[e]=t,n&&this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static deleteFromMapConfig(e,t,r){let n=this.getAllMapConfig(r),i=n[e].indexOf(t);n[e].splice(i,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(n,r)}static deleteFromAllMapConfig(e,t){let r=this.getAllMapConfig(t);Object.keys(r).forEach((n=>{let i=r[n].indexOf(e);i>-1&&(r[n].splice(i,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:n},{operation:"update",time:Date.now()}))})),this.setAllMapConfig(r,t)}static deleteMapConfig(e,t){let r=this.getAllMapConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllMapConfig(r,t)}static getFromAllMapConfig(e,t){let r=this.getAllMapConfig(t),n=[];for(let t in r)r[t]&&r[t].indexOf(e)>-1&&n.push(t);return n}static getSyncRecord(e){return JSON.parse(this.getItem("syncRecord")||"{}")[e.type+"."+e.catergory+"."+e.name+"."+e.key]||{operation:"",time:0}}static getAllSyncRecord(){return JSON.parse(this.getItem("syncRecord")||"{}")}static flushSyncRecords(){if(0===Object.keys(this.pendingSyncRecords).length)return;let e=JSON.parse(this.getItem("syncRecord")||"{}");Object.assign(e,this.pendingSyncRecords),this.setItem("syncRecord",JSON.stringify(e)),this.pendingSyncRecords={},this.syncRecordTimer=null}static setSyncRecord(e,t){const r=e.type+"."+e.catergory+"."+e.name+"."+e.key;this.pendingSyncRecords[r]=t,null!==this.syncRecordTimer&&clearTimeout(this.syncRecordTimer),this.syncRecordTimer=setTimeout((()=>{this.flushSyncRecords()}),this.DEBOUNCE_DELAY)}static setAllSyncRecord(e){this.setItem("syncRecord",JSON.stringify(e))}}).pendingSyncRecords={},r.syncRecordTimer=null,r.DEBOUNCE_DELAY=1e3,r})(class{static getItem(e){return localStorage.getItem(e)}static setItem(e,t){localStorage.setItem(e,t)}static removeItem(e){localStorage.removeItem(e)}},"browser");class Dm{static saveAllToken(e){return a(this,void 0,void 0,(function*(){if(e)if(s){const{ipcRenderer:t}=window.require("electron");t.invoke("encrypt-data",{token:e})}else{const t=yield this.encryptString(e);localStorage.setItem("encryptedToken",t)}}))}static getAllToken(){return a(this,void 0,void 0,(function*(){if(s){const{ipcRenderer:e}=window.require("electron");return yield e.invoke("decrypt-data")}{let e=localStorage.getItem("encryptedToken")||"";return e?yield this.decryptString(e):null}}))}static setToken(e,t){return a(this,void 0,void 0,(function*(){const r=JSON.parse((yield this.getAllToken())||"{}");r[e]=t,yield this.saveAllToken(JSON.stringify(r))}))}static getToken(e){return a(this,void 0,void 0,(function*(){return JSON.parse((yield this.getAllToken())||"{}")[e]||null}))}static deleteToken(e){return a(this,void 0,void 0,(function*(){const t=JSON.parse((yield this.getAllToken())||"{}");delete t[e],yield this.saveAllToken(JSON.stringify(t))}))}static encryptString(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getFingerprint();const r=yield jm(t),n="undefined"!=typeof crypto&&crypto.subtle?yield function(e,t,r={alg:"HS256",typ:"JWT"}){return a(this,void 0,void 0,(function*(){const n=Bm((new TextEncoder).encode(JSON.stringify(r))),i=Bm((new TextEncoder).encode(JSON.stringify(e))),o=(new TextEncoder).encode(`${n}.${i}`),s=yield crypto.subtle.importKey("raw",(new TextEncoder).encode(t),{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]);return`${n}.${i}.${Bm(yield crypto.subtle.sign("HMAC",s,o))}`}))}(e,r):function(e,t){if(!e||!t)return"";const r=h((new TextEncoder).encode(t)),n=Array.from(new Uint8Array(r)),i=(new TextEncoder).encode(e),o=new Uint8Array(i.length);for(let e=0;e=0&&r<=cy}}function $y(e){return function(t){return null==t?void 0:t[e]}}var Uy=$y("byteLength"),Ly=Fy(Uy),Dy=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var By=Ym?function(e){return ny?ny(e)&&!Ry(e):Ly(e)&&Dy.test(Jm.call(e))}:Ny(!1),zy=$y("length");function jy(e,t){t=function(e){for(var t={},r=e.length,n=0;n":">",'"':""","'":"'","`":"`"},Iv=_v(Pv),Mv=_v(uv(Pv)),Nv=Hy.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Fv=/(.)^/,$v={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Uv=/\\|'|\r|\n|\u2028|\u2029/g;function Lv(e){return"\\"+$v[e]}var Dv=/^\s*(\w|\$)+\s*$/;var Bv=0;function zv(e,t,r,n,i){if(!(n instanceof t))return e.apply(r,i);var o=gv(e.prototype),s=e.apply(o,i);return dy(s)?s:o}var jv=uy((function(e,t){var r=jv.placeholder,n=function(){for(var i=0,o=t.length,s=Array(o),a=0;a1)Hv(a,t-1,r,n),i=n.length;else for(var c=0,u=a.length;c0&&(r=t.apply(this,arguments)),e<=1&&(t=null),r}}var Xv=jv(Jv,2);function Yv(e,t,r){t=Av(t,r);for(var n,i=qy(e),o=0,s=i.length;o0?0:i-1;o>=0&&o0?s=o>=0?o:Math.max(o+a,s):a=o>=0?Math.min(o+1,a):o+a+1;else if(r&&o&&a)return n[o=r(n,i)]===i?o:-1;if(i!=i)return(o=t(Gm.call(n,s,a),My))>=0?o+s:-1;for(o=e>0?s:a-1;o>=0&&o=3;return function(t,r,n,i){var o=!Wv(t)&&qy(t),s=(o||t).length,a=e>0?0:s-1;for(i||(n=t[o?o[a]:a],a+=e);a>=0&&a=0}var mb=uy((function(e,t,r){var n,i;return Ey(t)?i=t:(t=yv(t),n=t.slice(0,-1),t=t[t.length-1]),cb(e,(function(e){var o=i;if(!o){if(n&&n.length&&(e=vv(e,n)),null==e)return;o=e[t]}return null==o?o:o.apply(e,r)}))}));function yb(e,t){return cb(e,Sv(t))}function vb(e,t,r){var n,i,o=-1/0,s=-1/0;if(null==t||"number"==typeof t&&"object"!=typeof e[0]&&null!=e)for(var a=0,c=(e=Wv(e)?e:cv(e)).length;ao&&(o=n);else t=Av(t,r),ab(e,(function(e,r,n){((i=t(e,r,n))>s||i===-1/0&&o===-1/0)&&(o=e,s=i)}));return o}var bb=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function wb(e){return e?Oy(e)?Gm.call(e):py(e)?e.match(bb):Wv(e)?cb(e,wv):cv(e):[]}function kb(e,t,r){if(null==t||r)return Wv(e)||(e=cv(e)),e[Rv(e.length-1)];var n=wb(e),i=zy(n);t=Math.max(Math.min(t,i),0);for(var o=i-1,s=0;s1&&(n=Ev(n,t[1])),t=Jy(e)):(n=Cb,t=Hv(t,!1,!1),e=Object(e));for(var i=0,o=t.length;i1&&(r=t[1])):(t=cb(Hv(t,!1,!1),String),n=function(e,r){return!gb(t,r)}),Rb(e,n,r)}));function _b(e,t,r){return Gm.call(e,0,Math.max(0,e.length-(null==t||r?1:t)))}function Pb(e,t,r){return null==e||e.length<1?null==t||r?void 0:[]:null==t||r?e[0]:_b(e,e.length-t)}function Ib(e,t,r){return Gm.call(e,null==t||r?1:t)}var Mb=uy((function(e,t){return t=Hv(t,!0,!0),hb(e,(function(e){return!gb(t,e)}))})),Nb=uy((function(e,t){return Mb(e,t)}));function Fb(e,t,r,n){hy(t)||(n=r,r=t,t=!1),null!=r&&(r=Av(r,n));for(var i=[],o=[],s=0,a=zy(e);st?(n&&(clearTimeout(n),n=null),a=u,s=e.apply(i,o),n||(i=o=null)):n||!1===r.trailing||(n=setTimeout(c,d)),s};return u.cancel=function(){clearTimeout(n),a=0,n=i=o=null},u},debounce:function(e,t,r){var n,i,o,s,a,c=function(){var u=Ov()-i;t>u?n=setTimeout(c,t-u):(n=null,r||(s=e.apply(a,o)),n||(o=a=null))},u=uy((function(u){return a=this,o=u,i=Ov(),n||(n=setTimeout(c,t),r&&(s=e.apply(a,o))),s}));return u.cancel=function(){clearTimeout(n),n=o=a=null},u},wrap:function(e,t){return jv(t,e)},negate:Gv,compose:function(){var e=arguments,t=e.length-1;return function(){for(var r=t,n=e[t].apply(this,arguments);r--;)n=e[r].call(this,n);return n}},after:function(e,t){return function(){if(--e<1)return t.apply(this,arguments)}},before:Jv,once:Xv,findKey:Yv,findIndex:eb,findLastIndex:tb,sortedIndex:rb,indexOf:ib,lastIndexOf:ob,find:sb,detect:sb,findWhere:function(e,t){return sb(e,kv(t))},each:ab,forEach:ab,map:cb,collect:cb,reduce:db,foldl:db,inject:db,reduceRight:lb,foldr:lb,filter:hb,select:hb,reject:function(e,t,r){return hb(e,Gv(Av(t)),r)},every:fb,all:fb,some:pb,any:pb,contains:gb,includes:gb,include:gb,invoke:mb,pluck:yb,where:function(e,t){return hb(e,kv(t))},max:vb,min:function(e,t,r){var n,i,o=1/0,s=1/0;if(null==t||"number"==typeof t&&"object"!=typeof e[0]&&null!=e)for(var a=0,c=(e=Wv(e)?e:cv(e)).length;an||void 0===r)return 1;if(re.map((e=>e.name)),Wb=e=>e.map((e=>e.author||"")),Hb=e=>e.map((e=>e.key)),Kb=(e,t)=>{let r=[];for(let n=0;n-1&&r.push(t.indexOf(e[n]));return r.length{if(-1===e.indexOf(n))for(let e=0;ee-Math.min(...r))))]};class Vb{static sortBooks(e,t,r){let n=e.map((e=>e.key)),i=(e=>e.getAllListConfig("recentBooks"))(r);if(1===t.sort||0===t.sort)return 1===t.order?Kb(i,n).reverse():Kb(i,n);if(2===t.sort){let r=qb(e),n=qb(e).sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"})));return 1===t.order?Kb(n,r).reverse():Kb(n,r)}if(3===t.sort){let r=[];for(let t=0;t{let t=e.getAllObjectConfig("readingTime");var r=[];for(let e in t)r.push([e,t[e]]);return r.sort((function(e,t){return e[1]-t[1]})),Object.keys(t)})(r),i=Hb(e);return 1===t.order?Kb(jb.union(n,i),i).reverse():Kb(jb.union(n,i),i)}if(5===t.sort){let r=Wb(e),n=Wb(e).sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"})));return 1===t.order?Kb(n,r).reverse():Kb(n,r)}if(6===t.sort){let n=(e=>{let t=e.getAllObjectConfig("recordLocation");var r=[];for(let e in t)r.push([e,t[e].percentage||0]);return r.sort((function(e,t){return e[1]-t[1]})),r.map((e=>e[0]))})(r),i=Hb(e);return 1===t.order?Kb(n,i).reverse():Kb(n,i)}}static sortNotes(e,t,r=[]){if(3===t.sort){let r=jb.clone(e).reverse(),n=jb.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:e.chapterIndex}))));n=1===t.order?jb.sortBy(n,"chapterIndex"):jb.sortBy(n,"chapterIndex").reverse();let i=jb.uniq(n.map((e=>e.chapter))),o={};return i.forEach((e=>{o[e]=[]})),r.forEach((e=>{o[e.chapter].push(e)})),i.map((e=>({group:e,notes:o[e]})))||[]}if(2===t.sort){let r=jb.clone(e).reverse(),n=jb.uniq(e.map((e=>e.date.year+"-"+e.date.month+"-"+e.date.day)));1===t.order?n.sort():n.sort().reverse();let i={};return n.forEach((e=>{i[e]=[]})),r.forEach((e=>{n.forEach((t=>{t===e.date.year+"-"+e.date.month+"-"+e.date.day&&i[t].push(e)}))})),i||{}}if(1===t.sort){let n=jb.clone(e).reverse(),i=jb.uniq(e.map((e=>{let t=jb.findLastIndex(r,{key:e.bookKey});return t>-1?r[t].name:""})));1===t.order?i.sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"}))):i.sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"}))).reverse();let o={};return i.forEach((e=>{o[e]=[]})),n.forEach((e=>{i.forEach((t=>{let n=jb.findLastIndex(r,{key:e.bookKey});n>-1&&t===r[n].name&&o[t].push(e)}))})),o||{}}}static sortBookmarks(e,t){if(3===t.sort){let r=jb.clone(e).reverse(),n=jb.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:parseInt(JSON.parse(e.cfi).chapterDocIndex)}))));n=1===t.order?jb.sortBy(n,"chapterIndex"):jb.sortBy(n,"chapterIndex").reverse();let i=jb.uniq(n.map((e=>e.chapter))),o={};return i.forEach((e=>{o[e]=[]})),r.forEach((e=>{o[e.chapter].push(e)})),i.map((e=>({group:e,bookmarks:o[e]})))||[]}}}class Qb{static getDefaultCss(e){return`::selection{background:#f3a6a68c}::-moz-selection{background:#f3a6a68c}.kookit-note:hover{cursor:pointer;}body,html{margin: 0px !important; padding: 0px !important; font-size: 18px;writing-mode: horizontal-tb !important;}.kookit-text{${this.getCustomCss(e)}}.kookit-title{${this.getCustomCss(e,!0)}}code,pre{white-space: pre-wrap;}p{margin-block: 0;margin-inline: 0;}rt span{font-size: unset !important;}${"yes"===e.getReaderConfig("isOverwriteLink")?"a{color: #0066cc !important; text-decoration: underline !important; cursor: pointer !important;}a:hover{color: #004080 !important;}a:visited{color: #6600cc !important;}":""}${"yes"===e.getReaderConfig("isMergeWord")?`h1{font-size: ${e.getReaderConfig("fontSize")||18}px !important;}`:""}${this.getComicCss(e)}`}static getCustomCss(e,t=!1){return`font-size: ${t?"":e.getReaderConfig("fontSize")?e.getReaderConfig("fontSize"):""}px !important;line-height: ${e.getReaderConfig("lineHeight")||"1.25"} !important;font-family: ${e.getReaderConfig("fontFamily")||""} !important;background-color: transparent;color: ${e.getReaderConfig("textColor")?e.getReaderConfig("textColor"):"rgba(44,47,49,1)"===e.getReaderConfig("backgroundColor")||"night"===e.getReaderConfig("appSkin")||"system"===e.getReaderConfig("appSkin")&&"yes"===e.getReaderConfig("isOSNight")?"white":""};letter-spacing: ${e.getReaderConfig("letterSpacing")||""}px !important;text-align: ${e.getReaderConfig("textAlign")?e.getReaderConfig("textAlign"):""} !important;font-weight: ${"yes"===e.getReaderConfig("isBold")?"bold !important":""};font-style: ${"yes"===e.getReaderConfig("isItalic")?"italic !important":""};text-shadow: ${"yes"===e.getReaderConfig("isShadow")?"2px 2px 2px #cccccc !important":""};text-indent: ${"yes"!==e.getReaderConfig("isIndent")||t?"yes"===e.getReaderConfig("isIndent")&&t?"0em !important":"":"2em !important"};text-decoration: ${"yes"===e.getReaderConfig("isUnderline")?"underline !important":""};padding-bottom: ${e.getReaderConfig("paraSpacing")||0}px !important;word-wrap: break-word !important; writing-mode: horizontal-tb !important; max-width: 100% !important;overflow: visible !important; margin-top: 0 !important; margin-bottom: 0 !important;`}static getComicCss(e){return`div.fs{height:unset !important;width:100% !important;min-height:100% !important;position:relative;text-align:left;vertical-align:middle;}div.fs div{height:unset !important;min-height:100% !important;width:100% !important;margin:auto;text-align:center;vertical-align:middle;}.div_view{height:unset !important;width:100% !important;min-height:100% !important;margin:auto;text-align:center;vertical-align:middle;}.singlePage{${"scroll"!==e.getReaderConfig("readerMode")?"":"max-width: 100% !important;"}${"scroll"!==e.getReaderConfig("readerMode")?"":"max-height: unset !important;"}height:${"scroll"!==e.getReaderConfig("readerMode")?"100%":"unset"}!important;width:100%!important;position: unset !important;}`}}class Gb{static mergeArray(e,t){var r=[];for(let t of e)r.push(t);for(let i of t){var n=!0;for(let t of e)if(i===t){n=!1;break}n&&r.push(i)}return r}static fuzzyQuery(e,t){for(var r=[],n=0;n-1&&r.push(n);return r}static mouseSearch(e){let t=document.querySelector(".header-search-box").value.toLowerCase(),r=[],n=[];if(!e)return[];e.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,t),o=this.fuzzyQuery(n,t);return this.mergeArray(i,o)}static keywordSearch(e,t){let r=[],n=[];if(!t)return[];t.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,e),o=this.fuzzyQuery(n,e);return this.mergeArray(i,o)}static keySearch(e,t){if(e&&13===e.keyCode){let r=[],n=[];if(!t)return[];t.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,e.target.value.toLowerCase()),o=this.fuzzyQuery(n,e.target.value.toLowerCase());return this.mergeArray(i,o)}}static mouseNoteSearch(e){let t=document.querySelector(".header-search-box").value.toLowerCase(),r=[],n=[];e.forEach((e=>{r.push(e.notes.toLowerCase()),n.push(e.text.toLowerCase())}));let i=this.fuzzyQuery(r,t),o=this.fuzzyQuery(n,t);return this.mergeArray(i,o)}static keyNoteSearch(e,t){if(e&&13===e.keyCode){let r=[],n=[];t.forEach((e=>{r.push(e.notes.toLowerCase()),n.push(e.text.toLowerCase())}));let i=this.fuzzyQuery(r,e.target.value.toLowerCase()),o=this.fuzzyQuery(n,e.target.value.toLowerCase());return this.mergeArray(i,o)}}}export{Om as BookHelper,g as CommonTool,Lm as ConfigService,b as KookitConfig,$m as LoginHelper,Mm as ReaderRequest,Gb as SearchUtil,Vb as SortUtil,Cm as SqlStatement,Qb as StyleHelper,Um as SyncHelper,bm as SyncUtil,Nm as ThirdpartyRequest,Dm as TokenService,Fm as UserRequest}; +import e from"axios";import{Storage as t}from"megajs";import{Buffer as r}from"buffer";import{createClient as n,AuthType as i}from"webdav/dist/web/index.js";import{SSE as o}from"sse.js";import{isElectron as s}from"react-device-detect";function a(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}const c=e=>"json"===e?"application/json":["jpg","jpeg","png","gif","bmp"].includes(e)?"image/"+e:"zip"===e?"application/zip":"epub"===e?"application/epub+zip":"txt"===e?"text/plain":"pdf"===e?"application/pdf":"mobi"===e?"application/x-mobipocket-ebook":"azw3"===e||"azw"===e?"application/vnd.amazon.ebook":"cbz"===e?"application/x-cbz":"cbr"===e?"application/x-cbr":"cbt"===e?"application/x-cbt":"cb7"===e?"application/x-cb7":"fb2"===e?"application/x-fictionbook+xml":"html"===e?"text/html":"css"===e?"text/css":"js"===e?"application/javascript":"xml"===e?"application/xml":"xhtml"===e?"application/xhtml+xml":"opf"===e?"application/oebps-package+xml":"ncx"===e?"application/x-dtbncx+xml":"mp3"===e?"audio/mpeg":"wav"===e?"audio/wav":"ogg"===e?"audio/ogg":"mp4"===e?"video/mp4":"webm"===e?"video/webm":"avi"===e?"video/x-msvideo":"wmv"===e?"video/x-ms-wmv":"flv"===e?"video/x-flv":"m3u8"===e?"application/x-mpegURL":"ts"===e?"video/MP2T":"3gp"===e?"video/3gpp":"3g2"===e?"video/3gpp2":"db"===e?"application/x-sqlite3":void 0,u=["books","notes","bookmarks","plugins","words"],d=e=>{const t=atob(e),r=t.length,n=new Uint8Array(r);for(let e=0;e{let t="";const r=new Uint8Array(e),n=r.byteLength;for(let e=0;ee>>>t|e<<32-t,n=(e,t,r)=>e&t^~e&r,i=(e,t,r)=>e&t^e&r^t&r,o=e=>r(e,2)^r(e,13)^r(e,22),s=e=>r(e,6)^r(e,11)^r(e,25),a=e=>r(e,7)^r(e,18)^e>>>3,c=e=>r(e,17)^r(e,19)^e>>>10,u=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],d=8*e.length,l=(960-(8*e.length+1)%512)%512,h=e.length+Math.ceil((l+1)/8)+8,f=new Uint8Array(h);f.set(e),f[e.length]=128;new DataView(f.buffer,f.byteLength-8).setBigUint64(0,BigInt(d),!1);for(let e=0;e>>0;let[l,h,p,g,m,y,v,b]=u;for(let e=0;e<64;e++){const r=b+s(m)+n(m,y,v)+t[e]+d[e]>>>0,a=o(l)+i(l,h,p)>>>0;b=v,v=y,y=m,m=g+r>>>0,g=p,p=h,h=l,l=r+a>>>0}u[0]=u[0]+l>>>0,u[1]=u[1]+h>>>0,u[2]=u[2]+p>>>0,u[3]=u[3]+g>>>0,u[4]=u[4]+m>>>0,u[5]=u[5]+y>>>0,u[6]=u[6]+v>>>0,u[7]=u[7]+b>>>0}const p=new ArrayBuffer(32),g=new DataView(p);return u.forEach(((e,t)=>{g.setUint32(4*t,e,!1)})),p}const f={_chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",encode(e){if("string"!=typeof e)throw new Error("Input must be a string");let t="",r=0;const n=this._stringToUtf8Bytes(e),i=n.length;for(;r>2,c=(3&e)<<4|o>>4,u=(15&o)<<2|s>>6,d=63&s;t+=this._chars.charAt(a),t+=this._chars.charAt(c),t+=r-2>=i?"=":this._chars.charAt(u),t+=r-1>=i?"=":this._chars.charAt(d)}return t},decode(e){if("string"!=typeof e)throw new Error("Input must be a string");for(e=e.replace(/[^A-Za-z0-9+/]/g,"");e.length%4!=0;)e+="=";const t=[];let r=0;const n=e.length;for(;r>4,c=(15&i)<<4|o>>2,u=(3&o)<<6|s;t.push(a),-1!==o&&t.push(c),-1!==s&&t.push(u)}return this._utf8BytesToString(t)},_stringToUtf8Bytes(e){const t=[];for(let r=0;r>6),t.push(128|63&n);else if(55296==(64512&n)&&r+1>18),t.push(128|e>>12&63),t.push(128|e>>6&63),t.push(128|63&e)}else t.push(239,191,189),r--}else t.push(224|n>>12),t.push(128|n>>6&63),t.push(128|63&n)}return t},_utf8BytesToString(e){let t="",r=0;for(;r65535){const r=e-65536;t+=String.fromCharCode(55296|r>>10),t+=String.fromCharCode(56320|1023&r)}else t+=String.fromCharCode(e)}else t+="�"}else t+="�"}return t},encodeURL(e){return this.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")},decodeURL(e){for(e=e.replace(/-/g,"+").replace(/_/g,"/");e.length%4;)e+="=";return this.decode(e)}};class p{constructor(e){this.queue=[],this.runningTasks=0,this.totalTasks=0,this.completedTasks=0,this.hasFailedTasks=!1,this.downloadedSize=0,this.maxConcurrency=e}addTask(e){return a(this,void 0,void 0,(function*(){return this.totalTasks++,new Promise(((t,r)=>{if(this.hasFailedTasks)return void r(new Error("Task queue has failed tasks. No new tasks can be added."));const n=()=>a(this,void 0,void 0,(function*(){try{this.runningTasks++;const r=yield e();return this.completedTasks++,t(r),r}catch(e){throw this.completedTasks++,r(e),e}finally{this.runningTasks--,this.runNext()}}));this.runningTasks0&&this.runningTasks"application/json"===e?"json":e.startsWith("image/")?e.split("/")[1]:"application/zip"===e?"zip":"application/epub+zip"===e?"epub":"text/plain"===e?"txt":"application/pdf"===e?"pdf":"application/x-mobipocket-ebook"===e?"mobi":"application/vnd.amazon.ebook"===e?"azw3":"application/x-cbz"===e?"cbz":"application/x-cbr"===e?"cbr":"application/x-cbt"===e?"cbt":"application/x-cb7"===e?"cb7":"application/x-fictionbook+xml"===e?"fb2":"text/html"===e?"html":"text/css"===e?"css":"application/javascript"===e?"js":"application/xml"===e?"xml":"application/xhtml+xml"===e?"xhtml":"application/oebps-package+xml"===e?"opf":"application/x-dtbncx+xml"===e?"ncx":"audio/mpeg"===e?"mp3":"audio/wav"===e?"wav":"audio/ogg"===e?"ogg":"video/mp4"===e?"mp4":"video/webm"===e?"webm":"video/x-msvideo"===e?"avi":"video/x-ms-wmv"===e?"wmv":"video/x-flv"===e?"flv":"application/x-mpegURL"===e?"m3u8":"video/MP2T"===e?"ts":"video/3gpp"===e?"3gp":"video/3gpp2"===e?"3g2":"application/x-sqlite3"===e?"db":"",databaseList:u,configList:["themeColors","readingTime","cloudSyncTime","lastSyncTime","recentBooks","recentAdd","deletedBooks","favoriteBooks","shelfList","txtParsers","noteTags","recordLocation","sortedShelfList","kindleDeviceList"],copyArrayBuffer:e=>{var t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(new Uint8Array(e)),t},base64ToArrayBuffer:d,arrayBufferToBase64:l,generateSHA256Hash:function(e){return a(this,void 0,void 0,(function*(){const t=(new TextEncoder).encode(e),r="undefined"!=typeof crypto&&crypto.subtle?yield crypto.subtle.digest("SHA-256",t):h(t),n=Array.from(new Uint8Array(r)).map((e=>e.toString(16).padStart(2,"0"))).join("");return n}))},EmailProviders:["gmail.com","qq.com","163.com","yahoo.com","sina.com","sina.cn","126.com","outlook.com","yeah.net","foxmail.com","hotmail.com","protonmail.com","proton.me","icloud.com","mail.com","live.com","aliyun.com","sohu.com","yandex.com","naver.com","mail.ru","yahoo.co.jp","139.com","189.com"],Base64:f};const m={cloudUrl:"https://cloud.koodoreader.com",cloudCNUrl:"https://cloud.koodoreader.cn",testUrl:"https://cloudtest.960960.xyz",devUrl:"http://192.168.28.159:8000"},y={callbackUrl:"https://web.koodoreader.com/",cnCallbackUrl:"https://web.koodoreader.cn/",dropboxClientId:"vnc67byrssocvy1",yandexClientId:"e5305b62f53844b1994f77a840fd0a37",pcloudClientId:"pg8ten0B3vH",boxClientId:"ltimecqanmpxoaicn9qw3es6l3sdl1ya",duboxClientId:"kc0Ls6xLZugGgLLVhZ8yhUU1cRkRoKNU",yiyiwuClientId:"100197197",microsoftClientId:"506df58a-29ab-4020-afc5-6f423dc80f35",googleClientId:"1051055003225-ph1f5fvh328dhv7bco5jitlnfhg6ks2t.apps.googleusercontent.com",appleClientId:"com.koodoreader.auth",facebookClientId:"2845583825559500",githubClientId:"Ov23liJVzfvJMMEEZ8v2",adriveClientId:"a128ae7b9c094545af623de61dc0a1ef"},v={google:{clientId:y.googleClientId,scopes:["openid email profile"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"openid email profile"}},microsoft:{clientId:y.microsoftClientId,scopes:["openid","profile","User.Read","offline_access"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"openid profile User.Read offline_access"}},facebook:{clientId:y.facebookClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:""}},github:{clientId:y.githubClientId,scopes:["user:email"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"user:email"}},apple:{clientId:y.appleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{}},email:{clientId:"",scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:""}}};var b={CloudConfig:m,ThirdpartyConfig:y,LoginAuthRequest:v,LoginDiscovery:{microsoft:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"},facebook:{authorizationEndpoint:"https://www.facebook.com/v12.0/dialog/oauth",tokenEndpoint:"https://graph.facebook.com/v12.0/oauth/access_token"},github:{authorizationEndpoint:"https://github.com/login/oauth/authorize",tokenEndpoint:"https://github.com/login/oauth/access_token"},apple:{authorizationEndpoint:"https://appleid.apple.com/auth/authorize",tokenEndpoint:"https://appleid.apple.com/auth/token"},email:{authorizationEndpoint:"",tokenEndpoint:""}},DriveAuthRequest:{dropbox:{clientId:y.dropboxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{token_access_type:"offline"}},yandex:{clientId:y.yandexClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code",force_confirm:"true"}},boxnet:{clientId:y.boxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}},pcloud:{clientId:y.pcloudClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code"}},dubox:{clientId:y.duboxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code",scope:"basic,netdisk",device_id:"119827642",qrcode:"1"}},yiyiwu:{clientId:y.yiyiwuClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code"}},adrive:{clientId:y.adriveClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}},microsoft:{clientId:y.microsoftClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"files.readwrite.appfolder offline_access"}},google:{clientId:y.googleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"https://www.googleapis.com/auth/drive.file",access_type:"offline"}},microsoft_exp:{clientId:y.microsoftClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"files.readwrite.all offline_access"}},google_exp:{clientId:y.googleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"https://www.googleapis.com/auth/drive",access_type:"offline"}}},DriveDiscovery:{dropbox:{authorizationEndpoint:"https://www.dropbox.com/oauth2/authorize",tokenEndpoint:"https://www.dropbox.com/oauth2/token"},yandex:{authorizationEndpoint:"https://oauth.yandex.com/authorize",tokenEndpoint:"https://oauth.yandex.com/token"},boxnet:{authorizationEndpoint:"https://account.box.com/api/oauth2/authorize",tokenEndpoint:"https://api.box.com/oauth2/token"},pcloud:{authorizationEndpoint:"https://my.pcloud.com/oauth2/authorize",tokenEndpoint:"https://api.pcloud.com/oauth2_token"},dubox:{authorizationEndpoint:"https://openapi.baidu.com/oauth/2.0/authorize",tokenEndpoint:"https://openapi.baidu.com/oauth/2.0/token"},yiyiwu:{authorizationEndpoint:"https://passportapi.115.com/open/authorize",tokenEndpoint:"https://passportapi.115.com/open/authorize"},adrive:{authorizationEndpoint:"https://openapi.alipan.com/oauth/authorize",tokenEndpoint:"https://openapi.alipan.com/oauth/token"},microsoft:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"},microsoft_exp:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google_exp:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"}}};class w{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.driveId="",this.refreshTokenPromise=null,this.taskQueue=new p(1),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getDriveId(){return a(this,void 0,void 0,(function*(){if(this.driveId)return this.driveId;const t=yield this.refreshToken(),r=yield e.post("https://openapi.alipan.com/adrive/v1.0/user/getDriveInfo",{},{headers:{Authorization:`Bearer ${t}`}});return this.driveId=r.data.default_drive_id,this.driveId}))}getFolderIdByPath(t){return a(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),n=yield this.getDriveId();try{try{const i=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(i.data)return i.data.file_id}catch(i){const o=t.split("/").filter((e=>e));let s="",a="root";for(const t of o){s+="/"+t;try{a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:s},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}catch(i){a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:n,parent_file_id:a,name:t,type:"folder",check_name_mode:"refuse"},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}}return a}}catch(e){return console.error("Error getting/creating folder by path:",e),""}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield this.getDriveId(),i=yield this.getFolderIdByPath(this.baseFolder+"/"+t);let o=[],s="",a=!0;for(;a;){const t=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/list",{drive_id:n,parent_file_id:i,marker:s||void 0},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),c=t.data.items||[];o=o.concat(c),s=t.data.next_marker,a=!!s&&100===c.length}return[...new Set(o.map((e=>({name:e.name,size:e.size,type:e.type,modified:e.updated_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield this.getDriveId(),i=yield this.getFolderIdByPath(this.baseFolder+"/"+t);return!i||(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/delete",{drive_id:n,file_id:i},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}checkExists(t){var r;return a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=yield this.getDriveId(),o=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:t},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}});(null===(r=o.data)||void 0===r?void 0:r.file_id)&&(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/recyclebin/trash",{drive_id:i,file_id:o.data.file_id},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}}))}catch(e){}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"adrive",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("adrive_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"adrive",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://openapi.alipan.com/oauth/authorize?${new URLSearchParams({response_type:"code",client_id:y.adriveClientId,redirect_uri:e,grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}).toString()}`}}class k extends w{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return new Promise(((n,i)=>a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=yield this.getDriveId(),s=r.substring(0,r.lastIndexOf("/")),a=r.substring(r.lastIndexOf("/")+1),c=yield this.getFolderIdByPath(this.baseFolder+"/"+s),u=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:o,parent_file_id:c,name:a,type:"file",check_name_mode:"ignore"},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}),{file_id:d,upload_id:l,part_info_list:h}=u.data;yield e.put(h[0].upload_url,t,{headers:{"Content-Type":"application/octet-stream"}}),yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/complete",{drive_id:o,file_id:d,upload_id:l},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}),n(!0)}catch(e){console.error("Error uploading file:",e),n(!1)}}))))}))}downloadFile(t){return new Promise(((r,n)=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const n=yield this.refreshToken(),i=yield this.getDriveId(),o=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:this.baseFolder+"/"+t},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}})).data.file_id,s=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/getDownloadUrl",{drive_id:i,file_id:o},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}}),a=yield e.get(s.data.url,{responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});r(a.data)}catch(e){console.error("Error downloading file:",e),r(!1)}}))))}}class S{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getFolderIdByPath(t){return a(this,void 0,void 0,(function*(){if(""==t)return"0";const r=yield this.refreshToken(),n=t.split("/");let i="0";for(const t of n){const n=`https://api.box.com/2.0/folders/${i}/items?fields=id,name&type=folder&limit=1000`;try{const o=(yield e.get(n,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===t&&"folder"===e.type));if(o)i=o.id;else{const n={name:t,parent:{id:i},type:"folder"};i=(yield e.post("https://api.box.com/2.0/folders",n,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}}catch(e){return console.error("Error occurred during folder creation:",e),""}}return i}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;for(;n.startsWith("/");)n=n.substring(1);let i=yield this.getFolderIdByPath(n),o=[],s=0,a=!0;const c=1e3;for(;a;){const t=yield e.get(`https://api.box.com/2.0/folders/${i}/items`,{params:{limit:c,offset:s},headers:{Authorization:`Bearer ${r}`}}),n=t.data.entries||[];o=o.concat(n),s+=n.length,a=n.length===c&&t.data.total_count>s}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:e.type,modified:e.content_modified_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=t.substring(0,t.lastIndexOf("/")),i=t.substring(t.lastIndexOf("/")+1);let o=this.baseFolder+"/"+n;for(;o.startsWith("/");)o=o.substring(1);const s=yield this.getFolderIdByPath(o);if(!s)return!0;const a=`https://api.box.com/2.0/folders/${s}/items?fields=id,name&type=file&limit=1000`,c=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===i&&"file"===e.type));return!c||(yield e.delete(`https://api.box.com/2.0/files/${c.id}`,{headers:{Authorization:`Bearer ${r}`}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"boxnet",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("boxnet_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"boxnet",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://account.box.com/api/oauth2/authorize?${new URLSearchParams({response_type:"code",client_id:y.boxClientId,redirect_uri:e,grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}).toString()}`}}class E extends S{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=r.substring(0,r.lastIndexOf("/")),o=r.substring(r.lastIndexOf("/")+1);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);const a=yield this.getFolderIdByPath(s);if(!a)throw new Error("Folder not found");const c=(yield this.listFiles(i)).find((e=>e===o));c&&(yield this.deleteFileWithoutQueue(i+"/"+o));let u=new File([t],o,{lastModified:(new Date).getTime(),type:t.type});const d=new FormData;d.append("file",u),d.append("parent_id",a);const l=yield e.post("https://upload.box.com/api/2.0/files/content",d,{headers:{Authorization:`Bearer ${n}`,"Content-Type":"multipart/form-data"},params:{if_match:"false",fields:"name,id"},maxContentLength:1/0,maxBodyLength:1/0});return!(l.status>=300)||(console.error("Error occurred during file upload:",l),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=t.substring(0,t.lastIndexOf("/")),i=t.substring(t.lastIndexOf("/")+1);let o=this.baseFolder+"/"+n;for(;o.startsWith("/");)o=o.substring(1);const s=yield this.getFolderIdByPath(o);if(!s)return console.error("Folder not found"),!0;const a=`https://api.box.com/2.0/folders/${s}/items?fields=id,name&type=file&limit=1000`,c=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===i&&"file"===e.type));if(!c)return console.error("File not found:",i),!0;const u=yield e({url:`https://api.box.com/2.0/files/${c.id}/content`,method:"get",headers:{Authorization:`Bearer ${r}`},responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return u.status>=300?(console.error("Error occurred during file download:",u),!1):u.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class x{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3)}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=[],i=!0,o=null;for(;i;){let s;s=o?yield e.post("https://api.dropboxapi.com/2/files/list_folder/continue",{cursor:o},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}):yield e.post("https://api.dropboxapi.com/2/files/list_folder",{path:"/"+t,limit:2e3},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});const a=s.data.entries||[];n=n.concat(a),i=s.data.has_more,o=s.data.cursor}return[...new Set(n.map((e=>({name:e.name,size:e.size||0,type:e[".tag"],modified:e.client_modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();yield e.post("https://api.dropboxapi.com/2/files/delete_v2",{path:"/"+t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dropbox",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dropbox",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://www.dropbox.com/oauth2/authorize?response_type=code&token_access_type=offline&client_id=${y.dropboxClientId}&redirect_uri=${e}`}}class T extends x{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type});const s=yield e.post("https://content.dropboxapi.com/2/files/upload",o,{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/octet-stream","Dropbox-API-Arg":JSON.stringify({path:"/"+r,mode:"overwrite",autorename:!0,mute:!1})},maxContentLength:1/0,maxBodyLength:1/0});return!(s.status>=300)||(console.error("Error occurred during file upload:",s),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=yield e({url:"https://content.dropboxapi.com/2/files/download",method:"post",headers:{Authorization:`Bearer ${r}`,"Dropbox-API-Arg":JSON.stringify({path:"/"+t})},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return n.status>=300?(console.error("Error occurred during file download:",n),!1):n.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class A{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){var r,n;return a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let o=[],s=0;const a=1e3;let c=!0;for(;c;){const u=yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${i}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",limit:a,offset:s,fields:"_embedded.items.name,_embedded.items.size,_embedded.items.type,_embedded.items.modified,_embedded.total"}}),d=(null===(r=u.data._embedded)||void 0===r?void 0:r.items)||[];o=o.concat(d);const l=(null===(n=u.data._embedded)||void 0===n?void 0:n.total)||0;s+=d.length,c=s({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=yield e.delete("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",permanently:!1}});return 202===n.status||204===n.status}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(t){var r,n;return a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=t.split("/").filter((e=>e.length>0));let s="";for(const t of o){s+="/"+t;try{yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${i}`,"Content-Type":"application/json"},params:{path:s}})}catch(t){if(404!==(null===(r=t.response)||void 0===r?void 0:r.status))return console.error("Error checking directory:",t),!1;try{yield e.put(`https://cloud-api.yandex.net/v1/disk/resources?path=${encodeURIComponent(s)}`,null,{headers:{Authorization:`OAuth ${i}`}})}catch(e){if(409!==(null===(n=e.response)||void 0===n?void 0:n.status))return console.error("Error creating directory:",e),!1}}}return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yandex",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yandex",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://oauth.yandex.com/authorize?response_type=code&client_id=${y.yandexClientId}&redirect_uri=${e}&force_confirm=true`}}class C extends A{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=this.baseFolder+"/"+r;for(;i.startsWith("/");)i=i.substring(1);const o=i.substring(0,i.lastIndexOf("/"));if(o){if(!(yield this.ensureDirectoryExists(o)))return console.error("Failed to create directory:",o),!1}const s=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/upload",{headers:{Authorization:`OAuth ${n}`,"Content-Type":"application/json"},params:{path:`/${i}`,overwrite:!0}});if(200!==s.status)return console.error("Error getting upload URL:",s),!1;const a=s.data.href;let c=r.split("/").pop()||"",u=new File([t],c,{lastModified:(new Date).getTime(),type:t.type});const d=yield e.put(a,u,{headers:{"Content-Type":t.type||"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0});return!(d.status>=300)||(console.error("Error occurred during file upload:",d),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;for(;n.startsWith("/");)n=n.substring(1);const i=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/download",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:`/${n}`}});if(200!==i.status)return console.error("Error getting download URL:",i),!1;const o=i.data.href,s=yield e({url:o,method:"get",maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return s.status>=300?(console.error("Error occurred during file download:",s),!1):s.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class R{constructor(e,t){this.isExp=!1,this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),this.isExp=this.config.isExp||!1,void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getFileId(t,r){return a(this,void 0,void 0,(function*(){const n=yield this.refreshToken(),i=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=yield e.get(i,{headers:{Authorization:"Bearer "+n}});if(0===t.data.files.length)return"";const r=t.data.files;return r.length>0?r[0].id:null}catch(e){return console.error("Error occurred during file list retrieval:",e),""}}))}checkFolder(t){return a(this,void 0,void 0,(function*(){t=this.baseFolder+"/"+t;const r=yield this.refreshToken();if(""===t)return"root";const n=t.split("/").filter((e=>""!==e.trim()));let i="root";for(const t of n){let n=yield this.getFolderId(t,i);if(!n){const o={name:t,mimeType:"application/vnd.google-apps.folder",parents:[i]};try{n=(yield e.post("https://www.googleapis.com/drive/v3/files",o,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}catch(e){throw console.error(`Error occurred during folder creation for ${t}:`,e),e}}i=n}return i}))}getFolderId(t,r){return a(this,void 0,void 0,(function*(){const n=yield this.refreshToken(),i=`https://www.googleapis.com/drive/v3/files?q=name='${t=encodeURIComponent(t)}'+and+mimeType='application/vnd.google-apps.folder'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=(yield e.get(i,{headers:{Authorization:`Bearer ${n}`}})).data.files;return t.length>0?t[0].id:null}catch(e){throw console.error("Error occurred during fetching folder ID:",e),e}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=yield this.checkFolder(t),i=[],o="",s=!0;for(;s;){let t=`https://www.googleapis.com/drive/v3/files?q='${n}'+in+parents&fields=nextPageToken,files(id,name,size,mimeType)&pageSize=1000`;o&&(t+=`&pageToken=${o}`);const a=yield e.get(t,{headers:{Authorization:`Bearer ${r}`}}),c=a.data.files||[];i=i.concat(c),o=a.data.nextPageToken,s=!!o}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:"application/vnd.google-apps.folder"===e.mimeType?"folder":"file",modified:e.modifiedTime}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQue(e)}))))))}))}deleteFileWithoutQue(t){return a(this,void 0,void 0,(function*(){const r=t.split("/")[1],n=yield this.checkFolder(t),i=yield this.refreshToken(),o=yield this.getFileId(r,n);if(""===o)return console.error("File not found:",r),!0;try{const t=yield e.delete(`https://www.googleapis.com/drive/v3/files/${o}`,{headers:{Authorization:`Bearer ${i}`}});return console.error("File deleted:",t),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"google",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"google",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${e}&prompt=consent&response_type=code&client_id=${y.googleClientId}&scope=https://www.googleapis.com/auth/${this.isExp?"drive":"drive.file"}&access_type=offline`}}class O extends R{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type}),s=r.split(".").pop(),a=c(s||""),u=r.split("/")[0],d=yield this.checkFolder(u),l=yield this.getFileId(i||"",d);const h={mimeType:a,name:i,parents:[d]},f=l?`https://www.googleapis.com/upload/drive/v3/files/${l}?uploadType=resumable`:"https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable",p=(yield e({method:l?"PATCH":"POST",url:f,data:l?null:JSON.stringify(h),headers:{Authorization:"Bearer "+n,"Content-Type":"application/json; charset=UTF-8"},maxContentLength:1/0,maxBodyLength:1/0})).headers.location,g=yield this.getData(o);if(0===Object.keys(g).length)return!1;const m=yield e.put(p,g.data,{headers:{Authorization:"Bearer "+n,"Content-Type":"application/zip","Content-Range":`bytes 0-${g.fileSize-1}/${g.fileSize}`},maxContentLength:1/0,maxBodyLength:1/0});return!(m.status>=300)||(console.error("Error occurred during file download:",m),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();let n=t.split("/").pop(),i=t.split("/")[0],o=yield this.checkFolder(i),s=yield this.getFileId(n||"",o);if(!s)return console.error("File not found:",n),!0;const a=`https://www.googleapis.com/drive/v3/files/${s}?alt=media`,c=yield e.get(a,{headers:{Authorization:"Bearer "+r},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return c.status>=300?(console.error("Error occurred during file download:",c),!1):c.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getData(e){return a(this,void 0,void 0,(function*(){return e?new Promise(((t,r)=>{const n=new FileReader;n.onload=r=>t({fileName:e.name,mimeType:e.type,fileSize:e.size,data:r.target.result}),n.onerror=e=>r(e),n.readAsArrayBuffer(e)})):{}}))}}class _{constructor(e){this.folderCreationLocks=new Map,this.config=e,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=2){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getStorage(){return a(this,void 0,void 0,(function*(){if(this.storage)return this.storage;let{email:e,password:r}=this.config;return this.storage=yield new t({email:e,password:r,userAgent:"KoodoReader/1.0"}).ready,this.storage}))}getRoot(){return a(this,void 0,void 0,(function*(){if(this.root)return this.root;const e=(yield this.getStorage()).root;if(""===this.baseFolder)return this.root=e,this.root;let t=e.children.find((e=>e.name===this.baseFolder&&e.directory));return t||(t=yield e.mkdir(this.baseFolder)),this.root=t,this.root}))}createFolder(e,t){return a(this,void 0,void 0,(function*(){const r=`${e.nodeId}_${t}`;if(this.folderCreationLocks.has(r))return yield this.folderCreationLocks.get(r);const n=(()=>a(this,void 0,void 0,(function*(){try{let r=e.children.find((e=>e.name===t&&e.directory));return r||(r=yield e.mkdir(t),r)}finally{this.folderCreationLocks.delete(r)}})))();return this.folderCreationLocks.set(r,n),yield n}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();if(e){const r=e.split("/").filter((e=>e));for(const e of r){const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return[];t=r}}const r=t.children.map((e=>({name:e.name,size:e.size||0,type:e.directory?"folder":"file",modified:e.timestamp?new Date(1e3*e.timestamp).toISOString():""})));return r}catch(e){return console.error("Error listing MEGA files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();const r=e.split("/"),n=r.pop();for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const i=t.children.find((e=>e.name===n&&!e.directory));return!i||(yield i.delete(),!0)}catch(e){return console.error("Error deleting MEGA file:",e),!1}}))}}class P extends _{constructor(e){super(e)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{let n=yield this.getRoot();const i=t.split("/"),o=i.pop()||"";for(const e of i){if(!e)continue;let t=n.children.find((t=>t.name===e&&t.directory));t||(t=yield this.createFolder(n,e)),n=t}const s=new File([e],o,{lastModified:(new Date).getTime(),type:e.type}),a=yield e.arrayBuffer(),c=new Uint8Array(a),u=r.from(c),d=n.children.find((e=>e.name===o&&!e.directory));return d&&(yield d.delete()),yield n.upload({name:o,size:s.size},u).complete,!0}catch(e){return console.error("Error occurred during MEGA file upload:",e),!1}}))))))}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let t=yield this.getRoot();const r=e.split("/"),n=r.pop()||"";for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const i=t.children.find((e=>e.name===n&&!e.directory));if(!i)return!0;const o=yield i.downloadBuffer();return this.taskQueue.setDownloadedSize(o.size),o.buffer}catch(e){return console.error("Error occurred during MEGA file download:",e),!1}}))))))}))}}class I{constructor(e,t){this.isExp=!1,this.baseUrl="https://graph.microsoft.com/v1.0/me/drive/special/approot",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),this.isExp=this.config.isExp||!1,this.baseUrl=this.isExp?"https://graph.microsoft.com/v1.0/me/drive/root":"https://graph.microsoft.com/v1.0/me/drive/special/approot",void 0===this.config.baseFolder?this.baseFolder=this.isExp?"KoodoReader":"":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let n,i=[];if(""===t)n=`${this.baseUrl}/children`;else{const e=encodeURIComponent(t);n=`${this.baseUrl}:/${e}:/children`}for(;n;){const t=yield e.get(n,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(t.status>=300)break;const o=t.data.value||[];i=i.concat(o),n=t.data["@odata.nextLink"]||""}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:e.folder?"folder":"file",modified:e.lastModifiedDateTime}))))]}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=yield e.delete(`${this.baseUrl}:/${t}`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!(n.status>=300)||(console.error("Error deleting file:",n),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"microsoft",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"microsoft",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${y.microsoftClientId}&scope=${this.isExp?"files.readwrite.all":"files.readwrite.appfolder"} offline_access&response_type=code&redirect_uri=${e}`}}class M extends I{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type}),s=this.baseFolder+"/"+r;for(;s.startsWith("/");)s=s.substring(1);const a=this.baseUrl+":/"+s+":/createUploadSession",c=yield e.post(a,null,{headers:{Authorization:"Bearer "+n,"Content-Type":"application/json"},maxContentLength:1/0,maxBodyLength:1/0});let u=o.size;const d=o.type,l=c.data.uploadUrl,h=yield e.put(l,o,{headers:{"Content-Type":d,"Content-Range":`bytes 0-${u-1}/${u}`},maxContentLength:1/0,maxBodyLength:1/0});return!(h.status>=300)||(console.error("Error occurred during file download:",h),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;for(;n.startsWith("/");)n=n.substring(1);const i=`${this.baseUrl}:/${n}:/content`,o=yield e.get(i,{responseType:"arraybuffer",headers:{Authorization:"Bearer "+r},maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error occurred during file download:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class N{downloadFile(e,t){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e([])}))}))}authToken(e){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e("")}))}))}getAuthUrl(){return""}}class F{constructor(e,t){this.baseUrl="https://api.pcloud.com",this.config=e,this.thirdpartyRequest=t,this.taskQueue=new p(3),this.baseUrl="2"===e.region?"https://eapi.pcloud.com":"https://api.pcloud.com"}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}checkFolderExists(t,r){return a(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error checking folder:",e),!1}}))}createFolder(t,r){return a(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/createfolderifnotexists`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error creating folder:",e),!1}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:"/"+t,recursive:0}});return 0!==n.data.result?[]:n.data.metadata.contents.map((e=>({name:e.name,size:e.size||0,type:e.isfolder?"folder":"file",modified:e.modified})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/deletefile`,{params:{access_token:r,path:"/"+t}});return 0===n.data.result||(console.error("Error deleting file:",n.data),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.refresh_token}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"pcloud",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://my.pcloud.com/oauth2/authorize?client_id=${y.pcloudClientId}&response_type=code&redirect_uri=${e}`}}class $ extends F{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=r.split("/").slice(0,-1).join("/");if(!(yield this.checkFolderExists(i,n))){if(!(yield this.createFolder(i,n)))return!1}let o=r.split("/").pop()||"",s=new File([t],o,{lastModified:(new Date).getTime(),type:t.type});const a=new FormData;a.append("file",s);const c=yield e.post(`${this.baseUrl}/uploadfile`,a,{params:{access_token:n,path:`/${i}`,renew:1},maxContentLength:1/0,maxBodyLength:1/0});return 0===c.data.result||(console.error("Error uploading file:",c.data),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/getfilelink`,{params:{access_token:r,path:`/${t}`}});if(0!==n.data.result)return console.error("Error getting file link:",n.data),!0;const i=`https://${n.data.hosts[0]}${n.data.path}`,o=yield e.get(i,{responseType:"arraybuffer",maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error downloading file:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}const U=e=>{let t=e.httpHandler;return{setHttpHandler(e){t=e},httpHandler:()=>t,updateHttpClientConfig(e,r){t.updateHttpClientConfig(e,r)},httpHandlerConfigs:()=>t.httpHandlerConfigs()}};var L,D,B,z,j;!function(e){e.HEADER="header",e.QUERY="query"}(L||(L={})),function(e){e.HEADER="header",e.QUERY="query"}(D||(D={})),function(e){e.HTTP="http",e.HTTPS="https"}(B||(B={})),function(e){e.MD5="md5",e.CRC32="crc32",e.CRC32C="crc32c",e.SHA1="sha1",e.SHA256="sha256"}(z||(z={})),function(e){e[e.HEADER=0]="HEADER",e[e.TRAILER=1]="TRAILER"}(j||(j={}));const q="__smithy_context";var W,H;!function(e){e.PROFILE="profile",e.SSO_SESSION="sso-session",e.SERVICES="services"}(W||(W={})),function(e){e.HTTP_0_9="http/0.9",e.HTTP_1_0="http/1.0",e.TDS_8_0="tds/8.0"}(H||(H={}));class K{constructor(e){this.method=e.method||"GET",this.hostname=e.hostname||"localhost",this.port=e.port,this.query=e.query||{},this.headers=e.headers||{},this.body=e.body,this.protocol=e.protocol?":"!==e.protocol.slice(-1)?`${e.protocol}:`:e.protocol:"https:",this.path=e.path?"/"!==e.path.charAt(0)?`/${e.path}`:e.path:"/",this.username=e.username,this.password=e.password,this.fragment=e.fragment}static clone(e){const t=new K({...e,headers:{...e.headers}});var r;return t.query&&(t.query=(r=t.query,Object.keys(r).reduce(((e,t)=>{const n=r[t];return{...e,[t]:Array.isArray(n)?[...n]:n}}),{}))),t}static isInstance(e){if(!e)return!1;const t=e;return"method"in t&&"protocol"in t&&"hostname"in t&&"path"in t&&"object"==typeof t.query&&"object"==typeof t.headers}clone(){return K.clone(this)}}class V{constructor(e){this.statusCode=e.statusCode,this.reason=e.reason,this.headers=e.headers||{},this.body=e.body}static isInstance(e){if(!e)return!1;const t=e;return"number"==typeof t.statusCode&&"object"==typeof t.headers}}const Q={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0},G=e=>({applyToStack:t=>{t.add(function(e){return t=>async r=>{const{request:n}=r;return K.isInstance(n)&&n.body&&"node"===e.runtime&&"FetchHttpHandler"!==e.requestHandler?.constructor?.name&&(n.headers={...n.headers,Expect:"100-continue"}),t({...r,request:n})}}(e),Q)}}),J="WHEN_SUPPORTED",X=J,Y=J;var Z,ee;!function(e){e.MD5="MD5",e.CRC32="CRC32",e.CRC32C="CRC32C",e.SHA1="SHA1",e.SHA256="SHA256"}(Z||(Z={})),function(e){e.HEADER="header",e.TRAILER="trailer"}(ee||(ee={}));const te=Z.MD5,re=Z.CRC32;var ne;function ie(e,t,r){e.__aws_sdk_context?e.__aws_sdk_context.features||(e.__aws_sdk_context.features={}):e.__aws_sdk_context={features:{}},e.__aws_sdk_context.features[t]=r}!function(e){e.ENV="env",e.CONFIG="shared config entry"}(ne||(ne={}));const oe=e=>V.isInstance(e)?e.headers?.date??e.headers?.Date:void 0,se=e=>new Date(Date.now()+e),ae=(e,t)=>{const r=Date.parse(e);return((e,t)=>Math.abs(se(t).getTime()-e)>=3e5)(r,t)?r-Date.now():t},ce=(e,t)=>{if(!t)throw new Error(`Property \`${e}\` is not resolved for AWS SDK SigV4Auth`);return t},ue=async e=>{const t=ce("context",e.context),r=ce("config",e.config),n=t.endpointV2?.properties?.authSchemes?.[0],i=ce("signer",r.signer),o=await i(n),s=e?.signingRegion,a=e?.signingRegionSet,c=e?.signingName;return{config:r,signer:o,signingRegion:s,signingRegionSet:a,signingName:c}};class de{async sign(e,t,r){if(!K.isInstance(e))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const n=await ue(r),{config:i,signer:o}=n;let{signingRegion:s,signingName:a}=n;const c=r.context;if(c?.authSchemes?.length){const[e,t]=c.authSchemes;"sigv4a"===e?.name&&"sigv4"===t?.name&&(s=t?.signingRegion??s,a=t?.signingName??a)}return await o.sign(e,{signingDate:se(i.systemClockOffset),signingRegion:s,signingService:a})}errorHandler(e){return t=>{const r=t.ServerTime??oe(t.$response);if(r){const n=ce("config",e.config),i=n.systemClockOffset;n.systemClockOffset=ae(r,n.systemClockOffset);n.systemClockOffset!==i&&t.$metadata&&(t.$metadata.clockSkewCorrected=!0)}throw t}}successHandler(e,t){const r=oe(e);if(r){const e=ce("config",t.config);e.systemClockOffset=ae(r,e.systemClockOffset)}}}class le extends de{async sign(e,t,r){if(!K.isInstance(e))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const{config:n,signer:i,signingRegion:o,signingRegionSet:s,signingName:a}=await ue(r),c=(await(n.sigv4aSigningRegionSet?.())??s??[o]).join(",");return await i.sign(e,{signingDate:se(n.systemClockOffset),signingRegion:c,signingService:a})}}const he=e=>e[q]||(e[q]={}),fe=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t};const pe=(e,t)=>(r,n)=>async i=>{const o=e.httpAuthSchemeProvider(await t.httpAuthSchemeParametersProvider(e,n,i.input)),s=function(e){const t=new Map;for(const r of e)t.set(r.schemeId,r);return t}(e.httpAuthSchemes),a=he(n),c=[];for(const r of o){const i=s.get(r.schemeId);if(!i){c.push(`HttpAuthScheme \`${r.schemeId}\` was not enabled for this service.`);continue}const o=i.identityProvider(await t.identityProviderConfigProvider(e));if(!o){c.push(`HttpAuthScheme \`${r.schemeId}\` did not have an IdentityProvider configured.`);continue}const{identityProperties:u={},signingProperties:d={}}=r.propertiesExtractor?.(e,n)||{};r.identityProperties=Object.assign(r.identityProperties||{},u),r.signingProperties=Object.assign(r.signingProperties||{},d),a.selectedHttpAuthScheme={httpAuthOption:r,identity:await o(r.identityProperties),signer:i.signer};break}if(!a.selectedHttpAuthScheme)throw new Error(c.join("\n"));return r(i)},ge={step:"serialize",tags:["HTTP_AUTH_SCHEME"],name:"httpAuthSchemeMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"},me={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},ye={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function ve(e,t,r){return{applyToStack:n=>{n.add(((e,t)=>r=>async n=>{const{response:i}=await r(n);try{return{response:i,output:await t(i,e)}}catch(e){if(Object.defineProperty(e,"$response",{value:i}),!("$metadata"in e)){const t="Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.";e.message+="\n "+t,void 0!==e.$responseBodyText&&e.$response&&(e.$response.body=e.$responseBodyText)}throw e}})(e,r),me),n.add(((e,t)=>(r,n)=>async i=>{const o=n.endpointV2?.url&&e.urlParser?async()=>e.urlParser(n.endpointV2.url):e.endpoint;if(!o)throw new Error("No valid endpoint provider available.");const s=await t(i.input,{...e,endpoint:o});return r({...i,request:s})})(e,t),ye)}}}const be=e=>e=>{throw e},we=(e,t)=>{},ke={step:"finalizeRequest",tags:["HTTP_SIGNING"],name:"httpSigningMiddleware",aliases:["apiKeyMiddleware","tokenMiddleware","awsAuthMiddleware"],override:!0,relation:"after",toMiddleware:"retryMiddleware"},Se=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{if(!K.isInstance(r.request))return e(r);const n=he(t).selectedHttpAuthScheme;if(!n)throw new Error("No HttpAuthScheme was selected: unable to sign request");const{httpAuthOption:{signingProperties:i={}},identity:o,signer:s}=n,a=await e({...r,request:await s.sign(r.request,o,i)}).catch((s.errorHandler||be)(i));return(s.successHandler||we)(a.response,i),a}),ke)}}),Ee=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t},xe={},Te=new Array(64);for(let e=0,t="A".charCodeAt(0),r="Z".charCodeAt(0);e+t<=r;e++){const r=String.fromCharCode(e+t);xe[r]=e,Te[e]=r}for(let e=0,t="a".charCodeAt(0),r="z".charCodeAt(0);e+t<=r;e++){const r=String.fromCharCode(e+t),n=e+26;xe[r]=n,Te[n]=r}for(let e=0;e<10;e++){xe[e.toString(10)]=e+52;const t=e.toString(10),r=e+52;xe[t]=r,Te[r]=t}xe["+"]=62,Te[62]="+",xe["/"]=63,Te[63]="/";const Ae=e=>{let t=e.length/4*3;"=="===e.slice(-2)?t-=2:"="===e.slice(-1)&&t--;const r=new ArrayBuffer(t),n=new DataView(r);for(let t=0;t>=6;const o=t/4*3;r>>=i%8;const s=Math.floor(i/8);for(let e=0;e>t)}}return new Uint8Array(r)},Ce=e=>(new TextEncoder).encode(e),Re=e=>"string"==typeof e?Ce(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e),Oe=e=>{if("string"==typeof e)return e;if("object"!=typeof e||"number"!=typeof e.byteOffset||"number"!=typeof e.byteLength)throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return new TextDecoder("utf-8").decode(e)};function _e(e){let t;t="string"==typeof e?Ce(e):e;const r="object"==typeof t&&"number"==typeof t.length,n="object"==typeof t&&"number"==typeof t.byteOffset&&"number"==typeof t.byteLength;if(!r&&!n)throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");let i="";for(let e=0;e>t]}i+="==".slice(0,4-o)}return i}class Pe extends Uint8Array{static fromString(e,t="utf-8"){if("string"==typeof e)return function(e,t){return"base64"===t?Pe.mutate(Ae(e)):Pe.mutate(Ce(e))}(e,t);throw new Error(`Unsupported conversion from ${typeof e} to Uint8ArrayBlobAdapter.`)}static mutate(e){return Object.setPrototypeOf(e,Pe.prototype),e}transformToString(e="utf-8"){return function(e,t="utf-8"){return"base64"===t?_e(e):Oe(e)}(this,e)}}const Ie=(e,t)=>{const{base64Encoder:r,bodyLengthChecker:n,checksumAlgorithmFn:i,checksumLocationName:o,streamHasher:s}=t,a=void 0!==r&&void 0!==n&&void 0!==i&&void 0!==o&&void 0!==s,c=a?s(i,e):void 0,u=e.getReader();return new ReadableStream({async pull(e){const{value:t,done:i}=await u.read();if(i){if(e.enqueue("0\r\n"),a){const t=r(await c);e.enqueue(`${o}:${t}\r\n`),e.enqueue("\r\n")}e.close()}else e.enqueue(`${(n(t)||0).toString(16)}\r\n${t}\r\n`)}})},Me=e=>encodeURIComponent(e).replace(/[!'()*]/g,Ne),Ne=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`;function Fe(e,t){return new Request(e,t)}function $e(e=0){return new Promise(((t,r)=>{e&&setTimeout((()=>{const t=new Error(`Request did not complete within ${e} ms`);t.name="TimeoutError",r(t)}),e)}))}const Ue={supported:void 0};class Le{static create(e){return"function"==typeof e?.handle?e:new Le(e)}constructor(e){"function"==typeof e?this.configProvider=e().then((e=>e||{})):(this.config=e??{},this.configProvider=Promise.resolve(this.config)),void 0===Ue.supported&&(Ue.supported=Boolean("undefined"!=typeof Request&&"keepalive"in Fe("https://[::1]")))}destroy(){}async handle(e,{abortSignal:t}={}){this.config||(this.config=await this.configProvider);const r=this.config.requestTimeout,n=!0===this.config.keepAlive,i=this.config.credentials;if(t?.aborted){const e=new Error("Request aborted");return e.name="AbortError",Promise.reject(e)}let o=e.path;const s=function(e){const t=[];for(let r of Object.keys(e).sort()){const n=e[r];if(r=Me(r),Array.isArray(n))for(let e=0,i=n.length;e{};const p=Fe(d,h),g=[fetch(p).then((e=>{const t=e.headers,r={};for(const e of t.entries())r[e[0]]=e[1];return null!=e.body?{response:new V({headers:r,reason:e.statusText,statusCode:e.status,body:e.body})}:e.blob().then((t=>({response:new V({headers:r,reason:e.statusText,statusCode:e.status,body:t})})))})),$e(r)];return t&&g.push(new Promise(((e,r)=>{const n=()=>{const e=new Error("Request aborted");e.name="AbortError",r(e)};if("function"==typeof t.addEventListener){const e=t;e.addEventListener("abort",n,{once:!0}),f=()=>e.removeEventListener("abort",n)}else t.onabort=n}))),Promise.race(g).finally(f)}updateHttpClientConfig(e,t){this.config=void 0,this.configProvider=this.configProvider.then((r=>(r[e]=t,r)))}httpHandlerConfigs(){return this.config??{}}}const De=async e=>"function"==typeof Blob&&e instanceof Blob||"Blob"===e.constructor?.name?new Uint8Array(await e.arrayBuffer()):async function(e){const t=[],r=e.getReader();let n=!1,i=0;for(;!n;){const{done:e,value:o}=await r.read();o&&(t.push(o),i+=o.length),n=e}const o=new Uint8Array(i);let s=0;for(const e of t)o.set(e,s),s+=e.length;return o}(e);const Be={},ze={};for(let e=0;e<256;e++){let t=e.toString(16).toLowerCase();1===t.length&&(t=`0${t}`),Be[e]=t,ze[t]=e}function je(e){if(e.length%2!=0)throw new Error("Hex encoded strings must have an even number length");const t=new Uint8Array(e.length/2);for(let r=0;r"function"==typeof ReadableStream&&(e?.constructor?.name===ReadableStream.name||e instanceof ReadableStream),He="The stream has already been transformed.",Ke=e=>{if(!Ve(e)&&!We(e)){throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${e?.__proto__?.constructor?.name||e}`)}let t=!1;const r=async()=>{if(t)throw new Error(He);return t=!0,await De(e)};return Object.assign(e,{transformToByteArray:r,transformToString:async e=>{const t=await r();if("base64"===e)return _e(t);if("hex"===e)return qe(t);if(void 0===e||"utf8"===e||"utf-8"===e)return Oe(t);if("function"==typeof TextDecoder)return new TextDecoder(e).decode(t);throw new Error("TextDecoder is not available, please make sure polyfill is provided.")},transformToWebStream:()=>{if(t)throw new Error(He);if(t=!0,Ve(e))return(e=>{if("function"!=typeof e.stream)throw new Error("Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.\nIf you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body");return e.stream()})(e);if(We(e))return e;throw new Error(`Cannot transform payload to web stream, got ${e}`)}})},Ve=e=>"function"==typeof Blob&&e instanceof Blob;const Qe="function"==typeof ReadableStream?ReadableStream:function(){};class Ge extends Qe{}const Je=({expectedChecksum:e,checksum:t,source:r,checksumSourceLocation:n,base64Encoder:i})=>{if(!We(r))throw new Error(`@smithy/util-stream: unsupported source type ${r?.constructor?.name??r} in ChecksumStream.`);const o=i??_e;if("function"!=typeof TransformStream)throw new Error("@smithy/util-stream: unable to instantiate ChecksumStream because API unavailable: ReadableStream/TransformStream.");const s=new TransformStream({start(){},async transform(e,r){t.update(e),r.enqueue(e)},async flush(r){const i=await t.digest(),s=o(i);if(e!==s){const t=new Error(`Checksum mismatch: expected "${e}" but received "${s}" in response header "${n}".`);r.error(t)}else r.terminate()}});r.pipeThrough(s);const a=s.readable;return Object.setPrototypeOf(a,Ge.prototype),a},Xe=async(e=new Uint8Array,t)=>{if(e instanceof Uint8Array)return Pe.mutate(e);if(!e)return Pe.mutate(new Uint8Array);const r=t.streamCollector(e);return Pe.mutate(await r)};function Ye(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function Ze(e,t){return new et(e,t)}class et{constructor(e,t){this.input=e,this.context=t,this.query={},this.method="",this.headers={},this.path="",this.body=null,this.hostname="",this.resolvePathStack=[]}async build(){const{hostname:e,protocol:t="https",port:r,path:n}=await this.context.endpoint();this.path=n;for(const e of this.resolvePathStack)e(this.path);return new K({protocol:t,hostname:this.hostname||e,port:r,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(e){return this.hostname=e,this}bp(e){return this.resolvePathStack.push((t=>{this.path=`${t?.endsWith("/")?t.slice(0,-1):t||""}`+e})),this}p(e,t,r,n){return this.resolvePathStack.push((i=>{this.path=((e,t,r,n,i,o)=>{if(null==t||void 0===t[r])throw new Error("No value provided for input HTTP label: "+r+".");{const t=n();if(t.length<=0)throw new Error("Empty value provided for input HTTP label: "+r+".");e=e.replace(i,o?t.split("/").map((e=>Ye(e))).join("/"):Ye(t))}return e})(i,this.input,e,t,r,n)})),this}h(e){return this.headers=e,this}q(e){return this.query=e,this}b(e){return this.body=e,this}m(e){return this.method=e,this}}class tt{constructor(e){this.authSchemes=new Map;for(const[t,r]of Object.entries(e))void 0!==r&&this.authSchemes.set(t,r)}getIdentityProvider(e){return this.authSchemes.get(e)}}const rt=(nt=3e5,e=>it(e)&&e.expiration.getTime()-Date.now()void 0!==e.expiration,ot="X-Amz-Date",st="X-Amz-Signature",at="X-Amz-Security-Token",ct="authorization",ut=ot.toLowerCase(),dt=[ct,ut,"date"],lt=st.toLowerCase(),ht="x-amz-content-sha256",ft=at.toLowerCase(),pt={authorization:!0,"cache-control":!0,connection:!0,expect:!0,from:!0,"keep-alive":!0,"max-forwards":!0,pragma:!0,referer:!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0,"user-agent":!0,"x-amzn-trace-id":!0},gt=/^proxy-/,mt=/^sec-/,yt="AWS4-HMAC-SHA256",vt="AWS4-HMAC-SHA256-PAYLOAD",bt="aws4_request",wt={},kt=[],St=(e,t,r)=>`${e}/${t}/${r}/${bt}`,Et=(e,t,r)=>{const n=new e(t);return n.update(Re(r)),n.digest()},xt=({headers:e},t,r)=>{const n={};for(const i of Object.keys(e).sort()){if(null==e[i])continue;const o=i.toLowerCase();(o in pt||t?.has(o)||gt.test(o)||mt.test(o))&&(!r||r&&!r.has(o))||(n[o]=e[i].trim().replace(/\s+/g," "))}return n},Tt=e=>"function"==typeof ArrayBuffer&&e instanceof ArrayBuffer||"[object ArrayBuffer]"===Object.prototype.toString.call(e),At=async({headers:e,body:t},r)=>{for(const t of Object.keys(e))if(t.toLowerCase()===ht)return e[t];if(null==t)return"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";if("string"==typeof t||ArrayBuffer.isView(t)||Tt(t)){const e=new r;return e.update(Re(t)),qe(await e.digest())}return"UNSIGNED-PAYLOAD"};class Ct{format(e){const t=[];for(const r of Object.keys(e)){const n=Ce(r);t.push(Uint8Array.from([n.byteLength]),n,this.formatHeaderValue(e[r]))}const r=new Uint8Array(t.reduce(((e,t)=>e+t.byteLength),0));let n=0;for(const e of t)r.set(e,n),n+=e.byteLength;return r}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":const t=new DataView(new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case"integer":const r=new DataView(new ArrayBuffer(5));return r.setUint8(0,4),r.setInt32(1,e.value,!1),new Uint8Array(r.buffer);case"long":const n=new Uint8Array(9);return n[0]=5,n.set(e.value.bytes,1),n;case"binary":const i=new DataView(new ArrayBuffer(3+e.value.byteLength));i.setUint8(0,6),i.setUint16(1,e.value.byteLength,!1);const o=new Uint8Array(i.buffer);return o.set(e.value,3),o;case"string":const s=Ce(e.value),a=new DataView(new ArrayBuffer(3+s.byteLength));a.setUint8(0,7),a.setUint16(1,s.byteLength,!1);const c=new Uint8Array(a.buffer);return c.set(s,3),c;case"timestamp":const u=new Uint8Array(9);return u[0]=8,u.set(_t.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!Ot.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(je(e.value.replace(/\-/g,"")),1),d}}}var Rt;!function(e){e[e.boolTrue=0]="boolTrue",e[e.boolFalse=1]="boolFalse",e[e.byte=2]="byte",e[e.short=3]="short",e[e.integer=4]="integer",e[e.long=5]="long",e[e.byteArray=6]="byteArray",e[e.string=7]="string",e[e.timestamp=8]="timestamp",e[e.uuid=9]="uuid"}(Rt||(Rt={}));const Ot=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;class _t{constructor(e){if(this.bytes=e,8!==e.byteLength)throw new Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(e){if(e>0x8000000000000000||e<-0x8000000000000000)throw new Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);const t=new Uint8Array(8);for(let r=7,n=Math.abs(Math.round(e));r>-1&&n>0;r--,n/=256)t[r]=n;return e<0&&Pt(t),new _t(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&Pt(e),parseInt(qe(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function Pt(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}const It=e=>{e=K.clone(e);for(const t of Object.keys(e.headers))dt.indexOf(t.toLowerCase())>-1&&delete e.headers[t];return e},Mt=e=>"number"==typeof e?new Date(1e3*e):"string"==typeof e?Number(e)?new Date(1e3*Number(e)):new Date(e):e;class Nt{constructor({applyChecksum:e,credentials:t,region:r,service:n,sha256:i,uriEscapePath:o=!0}){this.headerFormatter=new Ct,this.service=n,this.sha256=i,this.uriEscapePath=o,this.applyChecksum="boolean"!=typeof e||e,this.regionProvider=fe(r),this.credentialProvider=fe(t)}async presign(e,t={}){const{signingDate:r=new Date,expiresIn:n=3600,unsignableHeaders:i,unhoistableHeaders:o,signableHeaders:s,hoistableHeaders:a,signingRegion:c,signingService:u}=t,d=await this.credentialProvider();this.validateResolvedCredentials(d);const l=c??await this.regionProvider(),{longDate:h,shortDate:f}=Ft(r);if(n>604800)return Promise.reject("Signature version 4 presigned URLs must have an expiration date less than one week in the future");const p=St(f,l,u??this.service),g=((e,t={})=>{const{headers:r,query:n={}}=K.clone(e);for(const e of Object.keys(r)){const i=e.toLowerCase();("x-amz-"===i.slice(0,6)&&!t.unhoistableHeaders?.has(i)||t.hoistableHeaders?.has(i))&&(n[e]=r[e],delete r[e])}return{...e,headers:r,query:n}})(It(e),{unhoistableHeaders:o,hoistableHeaders:a});d.sessionToken&&(g.query[at]=d.sessionToken),g.query["X-Amz-Algorithm"]=yt,g.query["X-Amz-Credential"]=`${d.accessKeyId}/${p}`,g.query[ot]=h,g.query["X-Amz-Expires"]=n.toString(10);const m=xt(g,i,s);return g.query["X-Amz-SignedHeaders"]=$t(m),g.query[st]=await this.getSignature(h,p,this.getSigningKey(d,l,f,u),this.createCanonicalRequest(g,m,await At(e,this.sha256))),g}async sign(e,t){return"string"==typeof e?this.signString(e,t):e.headers&&e.payload?this.signEvent(e,t):e.message?this.signMessage(e,t):this.signRequest(e,t)}async signEvent({headers:e,payload:t},{signingDate:r=new Date,priorSignature:n,signingRegion:i,signingService:o}){const s=i??await this.regionProvider(),{shortDate:a,longDate:c}=Ft(r),u=St(a,s,o??this.service),d=await At({headers:{},body:t},this.sha256),l=new this.sha256;l.update(e);const h=qe(await l.digest()),f=[vt,c,u,n,h,d].join("\n");return this.signString(f,{signingDate:r,signingRegion:s,signingService:o})}async signMessage(e,{signingDate:t=new Date,signingRegion:r,signingService:n}){return this.signEvent({headers:this.headerFormatter.format(e.message.headers),payload:e.message.body},{signingDate:t,signingRegion:r,signingService:n,priorSignature:e.priorSignature}).then((t=>({message:e.message,signature:t})))}async signString(e,{signingDate:t=new Date,signingRegion:r,signingService:n}={}){const i=await this.credentialProvider();this.validateResolvedCredentials(i);const o=r??await this.regionProvider(),{shortDate:s}=Ft(t),a=new this.sha256(await this.getSigningKey(i,o,s,n));return a.update(Re(e)),qe(await a.digest())}async signRequest(e,{signingDate:t=new Date,signableHeaders:r,unsignableHeaders:n,signingRegion:i,signingService:o}={}){const s=await this.credentialProvider();this.validateResolvedCredentials(s);const a=i??await this.regionProvider(),c=It(e),{longDate:u,shortDate:d}=Ft(t),l=St(d,a,o??this.service);c.headers[ut]=u,s.sessionToken&&(c.headers[ft]=s.sessionToken);const h=await At(c,this.sha256);!((e,t)=>{e=e.toLowerCase();for(const r of Object.keys(t))if(e===r.toLowerCase())return!0;return!1})(ht,c.headers)&&this.applyChecksum&&(c.headers[ht]=h);const f=xt(c,n,r),p=await this.getSignature(u,l,this.getSigningKey(s,a,d,o),this.createCanonicalRequest(c,f,h));return c.headers[ct]=`${yt} Credential=${s.accessKeyId}/${l}, SignedHeaders=${$t(f)}, Signature=${p}`,c}createCanonicalRequest(e,t,r){const n=Object.keys(t).sort();return`${e.method}\n${this.getCanonicalPath(e)}\n${(({query:e={}})=>{const t=[],r={};for(const n of Object.keys(e)){if(n.toLowerCase()===lt)continue;const i=Me(n);t.push(i);const o=e[n];"string"==typeof o?r[i]=`${i}=${Me(o)}`:Array.isArray(o)&&(r[i]=o.slice(0).reduce(((e,t)=>e.concat([`${i}=${Me(t)}`])),[]).sort().join("&"))}return t.sort().map((e=>r[e])).filter((e=>e)).join("&")})(e)}\n${n.map((e=>`${e}:${t[e]}`)).join("\n")}\n\n${n.join(";")}\n${r}`}async createStringToSign(e,t,r){const n=new this.sha256;n.update(Re(r));const i=await n.digest();return`${yt}\n${e}\n${t}\n${qe(i)}`}getCanonicalPath({path:e}){if(this.uriEscapePath){const t=[];for(const r of e.split("/"))0!==r?.length&&"."!==r&&(".."===r?t.pop():t.push(r));const r=`${e?.startsWith("/")?"/":""}${t.join("/")}${t.length>0&&e?.endsWith("/")?"/":""}`;return Me(r).replace(/%2F/g,"/")}return e}async getSignature(e,t,r,n){const i=await this.createStringToSign(e,t,n),o=new this.sha256(await r);return o.update(Re(i)),qe(await o.digest())}getSigningKey(e,t,r,n){return(async(e,t,r,n,i)=>{const o=`${r}:${n}:${i}:${qe(await Et(e,t.secretAccessKey,t.accessKeyId))}:${t.sessionToken}`;if(o in wt)return wt[o];for(kt.push(o);kt.length>50;)delete wt[kt.shift()];let s=`AWS4${t.secretAccessKey}`;for(const t of[r,n,i,bt])s=await Et(e,s,t);return wt[o]=s})(this.sha256,e,r,t,n||this.service)}validateResolvedCredentials(e){if("object"!=typeof e||"string"!=typeof e.accessKeyId||"string"!=typeof e.secretAccessKey)throw new Error("Resolved credential object is not valid")}}const Ft=e=>{const t=(r=e,Mt(r).toISOString().replace(/\.\d{3}Z$/,"Z")).replace(/[\-:]/g,"");var r;return{longDate:t,shortDate:t.slice(0,8)}},$t=e=>Object.keys(e).sort().join(";"),Ut=e=>{let t,r=!1;e.credentials&&(r=!0,t=((e,t,r)=>{if(void 0===e)return;const n="function"!=typeof e?async()=>Promise.resolve(e):e;let i,o,s,a=!1;const c=async e=>{o||(o=n(e));try{i=await o,s=!0,a=!1}finally{o=void 0}return i};return void 0===t?async e=>(s&&!e?.forceRefresh||(i=await c(e)),i):async e=>(s&&!e?.forceRefresh||(i=await c(e)),a?i:r(i)?t(i)?(await c(e),i):i:(a=!0,i))})(e.credentials,rt,it)),t||(t=e.credentialDefaultProvider?Ee(e.credentialDefaultProvider(Object.assign({},e,{parentClientConfig:e}))):async()=>{throw new Error("`credentials` is missing")});const{signingEscapePath:n=!0,systemClockOffset:i=e.systemClockOffset||0,sha256:o}=e;let s;return s=e.signer?Ee(e.signer):e.regionInfoProvider?()=>Ee(e.region)().then((async t=>[await e.regionInfoProvider(t,{useFipsEndpoint:await e.useFipsEndpoint(),useDualstackEndpoint:await e.useDualstackEndpoint()})||{},t])).then((([r,i])=>{const{signingRegion:s,signingService:a}=r;e.signingRegion=e.signingRegion||s||i,e.signingName=e.signingName||a||e.serviceId;const c={...e,credentials:t,region:e.signingRegion,service:e.signingName,sha256:o,uriEscapePath:n};return new(e.signerConstructor||Nt)(c)})):async r=>{const i=(r=Object.assign({},{name:"sigv4",signingName:e.signingName||e.defaultSigningName,signingRegion:await Ee(e.region)(),properties:{}},r)).signingRegion,s=r.signingName;e.signingRegion=e.signingRegion||i,e.signingName=e.signingName||s||e.serviceId;const a={...e,credentials:t,region:e.signingRegion,service:e.signingName,sha256:o,uriEscapePath:n};return new(e.signerConstructor||Nt)(a)},{...e,systemClockOffset:i,signingEscapePath:n,credentials:r?async()=>t().then((e=>{return r="CREDENTIALS_CODE",n="e",(t=e).$source||(t.$source={}),t.$source[r]=n,t;var t,r,n})):t,signer:s}},Lt=(e,t)=>{const r=[];if(e&&r.push(e),t)for(const e of t)r.push(e);return r},Dt=(e,t)=>`${e||"anonymous"}${t&&t.length>0?` (a.k.a. ${t.join(",")})`:""}`,Bt=()=>{let e=[],t=[],r=!1;const n=new Set,i=r=>(e.forEach((e=>{r.add(e.middleware,{...e})})),t.forEach((e=>{r.addRelativeTo(e.middleware,{...e})})),r.identifyOnResolve?.(a.identifyOnResolve()),r),o=e=>{const t=[];return e.before.forEach((e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...o(e))})),t.push(e),e.after.reverse().forEach((e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...o(e))})),t},s=(r=!1)=>{const n=[],i=[],s={};e.forEach((e=>{const t={...e,before:[],after:[]};for(const e of Lt(t.name,t.aliases))s[e]=t;n.push(t)})),t.forEach((e=>{const t={...e,before:[],after:[]};for(const e of Lt(t.name,t.aliases))s[e]=t;i.push(t)})),i.forEach((e=>{if(e.toMiddleware){const t=s[e.toMiddleware];if(void 0===t){if(r)return;throw new Error(`${e.toMiddleware} is not found when adding ${Dt(e.name,e.aliases)} middleware ${e.relation} ${e.toMiddleware}`)}"after"===e.relation&&t.after.push(e),"before"===e.relation&&t.before.push(e)}}));const a=(c=n,c.sort(((e,t)=>zt[t.step]-zt[e.step]||jt[t.priority||"normal"]-jt[e.priority||"normal"]))).map(o).reduce(((e,t)=>(e.push(...t),e)),[]);var c;return a},a={add:(t,r={})=>{const{name:i,override:o,aliases:s}=r,a={step:"initialize",priority:"normal",middleware:t,...r},c=Lt(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Dt(i,s)}'`);for(const t of c){const r=e.findIndex((e=>e.name===t||e.aliases?.some((e=>e===t))));if(-1===r)continue;const n=e[r];if(n.step!==a.step||a.priority!==n.priority)throw new Error(`"${Dt(n.name,n.aliases)}" middleware with ${n.priority} priority in ${n.step} step cannot be overridden by "${Dt(i,s)}" middleware with ${a.priority} priority in ${a.step} step.`);e.splice(r,1)}}for(const e of c)n.add(e)}e.push(a)},addRelativeTo:(e,r)=>{const{name:i,override:o,aliases:s}=r,a={middleware:e,...r},c=Lt(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Dt(i,s)}'`);for(const e of c){const r=t.findIndex((t=>t.name===e||t.aliases?.some((t=>t===e))));if(-1===r)continue;const n=t[r];if(n.toMiddleware!==a.toMiddleware||n.relation!==a.relation)throw new Error(`"${Dt(n.name,n.aliases)}" middleware ${n.relation} "${n.toMiddleware}" middleware cannot be overridden by "${Dt(i,s)}" middleware ${a.relation} "${a.toMiddleware}" middleware.`);t.splice(r,1)}}for(const e of c)n.add(e)}t.push(a)},clone:()=>i(Bt()),use:e=>{e.applyToStack(a)},remove:r=>"string"==typeof r?(r=>{let i=!1;const o=e=>{const t=Lt(e.name,e.aliases);if(t.includes(r)){i=!0;for(const e of t)n.delete(e);return!1}return!0};return e=e.filter(o),t=t.filter(o),i})(r):(r=>{let i=!1;const o=e=>{if(e.middleware===r){i=!0;for(const t of Lt(e.name,e.aliases))n.delete(t);return!1}return!0};return e=e.filter(o),t=t.filter(o),i})(r),removeByTag:r=>{let i=!1;const o=e=>{const{tags:t,name:o,aliases:s}=e;if(t&&t.includes(r)){const e=Lt(o,s);for(const t of e)n.delete(t);return i=!0,!1}return!0};return e=e.filter(o),t=t.filter(o),i},concat:e=>{const t=i(Bt());return t.use(e),t.identifyOnResolve(r||t.identifyOnResolve()||(e.identifyOnResolve?.()??!1)),t},applyToStack:i,identify:()=>s(!0).map((e=>{const t=e.step??e.relation+" "+e.toMiddleware;return Dt(e.name,e.aliases)+" - "+t})),identifyOnResolve:e=>("boolean"==typeof e&&(r=e),r),resolve:(e,t)=>{for(const r of s().map((e=>e.middleware)).reverse())e=r(e,t);return r&&console.log(a.identify()),e}};return a},zt={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},jt={high:3,normal:2,low:1};class qt{constructor(e){this.config=e,this.middlewareStack=Bt()}send(e,t,r){const n="function"!=typeof t?t:void 0,i="function"==typeof t?t:r;let o;if(void 0===n&&!0===this.config.cacheMiddleware){this.handlers||(this.handlers=new WeakMap);const t=this.handlers;t.has(e.constructor)?o=t.get(e.constructor):(o=e.resolveMiddleware(this.middlewareStack,this.config,n),t.set(e.constructor,o))}else delete this.handlers,o=e.resolveMiddleware(this.middlewareStack,this.config,n);if(!i)return o(e).then((e=>e.output));o(e).then((e=>i(null,e.output)),(e=>i(e))).catch((()=>{}))}destroy(){this.config?.requestHandler?.destroy?.(),delete this.handlers}}class Wt{constructor(){this.middlewareStack=Bt()}static classBuilder(){return new Ht}resolveMiddlewareWithContext(e,t,r,{middlewareFn:n,clientName:i,commandName:o,inputFilterSensitiveLog:s,outputFilterSensitiveLog:a,smithyContext:c,additionalContext:u,CommandCtor:d}){for(const i of n.bind(this)(d,e,t,r))this.middlewareStack.use(i);const l=e.concat(this.middlewareStack),{logger:h}=t,f={logger:h,clientName:i,commandName:o,inputFilterSensitiveLog:s,outputFilterSensitiveLog:a,[q]:{commandInstance:this,...c},...u},{requestHandler:p}=t;return l.resolve((e=>p.handle(e.request,r||{})),f)}}class Ht{constructor(){this._init=()=>{},this._ep={},this._middlewareFn=()=>[],this._commandName="",this._clientName="",this._additionalContext={},this._smithyContext={},this._inputFilterSensitiveLog=e=>e,this._outputFilterSensitiveLog=e=>e,this._serializer=null,this._deserializer=null}init(e){this._init=e}ep(e){return this._ep=e,this}m(e){return this._middlewareFn=e,this}s(e,t,r={}){return this._smithyContext={service:e,operation:t,...r},this}c(e={}){return this._additionalContext=e,this}n(e,t){return this._clientName=e,this._commandName=t,this}f(e=e=>e,t=e=>e){return this._inputFilterSensitiveLog=e,this._outputFilterSensitiveLog=t,this}ser(e){return this._serializer=e,this}de(e){return this._deserializer=e,this}build(){const e=this;let t;return t=class extends Wt{static getEndpointParameterInstructions(){return e._ep}constructor(...[t]){super(),this.serialize=e._serializer,this.deserialize=e._deserializer,this.input=t??{},e._init(this)}resolveMiddleware(r,n,i){return this.resolveMiddlewareWithContext(r,n,i,{CommandCtor:t,middlewareFn:e._middlewareFn,clientName:e._clientName,commandName:e._commandName,inputFilterSensitiveLog:e._inputFilterSensitiveLog,outputFilterSensitiveLog:e._outputFilterSensitiveLog,smithyContext:e._smithyContext,additionalContext:e._additionalContext})}}}}const Kt="***SensitiveInformation***",Vt=e=>{switch(e){case"true":return!0;case"false":return!1;default:throw new Error(`Unable to parse boolean value "${e}"`)}},Qt=Math.ceil(2**127*(2-2**-23)),Gt=e=>{const t=(e=>{if(null!=e){if("string"==typeof e){const t=parseFloat(e);if(!Number.isNaN(t))return String(t)!==String(e)&&lr.warn(dr(`Expected number but observed string: ${e}`)),t}if("number"==typeof e)return e;throw new TypeError(`Expected number, got ${typeof e}: ${e}`)}})(e);if(void 0!==t&&!Number.isNaN(t)&&t!==1/0&&t!==-1/0&&Math.abs(t)>Qt)throw new TypeError(`Expected 32-bit float, got ${e}`);return t},Jt=e=>{if(null!=e){if(Number.isInteger(e)&&!Number.isNaN(e))return e;throw new TypeError(`Expected integer, got ${typeof e}: ${e}`)}},Xt=e=>er(e,32),Yt=e=>er(e,16),Zt=e=>er(e,8),er=(e,t)=>{const r=Jt(e);if(void 0!==r&&tr(r,t)!==r)throw new TypeError(`Expected ${t}-bit integer, got ${e}`);return r},tr=(e,t)=>{switch(t){case 32:return Int32Array.of(e)[0];case 16:return Int16Array.of(e)[0];case 8:return Int8Array.of(e)[0]}},rr=(e,t)=>{if(null==e){if(t)throw new TypeError(`Expected a non-null value for ${t}`);throw new TypeError("Expected a non-null value")}return e},nr=e=>{if(null==e)return;if("object"==typeof e&&!Array.isArray(e))return e;const t=Array.isArray(e)?"array":typeof e;throw new TypeError(`Expected object, got ${t}: ${e}`)},ir=e=>{if(null!=e){if("string"==typeof e)return e;if(["boolean","number","bigint"].includes(typeof e))return lr.warn(dr(`Expected string, got ${typeof e}: ${e}`)),String(e);throw new TypeError(`Expected string, got ${typeof e}: ${e}`)}},or=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,sr=e=>{const t=e.match(or);if(null===t||t[0].length!==e.length)throw new TypeError("Expected real number, got implicit NaN");return parseFloat(e)},ar=e=>Jt("string"==typeof e?sr(e):e),cr=e=>Xt("string"==typeof e?sr(e):e),ur=e=>Yt("string"==typeof e?sr(e):e),dr=e=>String(new TypeError(e).stack||e).split("\n").slice(0,5).filter((e=>!e.includes("stackTraceWarning"))).join("\n"),lr={warn:console.warn},hr=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],fr=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function pr(e){const t=e.getUTCFullYear(),r=e.getUTCMonth(),n=e.getUTCDay(),i=e.getUTCDate(),o=e.getUTCHours(),s=e.getUTCMinutes(),a=e.getUTCSeconds(),c=o<10?`0${o}`:`${o}`,u=s<10?`0${s}`:`${s}`,d=a<10?`0${a}`:`${a}`;return`${hr[n]}, ${i<10?`0${i}`:`${i}`} ${fr[r]} ${t} ${c}:${u}:${d} GMT`}const gr=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/),mr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-3339 date-times must be expressed as strings");const t=gr.exec(e);if(!t)throw new TypeError("Invalid RFC-3339 date-time value");const[r,n,i,o,s,a,c,u,d]=t,l=ur(Pr(n)),h=Rr(i,"month",1,12),f=Rr(o,"day",1,31),p=kr(l,h,f,{hours:s,minutes:a,seconds:c,fractionalMilliseconds:u});return"Z"!=d.toUpperCase()&&p.setTime(p.getTime()-_r(d)),p},yr=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),vr=new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),br=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/),wr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-7231 date-times must be expressed as strings");let t=yr.exec(e);if(t){const[e,r,n,i,o,s,a,c]=t;return kr(ur(Pr(i)),xr(n),Rr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c})}if(t=vr.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return Er(kr(Sr(i),xr(n),Rr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c}))}if(t=br.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return kr(ur(Pr(c)),xr(r),Rr(n.trimLeft(),"day",1,31),{hours:i,minutes:o,seconds:s,fractionalMilliseconds:a})}throw new TypeError("Invalid RFC-7231 date-time value")},kr=(e,t,r,n)=>{const i=t-1;return Ar(e,i,r),new Date(Date.UTC(e,i,r,Rr(n.hours,"hour",0,23),Rr(n.minutes,"minute",0,59),Rr(n.seconds,"seconds",0,60),Or(n.fractionalMilliseconds)))},Sr=e=>{const t=(new Date).getUTCFullYear(),r=100*Math.floor(t/100)+ur(Pr(e));return re.getTime()-(new Date).getTime()>15768e8?new Date(Date.UTC(e.getUTCFullYear()-100,e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds())):e,xr=e=>{const t=fr.indexOf(e);if(t<0)throw new TypeError(`Invalid month: ${e}`);return t+1},Tr=[31,28,31,30,31,30,31,31,30,31,30,31],Ar=(e,t,r)=>{let n=Tr[t];if(1===t&&Cr(e)&&(n=29),r>n)throw new TypeError(`Invalid day for ${fr[t]} in ${e}: ${r}`)},Cr=e=>e%4==0&&(e%100!=0||e%400==0),Rr=(e,t,r,n)=>{const i=(e=>Zt("string"==typeof e?sr(e):e))(Pr(e));if(in)throw new TypeError(`${t} must be between ${r} and ${n}, inclusive`);return i},Or=e=>null==e?0:1e3*(e=>Gt("string"==typeof e?sr(e):e))("0."+e),_r=e=>{const t=e[0];let r=1;if("+"==t)r=1;else{if("-"!=t)throw new TypeError(`Offset direction, ${t}, must be "+" or "-"`);r=-1}return r*(60*Number(e.substring(1,3))+Number(e.substring(4,6)))*60*1e3},Pr=e=>{let t=0;for(;t{Object.entries(t).filter((([,e])=>void 0!==e)).forEach((([t,r])=>{null!=e[t]&&""!==e[t]||(e[t]=r)}));const r=e.message||e.Message||"UnknownError";return e.message=r,delete e.Message,e},Nr=e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}),Fr=e=>{switch(e){case"standard":case"cross-region":return{retryMode:"standard",connectionTimeout:3100};case"in-region":return{retryMode:"standard",connectionTimeout:1100};case"mobile":return{retryMode:"standard",connectionTimeout:3e4};default:return{}}},$r=e=>{const t=[];for(const r in z){const n=z[r];void 0!==e[n]&&t.push({algorithmId:()=>n,checksumConstructor:()=>e[n]})}return{_checksumAlgorithms:t,addChecksumAlgorithm(e){this._checksumAlgorithms.push(e)},checksumAlgorithms(){return this._checksumAlgorithms}}},Ur=e=>{const t={};return e.checksumAlgorithms().forEach((e=>{t[e.algorithmId()]=e.checksumConstructor()})),t},Lr=e=>{let t=e.retryStrategy;return{setRetryStrategy(e){t=e},retryStrategy:()=>t}},Dr=e=>{const t={};return t.retryStrategy=e.retryStrategy(),t},Br=e=>({...$r(e),...Lr(e)}),zr=e=>({...Ur(e),...Dr(e)}),jr=e=>Array.isArray(e)?e:[e],qr=e=>{const t="#text";for(const r in e)e.hasOwnProperty(r)&&void 0!==e[r][t]?e[r]=e[r][t]:"object"==typeof e[r]&&null!==e[r]&&(e[r]=qr(e[r]));return e},Wr=e=>null!=e,Hr=function(){const e=Object.getPrototypeOf(this).constructor,t=new(Function.bind.apply(String,[null,...arguments]));return Object.setPrototypeOf(t,e.prototype),t};Hr.prototype=Object.create(String.prototype,{constructor:{value:Hr,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf(Hr,String);class Kr{trace(){}debug(){}info(){}warn(){}error(){}}function Vr(e,t,r){let n,i,o;if(void 0===t&&void 0===r)n={},o=e;else{if(n=e,"function"==typeof t)return i=t,o=r,Qr(n,i,o);o=t}for(const e of Object.keys(o))Array.isArray(o[e])?Gr(n,null,o,e):n[e]=o[e];return n}const Qr=(e,t,r)=>Vr(e,Object.entries(r).reduce(((e,[r,n])=>(Array.isArray(n)?e[r]=n:e[r]="function"==typeof n?[t,n()]:[t,n],e)),{})),Gr=(e,t,r,n)=>{if(null!==t){let i=r[n];"function"==typeof i&&(i=[,i]);const[o=Jr,s=Xr,a=n]=i;return void(("function"==typeof o&&o(t[a])||"function"!=typeof o&&o)&&(e[n]=s(t[a])))}let[i,o]=r[n];if("function"==typeof o){let t;const r=void 0===i&&null!=(t=o()),s="function"==typeof i&&!!i(void 0)||"function"!=typeof i&&!!i;r?e[n]=t:s&&(e[n]=o())}else{const t=void 0===i&&null!=o,r="function"==typeof i&&!!i(o)||"function"!=typeof i&&!!i;(t||r)&&(e[n]=o)}},Jr=e=>null!=e,Xr=e=>e;function Yr(e){return(e.includes(",")||e.includes('"'))&&(e=`"${e.replace(/"/g,'\\"')}"`),e}function Zr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var en={},tn={};!function(e){const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+t+"]["+(t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040")+"]*",n=new RegExp("^"+r+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,r){if(t){const n=Object.keys(t),i=n.length;for(let o=0;o5&&"xml"===n)return pn("InvalidXml","XML declaration allowed only at the start of the document.",mn(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function an(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let r=1;for(t+=8;t"===e[t]&&(r--,0===r))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t"===e[t+2]){t+=2;break}return t}en.validate=function(e,t){t=Object.assign({},nn,t);const r=[];let n=!1,i=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(let s=0;s"!==e[s]&&" "!==e[s]&&"\t"!==e[s]&&"\n"!==e[s]&&"\r"!==e[s];s++)u+=e[s];if(u=u.trim(),"/"===u[u.length-1]&&(u=u.substring(0,u.length-1),s--),o=u,!rn.isName(o)){let t;return t=0===u.trim().length?"Invalid space after '<'.":"Tag '"+u+"' is an invalid name.",pn("InvalidTag",t,mn(e,s))}const d=dn(e,s);if(!1===d)return pn("InvalidAttr","Attributes for '"+u+"' have open quote.",mn(e,s));let l=d.value;if(s=d.index,"/"===l[l.length-1]){const r=s-l.length;l=l.substring(0,l.length-1);const i=hn(l,t);if(!0!==i)return pn(i.err.code,i.err.msg,mn(e,r+i.err.line));n=!0}else if(c){if(!d.tagClosed)return pn("InvalidTag","Closing tag '"+u+"' doesn't have proper closing.",mn(e,s));if(l.trim().length>0)return pn("InvalidTag","Closing tag '"+u+"' can't have attributes or invalid starting.",mn(e,a));if(0===r.length)return pn("InvalidTag","Closing tag '"+u+"' has not been opened.",mn(e,a));{const t=r.pop();if(u!==t.tagName){let r=mn(e,t.tagStartPos);return pn("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+u+"'.",mn(e,a))}0==r.length&&(i=!0)}}else{const o=hn(l,t);if(!0!==o)return pn(o.err.code,o.err.msg,mn(e,s-l.length+o.err.line));if(!0===i)return pn("InvalidXml","Multiple possible root nodes found.",mn(e,s));-1!==t.unpairedTags.indexOf(u)||r.push({tagName:u,tagStartPos:a}),n=!0}for(s++;s0)||pn("InvalidXml","Invalid '"+JSON.stringify(r.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):pn("InvalidXml","Start tag expected.",1)};const cn='"',un="'";function dn(e,t){let r="",n="",i=!1;for(;t"===e[t]&&""===n){i=!0;break}r+=e[t]}return""===n&&{value:r,index:t,tagClosed:i}}const ln=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function hn(e,t){const r=rn.getAllMatches(e,ln),n={};for(let e=0;e!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,r){return e}};vn.buildOptions=function(e){return Object.assign({},bn,e)},vn.defaultOptions=bn;const wn=tn;function kn(e,t){let r="";for(;t"===e[t]){if(o?"-"===e[t-1]&&"-"===e[t-2]&&(o=!1,n--):n--,0===n)break}else"["===e[t]?i=!0:s+=e[t];else{if(i&&En(e,t))t+=7,[entityName,val,t]=kn(e,t+1),-1===val.indexOf("&")&&(r[Cn(entityName)]={regx:RegExp(`&${entityName};`,"g"),val:val});else if(i&&xn(e,t))t+=8;else if(i&&Tn(e,t))t+=8;else if(i&&An(e,t))t+=9;else{if(!Sn)throw new Error("Invalid DOCTYPE");o=!0}n++,s=""}if(0!==n)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:t}};const On=/^[-+]?0x[a-fA-F0-9]+$/,_n=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,Pn={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};const In=tn,Mn=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}},Nn=Rn,Fn=function(e,t={}){if(t=Object.assign({},Pn,t),!e||"string"!=typeof e)return e;let r=e.trim();if(void 0!==t.skipLike&&t.skipLike.test(r))return e;if("0"===e)return 0;if(t.hex&&On.test(r))return function(e,t){if(parseInt)return parseInt(e,t);if(Number.parseInt)return Number.parseInt(e,t);if(window&&window.parseInt)return window.parseInt(e,t);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r,16);if(-1!==r.search(/[eE]/)){const n=r.match(/^([-\+])?(0*)([0-9]*(\.[0-9]*)?[eE][-\+]?[0-9]+)$/);if(n){if(t.leadingZeros)r=(n[1]||"")+n[3];else if("0"!==n[2]||"."!==n[3][0])return e;return t.eNotation?Number(r):e}return e}{const n=_n.exec(r);if(n){const i=n[1],o=n[2];let s=function(e){if(e&&-1!==e.indexOf("."))return"."===(e=e.replace(/0+$/,""))?e="0":"."===e[0]?e="0"+e:"."===e[e.length-1]&&(e=e.substr(0,e.length-1)),e;return e}(n[3]);if(!t.leadingZeros&&o.length>0&&i&&"."!==r[2])return e;if(!t.leadingZeros&&o.length>0&&!i&&"."!==r[1])return e;if(t.leadingZeros&&o===e)return 0;{const n=Number(r),a=""+n;return-1!==a.search(/[eE]/)?t.eNotation?n:e:-1!==r.indexOf(".")?"0"===a&&""===s||a===s||i&&a==="-"+s?n:e:o?s===a||i+s===a?n:e:r===a||r===i+a?n:e}}return e}};function $n(e){const t=Object.keys(e);for(let r=0;r0)){s||(e=this.replaceEntitiesValue(e));const n=this.options.tagValueProcessor(t,e,r,i,o);if(null==n)return e;if(typeof n!=typeof e||n!==e)return n;if(this.options.trimValues)return Gn(e,this.options.parseTagValue,this.options.numberParseOptions);return e.trim()===e?Gn(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function Ln(e){if(this.options.removeNSPrefix){const t=e.split(":"),r="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=r+t[1])}return e}const Dn=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function Bn(e,t,r){if(!this.options.ignoreAttributes&&"string"==typeof e){const r=In.getAllMatches(e,Dn),n=r.length,i={};for(let e=0;e",o,"Closing Tag is not closed.");let s=e.substring(o+2,t).trim();if(this.options.removeNSPrefix){const e=s.indexOf(":");-1!==e&&(s=s.substr(e+1))}this.options.transformTagName&&(s=this.options.transformTagName(s)),r&&(n=this.saveTextToParentTag(n,r,i));const a=i.substring(i.lastIndexOf(".")+1);if(s&&-1!==this.options.unpairedTags.indexOf(s))throw new Error(`Unpaired tag can not be used as closing tag: `);let c=0;a&&-1!==this.options.unpairedTags.indexOf(a)?(c=i.lastIndexOf(".",i.lastIndexOf(".")-1),this.tagsNodeStack.pop()):c=i.lastIndexOf("."),i=i.substring(0,c),r=this.tagsNodeStack.pop(),n="",o=t}else if("?"===e[o+1]){let t=Vn(e,o,!1,"?>");if(!t)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,i),this.options.ignoreDeclaration&&"?xml"===t.tagName||this.options.ignorePiTags);else{const e=new Mn(t.tagName);e.add(this.options.textNodeName,""),t.tagName!==t.tagExp&&t.attrExpPresent&&(e[":@"]=this.buildAttributesMap(t.tagExp,i,t.tagName)),this.addChild(r,e,i)}o=t.closeIndex+1}else if("!--"===e.substr(o+1,3)){const t=Kn(e,"--\x3e",o+4,"Comment is not closed.");if(this.options.commentPropName){const s=e.substring(o+4,t-2);n=this.saveTextToParentTag(n,r,i),r.add(this.options.commentPropName,[{[this.options.textNodeName]:s}])}o=t}else if("!D"===e.substr(o+1,2)){const t=Nn(e,o);this.docTypeEntities=t.entities,o=t.i}else if("!["===e.substr(o+1,2)){const t=Kn(e,"]]>",o,"CDATA is not closed.")-2,s=e.substring(o+9,t);n=this.saveTextToParentTag(n,r,i);let a=this.parseTextData(s,r.tagname,i,!0,!1,!0,!0);null==a&&(a=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[{[this.options.textNodeName]:s}]):r.add(this.options.textNodeName,a),o=t+2}else{let s=Vn(e,o,this.options.removeNSPrefix),a=s.tagName;const c=s.rawTagName;let u=s.tagExp,d=s.attrExpPresent,l=s.closeIndex;this.options.transformTagName&&(a=this.options.transformTagName(a)),r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,i,!1));const h=r;if(h&&-1!==this.options.unpairedTags.indexOf(h.tagname)&&(r=this.tagsNodeStack.pop(),i=i.substring(0,i.lastIndexOf("."))),a!==t.tagname&&(i+=i?"."+a:a),this.isItStopNode(this.options.stopNodes,i,a)){let t="";if(u.length>0&&u.lastIndexOf("/")===u.length-1)"/"===a[a.length-1]?(a=a.substr(0,a.length-1),i=i.substr(0,i.length-1),u=a):u=u.substr(0,u.length-1),o=s.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(a))o=s.closeIndex;else{const r=this.readStopNodeData(e,c,l+1);if(!r)throw new Error(`Unexpected end of ${c}`);o=r.i,t=r.tagContent}const n=new Mn(a);a!==u&&d&&(n[":@"]=this.buildAttributesMap(u,i,a)),t&&(t=this.parseTextData(t,a,i,!0,d,!0,!0)),i=i.substr(0,i.lastIndexOf(".")),n.add(this.options.textNodeName,t),this.addChild(r,n,i)}else{if(u.length>0&&u.lastIndexOf("/")===u.length-1){"/"===a[a.length-1]?(a=a.substr(0,a.length-1),i=i.substr(0,i.length-1),u=a):u=u.substr(0,u.length-1),this.options.transformTagName&&(a=this.options.transformTagName(a));const e=new Mn(a);a!==u&&d&&(e[":@"]=this.buildAttributesMap(u,i,a)),this.addChild(r,e,i),i=i.substr(0,i.lastIndexOf("."))}else{const e=new Mn(a);this.tagsNodeStack.push(r),a!==u&&d&&(e[":@"]=this.buildAttributesMap(u,i,a)),this.addChild(r,e,i),r=e}n="",o=l}}else n+=e[o]}return t.child};function jn(e,t,r){const n=this.options.updateTag(t.tagname,r,t[":@"]);!1===n||("string"==typeof n?(t.tagname=n,e.addChild(t)):e.addChild(t))}const qn=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const r=this.docTypeEntities[t];e=e.replace(r.regx,r.val)}for(let t in this.lastEntities){const r=this.lastEntities[t];e=e.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const r=this.htmlEntities[t];e=e.replace(r.regex,r.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function Wn(e,t,r,n){return e&&(void 0===n&&(n=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,r,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,n))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function Hn(e,t,r){const n="*."+r;for(const r in e){const i=e[r];if(n===i||t===i)return!0}return!1}function Kn(e,t,r,n){const i=e.indexOf(t,r);if(-1===i)throw new Error(n);return i+t.length-1}function Vn(e,t,r,n=">"){const i=function(e,t,r=">"){let n,i="";for(let o=t;o",r,`${t} is not closed`);if(e.substring(r+2,o).trim()===t&&(i--,0===i))return{tagContent:e.substring(n,r),i:o};r=o}else if("?"===e[r+1]){r=Kn(e,"?>",r+1,"StopNode is not closed.")}else if("!--"===e.substr(r+1,3)){r=Kn(e,"--\x3e",r+3,"StopNode is not closed.")}else if("!["===e.substr(r+1,2)){r=Kn(e,"]]>",r,"StopNode is not closed.")-2}else{const n=Vn(e,r,">");if(n){(n&&n.tagName)===t&&"/"!==n.tagExp[n.tagExp.length-1]&&i++,r=n.closeIndex}}}function Gn(e,t,r){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&Fn(e,r)}return In.isExist(e)?e:""}var Jn=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=$n,this.parseXml=zn,this.parseTextData=Un,this.resolveNameSpace=Ln,this.buildAttributesMap=Bn,this.isItStopNode=Hn,this.replaceEntitiesValue=qn,this.readStopNodeData=Qn,this.saveTextToParentTag=Wn,this.addChild=jn}},Xn={};function Yn(e,t,r){let n;const i={};for(let o=0;o0&&(i[t.textNodeName]=n):void 0!==n&&(i[t.textNodeName]=n),i}function Zn(e){const t=Object.keys(e);for(let e=0;e`,o=!1;continue}if(c===t.commentPropName){i+=n+`\x3c!--${a[c][0][t.textNodeName]}--\x3e`,o=!0;continue}if("?"===c[0]){const e=ui(a[":@"],t),r="?xml"===c?"":n;let s=a[c][0][t.textNodeName];s=0!==s.length?" "+s:"",i+=r+`<${c}${s}${e}?>`,o=!0;continue}let d=n;""!==d&&(d+=t.indentBy);const l=n+`<${c}${ui(a[":@"],t)}`,h=ai(a[c],t,u,d);-1!==t.unpairedTags.indexOf(c)?t.suppressUnpairedNode?i+=l+">":i+=l+"/>":h&&0!==h.length||!t.suppressEmptyNode?h&&h.endsWith(">")?i+=l+`>${h}${n}`:(i+=l+">",h&&""!==n&&(h.includes("/>")||h.includes("`):i+=l+"/>",o=!0}return i}function ci(e){const t=Object.keys(e);for(let r=0;r0&&t.processEntities)for(let r=0;r0&&(r="\n"),ai(e,t,"",r)},fi={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function pi(e){this.options=Object.assign({},fi,e),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=yi),this.processTextOrObjNode=gi,this.options.format?(this.indentate=mi,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function gi(e,t,r){const n=this.j2x(e,r+1);return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,n.attrStr,r):this.buildObjectNode(n.val,t,n.attrStr,r)}function mi(e){return this.options.indentBy.repeat(e)}function yi(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}pi.prototype.build=function(e){return this.options.preserveOrder?hi(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0).val)},pi.prototype.j2x=function(e,t){let r="",n="";for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i))if(void 0===e[i])this.isAttribute(i)&&(n+="");else if(null===e[i])this.isAttribute(i)?n+="":"?"===i[0]?n+=this.indentate(t)+"<"+i+"?"+this.tagEndChar:n+=this.indentate(t)+"<"+i+"/"+this.tagEndChar;else if(e[i]instanceof Date)n+=this.buildTextValNode(e[i],i,"",t);else if("object"!=typeof e[i]){const o=this.isAttribute(i);if(o)r+=this.buildAttrPairStr(o,""+e[i]);else if(i===this.options.textNodeName){let t=this.options.tagValueProcessor(i,""+e[i]);n+=this.replaceEntitiesValue(t)}else n+=this.buildTextValNode(e[i],i,"",t)}else if(Array.isArray(e[i])){const r=e[i].length;let o="",s="";for(let a=0;a"+e+i}},pi.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(n)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(n)+"<"+t+r+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),""===i?this.indentate(n)+"<"+t+r+this.closeTag(t)+this.tagEndChar:this.indentate(n)+"<"+t+r+">"+i+"0&&this.options.processEntities)for(let t=0;t((e,t)=>Xe(e,t).then((e=>t.utf8Encoder(e))))(e,t).then((e=>{if(e.length){const t=new vi.XMLParser({attributeNamePrefix:"",htmlEntities:!0,ignoreAttributes:!1,ignoreDeclaration:!0,parseTagValue:!1,trimValues:!1,tagValueProcessor:(e,t)=>""===t.trim()&&t.includes("\n")?"":void 0});let r;t.addEntity("#xD","\r"),t.addEntity("#10","\n");try{r=t.parse(e,!0)}catch(t){throw t&&"object"==typeof t&&Object.defineProperty(t,"$responseBodyText",{value:e}),t}const n="#text",i=Object.keys(r)[0],o=r[i];return o[n]&&(o[i]=o[n],delete o[n]),qr(o)}return{}})),wi=async(e,t)=>{const r=await bi(e,t);return r.Error&&(r.Error.message=r.Error.message??r.Error.Message),r},ki=[Z.CRC32,Z.CRC32C,Z.SHA1,Z.SHA256],Si=[Z.SHA256,Z.SHA1,Z.CRC32,Z.CRC32C],Ei=e=>e===Z.MD5?"content-md5":`x-amz-checksum-${e.toLowerCase()}`,xi=e=>void 0!==e&&"string"!=typeof e&&!ArrayBuffer.isView(e)&&!Tt(e);function Ti(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function Ai(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1](new TextEncoder).encode(e);function Ri(e){return e instanceof Uint8Array?e:"string"==typeof e?Ci(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}function Oi(e){return"string"==typeof e?0===e.length:0===e.byteLength}function _i(e){return new Uint8Array([(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])}function Pi(e){if(!Uint32Array.from){for(var t=new Uint32Array(e.length),r=0;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),i=n.next();!i.done;i=n.next()){var o=i.value;this.checksum=this.checksum>>>8^Ni[255&(this.checksum^o)]}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return this},e.prototype.digest=function(){return(4294967295^this.checksum)>>>0},e}(),Ni=Pi([0,4067132163,3778769143,324072436,3348797215,904991772,648144872,3570033899,2329499855,2024987596,1809983544,2575936315,1296289744,3207089363,2893594407,1578318884,274646895,3795141740,4049975192,51262619,3619967088,632279923,922689671,3298075524,2592579488,1760304291,2075979607,2312596564,1562183871,2943781820,3156637768,1313733451,549293790,3537243613,3246849577,871202090,3878099393,357341890,102525238,4101499445,2858735121,1477399826,1264559846,3107202533,1845379342,2677391885,2361733625,2125378298,820201905,3263744690,3520608582,598981189,4151959214,85089709,373468761,3827903834,3124367742,1213305469,1526817161,2842354314,2107672161,2412447074,2627466902,1861252501,1098587580,3004210879,2688576843,1378610760,2262928035,1955203488,1742404180,2511436119,3416409459,969524848,714683780,3639785095,205050476,4266873199,3976438427,526918040,1361435347,2739821008,2954799652,1114974503,2529119692,1691668175,2005155131,2247081528,3690758684,697762079,986182379,3366744552,476452099,3993867776,4250756596,255256311,1640403810,2477592673,2164122517,1922457750,2791048317,1412925310,1197962378,3037525897,3944729517,427051182,170179418,4165941337,746937522,3740196785,3451792453,1070968646,1905808397,2213795598,2426610938,1657317369,3053634322,1147748369,1463399397,2773627110,4215344322,153784257,444234805,3893493558,1021025245,3467647198,3722505002,797665321,2197175160,1889384571,1674398607,2443626636,1164749927,3070701412,2757221520,1446797203,137323447,4198817972,3910406976,461344835,3484808360,1037989803,781091935,3705997148,2460548119,1623424788,1939049696,2180517859,1429367560,2807687179,3020495871,1180866812,410100952,3927582683,4182430767,186734380,3756733383,763408580,1053836080,3434856499,2722870694,1344288421,1131464017,2971354706,1708204729,2545590714,2229949006,1988219213,680717673,3673779818,3383336350,1002577565,4010310262,493091189,238226049,4233660802,2987750089,1082061258,1395524158,2705686845,1972364758,2279892693,2494862625,1725896226,952904198,3399985413,3656866545,731699698,4283874585,222117402,510512622,3959836397,3280807620,837199303,582374963,3504198960,68661723,4135334616,3844915500,390545967,1230274059,3141532936,2825850620,1510247935,2395924756,2091215383,1878366691,2644384480,3553878443,565732008,854102364,3229815391,340358836,3861050807,4117890627,119113024,1493875044,2875275879,3090270611,1247431312,2660249211,1828433272,2141937292,2378227087,3811616794,291187481,34330861,4032846830,615137029,3603020806,3314634738,939183345,1776939221,2609017814,2295496738,2058945313,2926798794,1545135305,1330124605,3173225534,4084100981,17165430,307568514,3762199681,888469610,3332340585,3587147933,665062302,2042050490,2346497209,2559330125,1793573966,3190661285,1279665062,1595330642,2910671697]);function Fi(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function $i(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),i=n.next();!i.done;i=n.next()){var o=i.value;this.checksum=this.checksum>>>8^Di[255&(this.checksum^o)]}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return this},e.prototype.digest=function(){return(4294967295^this.checksum)>>>0},e}(),Di=Pi([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);const Bi=(e,t)=>({[Z.MD5]:t.md5,[Z.CRC32]:Ui,[Z.CRC32C]:Ii,[Z.SHA1]:t.sha1,[Z.SHA256]:t.sha256}[e]),zi=(e,t)=>{const r=new e;return r.update(Re(t||"")),r.digest()},ji={name:"flexibleChecksumsMiddleware",step:"build",tags:["BODY_CHECKSUM"],override:!0},qi=(e,t)=>(r,n)=>async i=>{if(!K.isInstance(i.request))return r(i);const{request:o,input:s}=i,{body:a,headers:c}=o,{base64Encoder:u,streamHasher:d}=e,{requestChecksumRequired:l,requestAlgorithmMember:h}=t,f=((e,{requestChecksumRequired:t,requestAlgorithmMember:r},n)=>{const i=n?re:te;if(!r||!e[r])return t?i:void 0;const o=e[r];if(!ki.includes(o))throw new Error(`The checksum algorithm "${o}" is not supported by the client. Select one of ${ki}.`);return o})(s,{requestChecksumRequired:l,requestAlgorithmMember:h},!!n.isS3ExpressBucket);let p=a,g=c;if(f){switch(f){case Z.CRC32:ie(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32","U");break;case Z.CRC32C:ie(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32C","V");break;case Z.SHA1:ie(n,"FLEXIBLE_CHECKSUMS_REQ_SHA1","X");break;case Z.SHA256:ie(n,"FLEXIBLE_CHECKSUMS_REQ_SHA256","Y")}const t=Ei(f),r=Bi(f,e);if(xi(a)){const{getAwsChunkedEncodingStream:n,bodyLengthChecker:i}=e;p=n(a,{base64Encoder:u,bodyLengthChecker:i,checksumLocationName:t,checksumAlgorithmFn:r,streamHasher:d}),g={...c,"content-encoding":c["content-encoding"]?`${c["content-encoding"]},aws-chunked`:"aws-chunked","transfer-encoding":"chunked","x-amz-decoded-content-length":c["content-length"],"x-amz-content-sha256":"STREAMING-UNSIGNED-PAYLOAD-TRAILER","x-amz-trailer":t},delete g["content-length"]}else if(!((e,t)=>{const r=e.toLowerCase();for(const e of Object.keys(t))if(r===e.toLowerCase())return!0;return!1})(t,c)){const e=await zi(r,a);g={...c,[t]:u(e)}}}return await r({...i,request:{...o,headers:g,body:p}})},Wi=(e=[])=>{const t=[];for(const r of Si)e.includes(r)&&ki.includes(r)&&t.push(r);return t};function Hi(e){return new Blob([e]).stream()}const Ki=async(e,{checksumAlgorithmFn:t,base64Encoder:r})=>r(await zi(t,e)),Vi={name:"flexibleChecksumsResponseMiddleware",toMiddleware:"deserializerMiddleware",relation:"after",tags:["BODY_CHECKSUM"],override:!0},Qi=(e,t)=>(r,n)=>async i=>{if(!K.isInstance(i.request))return r(i);const o=i.input,s=await r(i),a=s.response;let c;const{requestValidationModeMember:u,responseAlgorithms:d}=t;if(u&&"ENABLED"===o[u]){const{clientName:t,commandName:r}=n;if("S3Client"===t&&"GetObjectCommand"===r&&Wi(d).every((e=>{const t=Ei(e),r=a.headers[t];return!r||(e=>{const t=e.lastIndexOf("-");if(-1!==t){const r=e.slice(t+1);if(!r.startsWith("0")){const e=parseInt(r,10);if(!isNaN(e)&&e>=1&&e<=1e4)return!0}}return!1})(r)})))return s;const i=xi(a.body);i&&(c=await e.streamCollector(a.body),a.body=Hi(c)),await(async(e,{config:t,responseAlgorithms:r})=>{const n=Wi(r),{body:i,headers:o}=e;for(const r of n){const n=Ei(r),s=o[n];if(s){const o=Bi(r,t),{base64Encoder:a}=t;if(xi(i))return void(e.body=Je({expectedChecksum:s,checksumSourceLocation:n,checksum:new o,source:i,base64Encoder:a}));const c=await Ki(i,{checksumAlgorithmFn:o,base64Encoder:a});if(c===s)break;throw new Error(`Checksum mismatch: expected "${c}" but received "${s}" in response header "${n}".`)}}})(s.response,{config:e,responseAlgorithms:d}),i&&c&&(a.body=Hi(c))}return s},Gi=(e,t)=>({applyToStack:r=>{r.add(qi(e,t),ji),r.addRelativeTo(Qi(e,t),Vi)}});const Ji={name:"hostHeaderMiddleware",step:"build",priority:"low",tags:["HOST"],override:!0},Xi=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{if(!K.isInstance(r.request))return t(r);const{request:n}=r,{handlerProtocol:i=""}=e.requestHandler.metadata||{};if(i.indexOf("h2")>=0&&!n.headers[":authority"])delete n.headers.host,n.headers[":authority"]=n.hostname+(n.port?":"+n.port:"");else if(!n.headers.host){let e=n.hostname;null!=n.port&&(e+=`:${n.port}`),n.headers.host=e}return t(r)})(e),Ji)}}),Yi={name:"loggerMiddleware",tags:["LOGGER"],step:"initialize",override:!0},Zi="X-Amzn-Trace-Id",eo={step:"build",tags:["RECURSION_DETECTION"],name:"recursionDetectionMiddleware",override:!0,priority:"low"},to=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{const{request:n}=r;if(!K.isInstance(n)||"node"!==e.runtime||n.headers.hasOwnProperty(Zi))return t(r);const i=process.env.AWS_LAMBDA_FUNCTION_NAME,o=process.env._X_AMZN_TRACE_ID,s=e=>"string"==typeof e&&e.length>0;return s(i)&&s(o)&&(n.headers[Zi]=o),t({...r,request:n})})(e),eo)}});const ro={step:"finalizeRequest",tags:["CHECK_CONTENT_LENGTH_HEADER"],name:"getCheckContentLengthHeaderPlugin",override:!0},no=e=>({applyToStack:e=>{e.add(((e,t)=>async r=>{const{request:n}=r;if(K.isInstance(n)&&!("content-length"in n.headers)){const e="Are you using a Stream of unknown length as the Body of a PutObject request? Consider using Upload instead from @aws-sdk/lib-storage.";"function"!=typeof t?.logger?.warn||t.logger instanceof Kr?console.warn(e):t.logger.warn(e)}return e({...r})}),ro)}}),io={tags:["REGION_REDIRECT","S3"],name:"regionRedirectEndpointMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"};const oo={step:"initialize",tags:["REGION_REDIRECT","S3"],name:"regionRedirectMiddleware",override:!0},so=e=>({applyToStack:t=>{t.add(function(e){return(t,r)=>async n=>{try{return await t(n)}catch(i){if(e.followRegionRedirects&&(301===i?.$metadata?.httpStatusCode||400===i?.$metadata?.httpStatusCode&&"IllegalLocationConstraintException"===i?.name)){try{const t=i.$response.headers["x-amz-bucket-region"];r.logger?.debug(`Redirecting from ${await e.region()} to ${t}`),r.__s3RegionRedirect=t}catch(e){throw new Error("Region redirect failed: "+e)}return t(n)}throw i}}}(e),oo),t.addRelativeTo((e=>(t,r)=>async n=>{const i=await e.region(),o=e.region;let s=()=>{};r.__s3RegionRedirect&&(Object.defineProperty(e,"region",{writable:!1,value:async()=>r.__s3RegionRedirect}),s=()=>Object.defineProperty(e,"region",{writable:!0,value:o}));try{const o=await t(n);if(r.__s3RegionRedirect&&(s(),i!==await e.region()))throw new Error("Region was not restored following S3 region redirect.");return o}catch(e){throw s(),e}})(e),io)}}),ao={tags:["S3"],name:"s3ExpiresMiddleware",override:!0,relation:"after",toMiddleware:"deserializerMiddleware"},co=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{const n=await e(r),{response:i}=n;if(V.isInstance(i)&&i.headers.expires){i.headers.expiresstring=i.headers.expires;try{wr(i.headers.expires)}catch(e){t.logger?.warn(`AWS SDK Warning for ${t.clientName}::${t.commandName} response parsing (${i.headers.expires}): ${e}`),delete i.headers.expires}}return n}),ao)}});class uo{constructor(e={}){this.data=e,this.lastPurgeTime=Date.now()}get(e){const t=this.data[e];if(t)return t}set(e,t){return this.data[e]=t,t}delete(e){delete this.data[e]}async purgeExpired(){const e=Date.now();if(!(this.lastPurgeTime+uo.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS>e))for(const t in this.data){const r=this.data[t];if(!r.isRefreshing){const n=await r.identity;n.expiration&&n.expiration.getTime(){if((e.expiration?.getTime()??0){n.set(r,new lo(Promise.resolve(e)))}))),e})):n.set(r,new lo(this.getIdentity(r))).identity}async getIdentity(e){await this.cache.purgeExpired().catch((e=>{console.warn("Error while clearing expired entries in S3ExpressIdentityCache: \n"+e)}));const t=await this.createSessionFn(e);if(!t.Credentials?.AccessKeyId||!t.Credentials?.SecretAccessKey)throw new Error("s3#createSession response credential missing AccessKeyId or SecretAccessKey.");return{accessKeyId:t.Credentials.AccessKeyId,secretAccessKey:t.Credentials.SecretAccessKey,sessionToken:t.Credentials.SessionToken,expiration:t.Credentials.Expiration?new Date(t.Credentials.Expiration):void 0}}}var fo;ho.REFRESH_WINDOW_MS=6e4,function(e){e.ENV="env",e.CONFIG="shared config entry"}(fo||(fo={}));const po="X-Amz-S3session-Token",go=po.toLowerCase();class mo extends Nt{async signWithCredentials(e,t,r){const n=yo(t);e.headers[go]=t.sessionToken;return vo(this,n),this.signRequest(e,r??{})}async presignWithCredentials(e,t,r){const n=yo(t);delete e.headers[go],e.headers[po]=t.sessionToken,e.query=e.query??{},e.query[po]=t.sessionToken;return vo(this,n),this.presign(e,r)}}function yo(e){return{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,expiration:e.expiration}}function vo(e,t){const r=setTimeout((()=>{throw new Error("SignatureV4S3Express credential override was created but not called.")}),10),n=e.credentialProvider;e.credentialProvider=()=>(clearTimeout(r),e.credentialProvider=n,Promise.resolve(t))}const bo={name:"s3ExpressMiddleware",step:"build",tags:["S3","S3_EXPRESS"],override:!0},wo=e=>({applyToStack:t=>{t.add((e=>(t,r)=>async n=>{if(r.endpointV2){const t=r.endpointV2,i="sigv4-s3express"===t.properties?.authSchemes?.[0]?.name;if(("S3Express"===t.properties?.backend||"Directory"===t.properties?.bucketType)&&(ie(r,"S3_EXPRESS_BUCKET","J"),r.isS3ExpressBucket=!0),i){const t=n.input.Bucket;if(t){const i=await e.s3ExpressIdentityProvider.getS3ExpressIdentity(await e.credentials(),{Bucket:t});r.s3ExpressIdentity=i,K.isInstance(n.request)&&i.sessionToken&&(n.request.headers[go]=i.sessionToken)}}}return t(n)})(e),bo)}}),ko=e=>e=>{throw e},So=(e,t)=>{},Eo=e=>(t,r)=>async n=>{if(!K.isInstance(n.request))return t(n);const i=he(r).selectedHttpAuthScheme;if(!i)throw new Error("No HttpAuthScheme was selected: unable to sign request");const{httpAuthOption:{signingProperties:o={}},identity:s,signer:a}=i;let c;c=r.s3ExpressIdentity?await(async(e,t,r,n)=>{const i=await n.signWithCredentials(r,e,{});if(i.headers["X-Amz-Security-Token"]||i.headers["x-amz-security-token"])throw new Error("X-Amz-Security-Token must not be set for s3-express requests.");return i})(r.s3ExpressIdentity,0,n.request,await e.signer()):await a.sign(n.request,s,o);const u=await t({...n,request:c}).catch((a.errorHandler||ko)(o));return(a.successHandler||So)(u.response,o),u},xo={CopyObjectCommand:!0,UploadPartCopyCommand:!0,CompleteMultipartUploadCommand:!0},To=e=>(t,r)=>async n=>{const i=await t(n),{response:o}=i;if(!V.isInstance(o))return i;const{statusCode:s,body:a}=o;if(s<200||s>=300)return i;if(!("function"==typeof a?.stream||"function"==typeof a?.pipe||"function"==typeof a?.tee))return i;let c=a,u=a;!a||"object"!=typeof a||a instanceof Uint8Array||([c,u]=await async function(e){return"function"==typeof e.stream&&(e=e.stream()),e.tee()}(a)),o.body=u;const d=await Ao(c,{streamCollector:async e=>async function(e,t){let r=0;const n=[],i=e.getReader();let o=!1;for(;!o;){const{done:e,value:s}=await i.read();if(s&&(n.push(s),r+=s?.byteLength??0),r>=t)break;o=e}i.releaseLock();const s=new Uint8Array(Math.min(t,r));let a=0;for(const e of n){if(e.byteLength>s.byteLength-a){s.set(e.subarray(0,s.byteLength-a),a);break}s.set(e,a),a+=e.length}return s}(e,3e3)});"function"==typeof c?.destroy&&c.destroy();const l=e.utf8Encoder(d.subarray(d.length-16));if(0===d.length&&xo[r.commandName]){const e=new Error("S3 aborted request");throw e.name="InternalError",e}return l&&l.endsWith("")&&(o.statusCode=400),i},Ao=(e=new Uint8Array,t)=>e instanceof Uint8Array?Promise.resolve(e):t.streamCollector(e)||Promise.resolve(new Uint8Array),Co={relation:"after",toMiddleware:"deserializerMiddleware",tags:["THROW_200_EXCEPTIONS","S3"],name:"throw200ExceptionsMiddleware",override:!0},Ro=e=>({applyToStack:t=>{t.addRelativeTo(To(e),Co)}});const Oo={name:"bucketEndpointMiddleware",override:!0,relation:"after",toMiddleware:"endpointV2Middleware"};const _o={step:"initialize",tags:["VALIDATE_BUCKET_NAME"],name:"validateBucketNameMiddleware",override:!0},Po=e=>({applyToStack:t=>{t.add(function({bucketEndpoint:e}){return t=>async r=>{const{input:{Bucket:n}}=r;if(!e&&"string"==typeof n&&!("string"==typeof(i=n)&&0===i.indexOf("arn:")&&i.split(":").length>=6)&&n.indexOf("/")>=0){const e=new Error(`Bucket name shouldn't contain '/', received '${n}'`);throw e.name="InvalidBucketName",e}var i;return t({...r})}}(e),_o),t.addRelativeTo(function(e){return(t,r)=>async n=>{if(e.bucketEndpoint){const e=r.endpointV2;if(e){const t=n.input.Bucket;if("string"==typeof t)try{const n=new URL(t);r.endpointV2={...e,url:n}}catch(e){const n=`@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${t} could not be parsed as URL.`;throw"NoOpLogger"===r.logger?.constructor?.name?console.warn(n):r.logger?.warn?.(n),e}}}return t(n)}}(e),Oo)}});const Io=new RegExp("^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$"),Mo=e=>Io.test(e)||e.startsWith("[")&&e.endsWith("]"),No=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),Fo=(e,t=!1)=>{if(!t)return No.test(e);const r=e.split(".");for(const e of r)if(!Fo(e))return!1;return!0},$o={},Uo="endpoints";function Lo(e){return"object"!=typeof e||null==e?e:"ref"in e?`$${Lo(e.ref)}`:"fn"in e?`${e.fn}(${(e.argv||[]).map(Lo).join(", ")})`:JSON.stringify(e,null,2)}class Do extends Error{constructor(e){super(e),this.name="EndpointError"}}const Bo=(e,t)=>(e=>{const t=e.split("."),r=[];for(const n of t){const t=n.indexOf("[");if(-1!==t){if(n.indexOf("]")!==n.length-1)throw new Do(`Path: '${e}' does not end with ']'`);const i=n.slice(t+1,-1);if(Number.isNaN(parseInt(i)))throw new Do(`Invalid array index: '${i}' in path: '${e}'`);0!==t&&r.push(n.slice(0,t)),r.push(i)}else r.push(n)}return r})(t).reduce(((r,n)=>{if("object"!=typeof r)throw new Do(`Index '${n}' in '${t}' not found in '${JSON.stringify(e)}'`);return Array.isArray(r)?r[parseInt(n)]:r[n]}),e),zo={[B.HTTP]:80,[B.HTTPS]:443},jo={booleanEquals:(e,t)=>e===t,getAttr:Bo,isSet:e=>null!=e,isValidHostLabel:Fo,not:e=>!e,parseURL:e=>{const t=(()=>{try{if(e instanceof URL)return e;if("object"==typeof e&&"hostname"in e){const{hostname:t,port:r,protocol:n="",path:i="",query:o={}}=e,s=new URL(`${n}//${t}${r?`:${r}`:""}${i}`);return s.search=Object.entries(o).map((([e,t])=>`${e}=${t}`)).join("&"),s}return new URL(e)}catch(e){return null}})();if(!t)return console.error(`Unable to parse ${JSON.stringify(e)} as a whatwg URL.`),null;const r=t.href,{host:n,hostname:i,pathname:o,protocol:s,search:a}=t;if(a)return null;const c=s.slice(0,-1);if(!Object.values(B).includes(c))return null;const u=Mo(i);return{scheme:c,authority:`${n}${r.includes(`${n}:${zo[c]}`)||"string"==typeof e&&e.includes(`${n}:${zo[c]}`)?`:${zo[c]}`:""}`,path:o,normalizedPath:o.endsWith("/")?o:`${o}/`,isIp:u}},stringEquals:(e,t)=>e===t,substring:(e,t,r,n)=>t>=r||e.lengthencodeURIComponent(e).replace(/[!*'()]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`))},qo=(e,t)=>{const r=[],n={...t.endpointParams,...t.referenceRecord};let i=0;for(;i{if("string"==typeof e)return qo(e,r);if(e.fn)return Ho(e,r);if(e.ref)return(({ref:e},t)=>({...t.endpointParams,...t.referenceRecord}[e]))(e,r);throw new Do(`'${t}': ${String(e)} is not a string, function or reference.`)},Ho=({fn:e,argv:t},r)=>{const n=t.map((e=>["boolean","number"].includes(typeof e)?e:Wo(e,"arg",r))),i=e.split(".");return i[0]in $o&&null!=i[1]?$o[i[0]][i[1]](...n):jo[e](...n)},Ko=({assign:e,...t},r)=>{if(e&&e in r.referenceRecord)throw new Do(`'${e}' is already defined in Reference Record.`);const n=Ho(t,r);return r.logger?.debug?.(`${Uo} evaluateCondition: ${Lo(t)} = ${Lo(n)}`),{result:""===n||!!n,...null!=e&&{toAssign:{name:e,value:n}}}},Vo=(e=[],t)=>{const r={};for(const n of e){const{result:e,toAssign:i}=Ko(n,{...t,referenceRecord:{...t.referenceRecord,...r}});if(!e)return{result:e};i&&(r[i.name]=i.value,t.logger?.debug?.(`${Uo} assign: ${i.name} := ${Lo(i.value)}`))}return{result:!0,referenceRecord:r}},Qo=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:n.map((e=>{const n=Wo(e,"Header value entry",t);if("string"!=typeof n)throw new Do(`Header '${r}' value '${n}' is not a string`);return n}))})),{}),Go=(e,t)=>{if(Array.isArray(e))return e.map((e=>Go(e,t)));switch(typeof e){case"string":return qo(e,t);case"object":if(null===e)throw new Do(`Unexpected endpoint property: ${e}`);return Jo(e,t);case"boolean":return e;default:throw new Do("Unexpected endpoint property type: "+typeof e)}},Jo=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:Go(n,t)})),{}),Xo=(e,t)=>{const r=Wo(e,"Endpoint URL",t);if("string"==typeof r)try{return new URL(r)}catch(e){throw console.error(`Failed to construct URL with ${r}`,e),e}throw new Do("Endpoint URL must be a string, got "+typeof r)},Yo=(e,t)=>{const{conditions:r,endpoint:n}=e,{result:i,referenceRecord:o}=Vo(r,t);if(!i)return;const s={...t,referenceRecord:{...t.referenceRecord,...o}},{url:a,properties:c,headers:u}=n;return t.logger?.debug?.(`${Uo} Resolving endpoint from template: ${Lo(n)}`),{...null!=u&&{headers:Qo(u,s)},...null!=c&&{properties:Jo(c,s)},url:Xo(a,s)}},Zo=(e,t)=>{const{conditions:r,error:n}=e,{result:i,referenceRecord:o}=Vo(r,t);if(i)throw new Do(Wo(n,"Error",{...t,referenceRecord:{...t.referenceRecord,...o}}))},es=(e,t)=>{const{conditions:r,rules:n}=e,{result:i,referenceRecord:o}=Vo(r,t);if(i)return ts(n,{...t,referenceRecord:{...t.referenceRecord,...o}})},ts=(e,t)=>{for(const r of e)if("endpoint"===r.type){const e=Yo(r,t);if(e)return e}else if("error"===r.type)Zo(r,t);else{if("tree"!==r.type)throw new Do(`Unknown endpoint rule: ${r}`);{const e=es(r,t);if(e)return e}}throw new Do("Rules evaluation failed")},rs=(e,t=!1)=>{if(t){for(const t of e.split("."))if(!rs(t))return!1;return!0}return!!Fo(e)&&(!(e.length<3||e.length>63)&&(e===e.toLowerCase()&&!Mo(e)))};let ns={partitions:[{id:"aws",outputs:{dnsSuffix:"amazonaws.com",dualStackDnsSuffix:"api.aws",implicitGlobalRegion:"us-east-1",name:"aws",supportsDualStack:!0,supportsFIPS:!0},regionRegex:"^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$",regions:{"af-south-1":{description:"Africa (Cape Town)"},"ap-east-1":{description:"Asia Pacific (Hong Kong)"},"ap-northeast-1":{description:"Asia Pacific (Tokyo)"},"ap-northeast-2":{description:"Asia Pacific (Seoul)"},"ap-northeast-3":{description:"Asia Pacific (Osaka)"},"ap-south-1":{description:"Asia Pacific (Mumbai)"},"ap-south-2":{description:"Asia Pacific (Hyderabad)"},"ap-southeast-1":{description:"Asia Pacific (Singapore)"},"ap-southeast-2":{description:"Asia Pacific (Sydney)"},"ap-southeast-3":{description:"Asia Pacific (Jakarta)"},"ap-southeast-4":{description:"Asia Pacific (Melbourne)"},"ap-southeast-5":{description:"Asia Pacific (Malaysia)"},"aws-global":{description:"AWS Standard global region"},"ca-central-1":{description:"Canada (Central)"},"ca-west-1":{description:"Canada West (Calgary)"},"eu-central-1":{description:"Europe (Frankfurt)"},"eu-central-2":{description:"Europe (Zurich)"},"eu-north-1":{description:"Europe (Stockholm)"},"eu-south-1":{description:"Europe (Milan)"},"eu-south-2":{description:"Europe (Spain)"},"eu-west-1":{description:"Europe (Ireland)"},"eu-west-2":{description:"Europe (London)"},"eu-west-3":{description:"Europe (Paris)"},"il-central-1":{description:"Israel (Tel Aviv)"},"me-central-1":{description:"Middle East (UAE)"},"me-south-1":{description:"Middle East (Bahrain)"},"sa-east-1":{description:"South America (Sao Paulo)"},"us-east-1":{description:"US East (N. Virginia)"},"us-east-2":{description:"US East (Ohio)"},"us-west-1":{description:"US West (N. California)"},"us-west-2":{description:"US West (Oregon)"}}},{id:"aws-cn",outputs:{dnsSuffix:"amazonaws.com.cn",dualStackDnsSuffix:"api.amazonwebservices.com.cn",implicitGlobalRegion:"cn-northwest-1",name:"aws-cn",supportsDualStack:!0,supportsFIPS:!0},regionRegex:"^cn\\-\\w+\\-\\d+$",regions:{"aws-cn-global":{description:"AWS China global region"},"cn-north-1":{description:"China (Beijing)"},"cn-northwest-1":{description:"China (Ningxia)"}}},{id:"aws-us-gov",outputs:{dnsSuffix:"amazonaws.com",dualStackDnsSuffix:"api.aws",implicitGlobalRegion:"us-gov-west-1",name:"aws-us-gov",supportsDualStack:!0,supportsFIPS:!0},regionRegex:"^us\\-gov\\-\\w+\\-\\d+$",regions:{"aws-us-gov-global":{description:"AWS GovCloud (US) global region"},"us-gov-east-1":{description:"AWS GovCloud (US-East)"},"us-gov-west-1":{description:"AWS GovCloud (US-West)"}}},{id:"aws-iso",outputs:{dnsSuffix:"c2s.ic.gov",dualStackDnsSuffix:"c2s.ic.gov",implicitGlobalRegion:"us-iso-east-1",name:"aws-iso",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^us\\-iso\\-\\w+\\-\\d+$",regions:{"aws-iso-global":{description:"AWS ISO (US) global region"},"us-iso-east-1":{description:"US ISO East"},"us-iso-west-1":{description:"US ISO WEST"}}},{id:"aws-iso-b",outputs:{dnsSuffix:"sc2s.sgov.gov",dualStackDnsSuffix:"sc2s.sgov.gov",implicitGlobalRegion:"us-isob-east-1",name:"aws-iso-b",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^us\\-isob\\-\\w+\\-\\d+$",regions:{"aws-iso-b-global":{description:"AWS ISOB (US) global region"},"us-isob-east-1":{description:"US ISOB East (Ohio)"}}},{id:"aws-iso-e",outputs:{dnsSuffix:"cloud.adc-e.uk",dualStackDnsSuffix:"cloud.adc-e.uk",implicitGlobalRegion:"eu-isoe-west-1",name:"aws-iso-e",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^eu\\-isoe\\-\\w+\\-\\d+$",regions:{"eu-isoe-west-1":{description:"EU ISOE West"}}},{id:"aws-iso-f",outputs:{dnsSuffix:"csp.hci.ic.gov",dualStackDnsSuffix:"csp.hci.ic.gov",implicitGlobalRegion:"us-isof-south-1",name:"aws-iso-f",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^us\\-isof\\-\\w+\\-\\d+$",regions:{}}],version:"1.1"};const is={isVirtualHostableS3Bucket:rs,parseArn:e=>{const t=e.split(":");if(t.length<6)return null;const[r,n,i,o,s,...a]=t;if("arn"!==r||""===n||""===i||""===a.join(":"))return null;return{partition:n,service:i,region:o,accountId:s,resourceId:a.map((e=>e.split("/"))).flat()}},partition:e=>{const{partitions:t}=ns;for(const r of t){const{regions:t,outputs:n}=r;for(const[r,i]of Object.entries(t))if(r===e)return{...n,...i}}for(const r of t){const{regionRegex:t,outputs:n}=r;if(new RegExp(t).test(e))return{...n}}const r=t.find((e=>"aws"===e.id));if(!r)throw new Error("Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist.");return{...r.outputs}}};$o.aws=is;const os=/\d{12}\.ddb/;const ss="user-agent",as="x-amz-user-agent",cs=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w]/g,us=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w\#]/g;const ds=e=>(t,r)=>async n=>{const{request:i}=n;if(!K.isInstance(i))return t(n);const{headers:o}=i,s=r?.userAgent?.map(ls)||[],a=(await e.defaultUserAgentProvider()).map(ls);await async function(e,t,r){const n=r.request;if("rpc-v2-cbor"===n?.headers?.["smithy-protocol"]&&ie(e,"PROTOCOL_RPC_V2_CBOR","M"),"function"==typeof t.retryStrategy){const r=await t.retryStrategy();"function"==typeof r.acquireInitialRetryToken?r.constructor?.name?.includes("Adaptive")?ie(e,"RETRY_MODE_ADAPTIVE","F"):ie(e,"RETRY_MODE_STANDARD","E"):ie(e,"RETRY_MODE_LEGACY","D")}if("function"==typeof t.accountIdEndpointMode){const r=e.endpointV2;switch(String(r?.url?.hostname).match(os)&&ie(e,"ACCOUNT_ID_ENDPOINT","O"),await(t.accountIdEndpointMode?.())){case"disabled":ie(e,"ACCOUNT_ID_MODE_DISABLED","Q");break;case"preferred":ie(e,"ACCOUNT_ID_MODE_PREFERRED","P");break;case"required":ie(e,"ACCOUNT_ID_MODE_REQUIRED","R")}}const i=e.__smithy_context?.selectedHttpAuthScheme?.identity;if(i?.$source){const t=i;t.accountId&&ie(e,"RESOLVED_ACCOUNT_ID","T");for(const[r,n]of Object.entries(t.$source??{}))ie(e,r,n)}}(r,e,n);const c=r;a.push(`m/${function(e){let t="";for(const r in e){const n=e[r];if(!(t.length+n.length+1<=1024))break;t.length?t+=","+n:t+=n}return t}(Object.assign({},r.__smithy_context?.features,c.__aws_sdk_context?.features))}`);const u=e?.customUserAgent?.map(ls)||[],d=await e.userAgentAppId();d&&a.push(ls([`app/${d}`]));const l=[].concat([...a,...s,...u]).join(" "),h=[...a.filter((e=>e.startsWith("aws-sdk-"))),...u].join(" ");return"browser"!==e.runtime?(h&&(o[as]=o[as]?`${o[ss]} ${h}`:h),o[ss]=l):o[as]=l,t({...n,request:i})},ls=e=>{const t=e[0].split("/").map((e=>e.replace(cs,"-"))).join("/"),r=e[1]?.replace(us,"-"),n=t.indexOf("/"),i=t.substring(0,n);let o=t.substring(n+1);return"api"===i&&(o=o.toLowerCase()),[i,o,r].filter((e=>e&&e.length>0)).reduce(((e,t,r)=>{switch(r){case 0:return t;case 1:return`${e}/${t}`;default:return`${e}#${t}`}}),"")},hs={name:"getUserAgentMiddleware",step:"build",priority:"low",tags:["SET_USER_AGENT","USER_AGENT"],override:!0},fs=e=>"string"==typeof e&&(e.startsWith("fips-")||e.endsWith("-fips")),ps=e=>fs(e)?["fips-aws-global","aws-fips"].includes(e)?"us-east-1":e.replace(/fips-(dkr-|prod-)?|-fips/,""):e,gs="content-length";const ms={step:"build",tags:["SET_CONTENT_LENGTH","CONTENT_LENGTH"],name:"contentLengthMiddleware",override:!0},ys=e=>({applyToStack:t=>{var r;t.add((r=e.bodyLengthChecker,e=>async t=>{const n=t.request;if(K.isInstance(n)){const{body:e,headers:t}=n;if(e&&-1===Object.keys(t).map((e=>e.toLowerCase())).indexOf(gs))try{const t=r(e);n.headers={...n.headers,[gs]:String(t)}}catch(e){}}return e({...t,request:n})}),ms)}}),vs=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,bs=/(\d+\.){3}\d+/,ws=/\.\./,ks=e=>vs.test(e)&&!bs.test(e)&&!ws.test(e),Ss=e=>{const[t,r,n,,,i]=e.split(":"),o="arn"===t&&e.split(":").length>=6,s=Boolean(o&&r&&n&&i);if(o&&!s)throw new Error(`Invalid ARN: ${e} was an invalid ARN.`);return s},Es=(e,t,r)=>{const n=async()=>{const n=r[e]??r[t];return"function"==typeof n?n():n};return"credentialScope"===e||"CredentialScope"===t?async()=>{const e="function"==typeof r.credentials?await r.credentials():r.credentials;return e?.credentialScope??e?.CredentialScope}:"accountId"===e||"AccountId"===t?async()=>{const e="function"==typeof r.credentials?await r.credentials():r.credentials;return e?.accountId??e?.AccountId}:"endpoint"===e||"endpoint"===t?async()=>{const e=await n();if(e&&"object"==typeof e){if("url"in e)return e.url.href;if("hostname"in e){const{protocol:t,hostname:r,port:n,path:i}=e;return`${t}//${r}${n?":"+n:""}${i}`}}return e}:n},xs=async e=>{};const Ts=e=>{if("string"==typeof e)return Ts(new URL(e));const{hostname:t,pathname:r,port:n,protocol:i,search:o}=e;let s;return o&&(s=function(e){const t={};if(e=e.replace(/^\?/,""))for(const r of e.split("&")){let[e,n=null]=r.split("=");e=decodeURIComponent(e),n&&(n=decodeURIComponent(n)),e in t?Array.isArray(t[e])?t[e].push(n):t[e]=[t[e],n]:t[e]=n}return t}(o)),{hostname:t,port:n?parseInt(n):void 0,protocol:i,path:r,query:s}},As=e=>"object"==typeof e?"url"in e?Ts(e.url):e:Ts(e),Cs=async(e,t,r)=>{const n={},i=t?.getEndpointParameterInstructions?.()||{};for(const[t,o]of Object.entries(i))switch(o.type){case"staticContextParams":n[t]=o.value;break;case"contextParams":n[t]=e[o.name];break;case"clientContextParams":case"builtInParams":n[t]=await Es(o.name,t,r)();break;default:throw new Error("Unrecognized endpoint parameter instruction: "+JSON.stringify(o))}return 0===Object.keys(i).length&&Object.assign(n,r),"s3"===String(r.serviceId).toLowerCase()&&await(async e=>{const t=e?.Bucket||"";if("string"==typeof e.Bucket&&(e.Bucket=t.replace(/#/g,encodeURIComponent("#")).replace(/\?/g,encodeURIComponent("?"))),Ss(t)){if(!0===e.ForcePathStyle)throw new Error("Path-style addressing cannot be used with ARN buckets")}else(!ks(t)||-1!==t.indexOf(".")&&!String(e.Endpoint).startsWith("http:")||t.toLowerCase()!==t||t.length<3)&&(e.ForcePathStyle=!0);return e.DisableMultiRegionAccessPoints&&(e.disableMultiRegionAccessPoints=!0,e.DisableMRAP=!0),e})(n),n},Rs=({config:e,instructions:t})=>(r,n)=>async i=>{e.endpoint&&function(e,t,r){e.__smithy_context?e.__smithy_context.features||(e.__smithy_context.features={}):e.__smithy_context={features:{}},e.__smithy_context.features[t]=r}(n,"ENDPOINT_OVERRIDE","N");const o=await(async(e,t,r,n)=>{if(!r.endpoint){let e;e=r.serviceConfiguredEndpoint?await r.serviceConfiguredEndpoint():await xs(r.serviceId),e&&(r.endpoint=()=>Promise.resolve(As(e)))}const i=await Cs(e,t,r);if("function"!=typeof r.endpointProvider)throw new Error("config.endpointProvider is not set.");return r.endpointProvider(i,n)})(i.input,{getEndpointParameterInstructions:()=>t},{...e},n);n.endpointV2=o,n.authSchemes=o.properties?.authSchemes;const s=n.authSchemes?.[0];if(s){n.signing_region=s.signingRegion,n.signing_service=s.signingName;const e=he(n),t=e?.selectedHttpAuthScheme?.httpAuthOption;t&&(t.signingProperties=Object.assign(t.signingProperties||{},{signing_region:s.signingRegion,signingRegion:s.signingRegion,signing_service:s.signingName,signingName:s.signingName,signingRegionSet:s.signingRegionSet},s.properties))}return r({...i})},Os={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:ye.name},_s=(e,t)=>({applyToStack:r=>{r.addRelativeTo(Rs({config:e,instructions:t}),Os)}});var Ps;!function(e){e.STANDARD="standard",e.ADAPTIVE="adaptive"}(Ps||(Ps={}));const Is=Ps.STANDARD,Ms=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Ns=["TimeoutError","RequestTimeout","RequestTimeoutException"],Fs=[500,502,503,504],$s=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Us=e=>429===e.$metadata?.httpStatusCode||Ms.includes(e.name)||1==e.$retryable?.throttling,Ls=e=>(e=>e.$metadata?.clockSkewCorrected)(e)||Ns.includes(e.name)||$s.includes(e?.code||"")||Fs.includes(e.$metadata?.httpStatusCode||0);class Ds{constructor(e){this.currentCapacity=0,this.enabled=!1,this.lastMaxRate=0,this.measuredTxRate=0,this.requestCount=0,this.lastTimestamp=0,this.timeWindow=0,this.beta=e?.beta??.7,this.minCapacity=e?.minCapacity??1,this.minFillRate=e?.minFillRate??.5,this.scaleConstant=e?.scaleConstant??.4,this.smooth=e?.smooth??.8;const t=this.getCurrentTimeInSeconds();this.lastThrottleTime=t,this.lastTxRateBucket=Math.floor(this.getCurrentTimeInSeconds()),this.fillRate=this.minFillRate,this.maxCapacity=this.minCapacity}getCurrentTimeInSeconds(){return Date.now()/1e3}async getSendToken(){return this.acquireTokenBucket(1)}async acquireTokenBucket(e){if(this.enabled){if(this.refillTokenBucket(),e>this.currentCapacity){const t=(e-this.currentCapacity)/this.fillRate*1e3;await new Promise((e=>Ds.setTimeoutFn(e,t)))}this.currentCapacity=this.currentCapacity-e}}refillTokenBucket(){const e=this.getCurrentTimeInSeconds();if(!this.lastTimestamp)return void(this.lastTimestamp=e);const t=(e-this.lastTimestamp)*this.fillRate;this.currentCapacity=Math.min(this.maxCapacity,this.currentCapacity+t),this.lastTimestamp=e}updateClientSendingRate(e){let t;if(this.updateMeasuredRate(),Us(e)){const e=this.enabled?Math.min(this.measuredTxRate,this.fillRate):this.measuredTxRate;this.lastMaxRate=e,this.calculateTimeWindow(),this.lastThrottleTime=this.getCurrentTimeInSeconds(),t=this.cubicThrottle(e),this.enableTokenBucket()}else this.calculateTimeWindow(),t=this.cubicSuccess(this.getCurrentTimeInSeconds());const r=Math.min(t,2*this.measuredTxRate);this.updateTokenBucketRate(r)}calculateTimeWindow(){this.timeWindow=this.getPrecise(Math.pow(this.lastMaxRate*(1-this.beta)/this.scaleConstant,1/3))}cubicThrottle(e){return this.getPrecise(e*this.beta)}cubicSuccess(e){return this.getPrecise(this.scaleConstant*Math.pow(e-this.lastThrottleTime-this.timeWindow,3)+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(e){this.refillTokenBucket(),this.fillRate=Math.max(e,this.minFillRate),this.maxCapacity=Math.max(e,this.minCapacity),this.currentCapacity=Math.min(this.currentCapacity,this.maxCapacity)}updateMeasuredRate(){const e=this.getCurrentTimeInSeconds(),t=Math.floor(2*e)/2;if(this.requestCount++,t>this.lastTxRateBucket){const e=this.requestCount/(t-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(e*this.smooth+this.measuredTxRate*(1-this.smooth)),this.requestCount=0,this.lastTxRateBucket=t}}getPrecise(e){return parseFloat(e.toFixed(8))}}Ds.setTimeoutFn=setTimeout;const Bs=({retryDelay:e,retryCount:t,retryCost:r})=>({getRetryCount:()=>t,getRetryDelay:()=>Math.min(2e4,e),getRetryCost:()=>r});class zs{constructor(e){this.maxAttempts=e,this.mode=Ps.STANDARD,this.capacity=500,this.retryBackoffStrategy=(()=>{let e=100;return{computeNextBackoffDelay:t=>Math.floor(Math.min(2e4,Math.random()*2**t*e)),setDelayBase:t=>{e=t}}})(),this.maxAttemptsProvider="function"==typeof e?e:async()=>e}async acquireInitialRetryToken(e){return Bs({retryDelay:100,retryCount:0})}async refreshRetryTokenForRetry(e,t){const r=await this.getMaxAttempts();if(this.shouldRetry(e,t,r)){const r=t.errorType;this.retryBackoffStrategy.setDelayBase("THROTTLING"===r?500:100);const n=this.retryBackoffStrategy.computeNextBackoffDelay(e.getRetryCount()),i=t.retryAfterHint?Math.max(t.retryAfterHint.getTime()-Date.now()||0,n):n,o=this.getCapacityCost(r);return this.capacity-=o,Bs({retryDelay:i,retryCount:e.getRetryCount()+1,retryCost:o})}throw new Error("No retry token available")}recordSuccess(e){this.capacity=Math.max(500,this.capacity+(e.getRetryCost()??1))}getCapacity(){return this.capacity}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch(e){return console.warn("Max attempts provider could not resolve. Using default of 3"),3}}shouldRetry(e,t,r){return e.getRetryCount()+1=this.getCapacityCost(t.errorType)&&this.isRetryableError(t.errorType)}getCapacityCost(e){return"TRANSIENT"===e?10:5}isRetryableError(e){return"THROTTLING"===e||"TRANSIENT"===e}}class js{constructor(e,t){this.maxAttemptsProvider=e,this.mode=Ps.ADAPTIVE;const{rateLimiter:r}=t??{};this.rateLimiter=r??new Ds,this.standardRetryStrategy=new zs(e)}async acquireInitialRetryToken(e){return await this.rateLimiter.getSendToken(),this.standardRetryStrategy.acquireInitialRetryToken(e)}async refreshRetryTokenForRetry(e,t){return this.rateLimiter.updateClientSendingRate(t),this.standardRetryStrategy.refreshRetryTokenForRetry(e,t)}recordSuccess(e){this.rateLimiter.updateClientSendingRate({}),this.standardRetryStrategy.recordSuccess(e)}}let qs;const Ws=new Uint8Array(16);function Hs(){if(!qs&&(qs="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!qs))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return qs(Ws)}const Ks=[];for(let e=0;e<256;++e)Ks.push((e+256).toString(16).slice(1));var Vs={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Qs(e,t,r){if(Vs.randomUUID&&!t&&!e)return Vs.randomUUID();const n=(e=e||{}).random||(e.rng||Hs)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=n[e];return t}return function(e,t=0){return Ks[e[t+0]]+Ks[e[t+1]]+Ks[e[t+2]]+Ks[e[t+3]]+"-"+Ks[e[t+4]]+Ks[e[t+5]]+"-"+Ks[e[t+6]]+Ks[e[t+7]]+"-"+Ks[e[t+8]]+Ks[e[t+9]]+"-"+Ks[e[t+10]]+Ks[e[t+11]]+Ks[e[t+12]]+Ks[e[t+13]]+Ks[e[t+14]]+Ks[e[t+15]]}(n)}const Gs=e=>e?.body instanceof ReadableStream,Js=e=>void 0!==e.acquireInitialRetryToken&&void 0!==e.refreshRetryTokenForRetry&&void 0!==e.recordSuccess,Xs=e=>{const t={error:e,errorType:Ys(e)},r=ta(e.$response);return r&&(t.retryAfterHint=r),t},Ys=e=>Us(e)?"THROTTLING":Ls(e)?"TRANSIENT":(e=>{if(void 0!==e.$metadata?.httpStatusCode){const t=e.$metadata.httpStatusCode;return 500<=t&&t<=599&&!Ls(e)}return!1})(e)?"SERVER_ERROR":"CLIENT_ERROR",Zs={name:"retryMiddleware",tags:["RETRY"],step:"finalizeRequest",priority:"high",override:!0},ea=e=>({applyToStack:t=>{t.add((e=>(t,r)=>async n=>{let i=await e.retryStrategy();const o=await e.maxAttempts();if(!Js(i))return i?.mode&&(r.userAgent=[...r.userAgent||[],["cfg/retry-mode",i.mode]]),i.retry(t,n);{let e=await i.acquireInitialRetryToken(r.partition_id),a=new Error,c=0,u=0;const{request:d}=n,l=K.isInstance(d);for(l&&(d.headers["amz-sdk-invocation-id"]=Qs());;)try{l&&(d.headers["amz-sdk-request"]=`attempt=${c+1}; max=${o}`);const{response:r,output:s}=await t(n);return i.recordSuccess(e),s.$metadata.attempts=c+1,s.$metadata.totalRetryDelay=u,{response:r,output:s}}catch(t){const n=Xs(t);if(a=(s=t)instanceof Error?s:s instanceof Object?Object.assign(new Error,s):"string"==typeof s?new Error(s):new Error(`AWS SDK error wrapper for ${s}`),l&&Gs(d))throw(r.logger instanceof Kr?console:r.logger)?.warn("An error was encountered in a non-retryable streaming request."),a;try{e=await i.refreshRetryTokenForRetry(e,n)}catch(e){throw a.$metadata||(a.$metadata={}),a.$metadata.attempts=c+1,a.$metadata.totalRetryDelay=u,a}c=e.getRetryCount();const o=e.getRetryDelay();u+=o,await new Promise((e=>setTimeout(e,o)))}}var s})(e),Zs)}}),ta=e=>{if(!V.isInstance(e))return;const t=Object.keys(e.headers).find((e=>"retry-after"===e.toLowerCase()));if(!t)return;const r=e.headers[t],n=Number(r);if(!Number.isNaN(n))return new Date(1e3*n);return new Date(r)},ra=null;class na{constructor(e){this.sigv4Signer=new mo(e),this.signerOptions=e}async sign(e,t={}){if("*"===t.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().sign(e,t)}return this.sigv4Signer.sign(e,t)}async signWithCredentials(e,t,r={}){if("*"===r.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().signWithCredentials(e,t,r)}return this.sigv4Signer.signWithCredentials(e,t,r)}async presign(e,t={}){if("*"===t.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().presign(e,t)}return this.sigv4Signer.presign(e,t)}async presignWithCredentials(e,t,r={}){if("*"===r.signingRegion)throw new Error("Method presignWithCredentials is not supported for [signingRegion=*].");return this.sigv4Signer.presignWithCredentials(e,t,r)}getSigv4aSigner(){if(!this.sigv4aSigner){let e=null;try{if(e=ra,"function"!=typeof e)throw new Error}catch(e){throw e.message=`${e.message}\nPlease check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. \nYou must also register the package by calling [require("@aws-sdk/signature-v4-crt");] or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. \nFor more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`,e}this.sigv4aSigner=new e({...this.signerOptions,signingAlgorithm:1})}return this.sigv4aSigner}}const ia="required",oa="type",sa="conditions",aa="fn",ca="argv",ua="ref",da="assign",la="url",ha="properties",fa="backend",pa="authSchemes",ga="disableDoubleEncoding",ma="signingName",ya="signingRegion",va="headers",ba="signingRegionSet",wa=!0,ka="isSet",Sa="booleanEquals",Ea="error",xa="aws.partition",Ta="stringEquals",Aa="getAttr",Ca="name",Ra="substring",Oa="bucketSuffix",_a="parseURL",Pa="{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}",Ia="endpoint",Ma="tree",Na="aws.isVirtualHostableS3Bucket",Fa="{url#scheme}://{Bucket}.{url#authority}{url#path}",$a="not",Ua="{url#scheme}://{url#authority}{url#path}",La="hardwareType",Da="regionPrefix",Ba="bucketAliasSuffix",za="outpostId",ja="isValidHostLabel",qa="sigv4a",Wa="s3-outposts",Ha="s3",Ka="{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}",Va="https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}",Qa="https://{Bucket}.s3.{partitionResult#dnsSuffix}",Ga="aws.parseArn",Ja="bucketArn",Xa="arnType",Ya="s3-object-lambda",Za="accesspoint",ec="accessPointName",tc="{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}",rc="mrapPartition",nc="outpostType",ic="arnPrefix",oc="{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}",sc="https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",ac="https://s3.{partitionResult#dnsSuffix}",cc={[ia]:!1,[oa]:"String"},uc={[ia]:!0,default:!1,[oa]:"Boolean"},dc={[ia]:!1,[oa]:"Boolean"},lc={[aa]:Sa,[ca]:[{[ua]:"Accelerate"},!0]},hc={[aa]:Sa,[ca]:[{[ua]:"UseFIPS"},!0]},fc={[aa]:Sa,[ca]:[{[ua]:"UseDualStack"},!0]},pc={[aa]:ka,[ca]:[{[ua]:"Endpoint"}]},gc={[aa]:xa,[ca]:[{[ua]:"Region"}],[da]:"partitionResult"},mc={[aa]:Ta,[ca]:[{[aa]:Aa,[ca]:[{[ua]:"partitionResult"},Ca]},"aws-cn"]},yc={[aa]:ka,[ca]:[{[ua]:"Bucket"}]},vc={[ua]:"Bucket"},bc={[aa]:_a,[ca]:[{[ua]:"Endpoint"}],[da]:"url"},wc={[aa]:Sa,[ca]:[{[aa]:Aa,[ca]:[{[ua]:"url"},"isIp"]},!0]},kc={[ua]:"url"},Sc={[aa]:"uriEncode",[ca]:[vc],[da]:"uri_encoded_bucket"},Ec={[fa]:"S3Express",[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:"s3express",[ya]:"{Region}"}]},xc={},Tc={[aa]:Na,[ca]:[vc,!1]},Ac={[Ea]:"S3Express bucket name is not a valid virtual hostable name.",[oa]:Ea},Cc={[fa]:"S3Express",[pa]:[{[ga]:!0,[Ca]:"sigv4-s3express",[ma]:"s3express",[ya]:"{Region}"}]},Rc={[aa]:ka,[ca]:[{[ua]:"UseS3ExpressControlEndpoint"}]},Oc={[aa]:Sa,[ca]:[{[ua]:"UseS3ExpressControlEndpoint"},!0]},_c={[aa]:$a,[ca]:[pc]},Pc={[Ea]:"Unrecognized S3Express bucket name format.",[oa]:Ea},Ic={[aa]:$a,[ca]:[yc]},Mc={[ua]:La},Nc={[sa]:[_c],[Ea]:"Expected a endpoint to be specified but no endpoint was found",[oa]:Ea},Fc={[pa]:[{[ga]:!0,[Ca]:qa,[ma]:Wa,[ba]:["*"]},{[ga]:!0,[Ca]:"sigv4",[ma]:Wa,[ya]:"{Region}"}]},$c={[aa]:Sa,[ca]:[{[ua]:"ForcePathStyle"},!1]},Uc={[ua]:"ForcePathStyle"},Lc={[aa]:Sa,[ca]:[{[ua]:"Accelerate"},!1]},Dc={[aa]:Ta,[ca]:[{[ua]:"Region"},"aws-global"]},Bc={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ha,[ya]:"us-east-1"}]},zc={[aa]:$a,[ca]:[Dc]},jc={[aa]:Sa,[ca]:[{[ua]:"UseGlobalEndpoint"},!0]},qc={[la]:"https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[ha]:{[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ha,[ya]:"{Region}"}]},[va]:{}},Wc={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ha,[ya]:"{Region}"}]},Hc={[aa]:Sa,[ca]:[{[ua]:"UseGlobalEndpoint"},!1]},Kc={[aa]:Sa,[ca]:[{[ua]:"UseDualStack"},!1]},Vc={[la]:"https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Qc={[aa]:Sa,[ca]:[{[ua]:"UseFIPS"},!1]},Gc={[la]:"https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Jc={[la]:"https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Xc={[aa]:Sa,[ca]:[{[aa]:Aa,[ca]:[kc,"isIp"]},!1]},Yc={[la]:Ka,[ha]:Wc,[va]:{}},Zc={[la]:Fa,[ha]:Wc,[va]:{}},eu={[Ia]:Zc,[oa]:Ia},tu={[la]:Va,[ha]:Wc,[va]:{}},ru={[la]:"https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},nu={[Ea]:"Invalid region: region was not a valid DNS name.",[oa]:Ea},iu={[ua]:Ja},ou={[ua]:Xa},su={[aa]:Aa,[ca]:[iu,"service"]},au={[ua]:ec},cu={[sa]:[fc],[Ea]:"S3 Object Lambda does not support Dual-stack",[oa]:Ea},uu={[sa]:[lc],[Ea]:"S3 Object Lambda does not support S3 Accelerate",[oa]:Ea},du={[sa]:[{[aa]:ka,[ca]:[{[ua]:"DisableAccessPoints"}]},{[aa]:Sa,[ca]:[{[ua]:"DisableAccessPoints"},!0]}],[Ea]:"Access points are not supported for this operation",[oa]:Ea},lu={[sa]:[{[aa]:ka,[ca]:[{[ua]:"UseArnRegion"}]},{[aa]:Sa,[ca]:[{[ua]:"UseArnRegion"},!1]},{[aa]:$a,[ca]:[{[aa]:Ta,[ca]:[{[aa]:Aa,[ca]:[iu,"region"]},"{Region}"]}]}],[Ea]:"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`",[oa]:Ea},hu={[aa]:Aa,[ca]:[{[ua]:"bucketPartition"},Ca]},fu={[aa]:Aa,[ca]:[iu,"accountId"]},pu={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ya,[ya]:"{bucketArn#region}"}]},gu={[Ea]:"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`",[oa]:Ea},mu={[Ea]:"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`",[oa]:Ea},yu={[Ea]:"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)",[oa]:Ea},vu={[Ea]:"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`",[oa]:Ea},bu={[Ea]:"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.",[oa]:Ea},wu={[Ea]:"Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided",[oa]:Ea},ku={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ha,[ya]:"{bucketArn#region}"}]},Su={[pa]:[{[ga]:!0,[Ca]:qa,[ma]:Wa,[ba]:["*"]},{[ga]:!0,[Ca]:"sigv4",[ma]:Wa,[ya]:"{bucketArn#region}"}]},Eu={[aa]:Ga,[ca]:[vc]},xu={[la]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Wc,[va]:{}},Tu={[la]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Wc,[va]:{}},Au={[la]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Wc,[va]:{}},Cu={[la]:oc,[ha]:Wc,[va]:{}},Ru={[la]:"https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Wc,[va]:{}},Ou={[ua]:"UseObjectLambdaEndpoint"},_u={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ya,[ya]:"{Region}"}]},Pu={[la]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Iu={[la]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Mu={[la]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Nu={[la]:Ua,[ha]:Wc,[va]:{}},Fu={[la]:"https://s3.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},$u=[{[ua]:"Region"}],Uu=[{[ua]:"Endpoint"}],Lu=[vc],Du=[fc],Bu=[lc],zu=[pc,bc],ju=[{[aa]:ka,[ca]:[{[ua]:"DisableS3ExpressSessionAuth"}]},{[aa]:Sa,[ca]:[{[ua]:"DisableS3ExpressSessionAuth"},!0]}],qu=[wc],Wu=[Sc],Hu=[Tc],Ku=[hc],Vu=[{[aa]:Ra,[ca]:[vc,6,14,!0],[da]:"s3expressAvailabilityZoneId"},{[aa]:Ra,[ca]:[vc,14,16,!0],[da]:"s3expressAvailabilityZoneDelim"},{[aa]:Ta,[ca]:[{[ua]:"s3expressAvailabilityZoneDelim"},"--"]}],Qu=[{[sa]:[hc],[Ia]:{[la]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ha]:Ec,[va]:{}},[oa]:Ia},{[Ia]:{[la]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ha]:Ec,[va]:{}},[oa]:Ia}],Gu=[{[aa]:Ra,[ca]:[vc,6,15,!0],[da]:"s3expressAvailabilityZoneId"},{[aa]:Ra,[ca]:[vc,15,17,!0],[da]:"s3expressAvailabilityZoneDelim"},{[aa]:Ta,[ca]:[{[ua]:"s3expressAvailabilityZoneDelim"},"--"]}],Ju=[{[sa]:[hc],[Ia]:{[la]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ha]:Cc,[va]:{}},[oa]:Ia},{[Ia]:{[la]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ha]:Cc,[va]:{}},[oa]:Ia}],Xu=[yc],Yu=[{[aa]:ja,[ca]:[{[ua]:za},!1]}],Zu=[{[aa]:Ta,[ca]:[{[ua]:Da},"beta"]}],ed=[gc],td=[{[aa]:ja,[ca]:[{[ua]:"Region"},!1]}],rd=[{[aa]:Ta,[ca]:[{[ua]:"Region"},"us-east-1"]}],nd=[{[aa]:Ta,[ca]:[ou,Za]}],id=[{[aa]:Aa,[ca]:[iu,"resourceId[1]"],[da]:ec},{[aa]:$a,[ca]:[{[aa]:Ta,[ca]:[au,""]}]}],od=[iu,"resourceId[1]"],sd=[{[aa]:$a,[ca]:[{[aa]:Ta,[ca]:[{[aa]:Aa,[ca]:[iu,"region"]},""]}]}],ad=[{[aa]:$a,[ca]:[{[aa]:ka,[ca]:[{[aa]:Aa,[ca]:[iu,"resourceId[2]"]}]}]}],cd=[iu,"resourceId[2]"],ud=[{[aa]:xa,[ca]:[{[aa]:Aa,[ca]:[iu,"region"]}],[da]:"bucketPartition"}],dd=[{[aa]:Ta,[ca]:[hu,{[aa]:Aa,[ca]:[{[ua]:"partitionResult"},Ca]}]}],ld=[{[aa]:ja,[ca]:[{[aa]:Aa,[ca]:[iu,"region"]},!0]}],hd=[{[aa]:ja,[ca]:[fu,!1]}],fd=[{[aa]:ja,[ca]:[au,!1]}],pd=[{[aa]:ja,[ca]:[{[ua]:"Region"},!0]}],gd={version:"1.0",parameters:{Bucket:cc,Region:cc,UseFIPS:uc,UseDualStack:uc,Endpoint:cc,ForcePathStyle:uc,Accelerate:uc,UseGlobalEndpoint:uc,UseObjectLambdaEndpoint:dc,Key:cc,Prefix:cc,CopySource:cc,DisableAccessPoints:dc,DisableMultiRegionAccessPoints:uc,UseArnRegion:dc,UseS3ExpressControlEndpoint:dc,DisableS3ExpressSessionAuth:dc},rules:[{[sa]:[{[aa]:ka,[ca]:$u}],rules:[{[sa]:[lc,hc],error:"Accelerate cannot be used with FIPS",[oa]:Ea},{[sa]:[fc,pc],error:"Cannot set dual-stack in combination with a custom endpoint.",[oa]:Ea},{[sa]:[pc,hc],error:"A custom endpoint cannot be combined with FIPS",[oa]:Ea},{[sa]:[pc,lc],error:"A custom endpoint cannot be combined with S3 Accelerate",[oa]:Ea},{[sa]:[hc,gc,mc],error:"Partition does not support FIPS",[oa]:Ea},{[sa]:[yc,{[aa]:Ra,[ca]:[vc,0,6,wa],[da]:Oa},{[aa]:Ta,[ca]:[{[ua]:Oa},"--x-s3"]}],rules:[{[sa]:Du,error:"S3Express does not support Dual-stack.",[oa]:Ea},{[sa]:Bu,error:"S3Express does not support S3 Accelerate.",[oa]:Ea},{[sa]:zu,rules:[{[sa]:ju,rules:[{[sa]:qu,rules:[{[sa]:Wu,rules:[{endpoint:{[la]:Pa,[ha]:Ec,[va]:xc},[oa]:Ia}],[oa]:Ma}],[oa]:Ma},{[sa]:Hu,rules:[{endpoint:{[la]:Fa,[ha]:Ec,[va]:xc},[oa]:Ia}],[oa]:Ma},Ac],[oa]:Ma},{[sa]:qu,rules:[{[sa]:Wu,rules:[{endpoint:{[la]:Pa,[ha]:Cc,[va]:xc},[oa]:Ia}],[oa]:Ma}],[oa]:Ma},{[sa]:Hu,rules:[{endpoint:{[la]:Fa,[ha]:Cc,[va]:xc},[oa]:Ia}],[oa]:Ma},Ac],[oa]:Ma},{[sa]:[Rc,Oc],rules:[{[sa]:[Sc,_c],rules:[{[sa]:Ku,endpoint:{[la]:"https://s3express-control-fips.{Region}.amazonaws.com/{uri_encoded_bucket}",[ha]:Ec,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://s3express-control.{Region}.amazonaws.com/{uri_encoded_bucket}",[ha]:Ec,[va]:xc},[oa]:Ia}],[oa]:Ma}],[oa]:Ma},{[sa]:Hu,rules:[{[sa]:ju,rules:[{[sa]:Vu,rules:Qu,[oa]:Ma},{[sa]:Gu,rules:Qu,[oa]:Ma},Pc],[oa]:Ma},{[sa]:Vu,rules:Ju,[oa]:Ma},{[sa]:Gu,rules:Ju,[oa]:Ma},Pc],[oa]:Ma},Ac],[oa]:Ma},{[sa]:[Ic,Rc,Oc],rules:[{[sa]:zu,endpoint:{[la]:Ua,[ha]:Ec,[va]:xc},[oa]:Ia},{[sa]:Ku,endpoint:{[la]:"https://s3express-control-fips.{Region}.amazonaws.com",[ha]:Ec,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://s3express-control.{Region}.amazonaws.com",[ha]:Ec,[va]:xc},[oa]:Ia}],[oa]:Ma},{[sa]:[yc,{[aa]:Ra,[ca]:[vc,49,50,wa],[da]:La},{[aa]:Ra,[ca]:[vc,8,12,wa],[da]:Da},{[aa]:Ra,[ca]:[vc,0,7,wa],[da]:Ba},{[aa]:Ra,[ca]:[vc,32,49,wa],[da]:za},{[aa]:xa,[ca]:$u,[da]:"regionPartition"},{[aa]:Ta,[ca]:[{[ua]:Ba},"--op-s3"]}],rules:[{[sa]:Yu,rules:[{[sa]:[{[aa]:Ta,[ca]:[Mc,"e"]}],rules:[{[sa]:Zu,rules:[Nc,{[sa]:zu,endpoint:{[la]:"https://{Bucket}.ec2.{url#authority}",[ha]:Fc,[va]:xc},[oa]:Ia}],[oa]:Ma},{endpoint:{[la]:"https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[ha]:Fc,[va]:xc},[oa]:Ia}],[oa]:Ma},{[sa]:[{[aa]:Ta,[ca]:[Mc,"o"]}],rules:[{[sa]:Zu,rules:[Nc,{[sa]:zu,endpoint:{[la]:"https://{Bucket}.op-{outpostId}.{url#authority}",[ha]:Fc,[va]:xc},[oa]:Ia}],[oa]:Ma},{endpoint:{[la]:"https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[ha]:Fc,[va]:xc},[oa]:Ia}],[oa]:Ma},{error:'Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"',[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.",[oa]:Ea}],[oa]:Ma},{[sa]:Xu,rules:[{[sa]:[pc,{[aa]:$a,[ca]:[{[aa]:ka,[ca]:[{[aa]:_a,[ca]:Uu}]}]}],error:"Custom endpoint `{Endpoint}` was not a valid URI",[oa]:Ea},{[sa]:[$c,Tc],rules:[{[sa]:ed,rules:[{[sa]:td,rules:[{[sa]:[lc,mc],error:"S3 Accelerate cannot be used in this region",[oa]:Ea},{[sa]:[fc,hc,Lc,_c,Dc],endpoint:{[la]:"https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,hc,Lc,_c,zc,jc],rules:[{endpoint:qc,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,hc,Lc,_c,zc,Hc],endpoint:qc,[oa]:Ia},{[sa]:[Kc,hc,Lc,_c,Dc],endpoint:{[la]:"https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,hc,Lc,_c,zc,jc],rules:[{endpoint:Vc,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,hc,Lc,_c,zc,Hc],endpoint:Vc,[oa]:Ia},{[sa]:[fc,Qc,lc,_c,Dc],endpoint:{[la]:"https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,Qc,lc,_c,zc,jc],rules:[{endpoint:Gc,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,Qc,lc,_c,zc,Hc],endpoint:Gc,[oa]:Ia},{[sa]:[fc,Qc,Lc,_c,Dc],endpoint:{[la]:"https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,Qc,Lc,_c,zc,jc],rules:[{endpoint:Jc,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,Qc,Lc,_c,zc,Hc],endpoint:Jc,[oa]:Ia},{[sa]:[Kc,Qc,Lc,pc,bc,wc,Dc],endpoint:{[la]:Ka,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Qc,Lc,pc,bc,Xc,Dc],endpoint:{[la]:Fa,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Qc,Lc,pc,bc,wc,zc,jc],rules:[{[sa]:rd,endpoint:Yc,[oa]:Ia},{endpoint:Yc,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,Qc,Lc,pc,bc,Xc,zc,jc],rules:[{[sa]:rd,endpoint:Zc,[oa]:Ia},eu],[oa]:Ma},{[sa]:[Kc,Qc,Lc,pc,bc,wc,zc,Hc],endpoint:Yc,[oa]:Ia},{[sa]:[Kc,Qc,Lc,pc,bc,Xc,zc,Hc],endpoint:Zc,[oa]:Ia},{[sa]:[Kc,Qc,lc,_c,Dc],endpoint:{[la]:Va,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Qc,lc,_c,zc,jc],rules:[{[sa]:rd,endpoint:tu,[oa]:Ia},{endpoint:tu,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,Qc,lc,_c,zc,Hc],endpoint:tu,[oa]:Ia},{[sa]:[Kc,Qc,Lc,_c,Dc],endpoint:{[la]:Qa,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Qc,Lc,_c,zc,jc],rules:[{[sa]:rd,endpoint:{[la]:Qa,[ha]:Wc,[va]:xc},[oa]:Ia},{endpoint:ru,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,Qc,Lc,_c,zc,Hc],endpoint:ru,[oa]:Ia}],[oa]:Ma},nu],[oa]:Ma}],[oa]:Ma},{[sa]:[pc,bc,{[aa]:Ta,[ca]:[{[aa]:Aa,[ca]:[kc,"scheme"]},"http"]},{[aa]:Na,[ca]:[vc,wa]},$c,Qc,Kc,Lc],rules:[{[sa]:ed,rules:[{[sa]:td,rules:[eu],[oa]:Ma},nu],[oa]:Ma}],[oa]:Ma},{[sa]:[$c,{[aa]:Ga,[ca]:Lu,[da]:Ja}],rules:[{[sa]:[{[aa]:Aa,[ca]:[iu,"resourceId[0]"],[da]:Xa},{[aa]:$a,[ca]:[{[aa]:Ta,[ca]:[ou,""]}]}],rules:[{[sa]:[{[aa]:Ta,[ca]:[su,Ya]}],rules:[{[sa]:nd,rules:[{[sa]:id,rules:[cu,uu,{[sa]:sd,rules:[du,{[sa]:ad,rules:[lu,{[sa]:ud,rules:[{[sa]:ed,rules:[{[sa]:dd,rules:[{[sa]:ld,rules:[{[sa]:[{[aa]:Ta,[ca]:[fu,""]}],error:"Invalid ARN: Missing account id",[oa]:Ea},{[sa]:hd,rules:[{[sa]:fd,rules:[{[sa]:zu,endpoint:{[la]:tc,[ha]:pu,[va]:xc},[oa]:Ia},{[sa]:Ku,endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:pu,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:pu,[va]:xc},[oa]:Ia}],[oa]:Ma},gu],[oa]:Ma},mu],[oa]:Ma},yu],[oa]:Ma},vu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},bu],[oa]:Ma},{error:"Invalid ARN: bucket ARN is missing a region",[oa]:Ea}],[oa]:Ma},wu],[oa]:Ma},{error:"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`",[oa]:Ea}],[oa]:Ma},{[sa]:nd,rules:[{[sa]:id,rules:[{[sa]:sd,rules:[{[sa]:nd,rules:[{[sa]:sd,rules:[du,{[sa]:ad,rules:[lu,{[sa]:ud,rules:[{[sa]:ed,rules:[{[sa]:[{[aa]:Ta,[ca]:[hu,"{partitionResult#name}"]}],rules:[{[sa]:ld,rules:[{[sa]:[{[aa]:Ta,[ca]:[su,Ha]}],rules:[{[sa]:hd,rules:[{[sa]:fd,rules:[{[sa]:Bu,error:"Access Points do not support S3 Accelerate",[oa]:Ea},{[sa]:[hc,fc],endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:ku,[va]:xc},[oa]:Ia},{[sa]:[hc,Kc],endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:ku,[va]:xc},[oa]:Ia},{[sa]:[Qc,fc],endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:ku,[va]:xc},[oa]:Ia},{[sa]:[Qc,Kc,pc,bc],endpoint:{[la]:tc,[ha]:ku,[va]:xc},[oa]:Ia},{[sa]:[Qc,Kc],endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:ku,[va]:xc},[oa]:Ia}],[oa]:Ma},gu],[oa]:Ma},mu],[oa]:Ma},{error:"Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}",[oa]:Ea}],[oa]:Ma},yu],[oa]:Ma},vu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},bu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},{[sa]:[{[aa]:ja,[ca]:[au,wa]}],rules:[{[sa]:Du,error:"S3 MRAP does not support dual-stack",[oa]:Ea},{[sa]:Ku,error:"S3 MRAP does not support FIPS",[oa]:Ea},{[sa]:Bu,error:"S3 MRAP does not support S3 Accelerate",[oa]:Ea},{[sa]:[{[aa]:Sa,[ca]:[{[ua]:"DisableMultiRegionAccessPoints"},wa]}],error:"Invalid configuration: Multi-Region Access Point ARNs are disabled.",[oa]:Ea},{[sa]:[{[aa]:xa,[ca]:$u,[da]:rc}],rules:[{[sa]:[{[aa]:Ta,[ca]:[{[aa]:Aa,[ca]:[{[ua]:rc},Ca]},{[aa]:Aa,[ca]:[iu,"partition"]}]}],rules:[{endpoint:{[la]:"https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}",[ha]:{[pa]:[{[ga]:wa,name:qa,[ma]:Ha,[ba]:["*"]}]},[va]:xc},[oa]:Ia}],[oa]:Ma},{error:"Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`",[oa]:Ea}],[oa]:Ma}],[oa]:Ma},{error:"Invalid Access Point Name",[oa]:Ea}],[oa]:Ma},wu],[oa]:Ma},{[sa]:[{[aa]:Ta,[ca]:[su,Wa]}],rules:[{[sa]:Du,error:"S3 Outposts does not support Dual-stack",[oa]:Ea},{[sa]:Ku,error:"S3 Outposts does not support FIPS",[oa]:Ea},{[sa]:Bu,error:"S3 Outposts does not support S3 Accelerate",[oa]:Ea},{[sa]:[{[aa]:ka,[ca]:[{[aa]:Aa,[ca]:[iu,"resourceId[4]"]}]}],error:"Invalid Arn: Outpost Access Point ARN contains sub resources",[oa]:Ea},{[sa]:[{[aa]:Aa,[ca]:od,[da]:za}],rules:[{[sa]:Yu,rules:[lu,{[sa]:ud,rules:[{[sa]:ed,rules:[{[sa]:dd,rules:[{[sa]:ld,rules:[{[sa]:hd,rules:[{[sa]:[{[aa]:Aa,[ca]:cd,[da]:nc}],rules:[{[sa]:[{[aa]:Aa,[ca]:[iu,"resourceId[3]"],[da]:ec}],rules:[{[sa]:[{[aa]:Ta,[ca]:[{[ua]:nc},Za]}],rules:[{[sa]:zu,endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}",[ha]:Su,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:Su,[va]:xc},[oa]:Ia}],[oa]:Ma},{error:"Expected an outpost type `accesspoint`, found {outpostType}",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: expected an access point name",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: Expected a 4-component resource",[oa]:Ea}],[oa]:Ma},mu],[oa]:Ma},yu],[oa]:Ma},vu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},{error:"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: The Outpost Id was not set",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: No ARN type specified",[oa]:Ea}],[oa]:Ma},{[sa]:[{[aa]:Ra,[ca]:[vc,0,4,!1],[da]:ic},{[aa]:Ta,[ca]:[{[ua]:ic},"arn:"]},{[aa]:$a,[ca]:[{[aa]:ka,[ca]:[Eu]}]}],error:"Invalid ARN: `{Bucket}` was not a valid ARN",[oa]:Ea},{[sa]:[{[aa]:Sa,[ca]:[Uc,wa]},Eu],error:"Path-style addressing cannot be used with ARN buckets",[oa]:Ea},{[sa]:Wu,rules:[{[sa]:ed,rules:[{[sa]:[Lc],rules:[{[sa]:[fc,_c,hc,Dc],endpoint:{[la]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,_c,hc,zc,jc],rules:[{endpoint:xu,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,_c,hc,zc,Hc],endpoint:xu,[oa]:Ia},{[sa]:[Kc,_c,hc,Dc],endpoint:{[la]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,_c,hc,zc,jc],rules:[{endpoint:Tu,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,_c,hc,zc,Hc],endpoint:Tu,[oa]:Ia},{[sa]:[fc,_c,Qc,Dc],endpoint:{[la]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,_c,Qc,zc,jc],rules:[{endpoint:Au,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,_c,Qc,zc,Hc],endpoint:Au,[oa]:Ia},{[sa]:[Kc,pc,bc,Qc,Dc],endpoint:{[la]:oc,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,pc,bc,Qc,zc,jc],rules:[{[sa]:rd,endpoint:Cu,[oa]:Ia},{endpoint:Cu,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,pc,bc,Qc,zc,Hc],endpoint:Cu,[oa]:Ia},{[sa]:[Kc,_c,Qc,Dc],endpoint:{[la]:sc,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,_c,Qc,zc,jc],rules:[{[sa]:rd,endpoint:{[la]:sc,[ha]:Wc,[va]:xc},[oa]:Ia},{endpoint:Ru,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,_c,Qc,zc,Hc],endpoint:Ru,[oa]:Ia}],[oa]:Ma},{error:"Path-style addressing cannot be used with S3 Accelerate",[oa]:Ea}],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},{[sa]:[{[aa]:ka,[ca]:[Ou]},{[aa]:Sa,[ca]:[Ou,wa]}],rules:[{[sa]:ed,rules:[{[sa]:pd,rules:[cu,uu,{[sa]:zu,endpoint:{[la]:Ua,[ha]:_u,[va]:xc},[oa]:Ia},{[sa]:Ku,endpoint:{[la]:"https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}",[ha]:_u,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}",[ha]:_u,[va]:xc},[oa]:Ia}],[oa]:Ma},nu],[oa]:Ma}],[oa]:Ma},{[sa]:[Ic],rules:[{[sa]:ed,rules:[{[sa]:pd,rules:[{[sa]:[hc,fc,_c,Dc],endpoint:{[la]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[hc,fc,_c,zc,jc],rules:[{endpoint:Pu,[oa]:Ia}],[oa]:Ma},{[sa]:[hc,fc,_c,zc,Hc],endpoint:Pu,[oa]:Ia},{[sa]:[hc,Kc,_c,Dc],endpoint:{[la]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[hc,Kc,_c,zc,jc],rules:[{endpoint:Iu,[oa]:Ia}],[oa]:Ma},{[sa]:[hc,Kc,_c,zc,Hc],endpoint:Iu,[oa]:Ia},{[sa]:[Qc,fc,_c,Dc],endpoint:{[la]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Qc,fc,_c,zc,jc],rules:[{endpoint:Mu,[oa]:Ia}],[oa]:Ma},{[sa]:[Qc,fc,_c,zc,Hc],endpoint:Mu,[oa]:Ia},{[sa]:[Qc,Kc,pc,bc,Dc],endpoint:{[la]:Ua,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Qc,Kc,pc,bc,zc,jc],rules:[{[sa]:rd,endpoint:Nu,[oa]:Ia},{endpoint:Nu,[oa]:Ia}],[oa]:Ma},{[sa]:[Qc,Kc,pc,bc,zc,Hc],endpoint:Nu,[oa]:Ia},{[sa]:[Qc,Kc,_c,Dc],endpoint:{[la]:ac,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Qc,Kc,_c,zc,jc],rules:[{[sa]:rd,endpoint:{[la]:ac,[ha]:Wc,[va]:xc},[oa]:Ia},{endpoint:Fu,[oa]:Ia}],[oa]:Ma},{[sa]:[Qc,Kc,_c,zc,Hc],endpoint:Fu,[oa]:Ia}],[oa]:Ma},nu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},{error:"A region must be set when sending requests to S3.",[oa]:Ea}]},md=new class{constructor({size:e,params:t}){this.data=new Map,this.parameters=[],this.capacity=e??50,t&&(this.parameters=t)}get(e,t){const r=this.hash(e);if(!1===r)return t();if(!this.data.has(r)){if(this.data.size>this.capacity+10){const e=this.data.keys();let t=0;for(;;){const{value:r,done:n}=e.next();if(this.data.delete(r),n||++t>10)break}}this.data.set(r,t())}return this.data.get(r)}size(){return this.data.size}hash(e){let t="";const{parameters:r}=this;if(0===r.length)return!1;for(const n of r){const r=String(e[n]??"");if(r.includes("|;"))return!1;t+=r+"|;"}return t}}({size:50,params:["Accelerate","Bucket","DisableAccessPoints","DisableMultiRegionAccessPoints","DisableS3ExpressSessionAuth","Endpoint","ForcePathStyle","Region","UseArnRegion","UseDualStack","UseFIPS","UseGlobalEndpoint","UseObjectLambdaEndpoint","UseS3ExpressControlEndpoint"]}),yd=(e,t={})=>md.get(e,(()=>((e,t)=>{const{endpointParams:r,logger:n}=t,{parameters:i,rules:o}=e;t.logger?.debug?.(`${Uo} Initial EndpointParams: ${Lo(r)}`);const s=Object.entries(i).filter((([,e])=>null!=e.default)).map((([e,t])=>[e,t.default]));if(s.length>0)for(const[e,t]of s)r[e]=r[e]??t;const a=Object.entries(i).filter((([,e])=>e.required)).map((([e])=>e));for(const e of a)if(null==r[e])throw new Do(`Missing required parameter: '${e}'`);const c=ts(o,{endpointParams:r,logger:n,referenceRecord:{}});return t.logger?.debug?.(`${Uo} Resolved endpoint: ${Lo(c)}`),c})(gd,{endpointParams:e,logger:t.logger})));$o.aws=is;const vd=(bd=async(e,t,r)=>({operation:he(t).operation,region:await fe(e.region)()||(()=>{throw new Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),async(e,t,r)=>{if(!r)throw new Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`");const n=await bd(e,t,r),i=he(t)?.commandInstance?.constructor?.getEndpointParameterInstructions;if(!i)throw new Error(`getEndpointParameterInstructions() is not defined on \`${t.commandName}\``);const o=await Cs(r,{getEndpointParameterInstructions:i},e);return Object.assign(n,o)});var bd;function wd(e){return{schemeId:"aws.auth#sigv4",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function kd(e){return{schemeId:"aws.auth#sigv4a",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}const Sd=((e,t,r)=>n=>{const i=e(n),o=i.properties?.authSchemes;if(!o)return t(n);const s=[];for(const e of o){const{name:t,properties:i={},...a}=e,c=t.toLowerCase();let u;if(t!==c&&console.warn(`HttpAuthScheme has been normalized with lowercasing: \`${t}\` to \`${c}\``),"sigv4a"===c){u="aws.auth#sigv4a";const e=o.find((e=>{const t=e.name.toLowerCase();return"sigv4a"!==t&&t.startsWith("sigv4")}));if(e)continue}else{if(!c.startsWith("sigv4"))throw new Error(`Unknown HttpAuthScheme found in \`@smithy.rules#endpointRuleSet\`: \`${c}\``);u="aws.auth#sigv4"}const d=r[u];if(!d)throw new Error(`Could not find HttpAuthOption create function for \`${u}\``);const l=d(n);l.schemeId=u,l.signingProperties={...l.signingProperties||{},...a,...i},s.push(l)}return s})(yd,(e=>{const t=[];return e.operation,t.push(wd(e)),t.push(kd(e)),t}),{"aws.auth#sigv4":wd,"aws.auth#sigv4a":kd}),Ed=e=>{const t=(e=>(e.sigv4aSigningRegionSet=Ee(e.sigv4aSigningRegionSet),e))(Ut(e));return{...t}},xd={ForcePathStyle:{type:"clientContextParams",name:"forcePathStyle"},UseArnRegion:{type:"clientContextParams",name:"useArnRegion"},DisableMultiRegionAccessPoints:{type:"clientContextParams",name:"disableMultiregionAccessPoints"},Accelerate:{type:"clientContextParams",name:"useAccelerateEndpoint"},DisableS3ExpressSessionAuth:{type:"clientContextParams",name:"disableS3ExpressSessionAuth"},UseGlobalEndpoint:{type:"builtInParams",name:"useGlobalEndpoint"},UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}};class Td extends Ir{constructor(e){super(e),Object.setPrototypeOf(this,Td.prototype)}}class Ad extends Td{constructor(e){super({name:"NoSuchUpload",$fault:"client",...e}),this.name="NoSuchUpload",this.$fault="client",Object.setPrototypeOf(this,Ad.prototype)}}class Cd extends Td{constructor(e){super({name:"ObjectNotInActiveTierError",$fault:"client",...e}),this.name="ObjectNotInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,Cd.prototype)}}class Rd extends Td{constructor(e){super({name:"BucketAlreadyExists",$fault:"client",...e}),this.name="BucketAlreadyExists",this.$fault="client",Object.setPrototypeOf(this,Rd.prototype)}}class Od extends Td{constructor(e){super({name:"BucketAlreadyOwnedByYou",$fault:"client",...e}),this.name="BucketAlreadyOwnedByYou",this.$fault="client",Object.setPrototypeOf(this,Od.prototype)}}class _d extends Td{constructor(e){super({name:"NoSuchBucket",$fault:"client",...e}),this.name="NoSuchBucket",this.$fault="client",Object.setPrototypeOf(this,_d.prototype)}}var Pd,Id;!function(e){e.visit=(e,t)=>void 0!==e.Prefix?t.Prefix(e.Prefix):void 0!==e.Tag?t.Tag(e.Tag):void 0!==e.And?t.And(e.And):t._(e.$unknown[0],e.$unknown[1])}(Pd||(Pd={})),function(e){e.visit=(e,t)=>void 0!==e.Prefix?t.Prefix(e.Prefix):void 0!==e.Tag?t.Tag(e.Tag):void 0!==e.AccessPointArn?t.AccessPointArn(e.AccessPointArn):void 0!==e.And?t.And(e.And):t._(e.$unknown[0],e.$unknown[1])}(Id||(Id={}));class Md extends Td{constructor(e){super({name:"InvalidObjectState",$fault:"client",...e}),this.name="InvalidObjectState",this.$fault="client",Object.setPrototypeOf(this,Md.prototype),this.StorageClass=e.StorageClass,this.AccessTier=e.AccessTier}}class Nd extends Td{constructor(e){super({name:"NoSuchKey",$fault:"client",...e}),this.name="NoSuchKey",this.$fault="client",Object.setPrototypeOf(this,Nd.prototype)}}class Fd extends Td{constructor(e){super({name:"NotFound",$fault:"client",...e}),this.name="NotFound",this.$fault="client",Object.setPrototypeOf(this,Fd.prototype)}}const $d=e=>({...e,...e.SecretAccessKey&&{SecretAccessKey:Kt},...e.SessionToken&&{SessionToken:Kt}}),Ud=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt},...e.Credentials&&{Credentials:$d(e.Credentials)}}),Ld=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Dd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt}}),Bd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:Kt}});class zd extends Td{constructor(e){super({name:"EncryptionTypeMismatch",$fault:"client",...e}),this.name="EncryptionTypeMismatch",this.$fault="client",Object.setPrototypeOf(this,zd.prototype)}}class jd extends Td{constructor(e){super({name:"InvalidRequest",$fault:"client",...e}),this.name="InvalidRequest",this.$fault="client",Object.setPrototypeOf(this,jd.prototype)}}class qd extends Td{constructor(e){super({name:"InvalidWriteOffset",$fault:"client",...e}),this.name="InvalidWriteOffset",this.$fault="client",Object.setPrototypeOf(this,qd.prototype)}}class Wd extends Td{constructor(e){super({name:"TooManyParts",$fault:"client",...e}),this.name="TooManyParts",this.$fault="client",Object.setPrototypeOf(this,Wd.prototype)}}class Hd extends Td{constructor(e){super({name:"ObjectAlreadyInActiveTierError",$fault:"client",...e}),this.name="ObjectAlreadyInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,Hd.prototype)}}var Kd;!function(e){e.visit=(e,t)=>void 0!==e.Records?t.Records(e.Records):void 0!==e.Stats?t.Stats(e.Stats):void 0!==e.Progress?t.Progress(e.Progress):void 0!==e.Cont?t.Cont(e.Cont):void 0!==e.End?t.End(e.End):t._(e.$unknown[0],e.$unknown[1])}(Kd||(Kd={}));const Vd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Qd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:Kt},...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Gd=async(e,t)=>{const r=Ze(e,t),n=Vr({},Wr,{[rp]:e[Zh],[Ap]:e[ef],[Cp]:e[sf],[Op]:e[of],[Rp]:[()=>Wr(e[Ml]),()=>e[Ml].toString()]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=Vr({[Kf]:[,""]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Jd=async(e,t)=>{const r=Ze(e,t),n=Vr({},Wr,{[hp]:e[xh],[Sp]:e[Kh],[Jf]:[()=>Wr(e[Il]),()=>e[Il].toString()],[op]:e[rh],[_f]:e[fh],[dp]:[()=>Wr(e[ph]),()=>pr(e[ph]).toString()],[lp]:[()=>Wr(e[gh]),()=>e[gh].toString()]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Lp]:[,"DeleteObject"],[Qf]:[,e[lf]]});return r.m("DELETE").h(n).q(i).b(undefined),r.build()},Xd=async(e,t)=>{const r=Ze(e,t),n=Vr({},Wr,{[_f]:e[fh],[Pf]:[()=>Wr(e[mh]),()=>pr(e[mh]).toString()],[If]:e[yh],[Mf]:[()=>Wr(e[wh]),()=>pr(e[wh]).toString()],[Df]:e[Uh],[_p]:e[tf],[Pp]:e[rf],[Ip]:e[nf],[Sp]:e[Kh],[op]:e[rh],[Zf]:e[ql]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Lp]:[,"GetObject"],[Bf]:[,e[Dh]],[zf]:[,e[Bh]],[jf]:[,e[zh]],[qf]:[,e[jh]],[Wf]:[,e[qh]],[Hf]:[()=>void 0!==e.ResponseExpires,()=>pr(e[Wh]).toString()],[Qf]:[,e[lf]],[Uf]:[()=>void 0!==e.PartNumber,()=>e[$h].toString()]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Yd=async(e,t)=>{const r=Ze(e,t),n=Vr({},Wr,{[Sp]:e[Kh],[op]:e[rh],[vp]:[()=>Wr(e[Mh]),()=>(e[Mh]||[]).map(Yr).join(", ")]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=Vr({[Ff]:[,"2"],[xf]:[,e[Yl]],[Af]:[,e[ih]],[$f]:[()=>void 0!==e.MaxKeys,()=>e[Th].toString()],[Lf]:[,e[Nh]],[Ef]:[,e[Jl]],[Of]:[()=>void 0!==e.FetchOwner,()=>e[ah].toString()],[Vf]:[,e[Jh]]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Zd=async(e,t)=>{const r=Ze(e,t),n=Vr({},Wr,{[Sf]:e[Gl]||"application/octet-stream",[Gf]:e[Rl],[gf]:e[$l],[mf]:e[Dl],[yf]:e[Bl],[vf]:e[zl],[bf]:[()=>Wr(e[jl]),()=>e[jl].toString()],[wf]:e[Wl],[Tp]:e[Fl],[Xf]:e[Ul],[Yf]:e[Ll],[ep]:e[Vl],[tp]:e[Ql],[Tf]:[()=>Wr(e[th]),()=>pr(e[th]).toString()],[_f]:e[fh],[If]:e[yh],[sp]:e[ch],[ap]:e[uh],[cp]:e[dh],[up]:e[lh],[$p]:[()=>Wr(e[hf]),()=>e[hf].toString()],[Ap]:e[ef],[xp]:e[Yh],[Up]:e[ff],[_p]:e[tf],[Pp]:e[rf],[Ip]:e[nf],[Cp]:e[sf],[Op]:e[of],[Rp]:[()=>Wr(e[Ml]),()=>e[Ml].toString()],[Sp]:e[Kh],[Mp]:e[uf],[mp]:e[Ph],[yp]:[()=>Wr(e[Ih]),()=>{return(t=e[Ih],t.toISOString().replace(".000Z","Z")).toString();var t}],[gp]:e[_h],[op]:e[rh],...void 0!==e.Metadata&&Object.keys(e.Metadata).reduce(((t,r)=>(t[`x-amz-meta-${r.toLowerCase()}`]=e.Metadata[r],t)),{})});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Lp]:[,"PutObject"]});let o,s;return void 0!==e.Body&&(s=e.Body,o=s),r.m("PUT").h(n).q(i).b(o),r.build()},el=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[ef]:[,e.headers[Ap]],[sf]:[,e.headers[Cp]],[of]:[,e.headers[Op]],[Ml]:[()=>void 0!==e.headers[Rp],()=>Vt(e.headers[Rp])]}),n=rr(nr(await bi(e.body,t)),"body");return null!=n[Nl]&&(r[Nl]=Al(n[Nl])),r},tl=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[Zl]:[()=>void 0!==e.headers[np],()=>Vt(e.headers[np])],[lf]:[,e.headers[Fp]],[Lh]:[,e.headers[kp]]});return await Xe(e.body,t),r},rl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[Zl]:[()=>void 0!==e.headers[np],()=>Vt(e.headers[np])],[_l]:[,e.headers[pf]],[sh]:[,e.headers[ip]],[Gh]:[,e.headers[wp]],[Eh]:[()=>void 0!==e.headers[Nf],()=>rr(wr(e.headers[Nf]))],[jl]:[()=>void 0!==e.headers[bf],()=>ar(e.headers[bf])],[oh]:[,e.headers[Cf]],[Ul]:[,e.headers[Xf]],[Ll]:[,e.headers[Yf]],[Vl]:[,e.headers[ep]],[Ql]:[,e.headers[tp]],[Ah]:[()=>void 0!==e.headers[fp],()=>cr(e.headers[fp])],[lf]:[,e.headers[Fp]],[$l]:[,e.headers[gf]],[Dl]:[,e.headers[mf]],[Bl]:[,e.headers[yf]],[zl]:[,e.headers[vf]],[Kl]:[,e.headers[kf]],[Gl]:[,e.headers[Sf]],[th]:[()=>void 0!==e.headers[Tf],()=>rr(wr(e.headers[Tf]))],[nh]:[,e.headers[Rf]],[ff]:[,e.headers[Up]],[ef]:[,e.headers[Ap]],[tf]:[,e.headers[_p]],[nf]:[,e.headers[Ip]],[sf]:[,e.headers[Cp]],[Ml]:[()=>void 0!==e.headers[Rp],()=>Vt(e.headers[Rp])],[Yh]:[,e.headers[xp]],[Lh]:[,e.headers[kp]],[Vh]:[,e.headers[Ep]],[Fh]:[()=>void 0!==e.headers[pp],()=>cr(e.headers[pp])],[df]:[()=>void 0!==e.headers[Np],()=>cr(e.headers[Np])],[Ph]:[,e.headers[mp]],[Ih]:[()=>void 0!==e.headers[yp],()=>rr(mr(e.headers[yp]))],[_h]:[,e.headers[gp]],Metadata:[,Object.keys(e.headers).filter((e=>e.startsWith("x-amz-meta-"))).reduce(((t,r)=>(t[r.substring(11)]=e.headers[r],t)),{})]}),n=e.body;return t.sdkStreamMixin(n),r.Body=n,r},nl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[Lh]:[,e.headers[kp]]}),n=rr(nr(await bi(e.body,t)),"body");return""===n.CommonPrefixes?r[Hl]=[]:null!=n[Hl]&&(r[Hl]=kl(jr(n[Hl]))),""===n.Contents?r[Xl]=[]:null!=n[Xl]&&(r[Xl]=El(jr(n[Xl]))),null!=n[Jl]&&(r[Jl]=ir(n[Jl])),null!=n[Yl]&&(r[Yl]=ir(n[Yl])),null!=n[ih]&&(r[ih]=ir(n[ih])),null!=n[bh]&&(r[bh]=Vt(n[bh])),null!=n[Sh]&&(r[Sh]=cr(n[Sh])),null!=n[Th]&&(r[Th]=cr(n[Th])),null!=n[Ch]&&(r[Ch]=ir(n[Ch])),null!=n[Rh]&&(r[Rh]=ir(n[Rh])),null!=n[Nh]&&(r[Nh]=ir(n[Nh])),null!=n[Jh]&&(r[Jh]=ir(n[Jh])),r},il=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[sh]:[,e.headers[ip]],[oh]:[,e.headers[Cf]],[Ul]:[,e.headers[Xf]],[Ll]:[,e.headers[Yf]],[Vl]:[,e.headers[ep]],[Ql]:[,e.headers[tp]],[ef]:[,e.headers[Ap]],[lf]:[,e.headers[Fp]],[tf]:[,e.headers[_p]],[nf]:[,e.headers[Ip]],[sf]:[,e.headers[Cp]],[of]:[,e.headers[Op]],[Ml]:[()=>void 0!==e.headers[Rp],()=>Vt(e.headers[Rp])],[cf]:[()=>void 0!==e.headers[bp],()=>ar(e.headers[bp])],[Lh]:[,e.headers[kp]]});return await Xe(e.body,t),r},ol=async(e,t)=>{const r={...e,body:await wi(e.body,t)},n=((e,t)=>void 0!==t?.Error?.Code?t.Error.Code:void 0!==t?.Code?t.Code:404==e.statusCode?"NotFound":void 0)(e,r.body);switch(n){case"NoSuchUpload":case"com.amazonaws.s3#NoSuchUpload":throw await ml(r,t);case"ObjectNotInActiveTierError":case"com.amazonaws.s3#ObjectNotInActiveTierError":throw await bl(r,t);case"BucketAlreadyExists":case"com.amazonaws.s3#BucketAlreadyExists":throw await cl(r,t);case"BucketAlreadyOwnedByYou":case"com.amazonaws.s3#BucketAlreadyOwnedByYou":throw await ul(r,t);case"NoSuchBucket":case"com.amazonaws.s3#NoSuchBucket":throw await pl(r,t);case"InvalidObjectState":case"com.amazonaws.s3#InvalidObjectState":throw await ll(r,t);case"NoSuchKey":case"com.amazonaws.s3#NoSuchKey":throw await gl(r,t);case"NotFound":case"com.amazonaws.s3#NotFound":throw await yl(r,t);case"EncryptionTypeMismatch":case"com.amazonaws.s3#EncryptionTypeMismatch":throw await dl(r,t);case"InvalidRequest":case"com.amazonaws.s3#InvalidRequest":throw await hl(r,t);case"InvalidWriteOffset":case"com.amazonaws.s3#InvalidWriteOffset":throw await fl(r,t);case"TooManyParts":case"com.amazonaws.s3#TooManyParts":throw await wl(r,t);case"ObjectAlreadyInActiveTierError":case"com.amazonaws.s3#ObjectAlreadyInActiveTierError":throw await vl(r,t);default:const i=r.body;return sl({output:e,parsedBody:i,errorCode:n})}},sl=(al=Td,({output:e,parsedBody:t,errorCode:r})=>{(({output:e,parsedBody:t,exceptionCtor:r,errorCode:n})=>{const i=Nr(e),o=i.httpStatusCode?i.httpStatusCode+"":void 0,s=new r({name:t?.code||t?.Code||n||o||"UnknownError",$fault:"client",$metadata:i});throw Mr(s,t)})({output:e,parsedBody:t,exceptionCtor:al,errorCode:r})});var al;const cl=async(e,t)=>{const r=Vr({});e.body;const n=new Rd({$metadata:Cl(e),...r});return Mr(n,e.body)},ul=async(e,t)=>{const r=Vr({});e.body;const n=new Od({$metadata:Cl(e),...r});return Mr(n,e.body)},dl=async(e,t)=>{const r=Vr({});e.body;const n=new zd({$metadata:Cl(e),...r});return Mr(n,e.body)},ll=async(e,t)=>{const r=Vr({}),n=e.body;null!=n[Pl]&&(r[Pl]=ir(n[Pl])),null!=n[Yh]&&(r[Yh]=ir(n[Yh]));const i=new Md({$metadata:Cl(e),...r});return Mr(i,e.body)},hl=async(e,t)=>{const r=Vr({});e.body;const n=new jd({$metadata:Cl(e),...r});return Mr(n,e.body)},fl=async(e,t)=>{const r=Vr({});e.body;const n=new qd({$metadata:Cl(e),...r});return Mr(n,e.body)},pl=async(e,t)=>{const r=Vr({});e.body;const n=new _d({$metadata:Cl(e),...r});return Mr(n,e.body)},gl=async(e,t)=>{const r=Vr({});e.body;const n=new Nd({$metadata:Cl(e),...r});return Mr(n,e.body)},ml=async(e,t)=>{const r=Vr({});e.body;const n=new Ad({$metadata:Cl(e),...r});return Mr(n,e.body)},yl=async(e,t)=>{const r=Vr({});e.body;const n=new Fd({$metadata:Cl(e),...r});return Mr(n,e.body)},vl=async(e,t)=>{const r=Vr({});e.body;const n=new Hd({$metadata:Cl(e),...r});return Mr(n,e.body)},bl=async(e,t)=>{const r=Vr({});e.body;const n=new Cd({$metadata:Cl(e),...r});return Mr(n,e.body)},wl=async(e,t)=>{const r=Vr({});e.body;const n=new Wd({$metadata:Cl(e),...r});return Mr(n,e.body)},kl=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>(e=>{const t={};return null!=e[Nh]&&(t[Nh]=ir(e[Nh])),t})(e))),Sl=(e,t)=>{const r={};return null!=e[kh]&&(r[kh]=ir(e[kh])),null!=e[Eh]&&(r[Eh]=rr(mr(e[Eh]))),null!=e[oh]&&(r[oh]=ir(e[oh])),""===e.ChecksumAlgorithm?r[Fl]=[]:null!=e[Fl]&&(r[Fl]=(e=>(e||[]).filter((e=>null!=e)).map((e=>ir(e))))(jr(e[Fl]))),null!=e[cf]&&(r[cf]=ar(e[cf])),null!=e[Yh]&&(r[Yh]=ir(e[Yh])),null!=e[Oh]&&(r[Oh]=xl(e[Oh])),null!=e[Qh]&&(r[Qh]=Tl(e[Qh])),r},El=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>Sl(e))),xl=(e,t)=>{const r={};return null!=e[eh]&&(r[eh]=ir(e[eh])),null!=e[hh]&&(r[hh]=ir(e[hh])),r},Tl=(e,t)=>{const r={};return null!=e[vh]&&(r[vh]=Vt(e[vh])),null!=e[Hh]&&(r[Hh]=rr(mr(e[Hh]))),r},Al=(e,t)=>{const r={};return null!=e[Ol]&&(r[Ol]=ir(e[Ol])),null!=e[Xh]&&(r[Xh]=ir(e[Xh])),null!=e[af]&&(r[af]=ir(e[af])),null!=e[sh]&&(r[sh]=rr(mr(e[sh]))),r},Cl=e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}),Rl="ACL",Ol="AccessKeyId",_l="AcceptRanges",Pl="AccessTier",Il="BypassGovernanceRetention",Ml="BucketKeyEnabled",Nl="Credentials",Fl="ChecksumAlgorithm",$l="CacheControl",Ul="ChecksumCRC32",Ll="ChecksumCRC32C",Dl="ContentDisposition",Bl="ContentEncoding",zl="ContentLanguage",jl="ContentLength",ql="ChecksumMode",Wl="ContentMD5",Hl="CommonPrefixes",Kl="ContentRange",Vl="ChecksumSHA1",Ql="ChecksumSHA256",Gl="ContentType",Jl="ContinuationToken",Xl="Contents",Yl="Delimiter",Zl="DeleteMarker",eh="DisplayName",th="Expires",rh="ExpectedBucketOwner",nh="ExpiresString",ih="EncodingType",oh="ETag",sh="Expiration",ah="FetchOwner",ch="GrantFullControl",uh="GrantRead",dh="GrantReadACP",lh="GrantWriteACP",hh="ID",fh="IfMatch",ph="IfMatchLastModifiedTime",gh="IfMatchSize",mh="IfModifiedSince",yh="IfNoneMatch",vh="IsRestoreInProgress",bh="IsTruncated",wh="IfUnmodifiedSince",kh="Key",Sh="KeyCount",Eh="LastModified",xh="MFA",Th="MaxKeys",Ah="MissingMeta",Ch="Name",Rh="NextContinuationToken",Oh="Owner",_h="ObjectLockLegalHoldStatus",Ph="ObjectLockMode",Ih="ObjectLockRetainUntilDate",Mh="OptionalObjectAttributes",Nh="Prefix",Fh="PartsCount",$h="PartNumber",Uh="Range",Lh="RequestCharged",Dh="ResponseCacheControl",Bh="ResponseContentDisposition",zh="ResponseContentEncoding",jh="ResponseContentLanguage",qh="ResponseContentType",Wh="ResponseExpires",Hh="RestoreExpiryDate",Kh="RequestPayer",Vh="ReplicationStatus",Qh="RestoreStatus",Gh="Restore",Jh="StartAfter",Xh="SecretAccessKey",Yh="StorageClass",Zh="SessionMode",ef="ServerSideEncryption",tf="SSECustomerAlgorithm",rf="SSECustomerKey",nf="SSECustomerKeyMD5",of="SSEKMSEncryptionContext",sf="SSEKMSKeyId",af="SessionToken",cf="Size",uf="Tagging",df="TagCount",lf="VersionId",hf="WriteOffsetBytes",ff="WebsiteRedirectLocation",pf="accept-ranges",gf="cache-control",mf="content-disposition",yf="content-encoding",vf="content-language",bf="content-length",wf="content-md5",kf="content-range",Sf="content-type",Ef="continuation-token",xf="delimiter",Tf="expires",Af="encoding-type",Cf="etag",Rf="expiresstring",Of="fetch-owner",_f="if-match",Pf="if-modified-since",If="if-none-match",Mf="if-unmodified-since",Nf="last-modified",Ff="list-type",$f="max-keys",Uf="partNumber",Lf="prefix",Df="range",Bf="response-cache-control",zf="response-content-disposition",jf="response-content-encoding",qf="response-content-language",Wf="response-content-type",Hf="response-expires",Kf="session",Vf="start-after",Qf="versionId",Gf="x-amz-acl",Jf="x-amz-bypass-governance-retention",Xf="x-amz-checksum-crc32",Yf="x-amz-checksum-crc32c",Zf="x-amz-checksum-mode",ep="x-amz-checksum-sha1",tp="x-amz-checksum-sha256",rp="x-amz-create-session-mode",np="x-amz-delete-marker",ip="x-amz-expiration",op="x-amz-expected-bucket-owner",sp="x-amz-grant-full-control",ap="x-amz-grant-read",cp="x-amz-grant-read-acp",up="x-amz-grant-write-acp",dp="x-amz-if-match-last-modified-time",lp="x-amz-if-match-size",hp="x-amz-mfa",fp="x-amz-missing-meta",pp="x-amz-mp-parts-count",gp="x-amz-object-lock-legal-hold",mp="x-amz-object-lock-mode",yp="x-amz-object-lock-retain-until-date",vp="x-amz-optional-object-attributes",bp="x-amz-object-size",wp="x-amz-restore",kp="x-amz-request-charged",Sp="x-amz-request-payer",Ep="x-amz-replication-status",xp="x-amz-storage-class",Tp="x-amz-sdk-checksum-algorithm",Ap="x-amz-server-side-encryption",Cp="x-amz-server-side-encryption-aws-kms-key-id",Rp="x-amz-server-side-encryption-bucket-key-enabled",Op="x-amz-server-side-encryption-context",_p="x-amz-server-side-encryption-customer-algorithm",Pp="x-amz-server-side-encryption-customer-key",Ip="x-amz-server-side-encryption-customer-key-md5",Mp="x-amz-tagging",Np="x-amz-tagging-count",Fp="x-amz-version-id",$p="x-amz-write-offset-bytes",Up="x-amz-website-redirect-location",Lp="x-id";class Dp extends(Wt.classBuilder().ep({...xd,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),_s(r,e.getEndpointParameterInstructions()),Ro(r)]})).s("AmazonS3","CreateSession",{}).n("S3Client","CreateSessionCommand").f(Ld,Ud).ser(Gd).de(el).build()){}var Bp="3.701.0";function zp(e){return"string"==typeof e?0===e.length:0===e.byteLength}var jp={name:"SHA-1"},qp={name:"HMAC",hash:jp},Wp=new Uint8Array([218,57,163,238,94,107,75,13,50,85,191,239,149,96,24,144,175,216,7,9]);const Hp={};function Kp(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:Hp}var Vp=function(){function e(e){this.toHash=new Uint8Array(0),void 0!==e&&(this.key=new Promise((function(t,r){Kp().crypto.subtle.importKey("raw",Qp(e),qp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))}return e.prototype.update=function(e){if(!zp(e)){var t=Qp(e),r=new Uint8Array(this.toHash.byteLength+t.byteLength);r.set(this.toHash,0),r.set(t,this.toHash.byteLength),this.toHash=r}},e.prototype.digest=function(){var e=this;return this.key?this.key.then((function(t){return Kp().crypto.subtle.sign(qp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):zp(this.toHash)?Promise.resolve(Wp):Promise.resolve().then((function(){return Kp().crypto.subtle.digest(jp,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){this.toHash=new Uint8Array(0)},e}();function Qp(e){return"string"==typeof e?(t=e,(new TextEncoder).encode(t)):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e);var t}var Gp=["decrypt","digest","encrypt","exportKey","generateKey","importKey","sign","verify"];function Jp(e){return!(!function(e){if("object"==typeof e&&"object"==typeof e.crypto){return"function"==typeof e.crypto.getRandomValues}return!1}(e)||"object"!=typeof e.crypto.subtle)&&function(e){return e&&Gp.every((function(t){return"function"==typeof e[t]}))}(e.crypto.subtle)}var Xp=function(){function e(e){if(!Jp(Kp()))throw new Error("SHA1 not supported");this.hash=new Vp(e)}return e.prototype.update=function(e,t){this.hash.update(Ri(e))},e.prototype.digest=function(){return this.hash.digest()},e.prototype.reset=function(){this.hash.reset()},e}(),Yp={name:"SHA-256"},Zp={name:"HMAC",hash:Yp},eg=new Uint8Array([227,176,196,66,152,252,28,20,154,251,244,200,153,111,185,36,39,174,65,228,100,155,147,76,164,149,153,27,120,82,184,85]),tg=function(){function e(e){this.toHash=new Uint8Array(0),this.secret=e,this.reset()}return e.prototype.update=function(e){if(!Oi(e)){var t=Ri(e),r=new Uint8Array(this.toHash.byteLength+t.byteLength);r.set(this.toHash,0),r.set(t,this.toHash.byteLength),this.toHash=r}},e.prototype.digest=function(){var e=this;return this.key?this.key.then((function(t){return Kp().crypto.subtle.sign(Zp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):Oi(this.toHash)?Promise.resolve(eg):Promise.resolve().then((function(){return Kp().crypto.subtle.digest(Yp,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){var e=this;this.toHash=new Uint8Array(0),this.secret&&void 0!==this.secret&&(this.key=new Promise((function(t,r){Kp().crypto.subtle.importKey("raw",Ri(e.secret),Zp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))},e}();function rg(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function ng(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]ag)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;r>0;)this.buffer[this.bufferLength++]=e[t++],r--,this.bufferLength===ig&&(this.hashBuffer(),this.bufferLength=0)},e.prototype.digest=function(){if(!this.finished){var e=8*this.bytesHashed,t=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),r=this.bufferLength;if(t.setUint8(this.bufferLength++,128),r%ig>=56){for(var n=this.bufferLength;n>>24&255,i[4*n+1]=this.state[n]>>>16&255,i[4*n+2]=this.state[n]>>>8&255,i[4*n+3]=this.state[n]>>>0&255;return i},e.prototype.hashBuffer=function(){for(var e=this.buffer,t=this.state,r=t[0],n=t[1],i=t[2],o=t[3],s=t[4],a=t[5],c=t[6],u=t[7],d=0;d>>17|l<<15)^(l>>>19|l<<13)^l>>>10,f=((l=this.temp[d-15])>>>7|l<<25)^(l>>>18|l<<14)^l>>>3;this.temp[d]=(h+this.temp[d-7]|0)+(f+this.temp[d-16]|0)}var p=(((s>>>6|s<<26)^(s>>>11|s<<21)^(s>>>25|s<<7))+(s&a^~s&c)|0)+(u+(og[d]+this.temp[d]|0)|0)|0,g=((r>>>2|r<<30)^(r>>>13|r<<19)^(r>>>22|r<<10))+(r&n^r&i^n&i)|0;u=c,c=a,a=s,s=o+p|0,o=i,i=n,n=r,r=p+g|0}t[0]+=r,t[1]+=n,t[2]+=i,t[3]+=o,t[4]+=s,t[5]+=a,t[6]+=c,t[7]+=u},e}(),ug=function(){function e(e){this.secret=e,this.hash=new cg,this.reset()}return e.prototype.update=function(e){if(!Oi(e)&&!this.error)try{this.hash.update(Ri(e))}catch(e){this.error=e}},e.prototype.digestSync=function(){if(this.error)throw this.error;return this.outer?(this.outer.finished||this.outer.update(this.hash.digest()),this.outer.digest()):this.hash.digest()},e.prototype.digest=function(){return rg(this,void 0,void 0,(function(){return ng(this,(function(e){return[2,this.digestSync()]}))}))},e.prototype.reset=function(){if(this.hash=new cg,this.secret){this.outer=new cg;var e=function(e){var t=Ri(e);if(t.byteLength>ig){var r=new cg;r.update(t),t=r.digest()}var n=new Uint8Array(ig);return n.set(t),n}(this.secret),t=new Uint8Array(ig);t.set(e);for(var r=0;r0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),o=e.getVersionPrecision(r),s=Math.max(i,o),a=0,c=e.map([t,r],(function(t){var r=s-e.getVersionPrecision(t),n=t+new Array(r+1).join(".0");return e.map(n.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(n&&(a=s-Math.min(i,o)),s-=1;s>=a;){if(c[0][s]>c[1][s])return 1;if(c[0][s]===c[1][s]){if(s===a)return 0;s-=1}else if(c[0][s]1?i-1:0),s=1;s0){var s=Object.keys(r),c=a.default.find(s,(function(e){return t.isOS(e)}));if(c){var u=this.satisfies(r[c]);if(void 0!==u)return u}var d=a.default.find(s,(function(e){return t.isPlatform(e)}));if(d){var l=this.satisfies(r[d]);if(void 0!==l)return l}}if(o>0){var h=Object.keys(i),f=a.default.find(h,(function(e){return t.isBrowser(e,!0)}));if(void 0!==f)return this.compareVersion(i[f])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=a.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(n=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(a.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=u,e.exports=t.default},92:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=/version\/(\d+(\.?_?\d+)+)/i,s=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=s,e.exports=t.default},93:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:[/Roku\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:o.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=i.default.getWindowsVersionName(t);return{name:o.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:o.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=i.default.getMacOSVersionName(t),n={name:o.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:o.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:o.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:o.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:o.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:o.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:o.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.PlayStation4,version:t}}}];t.default=s,e.exports=t.default},94:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:o.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:o.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}}];t.default=s,e.exports=t.default},95:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:o.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:o.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:o.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:o.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:o.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:o.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:o.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=s,e.exports=t.default}});var hg=Zr(lg.exports);const fg=({serviceId:e,clientVersion:t})=>async r=>{const n="undefined"!=typeof window&&window?.navigator?.userAgent?hg.parse(window.navigator.userAgent):void 0,i=[["aws-sdk-js",t],["ua","2.1"],[`os/${n?.os?.name||"other"}`,n?.os?.version],["lang/js"],["md/browser",`${n?.browser?.name??"unknown"}_${n?.browser?.version??"unknown"}`]];e&&i.push([`api/${e}`,t]);const o=await(r?.userAgentAppId?.());return o&&i.push([`app/${o}`]),i};class pg{constructor(e){if(this.bytes=e,8!==e.byteLength)throw new Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(e){if(e>0x8000000000000000||e<-0x8000000000000000)throw new Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);const t=new Uint8Array(8);for(let r=7,n=Math.abs(Math.round(e));r>-1&&n>0;r--,n/=256)t[r]=n;return e<0&&gg(t),new pg(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&gg(e),parseInt(qe(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function gg(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}class mg{constructor(e,t){this.toUtf8=e,this.fromUtf8=t}format(e){const t=[];for(const r of Object.keys(e)){const n=this.fromUtf8(r);t.push(Uint8Array.from([n.byteLength]),n,this.formatHeaderValue(e[r]))}const r=new Uint8Array(t.reduce(((e,t)=>e+t.byteLength),0));let n=0;for(const e of t)r.set(e,n),n+=e.byteLength;return r}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":const t=new DataView(new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case"integer":const r=new DataView(new ArrayBuffer(5));return r.setUint8(0,4),r.setInt32(1,e.value,!1),new Uint8Array(r.buffer);case"long":const n=new Uint8Array(9);return n[0]=5,n.set(e.value.bytes,1),n;case"binary":const i=new DataView(new ArrayBuffer(3+e.value.byteLength));i.setUint8(0,6),i.setUint16(1,e.value.byteLength,!1);const o=new Uint8Array(i.buffer);return o.set(e.value,3),o;case"string":const s=this.fromUtf8(e.value),a=new DataView(new ArrayBuffer(3+s.byteLength));a.setUint8(0,7),a.setUint16(1,s.byteLength,!1);const c=new Uint8Array(a.buffer);return c.set(s,3),c;case"timestamp":const u=new Uint8Array(9);return u[0]=8,u.set(pg.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!Cg.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(je(e.value.replace(/\-/g,"")),1),d}}parse(e){const t={};let r=0;for(;re,isEndOfStream:()=>t}}getAvailableMessages(){const e=this.messageBuffer;this.messageBuffer=[];const t=this.isEndOfStream;return{getMessages:()=>e,isEndOfStream:()=>t}}encode({headers:e,body:t}){const r=this.headerMarshaller.format(e),n=r.byteLength+t.byteLength+16,i=new Uint8Array(n),o=new DataView(i.buffer,i.byteOffset,i.byteLength),s=new Li;return o.setUint32(0,n,!1),o.setUint32(4,r.byteLength,!1),o.setUint32(8,s.update(i.subarray(0,8)).digest(),!1),i.set(r,12),i.set(t,r.byteLength+12),o.setUint32(n-4,s.update(i.subarray(8,n-4)).digest(),!1),i}decode(e){const{headers:t,body:r}=function({byteLength:e,byteOffset:t,buffer:r}){if(e<16)throw new Error("Provided message too short to accommodate event stream message overhead");const n=new DataView(r,t,e),i=n.getUint32(0,!1);if(e!==i)throw new Error("Reported message length does not match received message length");const o=n.getUint32(4,!1),s=n.getUint32(8,!1),a=n.getUint32(e-4,!1),c=(new Li).update(new Uint8Array(r,t,8));if(s!==c.digest())throw new Error(`The prelude checksum specified in the message (${s}) does not match the calculated CRC32 checksum (${c.digest()})`);if(c.update(new Uint8Array(r,t+8,e-12)),a!==c.digest())throw new Error(`The message checksum (${c.digest()}) did not match the expected value of ${a}`);return{headers:new DataView(r,t+8+4,o),body:new Uint8Array(r,t+8+4+o,i-o-16)}}(e);return{headers:this.headerMarshaller.parse(t),body:r}}formatHeaders(e){return this.headerMarshaller.format(e)}}class Og{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.inputStream){const t=this.options.decoder.decode(e);yield t}}}class _g{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.messageStream){const t=this.options.encoder.encode(e);yield t}this.options.includeEndFrame&&(yield new Uint8Array(0))}}class Pg{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.messageStream){const t=await this.options.deserializer(e);void 0!==t&&(yield t)}}}class Ig{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.inputStream){const t=this.options.serializer(e);yield t}}}function Mg(e,t){return async function(r){const{value:n}=r.headers[":message-type"];if("error"===n){const e=new Error(r.headers[":error-message"].value||"UnknownError");throw e.name=r.headers[":error-code"].value,e}if("exception"===n){const n=r.headers[":exception-type"].value,i={[n]:r},o=await e(i);if(o.$unknown){const e=new Error(t(r.body));throw e.name=n,e}throw o[n]}if("event"===n){const t={[r.headers[":event-type"].value]:r},n=await e(t);if(n.$unknown)return;return n}throw Error(`Unrecognizable event type: ${r.headers[":event-type"].value}`)}}class Ng{constructor({utf8Encoder:e,utf8Decoder:t}){this.eventStreamCodec=new Rg(e,t),this.utfEncoder=e}deserialize(e,t){const r=function(e){let t=0,r=0,n=null,i=null;const o=e=>{if("number"!=typeof e)throw new Error("Attempted to allocate an event message where size was not a number: "+e);t=e,r=4,n=new Uint8Array(e),new DataView(n.buffer).setUint32(0,e,!1)};return{[Symbol.asyncIterator]:async function*(){const s=e[Symbol.asyncIterator]();for(;;){const{value:e,done:a}=await s.next();if(a){if(!t)return;if(t!==r)throw new Error("Truncated event message received.");return void(yield n)}const c=e.length;let u=0;for(;u{const t=e[Symbol.asyncIterator]();return new ReadableStream({async pull(e){const{done:r,value:n}=await t.next();if(r)return e.close();e.enqueue(n)}})})(r):r}}const $g=e=>"function"==typeof ReadableStream&&e instanceof ReadableStream,Ug=e=>new Fg(e);const Lg=async function(e,t){const r=new e;return await async function(e,t,r=1048576){const n=e.size;let i=0;for(;i{r.update(e)})),r.digest()},Dg=64,Bg=[1732584193,4023233417,2562383102,271733878];class zg{constructor(){this.reset()}update(e){if(function(e){if("string"==typeof e)return 0===e.length;return 0===e.byteLength}(e))return;if(this.finished)throw new Error("Attempted to update an already finished hash.");const t=function(e){if("string"==typeof e)return Ce(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT);return new Uint8Array(e)}(e);let r=0,{byteLength:n}=t;for(this.bytesHashed+=n;n>0;)this.buffer.setUint8(this.bufferLength++,t[r++]),n--,this.bufferLength===Dg&&(this.hashBuffer(),this.bufferLength=0)}async digest(){if(!this.finished){const{buffer:e,bufferLength:t,bytesHashed:r}=this,n=8*r;if(e.setUint8(this.bufferLength++,128),t%Dg>=56){for(let t=this.bufferLength;t>>0,!0),e.setUint32(60,Math.floor(n/4294967296),!0),this.hashBuffer(),this.finished=!0}const e=new DataView(new ArrayBuffer(16));for(let t=0;t<4;t++)e.setUint32(4*t,this.state[t],!0);return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}hashBuffer(){const{buffer:e,state:t}=this;let r=t[0],n=t[1],i=t[2],o=t[3];r=qg(r,n,i,o,e.getUint32(0,!0),7,3614090360),o=qg(o,r,n,i,e.getUint32(4,!0),12,3905402710),i=qg(i,o,r,n,e.getUint32(8,!0),17,606105819),n=qg(n,i,o,r,e.getUint32(12,!0),22,3250441966),r=qg(r,n,i,o,e.getUint32(16,!0),7,4118548399),o=qg(o,r,n,i,e.getUint32(20,!0),12,1200080426),i=qg(i,o,r,n,e.getUint32(24,!0),17,2821735955),n=qg(n,i,o,r,e.getUint32(28,!0),22,4249261313),r=qg(r,n,i,o,e.getUint32(32,!0),7,1770035416),o=qg(o,r,n,i,e.getUint32(36,!0),12,2336552879),i=qg(i,o,r,n,e.getUint32(40,!0),17,4294925233),n=qg(n,i,o,r,e.getUint32(44,!0),22,2304563134),r=qg(r,n,i,o,e.getUint32(48,!0),7,1804603682),o=qg(o,r,n,i,e.getUint32(52,!0),12,4254626195),i=qg(i,o,r,n,e.getUint32(56,!0),17,2792965006),n=qg(n,i,o,r,e.getUint32(60,!0),22,1236535329),r=Wg(r,n,i,o,e.getUint32(4,!0),5,4129170786),o=Wg(o,r,n,i,e.getUint32(24,!0),9,3225465664),i=Wg(i,o,r,n,e.getUint32(44,!0),14,643717713),n=Wg(n,i,o,r,e.getUint32(0,!0),20,3921069994),r=Wg(r,n,i,o,e.getUint32(20,!0),5,3593408605),o=Wg(o,r,n,i,e.getUint32(40,!0),9,38016083),i=Wg(i,o,r,n,e.getUint32(60,!0),14,3634488961),n=Wg(n,i,o,r,e.getUint32(16,!0),20,3889429448),r=Wg(r,n,i,o,e.getUint32(36,!0),5,568446438),o=Wg(o,r,n,i,e.getUint32(56,!0),9,3275163606),i=Wg(i,o,r,n,e.getUint32(12,!0),14,4107603335),n=Wg(n,i,o,r,e.getUint32(32,!0),20,1163531501),r=Wg(r,n,i,o,e.getUint32(52,!0),5,2850285829),o=Wg(o,r,n,i,e.getUint32(8,!0),9,4243563512),i=Wg(i,o,r,n,e.getUint32(28,!0),14,1735328473),n=Wg(n,i,o,r,e.getUint32(48,!0),20,2368359562),r=Hg(r,n,i,o,e.getUint32(20,!0),4,4294588738),o=Hg(o,r,n,i,e.getUint32(32,!0),11,2272392833),i=Hg(i,o,r,n,e.getUint32(44,!0),16,1839030562),n=Hg(n,i,o,r,e.getUint32(56,!0),23,4259657740),r=Hg(r,n,i,o,e.getUint32(4,!0),4,2763975236),o=Hg(o,r,n,i,e.getUint32(16,!0),11,1272893353),i=Hg(i,o,r,n,e.getUint32(28,!0),16,4139469664),n=Hg(n,i,o,r,e.getUint32(40,!0),23,3200236656),r=Hg(r,n,i,o,e.getUint32(52,!0),4,681279174),o=Hg(o,r,n,i,e.getUint32(0,!0),11,3936430074),i=Hg(i,o,r,n,e.getUint32(12,!0),16,3572445317),n=Hg(n,i,o,r,e.getUint32(24,!0),23,76029189),r=Hg(r,n,i,o,e.getUint32(36,!0),4,3654602809),o=Hg(o,r,n,i,e.getUint32(48,!0),11,3873151461),i=Hg(i,o,r,n,e.getUint32(60,!0),16,530742520),n=Hg(n,i,o,r,e.getUint32(8,!0),23,3299628645),r=Kg(r,n,i,o,e.getUint32(0,!0),6,4096336452),o=Kg(o,r,n,i,e.getUint32(28,!0),10,1126891415),i=Kg(i,o,r,n,e.getUint32(56,!0),15,2878612391),n=Kg(n,i,o,r,e.getUint32(20,!0),21,4237533241),r=Kg(r,n,i,o,e.getUint32(48,!0),6,1700485571),o=Kg(o,r,n,i,e.getUint32(12,!0),10,2399980690),i=Kg(i,o,r,n,e.getUint32(40,!0),15,4293915773),n=Kg(n,i,o,r,e.getUint32(4,!0),21,2240044497),r=Kg(r,n,i,o,e.getUint32(32,!0),6,1873313359),o=Kg(o,r,n,i,e.getUint32(60,!0),10,4264355552),i=Kg(i,o,r,n,e.getUint32(24,!0),15,2734768916),n=Kg(n,i,o,r,e.getUint32(52,!0),21,1309151649),r=Kg(r,n,i,o,e.getUint32(16,!0),6,4149444226),o=Kg(o,r,n,i,e.getUint32(44,!0),10,3174756917),i=Kg(i,o,r,n,e.getUint32(8,!0),15,718787259),n=Kg(n,i,o,r,e.getUint32(36,!0),21,3951481745),t[0]=r+t[0]&4294967295,t[1]=n+t[1]&4294967295,t[2]=i+t[2]&4294967295,t[3]=o+t[3]&4294967295}reset(){this.state=Uint32Array.from(Bg),this.buffer=new DataView(new ArrayBuffer(Dg)),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}}function jg(e,t,r,n,i,o){return((t=(t+e&4294967295)+(n+o&4294967295)&4294967295)<>>32-i)+r&4294967295}function qg(e,t,r,n,i,o,s){return jg(t&r|~t&n,e,t,i,o,s)}function Wg(e,t,r,n,i,o,s){return jg(t&n|r&~n,e,t,i,o,s)}function Hg(e,t,r,n,i,o,s){return jg(t^r^n,e,t,i,o,s)}function Kg(e,t,r,n,i,o,s){return jg(r^(t|~n),e,t,i,o,s)}const Vg="function"==typeof TextEncoder?new TextEncoder:null,Qg=e=>{if("string"==typeof e){if(Vg)return Vg.encode(e).byteLength;let t=e.length;for(let r=t-1;r>=0;r--){const n=e.charCodeAt(r);n>127&&n<=2047?t++:n>2047&&n<=65535&&(t+=2),n>=56320&&n<=57343&&r--}return t}if("number"==typeof e.byteLength)return e.byteLength;if("number"==typeof e.size)return e.size;throw new Error(`Body Length computation failed for ${e}`)},Gg=["in-region","cross-region","mobile","standard","legacy"],Jg=()=>{const e="undefined"!=typeof window&&window?.navigator?.userAgent?hg.parse(window.navigator.userAgent):void 0,t=e?.platform?.type;return"tablet"===t||"mobile"===t},Xg=e=>{const t=(({defaultsMode:e}={})=>((e,t,r)=>{let n,i,o,s=!1;const a=async()=>{i||(i=e());try{n=await i,o=!0,s=!1}finally{i=void 0}return n};return void 0===t?async e=>(o&&!e?.forceRefresh||(n=await a()),n):async e=>(o&&!e?.forceRefresh||(n=await a()),s?n:r&&!r(n)?(s=!0,n):t(n)?(await a(),n):n)})((async()=>{const t="function"==typeof e?await e():e;switch(t?.toLowerCase()){case"auto":return Promise.resolve(Jg()?"mobile":"standard");case"mobile":case"in-region":case"cross-region":case"standard":case"legacy":return Promise.resolve(t?.toLocaleLowerCase());case void 0:return Promise.resolve("legacy");default:throw new Error(`Invalid parameter for "defaultsMode", expect ${Gg.join(", ")}, got ${t}`)}})))(e),r=()=>t().then(Fr),n=(e=>({apiVersion:"2006-03-01",base64Decoder:e?.base64Decoder??Ae,base64Encoder:e?.base64Encoder??_e,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??yd,extensions:e?.extensions??[],getAwsChunkedEncodingStream:e?.getAwsChunkedEncodingStream??Ie,httpAuthSchemeProvider:e?.httpAuthSchemeProvider??Sd,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4"),signer:new de},{schemeId:"aws.auth#sigv4a",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4a"),signer:new le}],logger:e?.logger??new Kr,sdkStreamMixin:e?.sdkStreamMixin??Ke,serviceId:e?.serviceId??"S3",signerConstructor:e?.signerConstructor??na,signingEscapePath:e?.signingEscapePath??!1,urlParser:e?.urlParser??Ts,useArnRegion:e?.useArnRegion??!1,utf8Decoder:e?.utf8Decoder??Ce,utf8Encoder:e?.utf8Encoder??Oe}))(e);return{...n,...e,runtime:"browser",defaultsMode:t,bodyLengthChecker:e?.bodyLengthChecker??Qg,credentialDefaultProvider:e?.credentialDefaultProvider??(e=>()=>Promise.reject(new Error("Credential is missing"))),defaultUserAgentProvider:e?.defaultUserAgentProvider??fg({serviceId:n.serviceId,clientVersion:Bp}),eventStreamSerdeProvider:e?.eventStreamSerdeProvider??Ug,maxAttempts:e?.maxAttempts??3,md5:e?.md5??zg,region:e?.region??(i="Region is missing",()=>Promise.reject(i)),requestHandler:Le.create(e?.requestHandler??r),retryMode:e?.retryMode??(async()=>(await r()).retryMode||Is),sha1:e?.sha1??Xp,sha256:e?.sha256??dg,streamCollector:e?.streamCollector??De,streamHasher:e?.streamHasher??Lg,useDualstackEndpoint:e?.useDualstackEndpoint??(()=>Promise.resolve(false)),useFipsEndpoint:e?.useFipsEndpoint??(()=>Promise.resolve(false))};var i},Yg=e=>{let t=async()=>{if(void 0===e.region)throw new Error("Region is missing from runtimeConfig");const t=e.region;return"string"==typeof t?t:t()};return{setRegion(e){t=e},region:()=>t}},Zg=e=>{const t=e.httpAuthSchemes;let r=e.httpAuthSchemeProvider,n=e.credentials;return{setHttpAuthScheme(e){const r=t.findIndex((t=>t.schemeId===e.schemeId));-1===r?t.push(e):t.splice(r,1,e)},httpAuthSchemes:()=>t,setHttpAuthSchemeProvider(e){r=e},httpAuthSchemeProvider:()=>r,setCredentials(e){n=e},credentials:()=>n}},em=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()});class tm extends qt{constructor(...[e]){const t=Xg(e||{});var r;const n=function(e){const t=Ee(e.userAgentAppId??void 0);return{...e,customUserAgent:"string"==typeof e.customUserAgent?[[e.customUserAgent]]:e.customUserAgent,userAgentAppId:async()=>{const r=await t();if(!function(e){return void 0===e||"string"==typeof e&&e.length<=50}(r)){const t="NoOpLogger"!==e.logger?.constructor?.name&&e.logger?e.logger:console;"string"!=typeof r?t?.warn("userAgentAppId must be a string or undefined."):r.length>50&&t?.warn("The provided userAgentAppId exceeds the maximum length of 50 characters.")}return r}}}((r=t,{...r,useFipsEndpoint:r.useFipsEndpoint??!1,useDualstackEndpoint:r.useDualstackEndpoint??!1,forcePathStyle:r.forcePathStyle??!1,useAccelerateEndpoint:r.useAccelerateEndpoint??!1,useGlobalEndpoint:r.useGlobalEndpoint??!1,disableMultiregionAccessPoints:r.disableMultiregionAccessPoints??!1,defaultSigningName:"s3"}));var i;const o=(e=>({...e,eventStreamMarshaller:e.eventStreamSerdeProvider(e)}))((e=>{const t=e.tls??!0,{endpoint:r}=e,n=null!=r?async()=>As(await fe(r)()):void 0,i=!!r,o={...e,endpoint:n,tls:t,isCustomEndpoint:i,useDualstackEndpoint:fe(e.useDualstackEndpoint??!1),useFipsEndpoint:fe(e.useFipsEndpoint??!1)};let s;return o.serviceConfiguredEndpoint=async()=>(e.serviceId&&!s&&(s=xs(e.serviceId)),s),o})((e=>{const{region:t,useFipsEndpoint:r}=e;if(!t)throw new Error("Region is missing");return{...e,region:async()=>{if("string"==typeof t)return ps(t);const e=await t();return ps(e)},useFipsEndpoint:async()=>{const e="string"==typeof t?t:await t();return!!fs(e)||("function"!=typeof r?Promise.resolve(!!r):r())}}})((e=>{const{retryStrategy:t}=e,r=fe(e.maxAttempts??3);return{...e,maxAttempts:r,retryStrategy:async()=>t||(await fe(e.retryMode)()===Ps.ADAPTIVE?new js(r):new zs(r))}})((i=n,{...i,requestChecksumCalculation:fe(i.requestChecksumCalculation??X),responseChecksumValidation:fe(i.responseChecksumValidation??Y)}))))),s=((e,{session:t})=>{const[r,n]=t;return{...e,forcePathStyle:e.forcePathStyle??!1,useAccelerateEndpoint:e.useAccelerateEndpoint??!1,disableMultiregionAccessPoints:e.disableMultiregionAccessPoints??!1,followRegionRedirects:e.followRegionRedirects??!1,s3ExpressIdentityProvider:e.s3ExpressIdentityProvider??new ho((async e=>r().send(new n({Bucket:e,SessionMode:"ReadWrite"})))),bucketEndpoint:e.bucketEndpoint??!1}})(Ed(o),{session:[()=>this,Dp]}),a=((e,t)=>{const r={...Yg(e),...Br(e),...U(e),...Zg(e)};return t.forEach((e=>e.configure(r))),{...e,...(i=r,{region:i.region()}),...zr(r),...(n=r,{httpHandler:n.httpHandler()}),...em(r)};var n,i})(s,e?.extensions||[]);super(a),this.config=a,this.middlewareStack.use((e=>({applyToStack:t=>{t.add(ds(e),hs)}}))(this.config)),this.middlewareStack.use(ea(this.config)),this.middlewareStack.use(ys(this.config)),this.middlewareStack.use(Xi(this.config)),this.middlewareStack.use((this.config,{applyToStack:e=>{e.add(((e,t)=>async r=>{try{const n=await e(r),{clientName:i,commandName:o,logger:s,dynamoDbDocumentClientOptions:a={}}=t,{overrideInputFilterSensitiveLog:c,overrideOutputFilterSensitiveLog:u}=a,d=c??t.inputFilterSensitiveLog,l=u??t.outputFilterSensitiveLog,{$metadata:h,...f}=n.output;return s?.info?.({clientName:i,commandName:o,input:d(r.input),output:l(f),metadata:h}),n}catch(e){const{clientName:n,commandName:i,logger:o,dynamoDbDocumentClientOptions:s={}}=t,{overrideInputFilterSensitiveLog:a}=s,c=a??t.inputFilterSensitiveLog;throw o?.error?.({clientName:n,commandName:i,input:c(r.input),error:e,metadata:e.$metadata}),e}}),Yi)}})),this.middlewareStack.use(to(this.config)),this.middlewareStack.use(((e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r})=>({applyToStack:n=>{n.addRelativeTo(pe(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r}),ge)}}))(this.config,{httpAuthSchemeParametersProvider:vd,identityProviderConfigProvider:async e=>new tt({"aws.auth#sigv4":e.credentials,"aws.auth#sigv4a":e.credentials})})),this.middlewareStack.use(Se(this.config)),this.middlewareStack.use(Po(this.config)),this.middlewareStack.use(G(this.config)),this.middlewareStack.use(so(this.config)),this.middlewareStack.use(wo(this.config)),this.middlewareStack.use((e=>({applyToStack:t=>{t.addRelativeTo(Eo(e),ke)}}))(this.config))}destroy(){super.destroy()}}const rm={name:"ssecMiddleware",step:"initialize",tags:["SSE"],override:!0},nm=e=>({applyToStack:t=>{var r;t.add((r=e,e=>async t=>{const n={...t.input},i=[{target:"SSECustomerKey",hash:"SSECustomerKeyMD5"},{target:"CopySourceSSECustomerKey",hash:"CopySourceSSECustomerKeyMD5"}];for(const e of i){const t=n[e.target];if(t){let i;"string"==typeof t?im(t,r)?i=r.base64Decoder(t):(i=r.utf8Decoder(t),n[e.target]=r.base64Encoder(i)):(i=ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(t),n[e.target]=r.base64Encoder(i));const o=new r.md5;o.update(i),n[e.hash]=r.base64Encoder(await o.digest())}}return e({...t,input:n})}),rm)}});function im(e,t){if(!/^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e))return!1;try{return 32===t.base64Decoder(e).length}catch{return!1}}class om extends(Wt.classBuilder().ep({...xd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),_s(r,e.getEndpointParameterInstructions()),Ro(r)]})).s("AmazonS3","DeleteObject",{}).n("S3Client","DeleteObjectCommand").f(void 0,void 0).ser(Jd).de(tl).build()){}class sm extends(Wt.classBuilder().ep({...xd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),_s(r,e.getEndpointParameterInstructions()),Gi(r,{requestChecksumRequired:!1,requestValidationModeMember:"ChecksumMode",responseAlgorithms:["CRC32","CRC32C","SHA256","SHA1"]}),nm(r),co()]})).s("AmazonS3","GetObject",{}).n("S3Client","GetObjectCommand").f(Bd,Dd).ser(Xd).de(rl).build()){}class am extends(Wt.classBuilder().ep({...xd,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),_s(r,e.getEndpointParameterInstructions()),Ro(r)]})).s("AmazonS3","ListObjectsV2",{}).n("S3Client","ListObjectsV2Command").f(void 0,void 0).ser(Yd).de(nl).build()){}class cm extends(Wt.classBuilder().ep({...xd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),_s(r,e.getEndpointParameterInstructions()),Gi(r,{requestAlgorithmMember:"ChecksumAlgorithm",requestAlgorithmMemberHttpHeader:"x-amz-sdk-checksum-algorithm",requestChecksumRequired:!1}),no(),Ro(r),nm(r)]})).s("AmazonS3","PutObject",{}).n("S3Client","PutObjectCommand").f(Qd,Vd).ser(Zd).de(il).build()){}class um{constructor(e){this.config=e,this.taskQueue=new p(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}shouldUsePathStyle(e){try{const t=new URL(e),r=t.hostname,n=/^(\d{1,3}\.){3}\d{1,3}$/.test(r),i=""!==t.port;return!n&&i}catch(e){return!0}}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;let a=s+"/"+e;for(;a.startsWith("/");)a=a.substring(1);""===a||a.endsWith("/")||(a+="/");const c=new tm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});try{let e,t=[],r=[],i=!0;for(;i;){const o=yield c.send(new am({Bucket:n,Prefix:a,Delimiter:"/",ContinuationToken:e}));o.Contents&&(t=t.concat(o.Contents)),o.CommonPrefixes&&(r=r.concat(o.CommonPrefixes)),e=o.NextContinuationToken,i=!!e}let o=[];return t.forEach((e=>{if(!e.Key.endsWith("/")){const t=e.Key.substring(a.length);t.includes("/")||o.push({name:t,size:e.Size||0,type:"file",modified:e.LastModified?e.LastModified.toISOString():""})}})),r.forEach((e=>{const t=e.Prefix.substring(a.length).replace(/\/$/,"");t&&o.push({name:t,size:0,type:"folder",modified:""})})),o}catch(e){return console.error(e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;const a=new tm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});let c=s+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{return yield a.send(new om({Bucket:n,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class dm extends um{constructor(e){super(e)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){let{endpoint:r,region:n,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:a}=this.config;const c=new tm({endpoint:r,region:n,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(r)});a=a&&"KoodoReader"===this.baseFolder?a:this.baseFolder;let u=a+"/"+t;for(;u.startsWith("/");)u=u.substring(1);try{let t=yield c.send(new cm({Bucket:i,Key:u,Body:e}));return 200===t.$metadata.httpStatusCode||(console.error("Error uploading file:",t),!1)}catch(e){return console.error("Error: ",e),!1}}))))))}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;const a=new tm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});let c=s+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{const e=yield a.send(new sm({Bucket:n,Key:c}));if(!e.Body)return console.error("No response body"),!1;const t=yield e.Body.transformToByteArray();return this.taskQueue.setDownloadedSize(t.length),t.buffer}catch(t){return console.error("Error downloading file:",t,e),!1}}))))))}))}}class lm{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder;t&&""!==t.trim()&&(n=n+"/"+t),n=n.replace(/\/+/g,"/"),n.startsWith("/")&&(n=n.substring(1));let i=[],o=0;const s=1e3;for(;;){const t=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:r,dir:"/"+n,start:o,limit:s,order:"name",desc:0,web:1,folder:0},headers:{"User-Agent":"pan.baidu.com"}});if(t.status>=300||0!==t.data.errno){console.error("百度网盘API错误:",t.data);break}const a=t.data.list||[];if(0===a.length)break;if(i=i.concat(a),a.length({name:e.server_filename,size:e.size||0,type:e.isdir?"folder":"file",modified:new Date(1e3*e.server_mtime).toISOString(),path:e.path})))}catch(e){return console.error("获取百度网盘文件列表时发生错误:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;n=n.replace(/\/+/g,"/"),n.startsWith("/")&&(n=n.substring(1));const i=new URLSearchParams({async:"0",filelist:JSON.stringify(["/"+n])}),o=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=filemanager&access_token=${r}&opera=delete`,i.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==o.data.errno)return console.error("百度网盘删除文件API错误:",o.data),-9===o.data.errno?console.error("文件不存在"):111===o.data.errno?console.error("有其他异步任务正在执行"):-7===o.data.errno&&console.error("文件名非法"),!1;const s=o.data.info||[];for(const e of s)if(0!==e.errno)return console.error(`文件删除失败: ${e.path}, 错误码: ${e.errno}`),!1;return!0}catch(e){return console.error("删除文件时发生错误:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dubox",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("dubox_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dubox",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=${y.duboxClientId}&redirect_uri=${e}&scope=basic,netdisk&device_id=119827642&display=page&qrcode=1`}}class hm extends lm{constructor(e,t){super(e,t)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return!0}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return!1}))}}class fm{constructor(e,t){this.baseUrl="https://proapi.115.com",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getUploadCredentials(t){return a(this,void 0,void 0,(function*(){try{const r=yield e.get(`${this.baseUrl}/open/upload/get_token`,{headers:{Authorization:`Bearer ${t}`}});return r.status>=300||!r.data.state?(console.error("Error getting upload credentials:",r.data),null):r.data.data}catch(e){return console.error("Error occurred during get upload credentials:",e),null}}))}generateOSSPolicy(e,t,r=new Date(Date.now()+36e5)){const n={expiration:r.toISOString(),conditions:[{bucket:e},{key:t},["starts-with","$success_action_status","2"],["content-length-range",0,1073741824]]};return JSON.stringify(n)}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token;if(!e)throw new Error("No refresh token available");let t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yiyiwu",refresh_token:e});if(!t.data.access_token)return"";if(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+18e5,!t.data.refresh_token)throw new Error("No refresh token returned");this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("yiyiwu_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yiyiwu",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://passportapi.115.com/open/authorize?client_id=${y.yiyiwuClientId}&response_type=code&redirect_uri=${e}`}}class pm extends fm{constructor(e,t){super(e,t)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return!0}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return!1}))}}class gm{constructor(e){let{username:t,password:r,url:o,dir:s}=e;void 0===e.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=e.baseFolder,s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder,this.client=n(o,{authType:i.Password,username:t,password:r}),this.username=t,this.password=r,this.url=o,this.dir=s,this.taskQueue=new p(5)}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{let n=this.dir+"/"+r;const i=this.client.exists(n.substring(0,n.lastIndexOf("/"))),o=new Promise(((e,t)=>{setTimeout((()=>t(new Error("WebDAV exists check timeout"))),5e3)}));!1===(yield Promise.race([i,o]))&&(yield this.ensureDirectoryExists(n.substring(0,n.lastIndexOf("/"))));let s=r.split("/").pop()||"",a=new File([t],s,{lastModified:(new Date).getTime(),type:t.type}),c=this.client.getFileUploadLink(this.dir+"/"+r);const u=new URL(c);u.search="",c=u.toString();const d=btoa(this.username+":"+this.password),l=yield e.put(c,a,{headers:{Authorization:"Basic "+d},maxContentLength:1/0,maxBodyLength:1/0});return!(l.status>=300)||(console.error("Error occurred during file upload:",l),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){if(this.taskQueue.setDownloadedSize(0),-1===t.indexOf("."))return new ArrayBuffer(0);try{const r=btoa(this.username+":"+this.password);let n=this.url.endsWith("/")?this.url:this.url+"/",i=this.dir.startsWith("/")?this.dir.substring(1):this.dir;const o=yield e({url:n+i+"/"+t,method:"get",headers:{Authorization:"Basic "+r},responseType:"arraybuffer",maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error occurred during file download:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){try{return(yield this.client.getDirectoryContents(this.dir+"/"+e)).filter((t=>"."!==t.filename&&".."!==t.filename&&t.filename!==e)).map((e=>({name:e.basename,size:e.size||0,type:"directory"===e.type?"folder":"file",modified:e.lastmod})))}catch(t){return t.response&&404===t.response.status&&(yield this.client.createDirectory(this.dir+"/"+e)),console.error("Error listing files:",t),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){try{return yield this.client.deleteFile(this.dir+"/"+e),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(e){return a(this,void 0,void 0,(function*(){try{const t=e.replace(/^\/+|\/+$/g,"").split("/").filter((e=>e.length>0));let r="";for(const e of t)r=r?`${r}/${e}`:e,(yield this.client.exists(`/${r}`))||(yield this.client.createDirectory(`/${r}`));return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}}class mm{constructor(e){this.username=e.username,this.password=e.password,this.url=e.url,this.refreshTokenPromise=null,this.taskQueue=new p(3)}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{return(yield e.get(`${this.url}/list`,{params:{dir:t},auth:{username:this.username,password:this.password}})).data.files.map((e=>({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modifiedTime})))||[]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{return(yield e.delete(`${this.url}/delete`,{params:{dir:t.split("/").slice(0,-1).join("/")||"",filename:t.split("/").pop()},auth:{username:this.username,password:this.password}})).data.success}catch(e){return console.error("Error deleting file:",e),!1}}))}}class ym extends mm{constructor(e){super(e)}getAuthHeader(){return`Basic ${btoa(`${this.username}:${this.password}`)}`}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=r.split("/").pop()||"",i=r.substring(0,r.lastIndexOf("/"))||"";let o=this.listFiles("");const s=new Promise(((e,t)=>{setTimeout((()=>t(new Error("Docker connection timeout"))),5e3)}));yield Promise.race([o,s]);let a=new File([t],n,{lastModified:(new Date).getTime(),type:t.type});const c=new FormData;c.append("file",a);const u=yield e.post(`${this.url}/upload?dir=${encodeURIComponent(i)}`,c,{headers:{Authorization:this.getAuthHeader(),"Content-Type":"multipart/form-data"},maxContentLength:1/0,maxBodyLength:1/0});return!(u.status>=300)||(console.error("Error occurred during file upload:",u),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=t.split("/").pop()||"",n=t.substring(0,t.lastIndexOf("/"))||"",i=yield e({url:`${this.url}/download`,method:"GET",params:{dir:n,filename:r},headers:{Authorization:this.getAuthHeader()},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return i.status>=300?(console.error("Error occurred during file download:",i),!1):i.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}const vm=["book","config","cover","font"];class bm{constructor(e,t,r){this.type=e,this.remote="dropbox"===e?new T(t,r):"microsoft"===e?new M(t,r):"google"===e?new O(t,r):"microsoft_exp"===e?new M(Object.assign(Object.assign({},t),{isExp:!0}),r):"google_exp"===e?new O(Object.assign(Object.assign({},t),{isExp:!0}),r):"s3compatible"===e?new dm(t):"webdav"===e?new gm(t):"docker"===e?new ym(t):"boxnet"===e?new E(t,r):"mega"===e?new P(t):"adrive"===e?new k(t,r):"pcloud"===e?new $(t,r):"dubox"===e?new hm(t,r):"yandex"===e?new C(t,r):"yiyiwu"===e?new pm(t,r):new N}downloadFile(e,t){return a(this,void 0,void 0,(function*(){if("cover"!==t){if(!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1)))return!1}return yield this.remote.downloadFile(t+"/"+e)}))}uploadFile(e,t,r){return a(this,void 0,void 0,(function*(){return yield this.remote.uploadFile(r,t+"/"+e)}))}deleteFile(e,t){return a(this,void 0,void 0,(function*(){return!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1))||(yield this.remote.deleteFile(t+"/"+e))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return yield this.remote.listFiles(e)}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){return yield this.remote.listFileInfos(e)}))}isExist(e,t){return a(this,void 0,void 0,(function*(){return(yield this.listFiles(t)).find((t=>-1!==t.indexOf(e)))}))}downloadAllFiles(){return a(this,void 0,void 0,(function*(){for(let e of vm){let t=yield this.listFiles(e);for(let r of t)yield this.downloadFile(r,e)}}))}authToken(e){return a(this,void 0,void 0,(function*(){return yield this.remote.authToken(e)}))}getAuthUrl(e){return this.remote.getAuthUrl?this.remote.getAuthUrl(e):""}getStats(){return this.remote.taskQueue.getStats()}resetCounters(){this.remote.taskQueue.resetCounters()}getDownloadedSize(){return this.remote.taskQueue.getDownloadedSize()}}const wm={notes:"SELECT * FROM notes WHERE key = ?",bookmarks:"SELECT * FROM bookmarks WHERE key = ?",books:"SELECT * FROM books WHERE key = ?",plugins:"SELECT * FROM plugins WHERE key = ?",words:"SELECT * FROM words WHERE key = ?"},km={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},Sm={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"},Em={createTableStatement:xm({notes:'\n CREATE TABLE IF NOT EXISTS "notes" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "chapter" text,\n "chapterIndex" integer,\n "text" text,\n "cfi" text,\n "range" text,\n "notes" text,\n "percentage" text,\n "color" integer,\n "tag" array\n )\n ',bookmarks:'\n CREATE TABLE IF NOT EXISTS "bookmarks" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "cfi" text,\n "label" text,\n "percentage" text,\n "chapter" text\n );\n ',books:'\n CREATE TABLE IF NOT EXISTS "books" (\n "key" text PRIMARY KEY,\n "name" text,\n "author" text,\n "description" text,\n "md5" text,\n "cover" text,\n "format" text,\n "publisher" text,\n "size" integer,\n "page" integer,\n "path" text,\n "charset" text\n );\n ',plugins:'\n CREATE TABLE IF NOT EXISTS "plugins" (\n "key" text PRIMARY KEY,\n "type" text,\n "displayName" text,\n "icon" text,\n "version" text,\n "config" object,\n "autoValue" string,\n "langList" text,\n "voiceList" text,\n "scriptSHA256" text,\n "script" text\n );\n ',words:'\n CREATE TABLE IF NOT EXISTS "words" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "word" text,\n "chapter" text\n );\n '}),getAllStatement:xm({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),getPagedStatement:xm({notes:"SELECT * FROM notes LIMIT ? OFFSET ?",bookmarks:"SELECT * FROM bookmarks LIMIT ? OFFSET ?",books:"SELECT * FROM books LIMIT ? OFFSET ?",plugins:"SELECT * FROM plugins LIMIT ? OFFSET ?",words:"SELECT * FROM words LIMIT ? OFFSET ?"}),getCountStatement:xm({notes:"SELECT COUNT(*) as count FROM notes",bookmarks:"SELECT COUNT(*) as count FROM bookmarks",books:"SELECT COUNT(*) as count FROM books",plugins:"SELECT COUNT(*) as count FROM plugins",words:"SELECT COUNT(*) as count FROM words"}),saveStatement:xm({notes:"INSERT OR REPLACE INTO notes (key, bookKey, chapter, chapterIndex, text, cfi, range, notes, date, percentage, color, tag) VALUES (@key, @bookKey, @chapter, @chapterIndex, @text, @cfi, @range, @notes, @date, @percentage, @color, @tag)",bookmarks:"INSERT OR REPLACE INTO bookmarks (key, bookKey, cfi, label, percentage, chapter) VALUES (@key, @bookKey, @cfi, @label, @percentage, @chapter)",books:"INSERT OR REPLACE INTO books (key, name, author, description, md5, cover, format, publisher, size, page, path, charset) VALUES (@key, @name, @author, @description, @md5, @cover, @format, @publisher, @size, @page, @path, @charset)",plugins:"INSERT OR REPLACE INTO plugins (key, type, displayName, icon, version, config, autoValue, langList, voiceList, scriptSHA256, script) VALUES (@key, @type, @displayName, @icon, @version, @config, @autoValue, @langList, @voiceList, @scriptSHA256, @script)",words:"INSERT OR REPLACE INTO words (key, bookKey, date, word, chapter) VALUES (@key, @bookKey, @date, @word, @chapter)"}),deleteAllStatement:xm({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:xm({notes:"UPDATE notes SET bookKey = @bookKey, chapter = @chapter, chapterIndex = @chapterIndex, text = @text, cfi = @cfi, range = @range, notes = @notes, date = @date, percentage = @percentage, color = @color, tag = @tag WHERE key = @key",bookmarks:"UPDATE bookmarks SET bookKey = @bookKey, cfi = @cfi, label = @label, percentage = @percentage, chapter = @chapter WHERE key = @key",books:"UPDATE books SET name = @name, author = @author, description = @description, md5 = @md5, cover = @cover, format = @format, publisher = @publisher, size = @size, page = @page, path = @path, charset = @charset WHERE key = @key",plugins:"UPDATE plugins SET type = @type, displayName = @displayName, icon = @icon, version = @version, config = @config, autoValue = @autoValue, langList = @langList, voiceList = @voiceList, scriptSHA256 = @scriptSHA256, script = @script WHERE key = @key",words:"UPDATE words SET bookKey = @bookKey, date = @date, word = @word, chapter = @chapter WHERE key = @key"}),deleteStatement:xm({notes:"DELETE FROM notes WHERE key = ?",bookmarks:"DELETE FROM bookmarks WHERE key = ?",books:"DELETE FROM books WHERE key = ?",plugins:"DELETE FROM plugins WHERE key = ?",words:"DELETE FROM words WHERE key = ?"}),dropStatement:xm({notes:"DROP TABLE IF EXISTS notes",bookmarks:"DROP TABLE IF EXISTS bookmarks",books:"DROP TABLE IF EXISTS books",plugins:"DROP TABLE IF EXISTS plugins",words:"DROP TABLE IF EXISTS words"}),getStatement:xm(wm),getByBookKeyStatement:xm(km),getByBookKeysStatement:xm({notes:e=>`SELECT * FROM notes WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,bookmarks:e=>`SELECT * FROM bookmarks WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,words:e=>`SELECT * FROM words WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,books:e=>`SELECT * FROM books WHERE key IN (${e.map((()=>"?")).join(",")})`}),getKeysStatement:xm({notes:"SELECT key FROM notes",bookmarks:"SELECT key FROM bookmarks",books:"SELECT key FROM books",plugins:"SELECT key FROM plugins",words:"SELECT key FROM words"}),getWithSortAndPageStatement:xm({notes:(e,t,r,n)=>`SELECT * FROM notes ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${n}`,bookmarks:(e,t,r,n)=>`SELECT * FROM bookmarks ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${n}`,books:(e,t,r,n)=>`SELECT * FROM books ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${n}`,plugins:(e,t,r,n)=>`SELECT * FROM plugins ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${n}`,words:(e,t,r,n)=>`SELECT * FROM words ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${n}`}),getByKeysStatement:xm({notes:e=>`SELECT * FROM notes WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`,bookmarks:e=>`SELECT * FROM bookmarks WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`,books:e=>`SELECT * FROM books WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`,plugins:e=>`SELECT * FROM plugins WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`,words:e=>`SELECT * FROM words WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`}),deleteByBookKeyStatement:xm(Sm)};function xm(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const Tm={notes:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t.tag=JSON.parse(e.tag),t},bookmarks:e=>e,books:e=>e,plugins:e=>{let t=Object.assign({},e);return e.autoValue||delete t.autoValue,e.langList?t.langList=JSON.parse(e.langList):delete t.langList,e.voiceList?t.voiceList=JSON.parse(e.voiceList):delete t.voiceList,t.config=JSON.parse(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t}};var Am,Cm={sqlStatement:Em,jsonToSqlite:xm({notes:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t.tag=JSON.stringify(e.tag),t},bookmarks:e=>e,books:e=>{let t=Object.assign({},e);return t.page=e.page||0,t},plugins:e=>{let t=Object.assign({},e);return e.autoValue||(t.autoValue=null),e.langList?t.langList=JSON.stringify(e.langList):t.langList=null,e.voiceList?t.voiceList=JSON.stringify(e.voiceList):t.voiceList=null,t.config=JSON.stringify(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t}}),sqliteToJson:xm(Tm)};class Rm{constructor(e,t,r,n,i,o,s,a,c,u,d,l){this.key=e,this.name=t,this.author=r,this.description=n,this.md5=i,this.cover=o,this.format=s,this.publisher=a,this.size=c,this.page=u,this.path=d,this.charset=l}}class Om{static generateBook(e,t,r,n,i,o,s){return new Promise(((c,u)=>a(this,void 0,void 0,(function*(){try{let a,u,d,l,h,f,p,g,m="";switch([u,d,h,l,f,p]=[e,"","","","",0],t){case"pdf":case"epub":case"mobi":case"azw":case"azw3":case"fb2":g=yield s.getMetadata(),[u,d,h,l,m]=[g.name||e,g.author||"",g.description||"",g.publisher||"",g.cover||""];break;case"cbr":case"cbt":case"cbz":case"cb7":g=yield s.getMetadata(),m=g.cover;break;case"txt":g=yield s.getMetadata(o),f=g.charset}let y=t.toUpperCase();a=(new Date).getTime()+"",c(new Rm(a,u,d,h,r,m,y,l,n,p,i,f))}catch(e){console.error(e),u(e)}}))))}}Am=Om,Om.getRendition=(e,t,r)=>{let n,i=t.format.toUpperCase();var o,s;return"CACHE"===i?n=new r.CacheRender(e,t):"MOBI"===i||"AZW3"===i||"AZW"===i?n=new r.MobiRender(e,t):"EPUB"===i?n=new r.EpubRender(e,t):"TXT"===i?n=new r.TxtRender(e,t):"MD"===i?n=new r.MdRender(e,t):"PDF"===i?n="yes"===t.isConvertPDF?new r.PdfTextRender(e,t):new r.PdfRender(e,t):"FB2"===i?n=new r.Fb2Render(e,t):"DOCX"===i?n=new r.DocxRender(e,t):"HTML"===i||"XHTML"===i||"MHTML"===i||"HTM"===i||"XML"===i?n=new r.HtmlRender(e,t):"CBR"!==i&&"CBT"!==i&&"CBZ"!==i&&"CB7"!==i||(n=new r.ComicRender((o=e,s=new ArrayBuffer(o.byteLength),new Uint8Array(s).set(new Uint8Array(o)),s),t)),n},Om.initMobileBook=(e,t)=>a(void 0,void 0,void 0,(function*(){try{window.ReactNativeWebView.postMessage(JSON.stringify({event:"user-agent",userAgent:navigator.userAgent}));const r=yield fetch(e);if(!r.ok)throw new Error(`Failed to download book: ${r.status} ${r.statusText}`);const n=yield r.arrayBuffer();window.ReactNativeWebView.postMessage(JSON.stringify({event:"finish-download"})),window.file_content=n;let i=Am.getRendition(n,Object.assign(Object.assign({},t),{isMobile:"yes"}),window.Kookit);window.rendition=i;let o=document.getElementById("page-area");t.format&&"TXT"===t.format.toUpperCase()?yield window.rendition.renderTo(o,t.bookLocation):yield window.rendition.renderTo(o),window.rendition.on("rendered",(()=>a(void 0,void 0,void 0,(function*(){let e=Object.assign({},window.rendition.getPosition()),r=Object.assign({},yield window.rendition.getProgress());"PDF"===t.format&&"android"===t.platform&&(e.chapterDocIndex=window.chapterDocIndex),window.ReactNativeWebView.postMessage(JSON.stringify({event:"content-loaded",bookLocation:e,progress:r})),window.rendition.tranformText()}))));const s=function(e,t){let r=0,n=null,i=null;return function(...o){const s=Date.now();s-r>=t?(r=s,e.apply(this,o)):(clearTimeout(n),i=o,n=setTimeout((()=>{r=Date.now(),e.apply(this,null!=i?i:[])}),t-(s-r)))}}((()=>a(void 0,void 0,void 0,(function*(){let e=Object.assign({},window.rendition.getPosition()),t=Object.assign({},yield window.rendition.getProgress());window.ReactNativeWebView.postMessage(JSON.stringify({event:"page-changed",bookLocation:e,progress:t}))}))),6e3);let c=null;window.rendition.on("page-changed",(()=>{c&&clearTimeout(c),c=setTimeout((()=>{s(),c=null}),window.isTouchNavigation?2e3:0)})),window.ReactNativeWebView.postMessage(JSON.stringify({event:"book-inited",chapterList:window.rendition.getChapter()}))}catch(e){window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}))}})),Om.addMobileBook=(e,t,r,n,i,o,s="")=>a(void 0,void 0,void 0,(function*(){var a;try{if(window.ReactNativeWebView.postMessage(JSON.stringify({event:"user-agent",userAgent:navigator.userAgent})),"PDF"===r.toUpperCase()&&i>314572800){t=t.replace(/\.[^/.]+$/,"");let e=r.toUpperCase(),s=(new Date).getTime()+"",a=new Rm(s,t,"","",n,"",e,"",i,0,o,"");return void window.ReactNativeWebView.postMessage(JSON.stringify({event:"metadata",bookInfo:a}))}const c=yield fetch(e);if(!c.ok)throw new Error(`Failed to download book: ${c.status} ${c.statusText}`);const u=yield c.arrayBuffer();null===(a=window.ReactNativeWebView)||void 0===a||a.postMessage(JSON.stringify({event:"finish-download"})),window.file_content=u;let d=Am.getRendition(u,{format:r.toUpperCase(),readerMode:"",charset:"",animation:"",convertChinese:"no",parserRegex:s||"",isDarkMode:"no",isMobile:"yes",password:"",isConvertPDF:"no"},window.Kookit);window.rendition=d,t=t.replace(/\.[^/.]+$/,"");let l=yield Om.generateBook(t,r,n,i,o,u,d);if(!l||!l.key)return;window.ReactNativeWebView.postMessage(JSON.stringify({event:"metadata",bookInfo:l}))}catch(e){window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}))}})),Om.precacheMobileBook=(e,t)=>a(void 0,void 0,void 0,(function*(){let r=yield window.rendition.preCache(window.file_content);if(""===r)window.ReactNativeWebView.postMessage(JSON.stringify({event:"cache",cacheBase64:"",key:t}));else if("err"!==r){try{const n=`${e}/dav/${"cache-"+t+".zip"}`,i=yield fetch(n,{method:"PUT",headers:{"Content-Type":"application/octet-stream",Overwrite:"T"},body:r});if(!i.ok)throw new Error(`上传失败: ${i.status}`);console.info("文件上传成功")}catch(e){console.error("操作失败:"+e)}window.ReactNativeWebView.postMessage(JSON.stringify({event:"cache",key:t}))}else window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}));window.file_content=null,window.rendition=null}));const _m=m.devUrl,Pm=m.cloudCNUrl;class Im{constructor(e,t,r){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===r?Pm:_m,this.refreshToken="",this.accessToken="",this.streamPromise=null,this.expiresAt=0}refreshUserToken(){return a(this,void 0,void 0,(function*(){if(this.refreshToken=yield this.TokenService.getToken("refresh_token"),!this.refreshToken)return{code:401,message:"refresh token not found"};let t=(yield e.post(this.baseUrl+"/api/v1/public/user/refresh_token",{refresh_token:this.refreshToken})).data;return 200===t.code&&(yield this.TokenService.setToken("access_token",t.data.access_token),yield this.TokenService.setToken("refresh_token",t.data.refresh_token),yield this.TokenService.setToken("expires_at",(1e3*t.data.expires_at).toString()),this.accessToken=t.data.access_token,this.refreshToken=t.data.refresh_token,this.expiresAt=1e3*t.data.expires_at),t}))}requestWithRetry(e){return a(this,void 0,void 0,(function*(){return Im.requestQueue||(Im.requestQueue=[]),new Promise(((t,r)=>{Im.requestQueue.push({config:e,resolve:t,reject:r}),Im.processingQueue||this.processQueue()}))}))}isTokenValid(){return a(this,void 0,void 0,(function*(){if(this.accessToken||(this.accessToken=(yield this.TokenService.getToken("access_token"))||""),!this.expiresAt){const e=yield this.TokenService.getToken("expires_at");this.expiresAt=e?parseInt(e):(new Date).getTime()+31536e9}return""!==this.accessToken&&this.expiresAt>(new Date).getTime()+6e4}))}processQueue(){return a(this,void 0,void 0,(function*(){if(!Im.processingQueue){Im.processingQueue=!0;try{for(;Im.requestQueue.length>0;){const e=Im.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{Im.processingQueue=!1}}}))}executeRequest(t){return a(this,void 0,void 0,(function*(){try{try{this.accessToken=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let r="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);if(t.baseURL=this.baseUrl,t.headers)t.headers.Authorization="Bearer "+this.accessToken,t.headers["X-Request-ID"]=r;else{let e=this.ConfigService.getItem("appVersion"),n=this.ConfigService.getItem("appPlatform");t.headers={Authorization:"Bearer "+this.accessToken,"X-Request-ID":r,"X-App-Version":e||"1.0.0","X-App-Platform":n||"web"}}let n=(yield e(t)).data;if(402===n.code){let r=yield this.refreshUserToken();if(200===r.code){return t.headers=t.headers||{},t.headers.Authorization="Bearer "+this.accessToken,(yield e(t)).data}return r}return 200!==n.code&&this.ConfigService.setItem("errorLog",this.ConfigService.getItem("errorLog")+"\n"+JSON.stringify({request:t.data,url:t.url,result:n,requestID:r})),n}catch(e){return console.error("Request execution error:",e),{code:503,message:"network error",data:null}}}))}requestWithStream(e,t,r){return a(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>a(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let n=this.accessToken||"",i="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((o,s)=>{let c=this.ConfigService.getItem("appVersion"),u=this.ConfigService.getItem("appPlatform");const d=new r(this.baseUrl+e.url,{headers:{"Content-Type":"application/json",Authorization:"Bearer "+n,"X-Request-ID":i,"X-App-Version":c||"1.0.0","X-App-Platform":u||"web"},method:e.method,body:JSON.stringify(e.data),pollingInterval:0});d.addEventListener("open",(()=>{console.info("Connection to OpenAI established.")})),d.addEventListener("message",(e=>a(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(d.close(),o(r)):t(r.data)})))),d.addEventListener("error",(e=>{if(console.info("Error:",e),!e.data)return;const t=JSON.parse(e.data);o(t),d.close()}))}))}finally{this.streamPromise=null}})))()),this.streamPromise}))}requestWithFetch(e,t){return a(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>a(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let r=this.accessToken||"",n="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((i,s)=>a(this,void 0,void 0,(function*(){let s=this.ConfigService.getItem("appVersion"),c=this.ConfigService.getItem("appPlatform");var u=new o(this.baseUrl+e.url,{headers:{"Content-Type":"text/plain",Authorization:"Bearer "+r,"X-Request-ID":n,"X-App-Version":s||"1.0.0","X-App-Platform":c||"web"},payload:JSON.stringify(e.data),method:"POST"});u.addEventListener("message",(e=>a(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(u.close(),i(r)):t(r.data)})))),u.addEventListener("open",(e=>{console.info(e,"Connection to OpenAI established.")})),u.addEventListener("error",(e=>{if(console.error(e,"Error occurred while connecting to OpenAI"),!e.data)return;const t=JSON.parse(e.data);i(t),u.close()}))}))))}finally{this.streamPromise=null}})))()),this.streamPromise}))}}Im.processingQueue=!1,Im.requestQueue=[];class Mm extends Im{constructor(e,t,r){super(e,t,r)}getTransStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_trans_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getTransFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_trans_stream",data:e};return yield this.requestWithFetch(r,t)}))}getDictionary(e){return a(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/reader/get_llm_dict",data:e};return yield this.requestWithRetry(t)}))}getSummaryStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_sum_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getAnswerStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_answer_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getAnswerFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_answer_stream",data:e};return yield this.requestWithFetch(r,t)}))}getSummaryFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_sum_stream",data:e};return yield this.requestWithFetch(r,t)}))}getGoogleFont(e){return a(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/reader/get_google_font",data:e};return yield this.requestWithRetry(t)}))}sendToKindle(e){return a(this,void 0,void 0,(function*(){let t=new FormData;t.append("file",e.file),t.append("email",e.email),t.append("file_name",e.fileName);const r={method:"post",url:"/api/v1/pro/reader/send_to_kindle",headers:{"Content-Type":"multipart/form-data"},data:t};return yield this.requestWithRetry(r)}))}detectLanguage(e){return a(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/reader/detect_language",data:e};return yield this.requestWithRetry(t)}))}}class Nm extends Im{constructor(e,t,r){super(e,t,r),this.serverRegion=r}encryptToken(e){return a(this,void 0,void 0,(function*(){let t=e.token,r=f.encode(t),{extracted:n,remaining:i}=function(e){let t="",r="",n=[],i=1;for(;i<=e.length;)n.push(i-1),i*=2;for(let i=0;i-1){let r=t.split("#");e.encrypted_token=r[1]}const r={method:"post",url:"/api/v1/pro/thirdparty/decrypt_token",data:e};let n=yield this.requestWithRetry(r);if(t.indexOf("#")>-1&&n.data&&n.data.token){let e=t.split("#"),r=function(e,t){let r="",n=[],i=1,o=e.length+t.length;for(;i<=o;)n.push(i-1),i*=2;let s=0,a=0;for(let i=0;i{let n="";if("github"===e?n=`https://github.com/login/oauth/authorize?client_id=${y.githubClientId}&redirect_uri=${r}&scope=${v.github.scopes.join(" ")}&response_type=code`:"google"===e?n=`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${r}&prompt=consent&response_type=code&client_id=${y.googleClientId}&scope=${v.google.scopes.join(" ")}&access_type=offline`:"facebook"===e?n=`https://www.facebook.com/v12.0/dialog/oauth?client_id=${y.facebookClientId}&redirect_uri=${r}&scope=&response_type=code`:"microsoft"===e&&(n=`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${y.microsoftClientId}&scope=${v.microsoft.scopes.join(" ")}&response_type=code&redirect_uri=${r}`),"manual"===t)return n;let i=JSON.stringify({deeplink:"desktop"===t?"koodo-reader://callback":"browser"===t?`${y.callbackUrl}#/login`:"",service:e});return`${n}&state=${"state|"+encodeURIComponent(i)}`}};class Um{static CompareDatabase(e,t,r){return a(this,void 0,void 0,(function*(){let n=Object.keys(e).filter((e=>e.startsWith("database.sqlite.books"))),i=Object.keys(e).filter((e=>e.startsWith("database.sqlite.notes"))),o=Object.keys(e).filter((e=>e.startsWith("database.sqlite.bookmarks"))),s=Object.keys(e).filter((e=>e.startsWith("database.sqlite.plugins"))),a=Object.keys(e).filter((e=>e.startsWith("database.sqlite.words"))),c=Object.keys(t).filter((e=>e.startsWith("database.sqlite.books"))),u=Object.keys(t).filter((e=>e.startsWith("database.sqlite.notes"))),d=Object.keys(t).filter((e=>e.startsWith("database.sqlite.bookmarks"))),l=Object.keys(t).filter((e=>e.startsWith("database.sqlite.plugins"))),h=Object.keys(t).filter((e=>e.startsWith("database.sqlite.words"))),f={books:Array.from(new Set(n.concat(c))),notes:Array.from(new Set(i.concat(u))),bookmarks:Array.from(new Set(o.concat(d))),plugins:Array.from(new Set(s.concat(l))),words:Array.from(new Set(a.concat(h)))},p={books:{save:[],update:[],delete:[],conflict:[],upload:[]},notes:{save:[],update:[],delete:[],conflict:[],upload:[]},bookmarks:{save:[],update:[],delete:[],conflict:[],upload:[]},plugins:{save:[],update:[],delete:[],conflict:[],upload:[]},words:{save:[],update:[],delete:[],conflict:[],upload:[]}},g=["books","notes","bookmarks","plugins","words"];for(let n of g)for(let i of f[n]){let o=i.split(".")[3],s=e[i],a=t[i];s?a?("save"===a.operation&&("update"!==s.operation&&"delete"!==s.operation||p[n].upload.push(o)),"delete"===a.operation&&("save"===s.operation&&(p[n].delete.push(o),e[i]=a),"update"===s.operation&&(s.timea.time&&(p[n].conflict.push(o),"cloud"===r?(p[n].delete.push(o),e[i]=a):p[n].upload.push(o))),s.operation),"update"===a.operation&&("save"===s.operation&&(p[n].update.push(o),e[i]=a),"update"===s.operation&&(s.timea.time&&p[n].upload.push(o)),"delete"===s.operation&&(s.timea.time&&p[n].upload.push(o)))):p[n].upload.push(o):(p[n].save.push(o),e[i]=a)}return{compareResult:p,syncRecords:e}}))}static CompareConfig(e,t,r){return a(this,void 0,void 0,(function*(){let n=Object.keys(e).filter((e=>e.startsWith("config.readerConfig"))),i=Object.keys(e).filter((e=>e.startsWith("config.listConfig"))),o=Object.keys(e).filter((e=>e.startsWith("config.objectConfig"))),s=Object.keys(e).filter((e=>e.startsWith("config.mapConfig"))),a=Object.keys(t).filter((e=>e.startsWith("config.readerConfig"))),c=Object.keys(t).filter((e=>e.startsWith("config.listConfig"))),u=Object.keys(t).filter((e=>e.startsWith("config.objectConfig"))),d=Object.keys(t).filter((e=>e.startsWith("config.mapConfig"))),l={readerConfig:Array.from(new Set(n.concat(a))),listConfig:Array.from(new Set(i.concat(c))),objectConfig:Array.from(new Set(o.concat(u))),mapConfig:Array.from(new Set(s.concat(d)))},h={readerConfig:{update:[],upload:[]},listConfig:{update:[],upload:[]},objectConfig:{update:[],delete:[],conflict:[],save:[],upload:[]},mapConfig:{update:[],delete:[],conflict:[],save:[],upload:[]}},f=["readerConfig","listConfig"];for(let r of f)for(let n of l[r]){let i=n,o=e[n],s=t[n];o?s?o.times.time&&h[r].upload.push(i):h[r].upload.push(i):(h[r].update.push(i),e[n]=s)}let p=["objectConfig","mapConfig"];for(let n of p)for(let i of l[n]){let o=i,s=e[i],a=t[i];s?a?("delete"===a.operation&&("update"===s.operation&&(s.timea.time&&(h[n].conflict.push(o),"cloud"===r?(h[n].delete.push(o),e[i]=a):h[n].upload.push(o))),s.operation),"update"===a.operation&&("update"===s.operation&&(s.timea.time&&h[n].upload.push(o)),"delete"===s.operation&&(s.timea.time&&h[n].upload.push(o)))):h[n].upload.push(o):(h[n].update.push(o),e[i]=a)}return{compareResult:h,syncRecords:e}}))}static compareAll(e,t,r,n,i){return a(this,void 0,void 0,(function*(){let o="cloud";if("yes"===r.getReaderConfig("isKeepLocal")){o="local";let e=r.getObjectConfig(yield n.getFingerprint(),"cloudSyncTime",{time:0,conflictMode:"cloud"}),t=yield i.getCloudConfig("config"),s=JSON.parse(t.cloudSyncTime||"{}");delete s[yield n.getFingerprint()],Object.values(s).filter((t=>"local"===t.conflictMode&&t.time>e.time)).length>0&&(o="cloud")}let{compareResult:s,syncRecords:a}=yield this.CompareDatabase(e,t,o),{compareResult:c,syncRecords:u}=yield this.CompareConfig(a,t,o),d=Object.assign(Object.assign({},s),c);return r.setAllSyncRecord(u),"local"===o&&(d.books.conflict.length>0||d.notes.conflict.length>0||d.bookmarks.conflict.length>0||d.plugins.conflict.length>0||d.words.conflict.length>0||d.objectConfig.conflict.length>0||d.mapConfig.conflict.length>0)?r.setObjectConfig(yield n.getFingerprint(),{time:(new Date).getTime(),conflictMode:"local"},"cloudSyncTime"):r.setObjectConfig(yield n.getFingerprint(),{time:(new Date).getTime(),conflictMode:"cloud"},"cloudSyncTime"),d}))}static startSync(e,t,r,n,i,o){return a(this,void 0,void 0,(function*(){let s=yield this.syncConfig(e,t,r,i,n);if(e.books.save.length>0||e.books.upload.length>0){let e=yield this.syncCover(t,o,i),r=yield this.syncBook(t,i);return[...s,...e,...r]}return s}))}static syncConfig(e,t,r,n,i){return a(this,void 0,void 0,(function*(){let o=[];for(let t of u){if(e[t].save.length+e[t].update.length>0){let n=yield i.getCloudDatabase(t);for(let i of e[t].save){let e=n.find((e=>e.key===i));e&&(yield r.saveRecord(e,t))}for(let i of e[t].update){let e=n.find((e=>e.key===i));e&&(yield r.updateRecord(e,t,!1))}}if(e[t].delete.length>0)for(let i of e[t].delete)yield r.deleteRecord(i,t),"books"===t&&(yield n.deleteOfflineBook(i))}if(e.readerConfig.update.length>0||e.listConfig.update.length>0||e.objectConfig.update.length>0||e.mapConfig.update.length>0){let r=yield i.getCloudConfig("config");for(let n of e.readerConfig.update){let e=n.split(".")[3];r.readerConfig&&t.setReaderConfig(e,JSON.parse(r.readerConfig)[e],!1)}for(let n of e.listConfig.update){let e=n.split(".")[3];r[e]&&t.setAllListConfig(JSON.parse(r[e]),e,!1)}for(let n of e.objectConfig.update){let e=n.split(".")[3],i=n.split(".")[2];r[i]&&JSON.parse(r[i])&&JSON.parse(r[i])[e]&&t.setObjectConfig(e,JSON.parse(r[i])[e],i,!1)}for(let n of e.mapConfig.update){let e=n.split(".")[3],i=n.split(".")[2];if(r[i]&&JSON.parse(r[i])&&JSON.parse(r[i])[e]){let n=JSON.parse(r[i])[e];t.setOneMapConfig(e,n,i,!1)}}}if(e.objectConfig.delete.length>0||e.mapConfig.delete.length>0){for(let r of e.objectConfig.delete){let e=r.split(".")[3],n=r.split(".")[2];t.deleteObjectConfig(e,n)}for(let r of e.mapConfig.delete){let e=r.split(".")[3],n=r.split(".")[2];t.deleteMapConfig(e,n)}}for(let t of u)e[t].upload.length>0&&o.push((()=>i.uploadDatabase(t)));return o.push((()=>i.uploadConfig("config"))),o.push((()=>i.uploadConfig("sync"))),o}))}static syncCover(e,t,r){return a(this,void 0,void 0,(function*(){let r=yield t.getLocalCoverList(),n=yield t.getCloudCoverList(),i=Array.from(new Set([...r,...n])),o=[];for(let s of i)r.includes(s)&&!n.includes(s)&&o.push((()=>t.uploadCover(s))),!r.includes(s)&&n.includes(s)&&"adrive"!==e.getItem("defaultSyncOption")&&o.push((()=>t.downloadCover(s)));return o}))}static syncBook(e,t){return a(this,void 0,void 0,(function*(){let r=yield t.getLocalBookList(),n=yield t.getCloudBookList(),i=[],o=Array.from(new Set([...r,...n]));for(let s of o){if(r.includes(s)&&!n.includes(s)){let e=s.split(".")[0],r=s.split(".")[1];i.push((()=>t.uploadBook(e,r)))}let o="yes"===e.getReaderConfig("autoOffline");if(!r.includes(s)&&n.includes(s)&&o&&"adrive"!==e.getItem("defaultSyncOption")){let e=s.split(".")[0],r=s.split(".")[1];i.push((()=>t.offlineBook(e,r.toUpperCase())))}}return i}))}static runTasksWithLimit(e,t,r){return a(this,void 0,void 0,(function*(){if("ftp"!==r&&"adrive"!==r){const r=[],n=[];for(const i of e){const e=i().then((t=>(n.splice(n.indexOf(e),1),t)));r.push(e),n.push(e),n.length>=t&&(yield Promise.race(n))}return Promise.all(r)}for(let t of e)yield t()}))}}const Lm=((e,t)=>{var r;return(r=class extends e{static getReaderConfig(e){return JSON.parse(this.getItem("readerConfig")||"{}")[e]}static setReaderConfig(e,r,n=!0){let i=JSON.parse(this.getItem("readerConfig")||"{}");i[e]=r,this.setItem("readerConfig",JSON.stringify(i)),n&&this.setSyncRecord({type:"config",catergory:"readerConfig",name:t,key:e},{operation:"update",time:Date.now()})}static getAllListConfig(e){return("{}"!==this.getItem(e)&&this.getItem(e)?JSON.parse(this.getItem(e)||""):[])||[]}static deleteListConfig(e,t){let r=this.getAllListConfig(t);const n=r.indexOf(e);n>-1&&r.splice(n,1),this.setAllListConfig(r,t)}static setListConfig(e,t){let r=this.getAllListConfig(t);const n=r.indexOf(e);n>-1?(r.splice(n,1),r.unshift(e)):r.unshift(e),this.setAllListConfig(r,t)}static setAllListConfig(e,t,r=!0){this.setItem(t,JSON.stringify(e)),r&&this.setSyncRecord({type:"config",catergory:"listConfig",name:"general",key:t},{operation:"update",time:Date.now()})}static setObjectConfig(e,t,r,n=!0){let i=this.getAllObjectConfig(r);i[e]=t,n&&this.setSyncRecord({type:"config",catergory:"objectConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllObjectConfig(i,r)}static getObjectConfig(e,t,r){return this.getAllObjectConfig(t)[e]||r}static getAllObjectConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static setAllObjectConfig(e,t){this.setItem(t,JSON.stringify(e))}static deleteObjectConfig(e,t){let r=this.getAllObjectConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"objectConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllObjectConfig(r,t)}static getAllMapConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static getMapConfig(e,t){return this.getAllMapConfig(t)[e]||[]}static setAllMapConfig(e,t){this.setItem(t,JSON.stringify(e))}static setMapConfig(e,t,r){let n=this.getAllMapConfig(r);void 0===n[e]&&(n[e]=[]),t&&-1===n[e].indexOf(t)&&n[e].unshift(t),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(n,r)}static setOneMapConfig(e,t,r,n=!0){let i=this.getAllMapConfig(r);i[e]=t,n&&this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static deleteFromMapConfig(e,t,r){let n=this.getAllMapConfig(r),i=n[e].indexOf(t);n[e].splice(i,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(n,r)}static deleteFromAllMapConfig(e,t){let r=this.getAllMapConfig(t);Object.keys(r).forEach((n=>{let i=r[n].indexOf(e);i>-1&&(r[n].splice(i,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:n},{operation:"update",time:Date.now()}))})),this.setAllMapConfig(r,t)}static deleteMapConfig(e,t){let r=this.getAllMapConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllMapConfig(r,t)}static getFromAllMapConfig(e,t){let r=this.getAllMapConfig(t),n=[];for(let t in r)r[t]&&r[t].indexOf(e)>-1&&n.push(t);return n}static getSyncRecord(e){return JSON.parse(this.getItem("syncRecord")||"{}")[e.type+"."+e.catergory+"."+e.name+"."+e.key]||{operation:"",time:0}}static getAllSyncRecord(){return JSON.parse(this.getItem("syncRecord")||"{}")}static flushSyncRecords(){if(0===Object.keys(this.pendingSyncRecords).length)return;let e=JSON.parse(this.getItem("syncRecord")||"{}");Object.assign(e,this.pendingSyncRecords),this.setItem("syncRecord",JSON.stringify(e)),this.pendingSyncRecords={},this.syncRecordTimer=null}static setSyncRecord(e,t){const r=e.type+"."+e.catergory+"."+e.name+"."+e.key;this.pendingSyncRecords[r]=t,null!==this.syncRecordTimer&&clearTimeout(this.syncRecordTimer),this.syncRecordTimer=setTimeout((()=>{this.flushSyncRecords()}),this.DEBOUNCE_DELAY)}static setAllSyncRecord(e){this.setItem("syncRecord",JSON.stringify(e))}}).pendingSyncRecords={},r.syncRecordTimer=null,r.DEBOUNCE_DELAY=1e3,r})(class{static getItem(e){return localStorage.getItem(e)}static setItem(e,t){localStorage.setItem(e,t)}static removeItem(e){localStorage.removeItem(e)}},"browser");class Dm{static saveAllToken(e){return a(this,void 0,void 0,(function*(){if(e)if(s){const{ipcRenderer:t}=window.require("electron");t.invoke("encrypt-data",{token:e})}else{const t=yield this.encryptString(e);localStorage.setItem("encryptedToken",t)}}))}static getAllToken(){return a(this,void 0,void 0,(function*(){if(s){const{ipcRenderer:e}=window.require("electron");return yield e.invoke("decrypt-data")}{let e=localStorage.getItem("encryptedToken")||"";return e?yield this.decryptString(e):null}}))}static setToken(e,t){return a(this,void 0,void 0,(function*(){const r=JSON.parse((yield this.getAllToken())||"{}");r[e]=t,yield this.saveAllToken(JSON.stringify(r))}))}static getToken(e){return a(this,void 0,void 0,(function*(){return JSON.parse((yield this.getAllToken())||"{}")[e]||null}))}static deleteToken(e){return a(this,void 0,void 0,(function*(){const t=JSON.parse((yield this.getAllToken())||"{}");delete t[e],yield this.saveAllToken(JSON.stringify(t))}))}static encryptString(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getFingerprint();const r=yield jm(t),n="undefined"!=typeof crypto&&crypto.subtle?yield function(e,t,r={alg:"HS256",typ:"JWT"}){return a(this,void 0,void 0,(function*(){const n=Bm((new TextEncoder).encode(JSON.stringify(r))),i=Bm((new TextEncoder).encode(JSON.stringify(e))),o=(new TextEncoder).encode(`${n}.${i}`),s=yield crypto.subtle.importKey("raw",(new TextEncoder).encode(t),{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]);return`${n}.${i}.${Bm(yield crypto.subtle.sign("HMAC",s,o))}`}))}(e,r):function(e,t){if(!e||!t)return"";const r=h((new TextEncoder).encode(t)),n=Array.from(new Uint8Array(r)),i=(new TextEncoder).encode(e),o=new Uint8Array(i.length);for(let e=0;e=0&&r<=cy}}function $y(e){return function(t){return null==t?void 0:t[e]}}var Uy=$y("byteLength"),Ly=Fy(Uy),Dy=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var By=Ym?function(e){return ny?ny(e)&&!Ry(e):Ly(e)&&Dy.test(Jm.call(e))}:Ny(!1),zy=$y("length");function jy(e,t){t=function(e){for(var t={},r=e.length,n=0;n":">",'"':""","'":"'","`":"`"},Iv=_v(Pv),Mv=_v(uv(Pv)),Nv=Hy.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Fv=/(.)^/,$v={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Uv=/\\|'|\r|\n|\u2028|\u2029/g;function Lv(e){return"\\"+$v[e]}var Dv=/^\s*(\w|\$)+\s*$/;var Bv=0;function zv(e,t,r,n,i){if(!(n instanceof t))return e.apply(r,i);var o=gv(e.prototype),s=e.apply(o,i);return dy(s)?s:o}var jv=uy((function(e,t){var r=jv.placeholder,n=function(){for(var i=0,o=t.length,s=Array(o),a=0;a1)Hv(a,t-1,r,n),i=n.length;else for(var c=0,u=a.length;c0&&(r=t.apply(this,arguments)),e<=1&&(t=null),r}}var Xv=jv(Jv,2);function Yv(e,t,r){t=Av(t,r);for(var n,i=qy(e),o=0,s=i.length;o0?0:i-1;o>=0&&o0?s=o>=0?o:Math.max(o+a,s):a=o>=0?Math.min(o+1,a):o+a+1;else if(r&&o&&a)return n[o=r(n,i)]===i?o:-1;if(i!=i)return(o=t(Gm.call(n,s,a),My))>=0?o+s:-1;for(o=e>0?s:a-1;o>=0&&o=3;return function(t,r,n,i){var o=!Wv(t)&&qy(t),s=(o||t).length,a=e>0?0:s-1;for(i||(n=t[o?o[a]:a],a+=e);a>=0&&a=0}var mb=uy((function(e,t,r){var n,i;return Ey(t)?i=t:(t=yv(t),n=t.slice(0,-1),t=t[t.length-1]),cb(e,(function(e){var o=i;if(!o){if(n&&n.length&&(e=vv(e,n)),null==e)return;o=e[t]}return null==o?o:o.apply(e,r)}))}));function yb(e,t){return cb(e,Sv(t))}function vb(e,t,r){var n,i,o=-1/0,s=-1/0;if(null==t||"number"==typeof t&&"object"!=typeof e[0]&&null!=e)for(var a=0,c=(e=Wv(e)?e:cv(e)).length;ao&&(o=n);else t=Av(t,r),ab(e,(function(e,r,n){((i=t(e,r,n))>s||i===-1/0&&o===-1/0)&&(o=e,s=i)}));return o}var bb=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function wb(e){return e?Oy(e)?Gm.call(e):py(e)?e.match(bb):Wv(e)?cb(e,wv):cv(e):[]}function kb(e,t,r){if(null==t||r)return Wv(e)||(e=cv(e)),e[Rv(e.length-1)];var n=wb(e),i=zy(n);t=Math.max(Math.min(t,i),0);for(var o=i-1,s=0;s1&&(n=Ev(n,t[1])),t=Jy(e)):(n=Cb,t=Hv(t,!1,!1),e=Object(e));for(var i=0,o=t.length;i1&&(r=t[1])):(t=cb(Hv(t,!1,!1),String),n=function(e,r){return!gb(t,r)}),Rb(e,n,r)}));function _b(e,t,r){return Gm.call(e,0,Math.max(0,e.length-(null==t||r?1:t)))}function Pb(e,t,r){return null==e||e.length<1?null==t||r?void 0:[]:null==t||r?e[0]:_b(e,e.length-t)}function Ib(e,t,r){return Gm.call(e,null==t||r?1:t)}var Mb=uy((function(e,t){return t=Hv(t,!0,!0),hb(e,(function(e){return!gb(t,e)}))})),Nb=uy((function(e,t){return Mb(e,t)}));function Fb(e,t,r,n){hy(t)||(n=r,r=t,t=!1),null!=r&&(r=Av(r,n));for(var i=[],o=[],s=0,a=zy(e);st?(n&&(clearTimeout(n),n=null),a=u,s=e.apply(i,o),n||(i=o=null)):n||!1===r.trailing||(n=setTimeout(c,d)),s};return u.cancel=function(){clearTimeout(n),a=0,n=i=o=null},u},debounce:function(e,t,r){var n,i,o,s,a,c=function(){var u=Ov()-i;t>u?n=setTimeout(c,t-u):(n=null,r||(s=e.apply(a,o)),n||(o=a=null))},u=uy((function(u){return a=this,o=u,i=Ov(),n||(n=setTimeout(c,t),r&&(s=e.apply(a,o))),s}));return u.cancel=function(){clearTimeout(n),n=o=a=null},u},wrap:function(e,t){return jv(t,e)},negate:Gv,compose:function(){var e=arguments,t=e.length-1;return function(){for(var r=t,n=e[t].apply(this,arguments);r--;)n=e[r].call(this,n);return n}},after:function(e,t){return function(){if(--e<1)return t.apply(this,arguments)}},before:Jv,once:Xv,findKey:Yv,findIndex:eb,findLastIndex:tb,sortedIndex:rb,indexOf:ib,lastIndexOf:ob,find:sb,detect:sb,findWhere:function(e,t){return sb(e,kv(t))},each:ab,forEach:ab,map:cb,collect:cb,reduce:db,foldl:db,inject:db,reduceRight:lb,foldr:lb,filter:hb,select:hb,reject:function(e,t,r){return hb(e,Gv(Av(t)),r)},every:fb,all:fb,some:pb,any:pb,contains:gb,includes:gb,include:gb,invoke:mb,pluck:yb,where:function(e,t){return hb(e,kv(t))},max:vb,min:function(e,t,r){var n,i,o=1/0,s=1/0;if(null==t||"number"==typeof t&&"object"!=typeof e[0]&&null!=e)for(var a=0,c=(e=Wv(e)?e:cv(e)).length;an||void 0===r)return 1;if(re.map((e=>e.name)),Wb=e=>e.map((e=>e.author||"")),Hb=e=>e.map((e=>e.key)),Kb=(e,t)=>{let r=[];for(let n=0;n-1&&r.push(t.indexOf(e[n]));return r.length{if(-1===e.indexOf(n))for(let e=0;ee-Math.min(...r))))]};class Vb{static sortBooks(e,t,r){let n=e.map((e=>e.key)),i=(e=>e.getAllListConfig("recentBooks"))(r);if(1===t.sort||0===t.sort)return 1===t.order?Kb(i,n).reverse():Kb(i,n);if(2===t.sort){let r=qb(e),n=qb(e).sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"})));return 1===t.order?Kb(n,r).reverse():Kb(n,r)}if(3===t.sort){let r=[];for(let t=0;t{let t=e.getAllObjectConfig("readingTime");var r=[];for(let e in t)r.push([e,t[e]]);return r.sort((function(e,t){return e[1]-t[1]})),Object.keys(t)})(r),i=Hb(e);return 1===t.order?Kb(jb.union(n,i),i).reverse():Kb(jb.union(n,i),i)}if(5===t.sort){let r=Wb(e),n=Wb(e).sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"})));return 1===t.order?Kb(n,r).reverse():Kb(n,r)}if(6===t.sort){let n=(e=>{let t=e.getAllObjectConfig("recordLocation");var r=[];for(let e in t)r.push([e,t[e].percentage||0]);return r.sort((function(e,t){return e[1]-t[1]})),r.map((e=>e[0]))})(r),i=Hb(e);return 1===t.order?Kb(n,i).reverse():Kb(n,i)}}static sortNotes(e,t,r=[]){if(3===t.sort){let r=jb.clone(e).reverse(),n=jb.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:e.chapterIndex}))));n=1===t.order?jb.sortBy(n,"chapterIndex"):jb.sortBy(n,"chapterIndex").reverse();let i=jb.uniq(n.map((e=>e.chapter))),o={};return i.forEach((e=>{o[e]=[]})),r.forEach((e=>{o[e.chapter].push(e)})),i.map((e=>({group:e,notes:o[e]})))||[]}if(2===t.sort){let r=jb.clone(e).reverse(),n=jb.uniq(e.map((e=>e.date.year+"-"+e.date.month+"-"+e.date.day)));1===t.order?n.sort():n.sort().reverse();let i={};return n.forEach((e=>{i[e]=[]})),r.forEach((e=>{n.forEach((t=>{t===e.date.year+"-"+e.date.month+"-"+e.date.day&&i[t].push(e)}))})),i||{}}if(1===t.sort){let n=jb.clone(e).reverse(),i=jb.uniq(e.map((e=>{let t=jb.findLastIndex(r,{key:e.bookKey});return t>-1?r[t].name:""})));1===t.order?i.sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"}))):i.sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"}))).reverse();let o={};return i.forEach((e=>{o[e]=[]})),n.forEach((e=>{i.forEach((t=>{let n=jb.findLastIndex(r,{key:e.bookKey});n>-1&&t===r[n].name&&o[t].push(e)}))})),o||{}}}static sortBookmarks(e,t){if(3===t.sort){let r=jb.clone(e).reverse(),n=jb.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:parseInt(JSON.parse(e.cfi).chapterDocIndex)}))));n=1===t.order?jb.sortBy(n,"chapterIndex"):jb.sortBy(n,"chapterIndex").reverse();let i=jb.uniq(n.map((e=>e.chapter))),o={};return i.forEach((e=>{o[e]=[]})),r.forEach((e=>{o[e.chapter].push(e)})),i.map((e=>({group:e,bookmarks:o[e]})))||[]}}}class Qb{static getDefaultCss(e){return`::selection{background:#f3a6a68c}::-moz-selection{background:#f3a6a68c}.kookit-note:hover{cursor:pointer;}body,html{margin: 0px !important; padding: 0px !important; font-size: 18px;writing-mode: horizontal-tb !important;}.kookit-text{${this.getCustomCss(e)}}.kookit-title{${this.getCustomCss(e,!0)}}code,pre{white-space: pre-wrap;}p{margin-block: 0;margin-inline: 0;}rt span{font-size: unset !important;}${"yes"===e.getReaderConfig("isOverwriteLink")?"a{color: #0066cc !important; text-decoration: underline !important; cursor: pointer !important;}a:hover{color: #004080 !important;}a:visited{color: #6600cc !important;}":""}${"yes"===e.getReaderConfig("isMergeWord")?`h1{font-size: ${e.getReaderConfig("fontSize")||18}px !important;}`:""}${this.getComicCss(e)}`}static getCustomCss(e,t=!1){return`font-size: ${t?"":e.getReaderConfig("fontSize")?e.getReaderConfig("fontSize"):""}px !important;line-height: ${e.getReaderConfig("lineHeight")||"1.25"} !important;font-family: ${e.getReaderConfig("fontFamily")||""} !important;background-color: transparent;color: ${e.getReaderConfig("textColor")?e.getReaderConfig("textColor"):"rgba(44,47,49,1)"===e.getReaderConfig("backgroundColor")||"night"===e.getReaderConfig("appSkin")||"system"===e.getReaderConfig("appSkin")&&"yes"===e.getReaderConfig("isOSNight")?"white":""};letter-spacing: ${e.getReaderConfig("letterSpacing")||""}px !important;text-align: ${e.getReaderConfig("textAlign")?e.getReaderConfig("textAlign"):""} !important;font-weight: ${"yes"===e.getReaderConfig("isBold")?"bold !important":""};font-style: ${"yes"===e.getReaderConfig("isItalic")?"italic !important":""};text-shadow: ${"yes"===e.getReaderConfig("isShadow")?"2px 2px 2px #cccccc !important":""};text-indent: ${"yes"!==e.getReaderConfig("isIndent")||t?"yes"===e.getReaderConfig("isIndent")&&t?"0em !important":"":"2em !important"};text-decoration: ${"yes"===e.getReaderConfig("isUnderline")?"underline !important":""};padding-bottom: ${e.getReaderConfig("paraSpacing")||0}px !important;word-wrap: break-word !important; writing-mode: horizontal-tb !important; max-width: 100% !important;overflow: visible !important; margin-top: 0 !important; margin-bottom: 0 !important;`}static getComicCss(e){return`div.fs{height:unset !important;width:100% !important;min-height:100% !important;position:relative;text-align:left;vertical-align:middle;}div.fs div{height:unset !important;min-height:100% !important;width:100% !important;margin:auto;text-align:center;vertical-align:middle;}.div_view{height:unset !important;width:100% !important;min-height:100% !important;margin:auto;text-align:center;vertical-align:middle;}.singlePage{${"scroll"!==e.getReaderConfig("readerMode")?"":"max-width: 100% !important;"}${"scroll"!==e.getReaderConfig("readerMode")?"":"max-height: unset !important;"}height:${"scroll"!==e.getReaderConfig("readerMode")?"100%":"unset"}!important;width:100%!important;position: unset !important;}`}}class Gb{static mergeArray(e,t){var r=[];for(let t of e)r.push(t);for(let i of t){var n=!0;for(let t of e)if(i===t){n=!1;break}n&&r.push(i)}return r}static fuzzyQuery(e,t){for(var r=[],n=0;n-1&&r.push(n);return r}static mouseSearch(e){let t=document.querySelector(".header-search-box").value.toLowerCase(),r=[],n=[];if(!e)return[];e.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,t),o=this.fuzzyQuery(n,t);return this.mergeArray(i,o)}static keywordSearch(e,t){let r=[],n=[];if(!t)return[];t.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,e),o=this.fuzzyQuery(n,e);return this.mergeArray(i,o)}static keySearch(e,t){if(e&&13===e.keyCode){let r=[],n=[];if(!t)return[];t.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,e.target.value.toLowerCase()),o=this.fuzzyQuery(n,e.target.value.toLowerCase());return this.mergeArray(i,o)}}static mouseNoteSearch(e){let t=document.querySelector(".header-search-box").value.toLowerCase(),r=[],n=[];e.forEach((e=>{r.push(e.notes.toLowerCase()),n.push(e.text.toLowerCase())}));let i=this.fuzzyQuery(r,t),o=this.fuzzyQuery(n,t);return this.mergeArray(i,o)}static keyNoteSearch(e,t){if(e&&13===e.keyCode){let r=[],n=[];t.forEach((e=>{r.push(e.notes.toLowerCase()),n.push(e.text.toLowerCase())}));let i=this.fuzzyQuery(r,e.target.value.toLowerCase()),o=this.fuzzyQuery(n,e.target.value.toLowerCase());return this.mergeArray(i,o)}}}export{Om as BookHelper,g as CommonTool,Lm as ConfigService,b as KookitConfig,$m as LoginHelper,Mm as ReaderRequest,Gb as SearchUtil,Vb as SortUtil,Cm as SqlStatement,Qb as StyleHelper,Um as SyncHelper,bm as SyncUtil,Nm as ThirdpartyRequest,Dm as TokenService,Fm as UserRequest}; diff --git a/src/assets/lib/kookit-extra.min.mjs b/src/assets/lib/kookit-extra.min.mjs index 88a4e2aa..e25e306f 100644 --- a/src/assets/lib/kookit-extra.min.mjs +++ b/src/assets/lib/kookit-extra.min.mjs @@ -1 +1 @@ -import e from"axios";import t from"fs";import r from"path";import{promisify as i}from"util";import o from"stream";import{Client as s}from"basic-ftp";import{S3Client as n,ListObjectsV2Command as a,DeleteObjectCommand as d,PutObjectCommand as l,GetObjectCommand as c}from"@aws-sdk/client-s3";import{createClient as h,AuthType as u}from"webdav";import p from"ssh2-sftp-client";import f from"form-data";import{Storage as y}from"megajs";import g from"crypto";import{SSE as m}from"sse.js";import k from"electron-store";import v from"node-machine-id";function T(e,t,r,i){return new(r||(r=Promise))((function(o,s){function n(e){try{d(i.next(e))}catch(e){s(e)}}function a(e){try{d(i.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(n,a)}d((i=i.apply(e,t||[])).next())}))}const b=e=>"json"===e?"application/json":["jpg","jpeg","png","gif","bmp"].includes(e)?"image/"+e:"zip"===e?"application/zip":"epub"===e?"application/epub+zip":"txt"===e?"text/plain":"pdf"===e?"application/pdf":"mobi"===e?"application/x-mobipocket-ebook":"azw3"===e||"azw"===e?"application/vnd.amazon.ebook":"cbz"===e?"application/x-cbz":"cbr"===e?"application/x-cbr":"cbt"===e?"application/x-cbt":"cb7"===e?"application/x-cb7":"fb2"===e?"application/x-fictionbook+xml":"html"===e?"text/html":"css"===e?"text/css":"js"===e?"application/javascript":"xml"===e?"application/xml":"xhtml"===e?"application/xhtml+xml":"opf"===e?"application/oebps-package+xml":"ncx"===e?"application/x-dtbncx+xml":"mp3"===e?"audio/mpeg":"wav"===e?"audio/wav":"ogg"===e?"audio/ogg":"mp4"===e?"video/mp4":"webm"===e?"video/webm":"avi"===e?"video/x-msvideo":"wmv"===e?"video/x-ms-wmv":"flv"===e?"video/x-flv":"m3u8"===e?"application/x-mpegURL":"ts"===e?"video/MP2T":"3gp"===e?"video/3gpp":"3g2"===e?"video/3gpp2":"db"===e?"application/x-sqlite3":void 0,F={_chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",encode(e){if("string"!=typeof e)throw new Error("Input must be a string");let t="",r=0;const i=this._stringToUtf8Bytes(e),o=i.length;for(;r>2,d=(3&e)<<4|s>>4,l=(15&s)<<2|n>>6,c=63&n;t+=this._chars.charAt(a),t+=this._chars.charAt(d),t+=r-2>=o?"=":this._chars.charAt(l),t+=r-1>=o?"=":this._chars.charAt(c)}return t},decode(e){if("string"!=typeof e)throw new Error("Input must be a string");for(e=e.replace(/[^A-Za-z0-9+/]/g,"");e.length%4!=0;)e+="=";const t=[];let r=0;const i=e.length;for(;r>4,d=(15&o)<<4|s>>2,l=(3&s)<<6|n;t.push(a),-1!==s&&t.push(d),-1!==n&&t.push(l)}return this._utf8BytesToString(t)},_stringToUtf8Bytes(e){const t=[];for(let r=0;r>6),t.push(128|63&i);else if(55296==(64512&i)&&r+1>18),t.push(128|e>>12&63),t.push(128|e>>6&63),t.push(128|63&e)}else t.push(239,191,189),r--}else t.push(224|i>>12),t.push(128|i>>6&63),t.push(128|63&i)}return t},_utf8BytesToString(e){let t="",r=0;for(;r65535){const r=e-65536;t+=String.fromCharCode(55296|r>>10),t+=String.fromCharCode(56320|1023&r)}else t+=String.fromCharCode(e)}else t+="�"}else t+="�"}return t},encodeURL(e){return this.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")},decodeURL(e){for(e=e.replace(/-/g,"+").replace(/_/g,"/");e.length%4;)e+="=";return this.decode(e)}};class E{constructor(e){this.queue=[],this.runningTasks=0,this.totalTasks=0,this.completedTasks=0,this.hasFailedTasks=!1,this.downloadedSize=0,this.maxConcurrency=e}addTask(e){return T(this,void 0,void 0,(function*(){return this.totalTasks++,new Promise(((t,r)=>{if(this.hasFailedTasks)return void r(new Error("Task queue has failed tasks. No new tasks can be added."));const i=()=>T(this,void 0,void 0,(function*(){try{this.runningTasks++;const r=yield e();return this.completedTasks++,t(r),r}catch(e){throw this.completedTasks++,r(e),e}finally{this.runningTasks--,this.runNext()}}));this.runningTasks0&&this.runningTasks=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=[],o=!0,s=null;for(;o;){let n;n=s?yield e.post("https://api.dropboxapi.com/2/files/list_folder/continue",{cursor:s},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}):yield e.post("https://api.dropboxapi.com/2/files/list_folder",{path:"/"+t,limit:2e3},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});const a=n.data.entries||[];i=i.concat(a),o=n.data.has_more,s=n.data.cursor}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:e[".tag"],modified:e.client_modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();yield e.post("https://api.dropboxapi.com/2/files/delete_v2",{path:"/"+t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dropbox",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dropbox",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://www.dropbox.com/oauth2/authorize?response_type=code&token_access_type=offline&client_id=${x}&redirect_uri=${e}`}}const D=i(o.pipeline);class j extends Q{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=t.createReadStream(r.join(this.storagePath,i));return yield e.post("https://content.dropboxapi.com/2/files/upload",n,{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/octet-stream","Dropbox-API-Arg":JSON.stringify({path:"/"+o,mode:"overwrite",autorename:!0,mute:!1})},maxContentLength:1/0,maxBodyLength:1/0}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=t.createWriteStream(r.join(this.storagePath,o)),a=yield e({url:"https://content.dropboxapi.com/2/files/download",method:"GET",responseType:"stream",headers:{Authorization:`Bearer ${s}`,"Dropbox-API-Arg":JSON.stringify({path:"/"+i})},maxContentLength:1/0,maxBodyLength:1/0});let d=0;return a.data.on("data",(e=>{d+=e.length,this.taskQueue.setDownloadedSize(d)})),yield D(a.data,n),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class B{constructor(e,t){this.config=e,this.storagePath=t,this.taskQueue=new E(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getClient(){return T(this,void 0,void 0,(function*(){try{if(this.client&&!1===this.client.closed)return this.client;let{url:e,username:t,password:r,dir:i,ssl:o,port:n}=this.config;const a=new s(0);a.ftp.verbose=!0;const d=a.access({host:e,port:parseInt(n),user:t,password:r,secure:"1"===o}),l=new Promise(((e,t)=>{setTimeout((()=>t(new Error("FTP connection timeout"))),5e3)}));return yield Promise.race([d,l]),this.client=a,a}catch(e){throw console.error("Error connecting to FTP server:",e),this.client=null,e}}))}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let{dir:i}=this.config;i=i&&"KoodoReader"===this.baseFolder?i:this.baseFolder;const o=yield this.getClient(),s=()=>T(this,void 0,void 0,(function*(){yield o.ensureDir(r.dirname(i+"/"+t)),yield o.cd("/"),yield o.uploadFrom(r.join(this.storagePath,e),i+"/"+t)}));try{return yield s(),!0}catch(e){return console.error(e),!1}}catch(e){return console.error("Error in uploadFile:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;const s=yield this.getClient(),n=t.createWriteStream(r.join(this.storagePath,i)),a=()=>T(this,void 0,void 0,(function*(){s.trackProgress((e=>{this.taskQueue.setDownloadedSize(e.bytes||0)})),yield s.downloadTo(n,o+"/"+e),s.trackProgress()}));try{return yield a(),!0}catch(e){return console.error(e),!1}}catch(e){return console.error("Error in downloadFile:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.listFilesWithoutQueue(e)}))))))}))}listFilesWithoutQueue(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;const r=yield this.getClient(),i=()=>T(this,void 0,void 0,(function*(){return yield r.list(t+"/"+e)}));try{return(yield i()).map((e=>({name:e.name,size:e.size||0,type:e.isFile?"file":"folder",modified:e.modifiedAt?e.modifiedAt.toISOString():""})))}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;const r=yield this.getClient(),i=()=>T(this,void 0,void 0,(function*(){yield r.remove(t+"/"+e)}));try{return yield i(),!0}catch(e){return console.error(e),!1}}))}}class M{constructor(e,t){this.isExp=!1,this.baseUrl="https://graph.microsoft.com/v1.0/me/drive/special/approot",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new E(3),this.isExp=this.config.isExp||!1,this.baseUrl=this.isExp?"https://graph.microsoft.com/v1.0/me/drive/root":"https://graph.microsoft.com/v1.0/me/drive/special/approot",void 0===this.config.baseFolder?this.baseFolder=this.isExp?"KoodoReader":"":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let i,o=[];if(""===t)i=`${this.baseUrl}/children`;else{const e=encodeURIComponent(t);i=`${this.baseUrl}:/${e}:/children`}for(;i;){const t=yield e.get(i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(t.status>=300)break;const s=t.data.value||[];o=o.concat(s),i=t.data["@odata.nextLink"]||""}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:e.folder?"folder":"file",modified:e.lastModifiedDateTime}))))]}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const i=yield e.delete(`${this.baseUrl}:/${t}`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!(i.status>=300)||(console.error("Error deleting file:",i),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"microsoft",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"microsoft",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${I}&scope=${this.isExp?"files.readwrite.all":"files.readwrite.appfolder"} offline_access&response_type=code&redirect_uri=${e}`}}const U=209715200;class W extends M{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var s;let n=null;try{const s=yield this.refreshToken();let a=this.baseFolder+"/"+o;for(;a.startsWith("/");)a=a.substring(1);const d=r.join(this.storagePath,i),l=yield this.getFileSize(d),c=a.split(".").pop(),h=(b(c||""),`${this.baseUrl}:/${a}:/createUploadSession`),u=(yield e.post(h,{item:{"@microsoft.graph.conflictBehavior":"replace"}},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}})).data.uploadUrl;n=yield t.promises.open(d,"r");let p=0,f=Buffer.alloc(U);for(;pthis.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken();let n=this.baseFolder+"/"+i;for(;n.startsWith("/");)n=n.substring(1);const a=`${this.baseUrl}:/${n}:/content`;let d=(yield fetch(a,{headers:{Authorization:"Bearer "+s},redirect:"manual"})).headers.get("location");if(d){const i=yield e.get(d,{responseType:"stream"});let s=0;const n=t.createWriteStream(r.join(this.storagePath,o));return i.data.on("data",(e=>{s+=e.length,this.taskQueue.setDownloadedSize(s)})),yield new Promise(((e,t)=>{i.data.pipe(n),n.on("finish",(()=>{e()})),n.on("error",t)})),!0}return!1}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class N{constructor(e,t){this.isExp=!1,this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new E(3),this.isExp=this.config.isExp||!1,void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getFileId(t,r){return T(this,void 0,void 0,(function*(){const i=yield this.refreshToken(),o=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=yield e.get(o,{headers:{Authorization:"Bearer "+i}});if(0===t.data.files.length)return"";const r=t.data.files;return r.length>0?r[0].id:null}catch(e){return console.error("Error occurred during file list retrieval:",e),""}}))}checkFolder(t){return T(this,void 0,void 0,(function*(){t=this.baseFolder+"/"+t;const r=yield this.refreshToken();if(""===t)return"root";const i=t.split("/").filter((e=>""!==e.trim()));let o="root";for(const t of i){let i=yield this.getFolderId(t,o);if(!i){const s={name:t,mimeType:"application/vnd.google-apps.folder",parents:[o]};try{i=(yield e.post("https://www.googleapis.com/drive/v3/files",s,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}catch(e){throw console.error(`Error occurred during folder creation for ${t}:`,e),e}}o=i}return o}))}getFolderId(t,r){return T(this,void 0,void 0,(function*(){const i=yield this.refreshToken(),o=`https://www.googleapis.com/drive/v3/files?q=name='${t=encodeURIComponent(t)}'+and+mimeType='application/vnd.google-apps.folder'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=(yield e.get(o,{headers:{Authorization:`Bearer ${i}`}})).data.files;return t.length>0?t[0].id:null}catch(e){throw console.error("Error occurred during fetching folder ID:",e),e}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=yield this.checkFolder(t),o=[],s="",n=!0;for(;n;){let t=`https://www.googleapis.com/drive/v3/files?q='${i}'+in+parents&fields=nextPageToken,files(id,name,size,mimeType)&pageSize=1000`;s&&(t+=`&pageToken=${s}`);const a=yield e.get(t,{headers:{Authorization:`Bearer ${r}`}}),d=a.data.files||[];o=o.concat(d),s=a.data.nextPageToken,n=!!s}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:"application/vnd.google-apps.folder"===e.mimeType?"folder":"file",modified:e.modifiedTime}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQue(e)}))))))}))}deleteFileWithoutQue(t){return T(this,void 0,void 0,(function*(){const r=t.split("/")[1],i=yield this.checkFolder(t),o=yield this.refreshToken(),s=yield this.getFileId(r,i);if(""===s)return console.error("File not found:",r),!0;try{const t=yield e.delete(`https://www.googleapis.com/drive/v3/files/${s}`,{headers:{Authorization:`Bearer ${o}`}});return console.error("File deleted:",t),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"google",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"google",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${e}&prompt=consent&response_type=code&client_id=${L}&scope=https://www.googleapis.com/auth/${this.isExp?"drive":"drive.file"}&access_type=offline`}}class K extends N{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken();let n=i.split("/").pop(),a=o.split(".").pop(),d=b(a||""),l=o.split("/").slice(0,-1).join("/"),c=yield this.checkFolder(l),h=yield this.getFileId(n||"",c);const u={mimeType:d,name:n,parents:[c]},p=h?`https://www.googleapis.com/upload/drive/v3/files/${h}?uploadType=resumable`:"https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable",f=(yield e({method:h?"PATCH":"POST",url:p,data:h?null:JSON.stringify(u),headers:{Authorization:"Bearer "+s,"Content-Type":"application/json; charset=UTF-8"},maxContentLength:1/0,maxBodyLength:1/0})).headers.location;let y=yield this.getFileSize(r.join(this.storagePath,i));const g=t.createReadStream(r.join(this.storagePath,i));yield e.put(f,g,{headers:{Authorization:"Bearer "+s,"Content-Type":"application/zip","Content-Range":`bytes 0-${y-1}/${y}`},maxContentLength:1/0,maxBodyLength:1/0});return!0}catch(e){return console.error("Error occurred during upload:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken();let n=i.split("/").pop(),a=i.split("/").slice(0,-1).join("/"),d=yield this.checkFolder(a),l=yield this.getFileId(n||"",d);if(!l)return console.error("File not found"),!0;const c=`https://www.googleapis.com/drive/v3/files/${l}?alt=media`;return new Promise((i=>{const n=t.createWriteStream(r.join(this.storagePath,o));e({url:c,method:"GET",responseType:"stream",headers:{Authorization:"Bearer "+s},maxContentLength:1/0,maxBodyLength:1/0}).then((e=>{let t=0;e.data.on("data",(e=>{t+=e.length,this.taskQueue.setDownloadedSize(t)})),e.data.pipe(n),n.on("finish",(()=>{i(!0)})),n.on("error",(()=>{i(!1)}))})).catch((e=>{console.error("Error downloading file:",e),i(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class q{constructor(e){this.config=e,this.taskQueue=new E(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}shouldUsePathStyle(e){try{const t=new URL(e),r=t.hostname,i=/^(\d{1,3}\.){3}\d{1,3}$/.test(r),o=""!==t.port;return!i&&o}catch(e){return!0}}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:d}=this.config;d=d&&"KoodoReader"===this.baseFolder?d:this.baseFolder;let l=d+"/"+e;for(;l.startsWith("/");)l=l.substring(1);""===l||l.endsWith("/")||(l+="/");const c=new n({endpoint:t,region:r,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(t)});try{let e,t=[],r=[],o=!0;for(;o;){const s=yield c.send(new a({Bucket:i,Prefix:l,Delimiter:"/",ContinuationToken:e}));s.Contents&&(t=t.concat(s.Contents)),s.CommonPrefixes&&(r=r.concat(s.CommonPrefixes)),e=s.NextContinuationToken,o=!!e}let s=[];return t.forEach((e=>{if(!e.Key.endsWith("/")){const t=e.Key.substring(l.length);t.includes("/")||s.push({name:t,size:e.Size||0,type:"file",modified:e.LastModified?e.LastModified.toISOString():""})}})),r.forEach((e=>{const t=e.Prefix.substring(l.length).replace(/\/$/,"");t&&s.push({name:t,size:0,type:"folder",modified:""})})),s}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:a}=this.config;a=a&&"KoodoReader"===this.baseFolder?a:this.baseFolder;const l=new n({endpoint:t,region:r,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(t)});let c=a+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{return yield l.send(new d({Bucket:i,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class H extends q{constructor(e,t){super(e),this.storagePath=t}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){let{endpoint:o,region:s,bucketName:a,accessKeyId:d,secretAccessKey:c,dir:h}=this.config;const u=new n({endpoint:o,region:s,credentials:{accessKeyId:d,secretAccessKey:c},forcePathStyle:this.shouldUsePathStyle(o)});h=h&&"KoodoReader"===this.baseFolder?h:this.baseFolder;let p=h+"/"+i;for(;p.startsWith("/");)p=p.substring(1);try{let i=yield u.send(new l({Bucket:a,Key:p,Body:t.createReadStream(r.join(this.storagePath,e))}));return 200===i.$metadata.httpStatusCode||(console.error("Error uploading file:",i),!1)}catch(e){return console.error("Error: ",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let{endpoint:o,region:s,bucketName:a,accessKeyId:d,secretAccessKey:l,dir:h}=this.config;h=h&&"KoodoReader"===this.baseFolder?h:this.baseFolder;const u=(e,t,r,i)=>new Promise(((o,s)=>T(this,void 0,void 0,(function*(){const s=yield e.send(new c({Bucket:t,Key:r}));let n=0;s.Body?(s.Body.on("data",(e=>{n+=e.length,this.taskQueue.setDownloadedSize(n)})),s.Body.pipe(i),i.on("finish",(e=>{e&&o(!1),o(!0)}))):o(!1)})))),p=()=>new Promise(((c,p)=>{const f=new n({region:s,endpoint:o,credentials:{accessKeyId:d,secretAccessKey:l},forcePathStyle:this.shouldUsePathStyle(o)});let y=t.createWriteStream(r.join(this.storagePath,i)),g=h+"/"+e;for(;g.startsWith("/");)g=g.substring(1);u(f,a,g,y).then((e=>{c(!0)})).catch((e=>{console.error(e),c(!1)}))}));try{return yield p()}catch(e){return console.error(e),!1}}))))))}))}}class J{constructor(e,t){this.storagePath=t;let{username:r,password:i,url:o,dir:s}=e;void 0===e.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=e.baseFolder,s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder,this.client=h(o,{authType:u.Password,username:r,password:i}),this.username=r,this.password=i,this.dir=s,this.taskQueue=new E(3)}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=this.client.exists(r.dirname(this.dir+"/"+o)),n=new Promise(((e,t)=>{setTimeout((()=>t(new Error("WebDAV exists check timeout"))),5e3)}));!1===(yield Promise.race([s,n]))&&(yield this.ensureDirectoryExists(r.dirname(this.dir+"/"+o)));let a=this.client.createWriteStream(this.dir+"/"+o);return t.createReadStream(r.join(this.storagePath,i)).pipe(a),new Promise(((s,n)=>{a.on("finish",(()=>{s(!0)})),a.on("error",(n=>T(this,void 0,void 0,(function*(){console.error("Error occurred during file upload:",n);try{let n=t.readFileSync(r.join(this.storagePath,i)),a=this.client.getFileUploadLink(this.dir+"/"+o);const d=new URL(a);d.search="",a=d.toString();const l=Buffer.from(this.username+":"+this.password,"binary").toString("base64");yield e.put(a,n,{headers:{Authorization:"Basic "+l},maxContentLength:1/0,maxBodyLength:1/0});s(!0)}catch(e){console.error("Error occurred during file upload:",e),s(!1)}}))))}))}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){if(this.taskQueue.setDownloadedSize(0),-1===e.indexOf("."))return new ArrayBuffer(0);try{if(!1===(yield this.client.exists(this.dir+"/"+e)))return!0;let o=0,s=t.createWriteStream(r.join(this.storagePath,i)),n=this.client.createReadStream(this.dir+"/"+e);return n.on("data",(e=>{o+=e.length,this.taskQueue.setDownloadedSize(o)})),n.pipe(s),new Promise(((e,t)=>{s.on("finish",(()=>{e(!0)})),s.on("error",(t=>{e(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){try{return(yield this.client.getDirectoryContents(this.dir+"/"+e)).filter((t=>"."!==t.filename&&".."!==t.filename&&t.filename!==e)).map((e=>({name:e.basename,size:e.size||0,type:"directory"===e.type?"folder":"file",modified:e.lastmod})))}catch(t){return console.error("Error listing files:",t),t.response&&404===t.response.status&&(yield this.client.createDirectory(this.dir+"/"+e)),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){try{return yield this.client.deleteFile(this.dir+"/"+e),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(e){return T(this,void 0,void 0,(function*(){try{const t=e.replace(/^\/+|\/+$/g,"").split("/").filter((e=>e.length>0));let r="";for(const e of t)r=r?`${r}/${e}`:e,(yield this.client.exists(`/${r}`))||(yield this.client.createDirectory(`/${r}`));return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}}class V{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new E(3),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){var r,i;return T(this,void 0,void 0,(function*(){try{const o=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let s=[],n=0;const a=1e3;let d=!0;for(;d;){const l=yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${o}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",limit:a,offset:n,fields:"_embedded.items.name,_embedded.items.size,_embedded.items.type,_embedded.items.modified,_embedded.total"}}),c=(null===(r=l.data._embedded)||void 0===r?void 0:r.items)||[];s=s.concat(c);const h=(null===(i=l.data._embedded)||void 0===i?void 0:i.total)||0;n+=c.length,d=n({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const i=yield e.delete("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",permanently:!1}});return 202===i.status||204===i.status}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(t){var r,i;return T(this,void 0,void 0,(function*(){try{const o=yield this.refreshToken(),s=t.split("/").filter((e=>e.length>0));let n="";for(const t of s){n+="/"+t;try{yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${o}`,"Content-Type":"application/json"},params:{path:n}})}catch(t){if(404!==(null===(r=t.response)||void 0===r?void 0:r.status))return console.error("Error checking directory:",t),!1;try{yield e.put(`https://cloud-api.yandex.net/v1/disk/resources?path=${encodeURIComponent(n)}`,null,{headers:{Authorization:`OAuth ${o}`}})}catch(e){if(409!==(null===(i=e.response)||void 0===i?void 0:i.status))return console.error("Error creating directory:",e),!1}}}return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yandex",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yandex",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://oauth.yandex.com/authorize?response_type=code&client_id=${O}&redirect_uri=${e}&force_confirm=true`}}const Y=i(o.pipeline);class X extends V{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken();let n=this.baseFolder+"/"+o;for(;n.startsWith("/");)n=n.substring(1);const a=n.substring(0,n.lastIndexOf("/"));if(a){if(!(yield this.ensureDirectoryExists(a)))return console.error("Failed to create directory:",a),!1}const d=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/upload",{headers:{Authorization:`OAuth ${s}`,"Content-Type":"application/json"},params:{path:`/${n}`,overwrite:!0}});if(200!==d.status)return console.error("Error getting upload URL:",d),!1;const l=d.data.href,c=t.createReadStream(r.join(this.storagePath,i));return yield e.put(l,c,{headers:{"Content-Type":"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);try{const i=yield this.refreshToken(),n=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/download",{headers:{Authorization:`OAuth ${i}`,"Content-Type":"application/json"},params:{path:`/${s}`}});if(200!==n.status)return console.error("Error getting download URL:",n),!1;const a=n.data.href,d=t.createWriteStream(r.join(this.storagePath,o)),l=yield e({url:a,method:"GET",responseType:"stream",maxContentLength:1/0,maxBodyLength:1/0});let c=0;return l.data.on("data",(e=>{c+=e.length,this.taskQueue.setDownloadedSize(c)})),yield Y(l.data,d),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class G{constructor(e,t){this.config=e,this.storagePath=t,this.taskQueue=new E(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getClient(){return T(this,void 0,void 0,(function*(){try{if(this.client)return this.client;let{url:e,username:t,password:r,dir:i,port:o}=this.config;const s=new p,n=s.connect({host:e||"",port:o||22,username:t||"",password:r||""}),a=new Promise(((e,t)=>{setTimeout((()=>t(new Error("SFTP connection timeout"))),5e3)}));return yield Promise.race([n,a]),this.client=s,s}catch(e){throw console.error("Error connecting to SFTP server:",e),this.client=null,e}}))}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;let s=yield this.getClient();const n=()=>new Promise(((n,a)=>T(this,void 0,void 0,(function*(){let a=t.createReadStream(r.join(this.storagePath,e)),d="/"+o+"/"+i,l="/"+o+"/"+r.dirname(i);(yield s.exists(l))||(yield s.mkdir(l,!0)),s.put(a,d).then((()=>{n(!0)})).catch((e=>{console.error(e.message),n(!1)}))}))));try{return yield n()}catch(e){return console.error(e),!1}}catch(e){return console.error("Error in uploadFile:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;let s=yield this.getClient();const n=()=>new Promise(((n,a)=>T(this,void 0,void 0,(function*(){let a="/"+o+"/"+e,d=r.join(this.storagePath,i),l=t.createWriteStream(d);s.get(a,l).then((()=>{this.taskQueue.setDownloadedSize(l.bytesWritten||0),n(!0)})).catch((e=>{console.error(e.message),n(!1)}))}))));try{return yield n()}catch(e){return console.error(e),!1}}catch(e){return console.error("Error in downloadFile:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;let r=yield this.getClient();const i=()=>new Promise(((i,o)=>T(this,void 0,void 0,(function*(){let o="/"+t+"/"+e;(yield r.exists(o))||(yield r.mkdir(o,!0),i([])),r.list(o).then((e=>{i(e.map((e=>({name:e.name,size:e.size||0,type:"d"===e.type?"folder":"file",modified:e.modifyTime}))))})).catch((e=>T(this,void 0,void 0,(function*(){console.error(e.message,"list file error"),i([])}))))}))));try{return yield i()}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;let r=yield this.getClient();try{return yield new Promise(((i,o)=>{let s="/"+t+"/"+e;r.delete(s).then((()=>{i(!0)})).catch((e=>{console.error(e.message),i(!1)}))}))}catch(e){return console.error(e),!1}}))}}class Z{downloadFile(e,t){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e([])}))}))}authToken(e){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e("")}))}))}getAuthUrl(){return""}}class ee{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new E(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getFolderIdByPath(t){return T(this,void 0,void 0,(function*(){if(""==t)return"0";const r=yield this.refreshToken(),i=t.split("/");let o="0";for(const t of i){const i=`https://api.box.com/2.0/folders/${o}/items?fields=id,name&type=folder&limit=1000`;try{const s=(yield e.get(i,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===t&&"folder"===e.type));if(s)o=s.id;else{const i={name:t,parent:{id:o},type:"folder"};o=(yield e.post("https://api.box.com/2.0/folders",i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}}catch(e){return console.error("Error occurred during folder creation:",e),""}}return o}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder+"/"+t;for(;i.startsWith("/");)i=i.substring(1);let o=yield this.getFolderIdByPath(i),s=[],n=0,a=!0;const d=1e3;for(;a;){const t=yield e.get(`https://api.box.com/2.0/folders/${o}/items`,{params:{limit:d,offset:n},headers:{Authorization:`Bearer ${r}`}}),i=t.data.entries||[];s=s.concat(i),n+=i.length,a=i.length===d&&t.data.total_count>n}return[...new Set(s.map((e=>({name:e.name,size:e.size||0,type:e.type,modified:e.content_modified_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=t.substring(0,t.lastIndexOf("/")),o=t.substring(t.lastIndexOf("/")+1);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);const n=yield this.getFolderIdByPath(s);if(!n)return!0;const a=`https://api.box.com/2.0/folders/${n}/items?fields=id,name&type=file&limit=1000`,d=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===o&&"file"===e.type));return!d||(yield e.delete(`https://api.box.com/2.0/files/${d.id}`,{headers:{Authorization:`Bearer ${r}`}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"boxnet",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("boxnet_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"boxnet",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://account.box.com/api/oauth2/authorize?${new URLSearchParams({response_type:"code",client_id:P,redirect_uri:e,grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}).toString()}`}}class te extends ee{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=o.substring(0,o.lastIndexOf("/")),a=o.substring(o.lastIndexOf("/")+1);let d=this.baseFolder+"/"+n;for(;d.startsWith("/");)d=d.substring(1);const l=yield this.getFolderIdByPath(d);if(!l)throw new Error("Folder not found");const c=yield this.listFiles(n);c.find((e=>e===a))&&(yield this.deleteFileWithoutQueue(n+"/"+a));const h=new f,u=JSON.stringify({name:a,parent:{id:l}});h.append("attributes",u),h.append("file",t.createReadStream(r.join(this.storagePath,i)));const p=yield e.post("https://upload.box.com/api/2.0/files/content",h,{headers:Object.assign({Authorization:`Bearer ${s}`},h.getHeaders()),maxContentLength:1/0,maxBodyLength:1/0});return!(p.status>=300)||(console.error("Error occurred during file upload:",p),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=i.substring(0,i.lastIndexOf("/")),a=i.substring(i.lastIndexOf("/")+1);let d=this.baseFolder+"/"+n;for(;d.startsWith("/");)d=d.substring(1);const l=yield this.getFolderIdByPath(d);if(!l)return console.error("Folder not found"),!0;const c=`https://api.box.com/2.0/folders/${l}/items?fields=id,name&type=file&limit=1000`,h=(yield e.get(c,{headers:{Authorization:`Bearer ${s}`}})).data.entries.find((e=>e.name===a&&"file"===e.type));if(!h)return console.error("File not found:",a),!0;const u=yield e({url:`https://api.box.com/2.0/files/${h.id}/content`,method:"get",responseType:"stream",headers:{Authorization:`Bearer ${s}`}});return yield new Promise(((e,i)=>{let s=0;const n=t.createWriteStream(r.join(this.storagePath,o));u.data.on("data",(e=>{s+=e.length,this.taskQueue.setDownloadedSize(s)})),u.data.pipe(n),n.on("finish",e),n.on("error",i)})),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class re{constructor(e){this.folderCreationLocks=new Map,this.config=e,this.taskQueue=new E(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=2){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getStorage(){return T(this,void 0,void 0,(function*(){if(this.storage)return this.storage;let{email:e,password:t}=this.config;return this.storage=yield new y({email:e,password:t}).ready,this.storage}))}getRoot(){return T(this,void 0,void 0,(function*(){if(this.root)return this.root;const e=(yield this.getStorage()).root;if(""===this.baseFolder)return this.root=e,this.root;let t=e.children.find((e=>e.name===this.baseFolder&&e.directory));return t||(t=yield e.mkdir(this.baseFolder)),this.root=t,this.root}))}createFolder(e,t){return T(this,void 0,void 0,(function*(){const r=`${e.nodeId}_${t}`;if(this.folderCreationLocks.has(r))return yield this.folderCreationLocks.get(r);const i=(()=>T(this,void 0,void 0,(function*(){try{let r=e.children.find((e=>e.name===t&&e.directory));return r||(r=yield e.mkdir(t),r)}finally{this.folderCreationLocks.delete(r)}})))();return this.folderCreationLocks.set(r,i),yield i}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();if(e){const r=e.split("/").filter((e=>e));for(const e of r){const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return[];t=r}}return t.children.map((e=>({name:e.name,size:e.size||0,type:e.directory?"folder":"file",modified:e.timestamp?new Date(1e3*e.timestamp).toISOString():""})))}catch(e){return console.error("Error listing MEGA files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return T(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();const r=e.split("/"),i=r.pop();for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const o=t.children.find((e=>e.name===i&&!e.directory));return!o||(yield o.delete(),!0)}catch(e){return console.error("Error deleting MEGA file:",e),!1}}))}}class ie extends re{constructor(e,t){super(e),this.storagePath=t}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let o=yield this.getRoot();const s=i.split("/"),n=s.pop()||"";for(const e of s){if(!e)continue;let t=o.children.find((t=>t.name===e&&t.directory));t||(t=yield this.createFolder(o,e)),o=t}const a=o.children.find((e=>e.name===n&&!e.directory));a&&(yield a.delete());const d=t.createReadStream(r.join(this.storagePath,e)),l=t.statSync(r.join(this.storagePath,e)).size;return yield o.upload({name:n,size:l},d).complete,!0}catch(e){return console.error("Error occurred during MEGA file upload:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let o=yield this.getRoot();const s=e.split("/"),n=s.pop()||"";for(const e of s){if(!e)continue;const t=o.children.find((t=>t.name===e&&t.directory));if(!t)return!0;o=t}const a=o.children.find((e=>e.name===n&&!e.directory));if(!a)return!0;const d=t.createWriteStream(r.join(this.storagePath,i));let l=0;return new Promise((e=>{const t=a.download();t.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),t.pipe(d),d.on("finish",(()=>e(!0))),d.on("error",(t=>{console.error("Error writing file:",t),e(!1)}))}))}catch(e){return console.error("Error occurred during MEGA file download:",e),!1}}))))))}))}}class oe{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.driveId="",this.refreshTokenPromise=null,this.taskQueue=new E(1),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getDriveId(){return T(this,void 0,void 0,(function*(){if(this.driveId)return this.driveId;const t=yield this.refreshToken(),r=yield e.post("https://openapi.alipan.com/adrive/v1.0/user/getDriveInfo",{},{headers:{Authorization:`Bearer ${t}`}});return this.driveId=r.data.default_drive_id,this.driveId}))}getFolderIdByPath(t){return T(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),i=yield this.getDriveId();try{try{const o=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(o.data)return o.data.file_id}catch(o){const s=t.split("/").filter((e=>e));let n="",a="root";for(const t of s){n+="/"+t;try{a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:n},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}catch(o){a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:i,parent_file_id:a,name:t,type:"folder",check_name_mode:"refuse"},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}}return a}}catch(e){return console.error("Error getting/creating folder by path:",e),""}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield this.getDriveId(),o=yield this.getFolderIdByPath(this.baseFolder+"/"+t);let s=[],n="",a=!0;for(;a;){const t=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/list",{drive_id:i,parent_file_id:o,marker:n||void 0},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),d=t.data.items||[];s=s.concat(d),n=t.data.next_marker,a=!!n&&100===d.length}return[...new Set(s.map((e=>({name:e.name,size:e.size,type:e.type,modified:e.updated_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield this.getDriveId(),o=yield this.getFolderIdByPath(this.baseFolder+"/"+t);return!o||(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/delete",{drive_id:i,file_id:o},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}checkExists(t){var r;return T(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=yield this.getDriveId(),s=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:o,file_path:t},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}});(null===(r=s.data)||void 0===r?void 0:r.file_id)&&(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/recyclebin/trash",{drive_id:o,file_id:s.data.file_id},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}))}catch(e){}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"adrive",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("adrive_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"adrive",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://openapi.alipan.com/oauth/authorize?${new URLSearchParams({response_type:"code",client_id:z,redirect_uri:e,grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}).toString()}`}}class se extends oe{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=yield this.getDriveId(),a=o.substring(0,o.lastIndexOf("/")),d=o.substring(o.lastIndexOf("/")+1);yield this.deleteFileWithoutQueue(o);const l=yield this.getFolderIdByPath(this.baseFolder+"/"+a),c=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:n,parent_file_id:l,name:d,type:"file",check_name_mode:"ignore"},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),{file_id:h,upload_id:u,part_info_list:p}=c.data,f=yield t.promises.readFile(r.join(this.storagePath,i));return yield fetch(p[0].upload_url,{method:"PUT",body:f,headers:{"Content-Length":t.statSync(r.join(this.storagePath,i)).size.toString()}}),yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/complete",{drive_id:n,file_id:h,upload_id:u},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=yield this.getDriveId(),a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:this.baseFolder+"/"+i},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}})).data.file_id,d=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/getDownloadUrl",{drive_id:n,file_id:a},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),l=yield e({url:d.data.url,method:"get",responseType:"stream"});let c=0;const h=t.createWriteStream(r.join(this.storagePath,o+".temp"));return l.data.on("data",(e=>{c+=e.length,this.taskQueue.setDownloadedSize(c)})),l.data.pipe(h),new Promise((e=>{h.on("finish",(()=>{t.renameSync(r.join(this.storagePath,o+".temp"),r.join(this.storagePath,o)),e(!0)})),h.on("error",(t=>{console.error("Error occurred during file download:",t),e(!1)}))}))}catch(e){return console.error("Error downloading file:",e),!1}}))))))}))}}class ne{constructor(e,t){this.baseUrl="https://api.pcloud.com",this.config=e,this.thirdpartyRequest=t,this.taskQueue=new E(3),this.baseUrl="2"===e.region?"https://eapi.pcloud.com":"https://api.pcloud.com"}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}checkFolderExists(t,r){return T(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error checking folder:",e),!1}}))}createFolder(t,r){return T(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/createfolderifnotexists`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error creating folder:",e),!1}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:"/"+t,recursive:0}});return 0!==i.data.result?[]:i.data.metadata.contents.map((e=>({name:e.name,size:e.size||0,type:e.isfolder?"folder":"file",modified:e.modified})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.get(`${this.baseUrl}/deletefile`,{params:{access_token:r,path:"/"+t}});return 0===i.data.result||(console.error("Error deleting file:",i.data),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.refresh_token}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"pcloud",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://my.pcloud.com/oauth2/authorize?client_id=${C}&response_type=code&redirect_uri=${e}`}}class ae extends ne{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=o.split("/").slice(0,-1).join("/");if(!(yield this.checkFolderExists(n,s))){if(!(yield this.createFolder(n,s)))return!1}const a=r.join(this.storagePath,i),d=t.createReadStream(a),l=t.statSync(a),c=r.basename(i),h=yield e({method:"put",url:`${this.baseUrl}/uploadfile`,params:{access_token:s,path:`/${n}`,renew:1,filename:c},data:d,headers:{"Content-Length":l.size,"Content-Type":"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0});return 0===h.data.result||(console.error("Error uploading file:",h.data),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/getfilelink`,{params:{access_token:s,path:`/${i}`}});if(0!==n.data.result)return console.error("Error getting file link:",n.data),!1;const a=r.join(this.storagePath,o),d=t.createWriteStream(a),l=`https://${n.data.hosts[0]}${n.data.path}`,c=yield e({method:"get",url:l,responseType:"stream",maxContentLength:1/0,maxBodyLength:1/0});return new Promise((e=>{let t=0;c.data.on("data",(e=>{t+=e.length,this.taskQueue.setDownloadedSize(t)})),c.data.pipe(d),d.on("finish",(()=>{e(!0)})),d.on("error",(t=>{console.error("Error writing file:",t),e(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class de{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new E(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder;t&&""!==t.trim()&&(i=i+"/"+t),i=i.replace(/\/+/g,"/"),i.startsWith("/")&&(i=i.substring(1));let o=[],s=0;const n=1e3;for(;;){const t=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:r,dir:"/"+i,start:s,limit:n,order:"name",desc:0,web:1,folder:0},headers:{"User-Agent":"pan.baidu.com"}});if(t.status>=300||0!==t.data.errno){console.error("百度网盘API错误:",t.data);break}const a=t.data.list||[];if(0===a.length)break;if(o=o.concat(a),a.length({name:e.server_filename,size:e.size||0,type:e.isdir?"folder":"file",modified:new Date(1e3*e.server_mtime).toISOString(),path:e.path})))}catch(e){return console.error("获取百度网盘文件列表时发生错误:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder+"/"+t;i=i.replace(/\/+/g,"/"),i.startsWith("/")&&(i=i.substring(1));const o=new URLSearchParams({async:"0",filelist:JSON.stringify(["/"+i])}),s=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=filemanager&access_token=${r}&opera=delete`,o.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==s.data.errno)return console.error("百度网盘删除文件API错误:",s.data),-9===s.data.errno?console.error("文件不存在"):111===s.data.errno?console.error("有其他异步任务正在执行"):-7===s.data.errno&&console.error("文件名非法"),!1;const n=s.data.info||[];for(const e of n)if(0!==e.errno)return console.error(`文件删除失败: ${e.path}, 错误码: ${e.errno}`),!1;return!0}catch(e){return console.error("删除文件时发生错误:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dubox",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("dubox_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dubox",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=${A}&redirect_uri=${e}&scope=basic,netdisk&device_id=119827642&display=page&qrcode=1`}}const le=4194304;class ce extends de{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var s;let n=null;try{const s=yield this.refreshToken();let a=this.baseFolder+"/"+o;a=a.replace(/\/+/g,"/"),a.startsWith("/")&&(a=a.substring(1));const d=r.join(this.storagePath,i),l=yield this.getFileSize(d),{contentMd5:c,sliceMd5:h,blockList:u}=yield this.calculateFileMd5(d,l),p=new URLSearchParams({path:"/"+a,size:l.toString(),isdir:"0",autoinit:"1",rtype:"3",block_list:JSON.stringify(u),"content-md5":c,"slice-md5":h,local_ctime:Math.floor(Date.now()/1e3).toString(),local_mtime:Math.floor(Date.now()/1e3).toString()}),y=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=precreate&access_token=${s}`,p.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==y.data.errno)return console.error("预上传失败:",y.data),-7===y.data.errno?console.error("文件或目录名错误或无权访问"):-10===y.data.errno&&console.error("容量不足"),!1;const g=y.data.uploadid,m=y.data.block_list||[];if(0===m.length)return!0;const k=yield this.getUploadDomain(s,"/"+a,g);if(!k)return console.error("获取上传域名失败"),!1;n=yield t.promises.open(d,"r");for(const t of m){const r=t*le,i=Math.min(le,l-r),o=Buffer.alloc(i),{bytesRead:d}=yield n.read(o,0,i,r);if(0===d)break;const c=o.slice(0,d),h=u[t],p=new f;p.append("file",c,{filename:`chunk_${t}`,contentType:"application/octet-stream",knownLength:c.length});const y=`${k}/rest/2.0/pcs/superfile2?method=upload&access_token=${s}&type=tmpfile&path=${encodeURIComponent("/"+a)}&uploadid=${g}&partseq=${t}`,m=yield e.post(y,p,{headers:Object.assign(Object.assign({"User-Agent":"pan.baidu.com"},p.getHeaders()),{"Content-Length":p.getLengthSync().toString()}),maxContentLength:1/0,maxBodyLength:1/0,timeout:0});if(m.status>=300)throw 31024===m.data.errno?console.error("没有申请上传权限"):31299===m.data.errno?console.error("第一个分片的大小小于4MB"):31364===m.data.errno?console.error("超出分片大小限制"):31363===m.data.errno&&console.error("分片缺失"),new Error(`分片上传失败: ${JSON.stringify(m.data)}`);const v=m.data.md5;v&&v!==h&&console.warn(`分片 ${t} MD5不匹配: 期望 ${h}, 实际 ${v}`)}const v=new URLSearchParams({path:"/"+a,size:l.toString(),isdir:"0",block_list:JSON.stringify(u),uploadid:g,rtype:"3",local_ctime:Math.floor(Date.now()/1e3).toString(),local_mtime:Math.floor(Date.now()/1e3).toString()}),T=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=create&access_token=${s}`,v.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});return 0===T.data.errno||(console.error("创建文件失败:",T.data),-7===T.data.errno?console.error("文件或目录名错误或无权访问"):-8===T.data.errno?console.error("文件或目录已存在"):-10===T.data.errno?console.error("云端容量已满"):10===T.data.errno?console.error("创建文件失败,一般是分片问题"):31190===T.data.errno?console.error("文件不存在,一般是分片上传阶段有问题"):31355===T.data.errno?console.error("参数异常,一般是uploadid参数传的有问题"):31365===T.data.errno&&console.error("文件总大小超限"),!1)}catch(e){return console.error("文件上传过程中发生错误:",(null===(s=e.response)||void 0===s?void 0:s.data)||e.message||e),!1}finally{n&&(yield n.close())}}))))))}))}getUploadDomain(t,r,i){return T(this,void 0,void 0,(function*(){try{const o=yield e.get("https://d.pcs.baidu.com/rest/2.0/pcs/file",{params:{method:"locateupload",appid:"250528",access_token:t,path:r,uploadid:i,upload_version:"2.0"},headers:{"User-Agent":"pan.baidu.com"}});if(0!==o.data.error_code)return console.error("获取上传域名失败:",o.data),null;const s=o.data.servers||[],n=s.find((e=>e.server.startsWith("https://")));return n?n.server:s.length>0?s[0].server:(console.error("没有可用的上传服务器"),null)}catch(e){return console.error("获取上传域名时出错:",e),null}}))}calculateFileMd5(e,r){return T(this,void 0,void 0,(function*(){const i=yield t.promises.open(e,"r");try{const e=g.createHash("md5"),t=[];let o="",s=0;for(;sthis.retryOperation((()=>T(this,void 0,void 0,(function*(){var s,n;this.taskQueue.setDownloadedSize(0);try{const a=yield this.refreshToken();let d,l=this.baseFolder+"/"+i;l=l.replace(/\/+/g,"/"),l.startsWith("/")&&(l=l.substring(1));const c=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:a,dir:"/"+l.substring(0,l.lastIndexOf("/")),web:1},headers:{"User-Agent":"pan.baidu.com"}});if(0!==c.data.errno)return console.error("获取文件列表失败:",c.data),!1;const h=l.split("/").pop(),u=null===(s=c.data.list)||void 0===s?void 0:s.find((e=>e.server_filename===h));if(!u)return console.error("文件不存在:",i),!1;const p=yield e.get("https://pan.baidu.com/rest/2.0/xpan/multimedia",{params:{method:"filemetas",access_token:a,fsids:JSON.stringify([u.fs_id]),dlink:1},headers:{"User-Agent":"pan.baidu.com"}});if(0!==p.data.errno||!(null===(n=p.data.list)||void 0===n?void 0:n[0]))return console.error("获取下载链接失败:",p.data),!1;d=p.data.list[0];const f=d.dlink,y=yield e.get(f,{responseType:"stream",params:{access_token:a},headers:{"User-Agent":"pan.baidu.com"}});let g=0;const m=t.createWriteStream(r.join(this.storagePath,o));y.data.on("data",(e=>{g+=e.length,this.taskQueue.setDownloadedSize(g)})),yield new Promise(((e,t)=>{y.data.pipe(m),m.on("finish",(()=>{e()})),m.on("error",t)}));return(yield this.getFileSize(r.join(this.storagePath,o)))===d.size||(console.error("Downloaded file size does not match expected size."),yield t.promises.unlink(r.join(this.storagePath,o)),!1)}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class he{constructor(e){this.username=e.username,this.password=e.password,this.url=e.url,this.refreshTokenPromise=null,this.taskQueue=new E(3)}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{return(yield e.get(`${this.url}/list`,{params:{dir:t},auth:{username:this.username,password:this.password}})).data.files.map((e=>({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modifiedTime})))||[]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{return(yield e.delete(`${this.url}/delete`,{params:{dir:t.split("/").slice(0,-1).join("/")||"",filename:t.split("/").pop()},auth:{username:this.username,password:this.password}})).data.success}catch(e){return console.error("Error deleting file:",e),!1}}))}}const ue=i(o.pipeline);class pe extends he{constructor(e,t){super(e),this.storagePath=t}getAuthHeader(){return`Basic ${btoa(`${this.username}:${this.password}`)}`}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{o.split("/").pop();const s=o.substring(0,o.lastIndexOf("/"))||"";let n=this.listFiles("");const a=new Promise(((e,t)=>{setTimeout((()=>t(new Error("Docker connection timeout"))),5e3)}));yield Promise.race([n,a]);const d=t.createReadStream(r.join(this.storagePath,i)),l=new f;l.append("file",d);const c=yield e.post(`${this.url}/upload?dir=${encodeURIComponent(s)}`,l,{headers:Object.assign(Object.assign({},l.getHeaders()),{Authorization:this.getAuthHeader()}),maxContentLength:1/0,maxBodyLength:1/0});return!(c.status>=300)||(console.error("Error occurred during file upload:",c),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=i.split("/").pop()||"",n=i.substring(0,i.lastIndexOf("/"))||"",a=t.createWriteStream(r.join(this.storagePath,o)),d=yield e({url:`${this.url}/download`,method:"GET",params:{dir:n,filename:s},headers:{Authorization:this.getAuthHeader()},maxContentLength:1/0,maxBodyLength:1/0,responseType:"stream"});if(d.status>=300)return console.error("Error occurred during file download:",d),a.destroy(),t.existsSync(r.join(this.storagePath,o))&&t.unlinkSync(r.join(this.storagePath,o)),!1;let l=0;return d.data.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),yield ue(d.data,a),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class fe{constructor(e,t){this.baseUrl="https://proapi.115.com",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new E(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getUploadCredentials(t){return T(this,void 0,void 0,(function*(){try{const r=yield e.get(`${this.baseUrl}/open/upload/get_token`,{headers:{Authorization:`Bearer ${t}`}});return r.status>=300||!r.data.state?(console.error("Error getting upload credentials:",r.data),null):r.data.data}catch(e){return console.error("Error occurred during get upload credentials:",e),null}}))}generateOSSPolicy(e,t,r=new Date(Date.now()+36e5)){const i={expiration:r.toISOString(),conditions:[{bucket:e},{key:t},["starts-with","$success_action_status","2"],["content-length-range",0,1073741824]]};return JSON.stringify(i)}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token;if(!e)throw new Error("No refresh token available");let t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yiyiwu",refresh_token:e});if(!t.data.access_token)return"";if(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+18e5,!t.data.refresh_token)throw new Error("No refresh token returned");this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("yiyiwu_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yiyiwu",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://passportapi.115.com/open/authorize?client_id=${$}&response_type=code&redirect_uri=${e}`}}class ye extends fe{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var i;try{const i=yield this.refreshToken();let o=this.baseFolder+"/"+t;o.startsWith("/")||(o="/"+o);let s=r.dirname(o),n=yield this.getFolderInfo(s,!0),a="0";if(n)a=n.file_id;else{let e=yield this.createFolder(s);if(!e)return console.error("Failed to create folder:",s),!1;a=e}const d=r.join(this.storagePath,e),l=yield this.getFileSize(d),c=yield this.calculateFileSha1(d),h=yield this.calculatePreSha1(d),u=r.basename(t);yield this.deleteFileWithoutQueue(t);let p=yield this.initializeUpload(a,u,l,c,h,i);if(!p)return console.error("Failed to initialize upload"),!1;if((6===p.status||7===p.status||8===p.status)&&(p=yield this.handleSecondAuth(a,p,d,u,l,c,h,i),!p))return console.error("Second authentication failed"),!1;if(2===p.status)return console.info(`File ${e} uploaded successfully via instant upload.`),!0;const f=yield this.getUploadCredentials(i);if(!f)return console.error("Failed to get upload credentials"),!1;return(yield this.uploadToObjectStorage(d,p,f))?(console.info(`File ${e} uploaded successfully.`),!0):(console.error("Failed to upload to object storage"),!1)}catch(e){return console.error("Error occurred during file upload:",(null===(i=e.response)||void 0===i?void 0:i.data)||e.message||e),!1}}))))))}))}calculateFileSha1(e){return T(this,void 0,void 0,(function*(){return new Promise(((r,i)=>{const o=g.createHash("sha1"),s=t.createReadStream(e);s.on("data",(e=>{o.update(e)})),s.on("end",(()=>{r(o.digest("hex"))})),s.on("error",(e=>{i(e)}))}))}))}calculatePreSha1(e){return T(this,void 0,void 0,(function*(){return new Promise(((r,i)=>{const o=g.createHash("sha1"),s=t.createReadStream(e,{start:0,end:131071});s.on("data",(e=>{o.update(e)})),s.on("end",(()=>{r(o.digest("hex"))})),s.on("error",(e=>{i(e)}))}))}))}handleSecondAuth(e,r,i,o,s,n,a,d){return T(this,void 0,void 0,(function*(){try{if(!r.sign_check)return console.error("No sign_check provided for second authentication"),null;const[l,c]=r.sign_check.split("-"),h=parseInt(l),u=parseInt(c),p=Buffer.alloc(u-h+1),f=yield t.promises.open(i,"r");try{yield f.read(p,0,p.length,h);const t=g.createHash("sha1");t.update(p);const i=t.digest("hex").toUpperCase();return yield this.initializeUpload(e,o,s,n,a,d,r.sign_key,i,r.pick_code)}finally{yield f.close()}}catch(e){return console.error("Error during second authentication:",e),null}}))}calculateOSSSignature(e,t){const r=Buffer.from(t).toString("base64");return g.createHmac("sha1",e).update(r).digest("base64")}uploadToObjectStorage(i,o,s){var n;return T(this,void 0,void 0,(function*(){try{const n=s.endpoint,a=o.bucket,d=o.object;let l;if(n.includes(a))l=n;else{l=`https://${a}.${n.replace(/^https?:\/\//,"")}`}const c=this.generateOSSPolicy(a,d),h=this.calculateOSSSignature(s.AccessKeySecret,c),u=Buffer.from(c).toString("base64"),p=new f;if(p.append("key",d),p.append("policy",u),p.append("OSSAccessKeyId",s.AccessKeyId),p.append("signature",h),p.append("x-oss-security-token",s.SecurityToken),p.append("success_action_status","200"),o.callback&&o.callback.callback){const e=Buffer.from(o.callback.callback).toString("base64");if(p.append("callback",e),o.callback.callback_var){const e=JSON.parse(o.callback.callback_var);for(const[t,r]of Object.entries(e))p.append(t,String(r))}}const y=t.createReadStream(i);p.append("file",y,r.basename(i));const g=yield e.post(l,p,{headers:Object.assign({},p.getHeaders()),maxContentLength:1/0,maxBodyLength:1/0});return 200===g.status||204===g.status||(console.error("Upload failed with status:",g.status),!1)}catch(e){return console.error("Error uploading file via REST API:",(null===(n=e.response)||void 0===n?void 0:n.data)||e.message||e),!1}}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let s=this.baseFolder+"/"+i;s=s.replace(/\/+/g,"/"),s.startsWith("/")||(s="/"+s);const n=yield this.getFolderInfo(s,!1);if(!n||!n.pick_code)return console.error("Failed to get file info or pick_code for:",i),!1;const a=yield this.getFileDownloadUrl(n.pick_code);if(!a)return console.error("Failed to get download URL for:",i),!1;const d=yield e.get(a.url,{responseType:"stream"});let l=0;const c=t.createWriteStream(r.join(this.storagePath,o));return d.data.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),yield new Promise(((e,t)=>{d.data.pipe(c),c.on("finish",(()=>{e()})),c.on("error",t)})),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();(t=this.baseFolder+"/"+t).startsWith("/")||(t="/"+t);let i=[],o=0;const s=1150;let n=!0,a=yield this.getFolderInfo(t,!0),d="";if(a)d=a.file_id;else{let e=yield this.createFolder(t);if(!e)return console.error("Failed to create folder:",t),[];d=e}if(!d)return console.error("Failed to get or create folder ID:",t),[];let l=d;for(;n;){const t={offset:o,limit:s,cur:1,show_dir:1};l&&(t.cid=l);const a=yield e.get(`${this.baseUrl}/open/ufile/files`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"},params:t});if(a.status>=300)break;const d=a.data.data||[];i=i.concat(d),d.length({name:e.fn,size:e.fs||0,type:"0"===e.fc?"folder":"file",modified:new Date(1e3*e.upt).toISOString()})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}getFileDownloadUrl(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=new f;i.append("pick_code",t);const o=yield e.post(`${this.baseUrl}/open/ufile/downurl`,i,{headers:Object.assign({Authorization:`Bearer ${r}`},i.getHeaders())});if(o.status>=300)return console.error("Error getting download URL:",o.data),null;const s=o.data.data,n=Object.keys(s)[0];return n&&s[n]?s[n].url:(console.error("No file data found in download URL response"),null)}catch(e){return console.error("Error occurred during get download URL:",e),null}}))}initializeUpload(t,r,i,o,s,n,a,d,l){return T(this,void 0,void 0,(function*(){try{const c=new f;c.append("file_name",r),c.append("file_size",i.toString()),t?c.append("target","U_1_"+t):c.append("target","U_1_0"),c.append("fileid",o),c.append("preid",s),c.append("topupload","0"),l&&c.append("pick_code",l),a&&c.append("sign_key",a),d&&c.append("sign_val",d);const h=yield e.post(`${this.baseUrl}/open/upload/init`,c,{headers:Object.assign({Authorization:`Bearer ${n}`},c.getHeaders())});return h.status>=300||!h.data.state?(console.error("Error initializing upload:",h.data),null):h.data.data}catch(e){return console.error("Error occurred during upload initialization:",e),null}}))}createFolder(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=t.replace(/^\/+|\/+$/g,"");if(!i)return"";const o=i.split("/");let s="",n="0";for(const t of o){s=s?`${s}/${t}`:t;const i=yield this.getFolderInfo(s,!0);if(i&&i.file_id)n=i.file_id;else{const i=new f;i.append("pid",n),i.append("file_name",t);const o=yield e.post(`${this.baseUrl}/open/folder/add`,i,{headers:Object.assign({Authorization:`Bearer ${r}`},i.getHeaders())});if(o.status>=300||!o.data.state)return console.error("Error creating folder:",o.data),"";n=o.data.data.file_id}}return n}catch(e){return console.error("Error occurred during folder creation:",e),""}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();t=this.baseFolder+"/"+t;let i=yield this.getFolderInfo(t,!1);if(!i)return!0;let o=new f;o.append("file_ids",i.file_id);const s=yield e.post(`${this.baseUrl}/open/ufile/delete`,o,{headers:Object.assign({Authorization:`Bearer ${r}`},o.getHeaders())});return!(s.status>=300||!s.data.state)||(console.error("Error deleting file:",s),!1)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}getFolderInfo(t,r){return T(this,void 0,void 0,(function*(){if(""===t||"/"===t)return{file_id:"0"};t.startsWith("/")||(t="/"+t);try{const r=yield this.refreshToken();let i=new f;i.append("path",t);const o=yield e.post(`${this.baseUrl}/open/folder/get_info`,i,{headers:Object.assign(Object.assign({},i.getHeaders()),{Authorization:`Bearer ${r}`})});return o.status>=300||!o.data.state||0===o.data.data.length?(console.error("Error getting file info:",o.data),null):o.data.data}catch(e){return console.error("Error occurred during get file info:",e),null}}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}const ge=["book","config","cover","font"];class me{constructor(e,t,r,i){this.type=e,this.storagePath=r,this.remote="dropbox"===e?new j(t,r,i):"microsoft"===e?new W(t,r,i):"google"===e?new K(t,r,i):"microsoft_exp"===e?new W(Object.assign(Object.assign({},t),{isExp:!0}),r,i):"google_exp"===e?new K(Object.assign(Object.assign({},t),{isExp:!0}),r,i):"s3compatible"===e?new H(t,r):"webdav"===e?new J(t,r):"docker"===e?new pe(t,r):"ftp"===e?new B(t,r):"sftp"===e?new G(t,r):"boxnet"===e?new te(t,r,i):"mega"===e?new ie(t,r):"adrive"===e?new se(t,r,i):"pcloud"===e?new ae(t,r,i):"dubox"===e?new ce(t,r,i):"yandex"===e?new X(t,r,i):"yiyiwu"===e?new ye(t,r,i):new Z}downloadFile(e,i,o){return T(this,void 0,void 0,(function*(){if(t.existsSync(r.join(this.storagePath+"/"+o))||t.mkdirSync(r.join(this.storagePath+"/"+o)),"cover"!==o){if(!(yield this.listFiles(o)).find((t=>e.indexOf(t)>-1)))return!1}return yield this.remote.downloadFile(o+"/"+e,o+"/"+i)}))}uploadFile(e,t,r){return T(this,void 0,void 0,(function*(){return yield this.remote.uploadFile(r+"/"+e,r+"/"+t)}))}deleteFile(e,t){return T(this,void 0,void 0,(function*(){return!!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1))&&(yield this.remote.deleteFile(t+"/"+e))}))}isExist(e,t){return T(this,void 0,void 0,(function*(){return(yield this.listFiles(t)).find((t=>-1!==t.indexOf(e)))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return yield this.remote.listFiles(e)}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){return yield this.remote.listFileInfos(e)}))}downloadAllFiles(){return T(this,void 0,void 0,(function*(){for(let e of ge){let t=yield this.listFiles(e);for(let r of t)yield this.downloadFile(r,r,e)}}))}authToken(e){return T(this,void 0,void 0,(function*(){return yield this.remote.authToken(e)}))}getAuthUrl(e){return this.remote.getAuthUrl(e)}getStats(){return this.remote.taskQueue.getStats()}resetCounters(){this.remote.taskQueue.resetCounters()}getDownloadedSize(){return this.remote.taskQueue.getDownloadedSize()}}const ke={notes:"SELECT * FROM notes WHERE key = ?",bookmarks:"SELECT * FROM bookmarks WHERE key = ?",books:"SELECT * FROM books WHERE key = ?",plugins:"SELECT * FROM plugins WHERE key = ?",words:"SELECT * FROM words WHERE key = ?"},ve={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},Te={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"};function be(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const Fe={notes:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t.tag=JSON.parse(e.tag),t},bookmarks:e=>e,books:e=>e,plugins:e=>{let t=Object.assign({},e);return e.autoValue||delete t.autoValue,e.langList?t.langList=JSON.parse(e.langList):delete t.langList,e.voiceList?t.voiceList=JSON.parse(e.voiceList):delete t.voiceList,t.config=JSON.parse(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t}};var Ee={sqlStatement:{createTableStatement:be({notes:'\n CREATE TABLE IF NOT EXISTS "notes" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "chapter" text,\n "chapterIndex" integer,\n "text" text,\n "cfi" text,\n "range" text,\n "notes" text,\n "percentage" text,\n "color" integer,\n "tag" array\n )\n ',bookmarks:'\n CREATE TABLE IF NOT EXISTS "bookmarks" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "cfi" text,\n "label" text,\n "percentage" text,\n "chapter" text\n );\n ',books:'\n CREATE TABLE IF NOT EXISTS "books" (\n "key" text PRIMARY KEY,\n "name" text,\n "author" text,\n "description" text,\n "md5" text,\n "cover" text,\n "format" text,\n "publisher" text,\n "size" integer,\n "page" integer,\n "path" text,\n "charset" text\n );\n ',plugins:'\n CREATE TABLE IF NOT EXISTS "plugins" (\n "key" text PRIMARY KEY,\n "type" text,\n "displayName" text,\n "icon" text,\n "version" text,\n "config" object,\n "autoValue" string,\n "langList" text,\n "voiceList" text,\n "scriptSHA256" text,\n "script" text\n );\n ',words:'\n CREATE TABLE IF NOT EXISTS "words" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "word" text,\n "chapter" text\n );\n '}),getAllStatement:be({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),getPagedStatement:be({notes:"SELECT * FROM notes LIMIT ? OFFSET ?",bookmarks:"SELECT * FROM bookmarks LIMIT ? OFFSET ?",books:"SELECT * FROM books LIMIT ? OFFSET ?",plugins:"SELECT * FROM plugins LIMIT ? OFFSET ?",words:"SELECT * FROM words LIMIT ? OFFSET ?"}),getCountStatement:be({notes:"SELECT COUNT(*) as count FROM notes",bookmarks:"SELECT COUNT(*) as count FROM bookmarks",books:"SELECT COUNT(*) as count FROM books",plugins:"SELECT COUNT(*) as count FROM plugins",words:"SELECT COUNT(*) as count FROM words"}),saveStatement:be({notes:"INSERT OR REPLACE INTO notes (key, bookKey, chapter, chapterIndex, text, cfi, range, notes, date, percentage, color, tag) VALUES (@key, @bookKey, @chapter, @chapterIndex, @text, @cfi, @range, @notes, @date, @percentage, @color, @tag)",bookmarks:"INSERT OR REPLACE INTO bookmarks (key, bookKey, cfi, label, percentage, chapter) VALUES (@key, @bookKey, @cfi, @label, @percentage, @chapter)",books:"INSERT OR REPLACE INTO books (key, name, author, description, md5, cover, format, publisher, size, page, path, charset) VALUES (@key, @name, @author, @description, @md5, @cover, @format, @publisher, @size, @page, @path, @charset)",plugins:"INSERT OR REPLACE INTO plugins (key, type, displayName, icon, version, config, autoValue, langList, voiceList, scriptSHA256, script) VALUES (@key, @type, @displayName, @icon, @version, @config, @autoValue, @langList, @voiceList, @scriptSHA256, @script)",words:"INSERT OR REPLACE INTO words (key, bookKey, date, word, chapter) VALUES (@key, @bookKey, @date, @word, @chapter)"}),deleteAllStatement:be({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:be({notes:"UPDATE notes SET bookKey = @bookKey, chapter = @chapter, chapterIndex = @chapterIndex, text = @text, cfi = @cfi, range = @range, notes = @notes, date = @date, percentage = @percentage, color = @color, tag = @tag WHERE key = @key",bookmarks:"UPDATE bookmarks SET bookKey = @bookKey, cfi = @cfi, label = @label, percentage = @percentage, chapter = @chapter WHERE key = @key",books:"UPDATE books SET name = @name, author = @author, description = @description, md5 = @md5, cover = @cover, format = @format, publisher = @publisher, size = @size, page = @page, path = @path, charset = @charset WHERE key = @key",plugins:"UPDATE plugins SET type = @type, displayName = @displayName, icon = @icon, version = @version, config = @config, autoValue = @autoValue, langList = @langList, voiceList = @voiceList, scriptSHA256 = @scriptSHA256, script = @script WHERE key = @key",words:"UPDATE words SET bookKey = @bookKey, date = @date, word = @word, chapter = @chapter WHERE key = @key"}),deleteStatement:be({notes:"DELETE FROM notes WHERE key = ?",bookmarks:"DELETE FROM bookmarks WHERE key = ?",books:"DELETE FROM books WHERE key = ?",plugins:"DELETE FROM plugins WHERE key = ?",words:"DELETE FROM words WHERE key = ?"}),dropStatement:be({notes:"DROP TABLE IF EXISTS notes",bookmarks:"DROP TABLE IF EXISTS bookmarks",books:"DROP TABLE IF EXISTS books",plugins:"DROP TABLE IF EXISTS plugins",words:"DROP TABLE IF EXISTS words"}),getStatement:be(ke),getByBookKeyStatement:be(ve),getByBookKeysStatement:be({notes:e=>`SELECT * FROM notes WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,bookmarks:e=>`SELECT * FROM bookmarks WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,words:e=>`SELECT * FROM words WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,books:e=>`SELECT * FROM books WHERE key IN (${e.map((()=>"?")).join(",")})`}),getKeysStatement:be({notes:"SELECT key FROM notes",bookmarks:"SELECT key FROM bookmarks",books:"SELECT key FROM books",plugins:"SELECT key FROM plugins",words:"SELECT key FROM words"}),getWithSortAndPageStatement:be({notes:(e,t,r,i)=>`SELECT * FROM notes ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${i}`,bookmarks:(e,t,r,i)=>`SELECT * FROM bookmarks ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${i}`,books:(e,t,r,i)=>`SELECT * FROM books ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${i}`,plugins:(e,t,r,i)=>`SELECT * FROM plugins ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${i}`,words:(e,t,r,i)=>`SELECT * FROM words ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${i}`}),getByKeysStatement:be({notes:e=>`SELECT * FROM notes WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`,bookmarks:e=>`SELECT * FROM bookmarks WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`,books:e=>`SELECT * FROM books WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`,plugins:e=>`SELECT * FROM plugins WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`,words:e=>`SELECT * FROM words WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`}),deleteByBookKeyStatement:be(Te)},jsonToSqlite:be({notes:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t.tag=JSON.stringify(e.tag),t},bookmarks:e=>e,books:e=>{let t=Object.assign({},e);return t.page=e.page||0,t},plugins:e=>{let t=Object.assign({},e);return e.autoValue||(t.autoValue=null),e.langList?t.langList=JSON.stringify(e.langList):t.langList=null,e.voiceList?t.voiceList=JSON.stringify(e.voiceList):t.voiceList=null,t.config=JSON.stringify(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t}}),sqliteToJson:be(Fe)};const we=S,Se=w;class _e{constructor(e,t,r){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===r?Se:we,this.refreshToken="",this.accessToken="",this.streamPromise=null,this.expiresAt=0}refreshUserToken(){return T(this,void 0,void 0,(function*(){if(this.refreshToken=yield this.TokenService.getToken("refresh_token"),!this.refreshToken)return{code:401,message:"refresh token not found"};let t=(yield e.post(this.baseUrl+"/api/v1/public/user/refresh_token",{refresh_token:this.refreshToken})).data;return 200===t.code&&(yield this.TokenService.setToken("access_token",t.data.access_token),yield this.TokenService.setToken("refresh_token",t.data.refresh_token),yield this.TokenService.setToken("expires_at",(1e3*t.data.expires_at).toString()),this.accessToken=t.data.access_token,this.refreshToken=t.data.refresh_token,this.expiresAt=1e3*t.data.expires_at),t}))}requestWithRetry(e){return T(this,void 0,void 0,(function*(){return _e.requestQueue||(_e.requestQueue=[]),new Promise(((t,r)=>{_e.requestQueue.push({config:e,resolve:t,reject:r}),_e.processingQueue||this.processQueue()}))}))}isTokenValid(){return T(this,void 0,void 0,(function*(){if(this.accessToken||(this.accessToken=(yield this.TokenService.getToken("access_token"))||""),!this.expiresAt){const e=yield this.TokenService.getToken("expires_at");this.expiresAt=e?parseInt(e):(new Date).getTime()+31536e9}return""!==this.accessToken&&this.expiresAt>(new Date).getTime()+6e4}))}processQueue(){return T(this,void 0,void 0,(function*(){if(!_e.processingQueue){_e.processingQueue=!0;try{for(;_e.requestQueue.length>0;){const e=_e.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{_e.processingQueue=!1}}}))}executeRequest(t){return T(this,void 0,void 0,(function*(){try{try{this.accessToken=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let r="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);if(t.baseURL=this.baseUrl,t.headers)t.headers.Authorization="Bearer "+this.accessToken,t.headers["X-Request-ID"]=r;else{let e=this.ConfigService.getItem("appVersion"),i=this.ConfigService.getItem("appPlatform");t.headers={Authorization:"Bearer "+this.accessToken,"X-Request-ID":r,"X-App-Version":e||"1.0.0","X-App-Platform":i||"web"}}let i=(yield e(t)).data;if(402===i.code){let r=yield this.refreshUserToken();if(200===r.code){return t.headers=t.headers||{},t.headers.Authorization="Bearer "+this.accessToken,(yield e(t)).data}return r}return 200!==i.code&&this.ConfigService.setItem("errorLog",this.ConfigService.getItem("errorLog")+"\n"+JSON.stringify({request:t.data,url:t.url,result:i,requestID:r})),i}catch(e){return console.error("Request execution error:",e),{code:503,message:"network error",data:null}}}))}requestWithStream(e,t,r){return T(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>T(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let i=this.accessToken||"",o="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((s,n)=>{let a=this.ConfigService.getItem("appVersion"),d=this.ConfigService.getItem("appPlatform");const l=new r(this.baseUrl+e.url,{headers:{"Content-Type":"application/json",Authorization:"Bearer "+i,"X-Request-ID":o,"X-App-Version":a||"1.0.0","X-App-Platform":d||"web"},method:e.method,body:JSON.stringify(e.data),pollingInterval:0});l.addEventListener("open",(()=>{console.info("Connection to OpenAI established.")})),l.addEventListener("message",(e=>T(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(l.close(),s(r)):t(r.data)})))),l.addEventListener("error",(e=>{if(console.info("Error:",e),!e.data)return;const t=JSON.parse(e.data);s(t),l.close()}))}))}finally{this.streamPromise=null}})))()),this.streamPromise}))}requestWithFetch(e,t){return T(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>T(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let r=this.accessToken||"",i="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((o,s)=>T(this,void 0,void 0,(function*(){let s=this.ConfigService.getItem("appVersion"),n=this.ConfigService.getItem("appPlatform");var a=new m(this.baseUrl+e.url,{headers:{"Content-Type":"text/plain",Authorization:"Bearer "+r,"X-Request-ID":i,"X-App-Version":s||"1.0.0","X-App-Platform":n||"web"},payload:JSON.stringify(e.data),method:"POST"});a.addEventListener("message",(e=>T(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(a.close(),o(r)):t(r.data)})))),a.addEventListener("open",(e=>{console.info(e,"Connection to OpenAI established.")})),a.addEventListener("error",(e=>{if(console.error(e,"Error occurred while connecting to OpenAI"),!e.data)return;const t=JSON.parse(e.data);o(t),a.close()}))}))))}finally{this.streamPromise=null}})))()),this.streamPromise}))}}_e.processingQueue=!1,_e.requestQueue=[];class Re extends _e{constructor(e,t,r){super(e,t,r),this.serverRegion=r}encryptToken(e){return T(this,void 0,void 0,(function*(){let t=e.token,r=F.encode(t),{extracted:i,remaining:o}=function(e){let t="",r="",i=[],o=1;for(;o<=e.length;)i.push(o-1),o*=2;for(let o=0;o-1){let r=t.split("#");e.encrypted_token=r[1]}const r={method:"post",url:"/api/v1/pro/thirdparty/decrypt_token",data:e};let i=yield this.requestWithRetry(r);if(t.indexOf("#")>-1&&i.data&&i.data.token){let e=t.split("#"),r=function(e,t){let r="",i=[],o=1,s=e.length+t.length;for(;o<=s;)i.push(o-1),o*=2;let n=0,a=0;for(let o=0;o-1&&r.splice(i,1),this.setAllListConfig(r,t)}static setListConfig(e,t){let r=this.getAllListConfig(t);const i=r.indexOf(e);i>-1?(r.splice(i,1),r.unshift(e)):r.unshift(e),this.setAllListConfig(r,t)}static setAllListConfig(e,t,r=!0){this.setItem(t,JSON.stringify(e)),r&&this.setSyncRecord({type:"config",catergory:"listConfig",name:"general",key:t},{operation:"update",time:Date.now()})}static setObjectConfig(e,t,r,i=!0){let o=this.getAllObjectConfig(r);o[e]=t,i&&this.setSyncRecord({type:"config",catergory:"objectConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllObjectConfig(o,r)}static getObjectConfig(e,t,r){return this.getAllObjectConfig(t)[e]||r}static getAllObjectConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static setAllObjectConfig(e,t){this.setItem(t,JSON.stringify(e))}static deleteObjectConfig(e,t){let r=this.getAllObjectConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"objectConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllObjectConfig(r,t)}static getAllMapConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static getMapConfig(e,t){return this.getAllMapConfig(t)[e]||[]}static setAllMapConfig(e,t){this.setItem(t,JSON.stringify(e))}static setMapConfig(e,t,r){let i=this.getAllMapConfig(r);void 0===i[e]&&(i[e]=[]),t&&-1===i[e].indexOf(t)&&i[e].unshift(t),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static setOneMapConfig(e,t,r,i=!0){let o=this.getAllMapConfig(r);o[e]=t,i&&this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(o,r)}static deleteFromMapConfig(e,t,r){let i=this.getAllMapConfig(r),o=i[e].indexOf(t);i[e].splice(o,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static deleteFromAllMapConfig(e,t){let r=this.getAllMapConfig(t);Object.keys(r).forEach((i=>{let o=r[i].indexOf(e);o>-1&&(r[i].splice(o,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:i},{operation:"update",time:Date.now()}))})),this.setAllMapConfig(r,t)}static deleteMapConfig(e,t){let r=this.getAllMapConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllMapConfig(r,t)}static getFromAllMapConfig(e,t){let r=this.getAllMapConfig(t),i=[];for(let t in r)r[t]&&r[t].indexOf(e)>-1&&i.push(t);return i}static getSyncRecord(e){return JSON.parse(this.getItem("syncRecord")||"{}")[e.type+"."+e.catergory+"."+e.name+"."+e.key]||{operation:"",time:0}}static getAllSyncRecord(){return JSON.parse(this.getItem("syncRecord")||"{}")}static flushSyncRecords(){if(0===Object.keys(this.pendingSyncRecords).length)return;let e=JSON.parse(this.getItem("syncRecord")||"{}");Object.assign(e,this.pendingSyncRecords),this.setItem("syncRecord",JSON.stringify(e)),this.pendingSyncRecords={},this.syncRecordTimer=null}static setSyncRecord(e,t){const r=e.type+"."+e.catergory+"."+e.name+"."+e.key;this.pendingSyncRecords[r]=t,null!==this.syncRecordTimer&&clearTimeout(this.syncRecordTimer),this.syncRecordTimer=setTimeout((()=>{this.flushSyncRecords()}),this.DEBOUNCE_DELAY)}static setAllSyncRecord(e){this.setItem("syncRecord",JSON.stringify(e))}}).pendingSyncRecords={},Ae.syncRecordTimer=null,Ae.DEBOUNCE_DELAY=1e3,Ae);var Ce,Pe,Ae;let $e;const Ie=new Uint8Array(16);function Le(){if(!$e&&($e="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!$e))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return $e(Ie)}const ze=[];for(let e=0;e<256;++e)ze.push((e+256).toString(16).slice(1));var Qe={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function De(e,t,r){if(Qe.randomUUID&&!t&&!e)return Qe.randomUUID();const i=(e=e||{}).random||(e.rng||Le)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=i[e];return t}return function(e,t=0){return ze[e[t+0]]+ze[e[t+1]]+ze[e[t+2]]+ze[e[t+3]]+"-"+ze[e[t+4]]+ze[e[t+5]]+"-"+ze[e[t+6]]+ze[e[t+7]]+"-"+ze[e[t+8]]+ze[e[t+9]]+"-"+ze[e[t+10]]+ze[e[t+11]]+ze[e[t+12]]+ze[e[t+13]]+ze[e[t+14]]+ze[e[t+15]]}(i)}const je=new k;class Be{static encrypt(e,t){let r="";for(let i=0;i"json"===e?"application/json":["jpg","jpeg","png","gif","bmp"].includes(e)?"image/"+e:"zip"===e?"application/zip":"epub"===e?"application/epub+zip":"txt"===e?"text/plain":"pdf"===e?"application/pdf":"mobi"===e?"application/x-mobipocket-ebook":"azw3"===e||"azw"===e?"application/vnd.amazon.ebook":"cbz"===e?"application/x-cbz":"cbr"===e?"application/x-cbr":"cbt"===e?"application/x-cbt":"cb7"===e?"application/x-cb7":"fb2"===e?"application/x-fictionbook+xml":"html"===e?"text/html":"css"===e?"text/css":"js"===e?"application/javascript":"xml"===e?"application/xml":"xhtml"===e?"application/xhtml+xml":"opf"===e?"application/oebps-package+xml":"ncx"===e?"application/x-dtbncx+xml":"mp3"===e?"audio/mpeg":"wav"===e?"audio/wav":"ogg"===e?"audio/ogg":"mp4"===e?"video/mp4":"webm"===e?"video/webm":"avi"===e?"video/x-msvideo":"wmv"===e?"video/x-ms-wmv":"flv"===e?"video/x-flv":"m3u8"===e?"application/x-mpegURL":"ts"===e?"video/MP2T":"3gp"===e?"video/3gpp":"3g2"===e?"video/3gpp2":"db"===e?"application/x-sqlite3":void 0,F={_chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",encode(e){if("string"!=typeof e)throw new Error("Input must be a string");let t="",r=0;const i=this._stringToUtf8Bytes(e),o=i.length;for(;r>2,d=(3&e)<<4|s>>4,l=(15&s)<<2|n>>6,c=63&n;t+=this._chars.charAt(a),t+=this._chars.charAt(d),t+=r-2>=o?"=":this._chars.charAt(l),t+=r-1>=o?"=":this._chars.charAt(c)}return t},decode(e){if("string"!=typeof e)throw new Error("Input must be a string");for(e=e.replace(/[^A-Za-z0-9+/]/g,"");e.length%4!=0;)e+="=";const t=[];let r=0;const i=e.length;for(;r>4,d=(15&o)<<4|s>>2,l=(3&s)<<6|n;t.push(a),-1!==s&&t.push(d),-1!==n&&t.push(l)}return this._utf8BytesToString(t)},_stringToUtf8Bytes(e){const t=[];for(let r=0;r>6),t.push(128|63&i);else if(55296==(64512&i)&&r+1>18),t.push(128|e>>12&63),t.push(128|e>>6&63),t.push(128|63&e)}else t.push(239,191,189),r--}else t.push(224|i>>12),t.push(128|i>>6&63),t.push(128|63&i)}return t},_utf8BytesToString(e){let t="",r=0;for(;r65535){const r=e-65536;t+=String.fromCharCode(55296|r>>10),t+=String.fromCharCode(56320|1023&r)}else t+=String.fromCharCode(e)}else t+="�"}else t+="�"}return t},encodeURL(e){return this.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")},decodeURL(e){for(e=e.replace(/-/g,"+").replace(/_/g,"/");e.length%4;)e+="=";return this.decode(e)}};class E{constructor(e){this.queue=[],this.runningTasks=0,this.totalTasks=0,this.completedTasks=0,this.hasFailedTasks=!1,this.downloadedSize=0,this.maxConcurrency=e}addTask(e){return T(this,void 0,void 0,(function*(){return this.totalTasks++,new Promise(((t,r)=>{if(this.hasFailedTasks)return void r(new Error("Task queue has failed tasks. No new tasks can be added."));const i=()=>T(this,void 0,void 0,(function*(){try{this.runningTasks++;const r=yield e();return this.completedTasks++,t(r),r}catch(e){throw this.completedTasks++,r(e),e}finally{this.runningTasks--,this.runNext()}}));this.runningTasks0&&this.runningTasks=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=[],o=!0,s=null;for(;o;){let n;n=s?yield e.post("https://api.dropboxapi.com/2/files/list_folder/continue",{cursor:s},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}):yield e.post("https://api.dropboxapi.com/2/files/list_folder",{path:"/"+t,limit:2e3},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});const a=n.data.entries||[];i=i.concat(a),o=n.data.has_more,s=n.data.cursor}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:e[".tag"],modified:e.client_modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();yield e.post("https://api.dropboxapi.com/2/files/delete_v2",{path:"/"+t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dropbox",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dropbox",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://www.dropbox.com/oauth2/authorize?response_type=code&token_access_type=offline&client_id=${x}&redirect_uri=${e}`}}const D=i(o.pipeline);class j extends Q{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=t.createReadStream(r.join(this.storagePath,i));return yield e.post("https://content.dropboxapi.com/2/files/upload",n,{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/octet-stream","Dropbox-API-Arg":JSON.stringify({path:"/"+o,mode:"overwrite",autorename:!0,mute:!1})},maxContentLength:1/0,maxBodyLength:1/0}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=t.createWriteStream(r.join(this.storagePath,o)),a=yield e({url:"https://content.dropboxapi.com/2/files/download",method:"GET",responseType:"stream",headers:{Authorization:`Bearer ${s}`,"Dropbox-API-Arg":JSON.stringify({path:"/"+i})},maxContentLength:1/0,maxBodyLength:1/0});let d=0;return a.data.on("data",(e=>{d+=e.length,this.taskQueue.setDownloadedSize(d)})),yield D(a.data,n),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class B{constructor(e,t){this.config=e,this.storagePath=t,this.taskQueue=new E(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getClient(){return T(this,void 0,void 0,(function*(){try{if(this.client&&!1===this.client.closed)return this.client;let{url:e,username:t,password:r,dir:i,ssl:o,port:n}=this.config;const a=new s(0);a.ftp.verbose=!0;const d=a.access({host:e,port:parseInt(n),user:t,password:r,secure:"1"===o}),l=new Promise(((e,t)=>{setTimeout((()=>t(new Error("FTP connection timeout"))),5e3)}));return yield Promise.race([d,l]),this.client=a,a}catch(e){throw console.error("Error connecting to FTP server:",e),this.client=null,e}}))}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let{dir:i}=this.config;i=i&&"KoodoReader"===this.baseFolder?i:this.baseFolder;const o=yield this.getClient(),s=()=>T(this,void 0,void 0,(function*(){yield o.ensureDir(r.dirname(i+"/"+t)),yield o.cd("/"),yield o.uploadFrom(r.join(this.storagePath,e),i+"/"+t)}));try{return yield s(),!0}catch(e){return console.error(e),!1}}catch(e){return console.error("Error in uploadFile:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;const s=yield this.getClient(),n=t.createWriteStream(r.join(this.storagePath,i)),a=()=>T(this,void 0,void 0,(function*(){s.trackProgress((e=>{this.taskQueue.setDownloadedSize(e.bytes||0)})),yield s.downloadTo(n,o+"/"+e),s.trackProgress()}));try{return yield a(),!0}catch(e){return console.error(e),!1}}catch(e){return console.error("Error in downloadFile:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.listFilesWithoutQueue(e)}))))))}))}listFilesWithoutQueue(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;const r=yield this.getClient(),i=()=>T(this,void 0,void 0,(function*(){return yield r.list(t+"/"+e)}));try{return(yield i()).map((e=>({name:e.name,size:e.size||0,type:e.isFile?"file":"folder",modified:e.modifiedAt?e.modifiedAt.toISOString():""})))}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;const r=yield this.getClient(),i=()=>T(this,void 0,void 0,(function*(){yield r.remove(t+"/"+e)}));try{return yield i(),!0}catch(e){return console.error(e),!1}}))}}class M{constructor(e,t){this.isExp=!1,this.baseUrl="https://graph.microsoft.com/v1.0/me/drive/special/approot",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new E(3),this.isExp=this.config.isExp||!1,this.baseUrl=this.isExp?"https://graph.microsoft.com/v1.0/me/drive/root":"https://graph.microsoft.com/v1.0/me/drive/special/approot",void 0===this.config.baseFolder?this.baseFolder=this.isExp?"KoodoReader":"":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let i,o=[];if(""===t)i=`${this.baseUrl}/children`;else{const e=encodeURIComponent(t);i=`${this.baseUrl}:/${e}:/children`}for(;i;){const t=yield e.get(i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(t.status>=300)break;const s=t.data.value||[];o=o.concat(s),i=t.data["@odata.nextLink"]||""}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:e.folder?"folder":"file",modified:e.lastModifiedDateTime}))))]}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const i=yield e.delete(`${this.baseUrl}:/${t}`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!(i.status>=300)||(console.error("Error deleting file:",i),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"microsoft",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"microsoft",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${I}&scope=${this.isExp?"files.readwrite.all":"files.readwrite.appfolder"} offline_access&response_type=code&redirect_uri=${e}`}}const U=209715200;class W extends M{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var s;let n=null;try{const s=yield this.refreshToken();let a=this.baseFolder+"/"+o;for(;a.startsWith("/");)a=a.substring(1);const d=r.join(this.storagePath,i),l=yield this.getFileSize(d),c=a.split(".").pop(),h=(b(c||""),`${this.baseUrl}:/${a}:/createUploadSession`),u=(yield e.post(h,{item:{"@microsoft.graph.conflictBehavior":"replace"}},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}})).data.uploadUrl;n=yield t.promises.open(d,"r");let p=0,f=Buffer.alloc(U);for(;pthis.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken();let n=this.baseFolder+"/"+i;for(;n.startsWith("/");)n=n.substring(1);const a=`${this.baseUrl}:/${n}:/content`;let d=(yield fetch(a,{headers:{Authorization:"Bearer "+s},redirect:"manual"})).headers.get("location");if(d){const i=yield e.get(d,{responseType:"stream"});let s=0;const n=t.createWriteStream(r.join(this.storagePath,o));return i.data.on("data",(e=>{s+=e.length,this.taskQueue.setDownloadedSize(s)})),yield new Promise(((e,t)=>{i.data.pipe(n),n.on("finish",(()=>{e()})),n.on("error",t)})),!0}return!1}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class N{constructor(e,t){this.isExp=!1,this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new E(3),this.isExp=this.config.isExp||!1,void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getFileId(t,r){return T(this,void 0,void 0,(function*(){const i=yield this.refreshToken(),o=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=yield e.get(o,{headers:{Authorization:"Bearer "+i}});if(0===t.data.files.length)return"";const r=t.data.files;return r.length>0?r[0].id:null}catch(e){return console.error("Error occurred during file list retrieval:",e),""}}))}checkFolder(t){return T(this,void 0,void 0,(function*(){t=this.baseFolder+"/"+t;const r=yield this.refreshToken();if(""===t)return"root";const i=t.split("/").filter((e=>""!==e.trim()));let o="root";for(const t of i){let i=yield this.getFolderId(t,o);if(!i){const s={name:t,mimeType:"application/vnd.google-apps.folder",parents:[o]};try{i=(yield e.post("https://www.googleapis.com/drive/v3/files",s,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}catch(e){throw console.error(`Error occurred during folder creation for ${t}:`,e),e}}o=i}return o}))}getFolderId(t,r){return T(this,void 0,void 0,(function*(){const i=yield this.refreshToken(),o=`https://www.googleapis.com/drive/v3/files?q=name='${t=encodeURIComponent(t)}'+and+mimeType='application/vnd.google-apps.folder'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=(yield e.get(o,{headers:{Authorization:`Bearer ${i}`}})).data.files;return t.length>0?t[0].id:null}catch(e){throw console.error("Error occurred during fetching folder ID:",e),e}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=yield this.checkFolder(t),o=[],s="",n=!0;for(;n;){let t=`https://www.googleapis.com/drive/v3/files?q='${i}'+in+parents&fields=nextPageToken,files(id,name,size,mimeType)&pageSize=1000`;s&&(t+=`&pageToken=${s}`);const a=yield e.get(t,{headers:{Authorization:`Bearer ${r}`}}),d=a.data.files||[];o=o.concat(d),s=a.data.nextPageToken,n=!!s}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:"application/vnd.google-apps.folder"===e.mimeType?"folder":"file",modified:e.modifiedTime}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQue(e)}))))))}))}deleteFileWithoutQue(t){return T(this,void 0,void 0,(function*(){const r=t.split("/")[1],i=yield this.checkFolder(t),o=yield this.refreshToken(),s=yield this.getFileId(r,i);if(""===s)return console.error("File not found:",r),!0;try{const t=yield e.delete(`https://www.googleapis.com/drive/v3/files/${s}`,{headers:{Authorization:`Bearer ${o}`}});return console.error("File deleted:",t),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"google",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"google",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${e}&prompt=consent&response_type=code&client_id=${L}&scope=https://www.googleapis.com/auth/${this.isExp?"drive":"drive.file"}&access_type=offline`}}class K extends N{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken();let n=i.split("/").pop(),a=o.split(".").pop(),d=b(a||""),l=o.split("/").slice(0,-1).join("/"),c=yield this.checkFolder(l),h=yield this.getFileId(n||"",c);const u={mimeType:d,name:n,parents:[c]},p=h?`https://www.googleapis.com/upload/drive/v3/files/${h}?uploadType=resumable`:"https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable",f=(yield e({method:h?"PATCH":"POST",url:p,data:h?null:JSON.stringify(u),headers:{Authorization:"Bearer "+s,"Content-Type":"application/json; charset=UTF-8"},maxContentLength:1/0,maxBodyLength:1/0})).headers.location;let y=yield this.getFileSize(r.join(this.storagePath,i));const g=t.createReadStream(r.join(this.storagePath,i));yield e.put(f,g,{headers:{Authorization:"Bearer "+s,"Content-Type":"application/zip","Content-Range":`bytes 0-${y-1}/${y}`},maxContentLength:1/0,maxBodyLength:1/0});return!0}catch(e){return console.error("Error occurred during upload:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken();let n=i.split("/").pop(),a=i.split("/").slice(0,-1).join("/"),d=yield this.checkFolder(a),l=yield this.getFileId(n||"",d);if(!l)return console.error("File not found"),!0;const c=`https://www.googleapis.com/drive/v3/files/${l}?alt=media`;return new Promise((i=>{const n=t.createWriteStream(r.join(this.storagePath,o));e({url:c,method:"GET",responseType:"stream",headers:{Authorization:"Bearer "+s},maxContentLength:1/0,maxBodyLength:1/0}).then((e=>{let t=0;e.data.on("data",(e=>{t+=e.length,this.taskQueue.setDownloadedSize(t)})),e.data.pipe(n),n.on("finish",(()=>{i(!0)})),n.on("error",(()=>{i(!1)}))})).catch((e=>{console.error("Error downloading file:",e),i(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class q{constructor(e){this.config=e,this.taskQueue=new E(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}shouldUsePathStyle(e){try{const t=new URL(e),r=t.hostname,i=/^(\d{1,3}\.){3}\d{1,3}$/.test(r),o=""!==t.port;return!i&&o}catch(e){return!0}}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:d}=this.config;d=d&&"KoodoReader"===this.baseFolder?d:this.baseFolder;let l=d+"/"+e;for(;l.startsWith("/");)l=l.substring(1);""===l||l.endsWith("/")||(l+="/");const c=new n({endpoint:t,region:r,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(t)});try{let e,t=[],r=[],o=!0;for(;o;){const s=yield c.send(new a({Bucket:i,Prefix:l,Delimiter:"/",ContinuationToken:e}));s.Contents&&(t=t.concat(s.Contents)),s.CommonPrefixes&&(r=r.concat(s.CommonPrefixes)),e=s.NextContinuationToken,o=!!e}let s=[];return t.forEach((e=>{if(!e.Key.endsWith("/")){const t=e.Key.substring(l.length);t.includes("/")||s.push({name:t,size:e.Size||0,type:"file",modified:e.LastModified?e.LastModified.toISOString():""})}})),r.forEach((e=>{const t=e.Prefix.substring(l.length).replace(/\/$/,"");t&&s.push({name:t,size:0,type:"folder",modified:""})})),s}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:a}=this.config;a=a&&"KoodoReader"===this.baseFolder?a:this.baseFolder;const l=new n({endpoint:t,region:r,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(t)});let c=a+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{return yield l.send(new d({Bucket:i,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class H extends q{constructor(e,t){super(e),this.storagePath=t}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){let{endpoint:o,region:s,bucketName:a,accessKeyId:d,secretAccessKey:c,dir:h}=this.config;const u=new n({endpoint:o,region:s,credentials:{accessKeyId:d,secretAccessKey:c},forcePathStyle:this.shouldUsePathStyle(o)});h=h&&"KoodoReader"===this.baseFolder?h:this.baseFolder;let p=h+"/"+i;for(;p.startsWith("/");)p=p.substring(1);try{let i=yield u.send(new l({Bucket:a,Key:p,Body:t.createReadStream(r.join(this.storagePath,e))}));return 200===i.$metadata.httpStatusCode||(console.error("Error uploading file:",i),!1)}catch(e){return console.error("Error: ",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let{endpoint:o,region:s,bucketName:a,accessKeyId:d,secretAccessKey:l,dir:h}=this.config;h=h&&"KoodoReader"===this.baseFolder?h:this.baseFolder;const u=(e,t,r,i)=>new Promise(((o,s)=>T(this,void 0,void 0,(function*(){const s=yield e.send(new c({Bucket:t,Key:r}));let n=0;s.Body?(s.Body.on("data",(e=>{n+=e.length,this.taskQueue.setDownloadedSize(n)})),s.Body.pipe(i),i.on("finish",(e=>{e&&o(!1),o(!0)}))):o(!1)})))),p=()=>new Promise(((c,p)=>{const f=new n({region:s,endpoint:o,credentials:{accessKeyId:d,secretAccessKey:l},forcePathStyle:this.shouldUsePathStyle(o)});let y=t.createWriteStream(r.join(this.storagePath,i)),g=h+"/"+e;for(;g.startsWith("/");)g=g.substring(1);u(f,a,g,y).then((e=>{c(!0)})).catch((e=>{console.error(e),c(!1)}))}));try{return yield p()}catch(e){return console.error(e),!1}}))))))}))}}class J{constructor(e,t){this.storagePath=t;let{username:r,password:i,url:o,dir:s}=e;void 0===e.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=e.baseFolder,s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder,this.client=h(o,{authType:u.Password,username:r,password:i}),this.username=r,this.password=i,this.dir=s,this.taskQueue=new E(3)}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=this.client.exists(r.dirname(this.dir+"/"+o)),n=new Promise(((e,t)=>{setTimeout((()=>t(new Error("WebDAV exists check timeout"))),5e3)}));!1===(yield Promise.race([s,n]))&&(yield this.ensureDirectoryExists(r.dirname(this.dir+"/"+o)));let a=this.client.createWriteStream(this.dir+"/"+o);return t.createReadStream(r.join(this.storagePath,i)).pipe(a),new Promise(((s,n)=>{a.on("finish",(()=>{s(!0)})),a.on("error",(n=>T(this,void 0,void 0,(function*(){console.error("Error occurred during file upload:",n);try{let n=t.readFileSync(r.join(this.storagePath,i)),a=this.client.getFileUploadLink(this.dir+"/"+o);const d=new URL(a);d.search="",a=d.toString();const l=Buffer.from(this.username+":"+this.password,"binary").toString("base64");yield e.put(a,n,{headers:{Authorization:"Basic "+l},maxContentLength:1/0,maxBodyLength:1/0});s(!0)}catch(e){console.error("Error occurred during file upload:",e),s(!1)}}))))}))}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){if(this.taskQueue.setDownloadedSize(0),-1===e.indexOf("."))return new ArrayBuffer(0);try{if(!1===(yield this.client.exists(this.dir+"/"+e)))return!0;let o=0,s=t.createWriteStream(r.join(this.storagePath,i)),n=this.client.createReadStream(this.dir+"/"+e);return n.on("data",(e=>{o+=e.length,this.taskQueue.setDownloadedSize(o)})),n.pipe(s),new Promise(((e,t)=>{s.on("finish",(()=>{e(!0)})),s.on("error",(t=>{e(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){try{return(yield this.client.getDirectoryContents(this.dir+"/"+e)).filter((t=>"."!==t.filename&&".."!==t.filename&&t.filename!==e)).map((e=>({name:e.basename,size:e.size||0,type:"directory"===e.type?"folder":"file",modified:e.lastmod})))}catch(t){return console.error("Error listing files:",t),t.response&&404===t.response.status&&(yield this.client.createDirectory(this.dir+"/"+e)),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){try{return yield this.client.deleteFile(this.dir+"/"+e),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(e){return T(this,void 0,void 0,(function*(){try{const t=e.replace(/^\/+|\/+$/g,"").split("/").filter((e=>e.length>0));let r="";for(const e of t)r=r?`${r}/${e}`:e,(yield this.client.exists(`/${r}`))||(yield this.client.createDirectory(`/${r}`));return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}}class V{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new E(3),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){var r,i;return T(this,void 0,void 0,(function*(){try{const o=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let s=[],n=0;const a=1e3;let d=!0;for(;d;){const l=yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${o}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",limit:a,offset:n,fields:"_embedded.items.name,_embedded.items.size,_embedded.items.type,_embedded.items.modified,_embedded.total"}}),c=(null===(r=l.data._embedded)||void 0===r?void 0:r.items)||[];s=s.concat(c);const h=(null===(i=l.data._embedded)||void 0===i?void 0:i.total)||0;n+=c.length,d=n({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const i=yield e.delete("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",permanently:!1}});return 202===i.status||204===i.status}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(t){var r,i;return T(this,void 0,void 0,(function*(){try{const o=yield this.refreshToken(),s=t.split("/").filter((e=>e.length>0));let n="";for(const t of s){n+="/"+t;try{yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${o}`,"Content-Type":"application/json"},params:{path:n}})}catch(t){if(404!==(null===(r=t.response)||void 0===r?void 0:r.status))return console.error("Error checking directory:",t),!1;try{yield e.put(`https://cloud-api.yandex.net/v1/disk/resources?path=${encodeURIComponent(n)}`,null,{headers:{Authorization:`OAuth ${o}`}})}catch(e){if(409!==(null===(i=e.response)||void 0===i?void 0:i.status))return console.error("Error creating directory:",e),!1}}}return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yandex",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yandex",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://oauth.yandex.com/authorize?response_type=code&client_id=${O}&redirect_uri=${e}&force_confirm=true`}}const Y=i(o.pipeline);class X extends V{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken();let n=this.baseFolder+"/"+o;for(;n.startsWith("/");)n=n.substring(1);const a=n.substring(0,n.lastIndexOf("/"));if(a){if(!(yield this.ensureDirectoryExists(a)))return console.error("Failed to create directory:",a),!1}const d=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/upload",{headers:{Authorization:`OAuth ${s}`,"Content-Type":"application/json"},params:{path:`/${n}`,overwrite:!0}});if(200!==d.status)return console.error("Error getting upload URL:",d),!1;const l=d.data.href,c=t.createReadStream(r.join(this.storagePath,i));return yield e.put(l,c,{headers:{"Content-Type":"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);try{const i=yield this.refreshToken(),n=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/download",{headers:{Authorization:`OAuth ${i}`,"Content-Type":"application/json"},params:{path:`/${s}`}});if(200!==n.status)return console.error("Error getting download URL:",n),!1;const a=n.data.href,d=t.createWriteStream(r.join(this.storagePath,o)),l=yield e({url:a,method:"GET",responseType:"stream",maxContentLength:1/0,maxBodyLength:1/0});let c=0;return l.data.on("data",(e=>{c+=e.length,this.taskQueue.setDownloadedSize(c)})),yield Y(l.data,d),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class G{constructor(e,t){this.config=e,this.storagePath=t,this.taskQueue=new E(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getClient(){return T(this,void 0,void 0,(function*(){try{if(this.client)return this.client;let{url:e,username:t,password:r,dir:i,port:o}=this.config;const s=new p,n=s.connect({host:e||"",port:o||22,username:t||"",password:r||""}),a=new Promise(((e,t)=>{setTimeout((()=>t(new Error("SFTP connection timeout"))),5e3)}));return yield Promise.race([n,a]),this.client=s,s}catch(e){throw console.error("Error connecting to SFTP server:",e),this.client=null,e}}))}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;let s=yield this.getClient();const n=()=>new Promise(((n,a)=>T(this,void 0,void 0,(function*(){let a=t.createReadStream(r.join(this.storagePath,e)),d="/"+o+"/"+i,l="/"+o+"/"+r.dirname(i);(yield s.exists(l))||(yield s.mkdir(l,!0)),s.put(a,d).then((()=>{n(!0)})).catch((e=>{console.error(e.message),n(!1)}))}))));try{return yield n()}catch(e){return console.error(e),!1}}catch(e){return console.error("Error in uploadFile:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;let s=yield this.getClient();const n=()=>new Promise(((n,a)=>T(this,void 0,void 0,(function*(){let a="/"+o+"/"+e,d=r.join(this.storagePath,i),l=t.createWriteStream(d);s.get(a,l).then((()=>{this.taskQueue.setDownloadedSize(l.bytesWritten||0),n(!0)})).catch((e=>{console.error(e.message),n(!1)}))}))));try{return yield n()}catch(e){return console.error(e),!1}}catch(e){return console.error("Error in downloadFile:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;let r=yield this.getClient();const i=()=>new Promise(((i,o)=>T(this,void 0,void 0,(function*(){let o="/"+t+"/"+e;(yield r.exists(o))||(yield r.mkdir(o,!0),i([])),r.list(o).then((e=>{i(e.map((e=>({name:e.name,size:e.size||0,type:"d"===e.type?"folder":"file",modified:e.modifyTime}))))})).catch((e=>T(this,void 0,void 0,(function*(){console.error(e.message,"list file error"),i([])}))))}))));try{return yield i()}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;let r=yield this.getClient();try{return yield new Promise(((i,o)=>{let s="/"+t+"/"+e;r.delete(s).then((()=>{i(!0)})).catch((e=>{console.error(e.message),i(!1)}))}))}catch(e){return console.error(e),!1}}))}}class Z{downloadFile(e,t){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e([])}))}))}authToken(e){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e("")}))}))}getAuthUrl(){return""}}class ee{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new E(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getFolderIdByPath(t){return T(this,void 0,void 0,(function*(){if(""==t)return"0";const r=yield this.refreshToken(),i=t.split("/");let o="0";for(const t of i){const i=`https://api.box.com/2.0/folders/${o}/items?fields=id,name&type=folder&limit=1000`;try{const s=(yield e.get(i,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===t&&"folder"===e.type));if(s)o=s.id;else{const i={name:t,parent:{id:o},type:"folder"};o=(yield e.post("https://api.box.com/2.0/folders",i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}}catch(e){return console.error("Error occurred during folder creation:",e),""}}return o}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder+"/"+t;for(;i.startsWith("/");)i=i.substring(1);let o=yield this.getFolderIdByPath(i),s=[],n=0,a=!0;const d=1e3;for(;a;){const t=yield e.get(`https://api.box.com/2.0/folders/${o}/items`,{params:{limit:d,offset:n},headers:{Authorization:`Bearer ${r}`}}),i=t.data.entries||[];s=s.concat(i),n+=i.length,a=i.length===d&&t.data.total_count>n}return[...new Set(s.map((e=>({name:e.name,size:e.size||0,type:e.type,modified:e.content_modified_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=t.substring(0,t.lastIndexOf("/")),o=t.substring(t.lastIndexOf("/")+1);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);const n=yield this.getFolderIdByPath(s);if(!n)return!0;const a=`https://api.box.com/2.0/folders/${n}/items?fields=id,name&type=file&limit=1000`,d=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===o&&"file"===e.type));return!d||(yield e.delete(`https://api.box.com/2.0/files/${d.id}`,{headers:{Authorization:`Bearer ${r}`}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"boxnet",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("boxnet_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"boxnet",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://account.box.com/api/oauth2/authorize?${new URLSearchParams({response_type:"code",client_id:P,redirect_uri:e,grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}).toString()}`}}class te extends ee{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=o.substring(0,o.lastIndexOf("/")),a=o.substring(o.lastIndexOf("/")+1);let d=this.baseFolder+"/"+n;for(;d.startsWith("/");)d=d.substring(1);const l=yield this.getFolderIdByPath(d);if(!l)throw new Error("Folder not found");const c=yield this.listFiles(n);c.find((e=>e===a))&&(yield this.deleteFileWithoutQueue(n+"/"+a));const h=new f,u=JSON.stringify({name:a,parent:{id:l}});h.append("attributes",u),h.append("file",t.createReadStream(r.join(this.storagePath,i)));const p=yield e.post("https://upload.box.com/api/2.0/files/content",h,{headers:Object.assign({Authorization:`Bearer ${s}`},h.getHeaders()),maxContentLength:1/0,maxBodyLength:1/0});return!(p.status>=300)||(console.error("Error occurred during file upload:",p),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=i.substring(0,i.lastIndexOf("/")),a=i.substring(i.lastIndexOf("/")+1);let d=this.baseFolder+"/"+n;for(;d.startsWith("/");)d=d.substring(1);const l=yield this.getFolderIdByPath(d);if(!l)return console.error("Folder not found"),!0;const c=`https://api.box.com/2.0/folders/${l}/items?fields=id,name&type=file&limit=1000`,h=(yield e.get(c,{headers:{Authorization:`Bearer ${s}`}})).data.entries.find((e=>e.name===a&&"file"===e.type));if(!h)return console.error("File not found:",a),!0;const u=yield e({url:`https://api.box.com/2.0/files/${h.id}/content`,method:"get",responseType:"stream",headers:{Authorization:`Bearer ${s}`}});return yield new Promise(((e,i)=>{let s=0;const n=t.createWriteStream(r.join(this.storagePath,o));u.data.on("data",(e=>{s+=e.length,this.taskQueue.setDownloadedSize(s)})),u.data.pipe(n),n.on("finish",e),n.on("error",i)})),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class re{constructor(e){this.folderCreationLocks=new Map,this.config=e,this.taskQueue=new E(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=2){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getStorage(){return T(this,void 0,void 0,(function*(){if(this.storage)return this.storage;let{email:e,password:t}=this.config;return this.storage=yield new y({email:e,password:t,userAgent:"KoodoReader/1.0"}).ready,this.storage}))}getRoot(){return T(this,void 0,void 0,(function*(){if(this.root)return this.root;const e=(yield this.getStorage()).root;if(""===this.baseFolder)return this.root=e,this.root;let t=e.children.find((e=>e.name===this.baseFolder&&e.directory));return t||(t=yield e.mkdir(this.baseFolder)),this.root=t,this.root}))}createFolder(e,t){return T(this,void 0,void 0,(function*(){const r=`${e.nodeId}_${t}`;if(this.folderCreationLocks.has(r))return yield this.folderCreationLocks.get(r);const i=(()=>T(this,void 0,void 0,(function*(){try{let r=e.children.find((e=>e.name===t&&e.directory));return r||(r=yield e.mkdir(t),r)}finally{this.folderCreationLocks.delete(r)}})))();return this.folderCreationLocks.set(r,i),yield i}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();if(e){const r=e.split("/").filter((e=>e));for(const e of r){const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return[];t=r}}return t.children.map((e=>({name:e.name,size:e.size||0,type:e.directory?"folder":"file",modified:e.timestamp?new Date(1e3*e.timestamp).toISOString():""})))}catch(e){return console.error("Error listing MEGA files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return T(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();const r=e.split("/"),i=r.pop();for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const o=t.children.find((e=>e.name===i&&!e.directory));return!o||(yield o.delete(),!0)}catch(e){return console.error("Error deleting MEGA file:",e),!1}}))}}class ie extends re{constructor(e,t){super(e),this.storagePath=t}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let o=yield this.getRoot();const s=i.split("/"),n=s.pop()||"";for(const e of s){if(!e)continue;let t=o.children.find((t=>t.name===e&&t.directory));t||(t=yield this.createFolder(o,e)),o=t}const a=o.children.find((e=>e.name===n&&!e.directory));a&&(yield a.delete());const d=t.createReadStream(r.join(this.storagePath,e)),l=t.statSync(r.join(this.storagePath,e)).size;return yield o.upload({name:n,size:l},d).complete,!0}catch(e){return console.error("Error occurred during MEGA file upload:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let o=yield this.getRoot();const s=e.split("/"),n=s.pop()||"";for(const e of s){if(!e)continue;const t=o.children.find((t=>t.name===e&&t.directory));if(!t)return!0;o=t}const a=o.children.find((e=>e.name===n&&!e.directory));if(!a)return!0;const d=t.createWriteStream(r.join(this.storagePath,i));let l=0;return new Promise((e=>{const t=a.download();t.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),t.pipe(d),d.on("finish",(()=>e(!0))),d.on("error",(t=>{console.error("Error writing file:",t),e(!1)}))}))}catch(e){return console.error("Error occurred during MEGA file download:",e),!1}}))))))}))}}class oe{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.driveId="",this.refreshTokenPromise=null,this.taskQueue=new E(1),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getDriveId(){return T(this,void 0,void 0,(function*(){if(this.driveId)return this.driveId;const t=yield this.refreshToken(),r=yield e.post("https://openapi.alipan.com/adrive/v1.0/user/getDriveInfo",{},{headers:{Authorization:`Bearer ${t}`}});return this.driveId=r.data.default_drive_id,this.driveId}))}getFolderIdByPath(t){return T(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),i=yield this.getDriveId();try{try{const o=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(o.data)return o.data.file_id}catch(o){const s=t.split("/").filter((e=>e));let n="",a="root";for(const t of s){n+="/"+t;try{a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:n},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}catch(o){a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:i,parent_file_id:a,name:t,type:"folder",check_name_mode:"refuse"},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}}return a}}catch(e){return console.error("Error getting/creating folder by path:",e),""}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield this.getDriveId(),o=yield this.getFolderIdByPath(this.baseFolder+"/"+t);let s=[],n="",a=!0;for(;a;){const t=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/list",{drive_id:i,parent_file_id:o,marker:n||void 0},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),d=t.data.items||[];s=s.concat(d),n=t.data.next_marker,a=!!n&&100===d.length}return[...new Set(s.map((e=>({name:e.name,size:e.size,type:e.type,modified:e.updated_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield this.getDriveId(),o=yield this.getFolderIdByPath(this.baseFolder+"/"+t);return!o||(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/delete",{drive_id:i,file_id:o},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}checkExists(t){var r;return T(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=yield this.getDriveId(),s=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:o,file_path:t},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}});(null===(r=s.data)||void 0===r?void 0:r.file_id)&&(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/recyclebin/trash",{drive_id:o,file_id:s.data.file_id},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}))}catch(e){}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"adrive",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("adrive_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"adrive",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://openapi.alipan.com/oauth/authorize?${new URLSearchParams({response_type:"code",client_id:z,redirect_uri:e,grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}).toString()}`}}class se extends oe{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=yield this.getDriveId(),a=o.substring(0,o.lastIndexOf("/")),d=o.substring(o.lastIndexOf("/")+1);yield this.deleteFileWithoutQueue(o);const l=yield this.getFolderIdByPath(this.baseFolder+"/"+a),c=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:n,parent_file_id:l,name:d,type:"file",check_name_mode:"ignore"},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),{file_id:h,upload_id:u,part_info_list:p}=c.data,f=yield t.promises.readFile(r.join(this.storagePath,i));return yield fetch(p[0].upload_url,{method:"PUT",body:f,headers:{"Content-Length":t.statSync(r.join(this.storagePath,i)).size.toString()}}),yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/complete",{drive_id:n,file_id:h,upload_id:u},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=yield this.getDriveId(),a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:this.baseFolder+"/"+i},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}})).data.file_id,d=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/getDownloadUrl",{drive_id:n,file_id:a},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),l=yield e({url:d.data.url,method:"get",responseType:"stream"});let c=0;const h=t.createWriteStream(r.join(this.storagePath,o+".temp"));return l.data.on("data",(e=>{c+=e.length,this.taskQueue.setDownloadedSize(c)})),l.data.pipe(h),new Promise((e=>{h.on("finish",(()=>{t.renameSync(r.join(this.storagePath,o+".temp"),r.join(this.storagePath,o)),e(!0)})),h.on("error",(t=>{console.error("Error occurred during file download:",t),e(!1)}))}))}catch(e){return console.error("Error downloading file:",e),!1}}))))))}))}}class ne{constructor(e,t){this.baseUrl="https://api.pcloud.com",this.config=e,this.thirdpartyRequest=t,this.taskQueue=new E(3),this.baseUrl="2"===e.region?"https://eapi.pcloud.com":"https://api.pcloud.com"}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}checkFolderExists(t,r){return T(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error checking folder:",e),!1}}))}createFolder(t,r){return T(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/createfolderifnotexists`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error creating folder:",e),!1}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:"/"+t,recursive:0}});return 0!==i.data.result?[]:i.data.metadata.contents.map((e=>({name:e.name,size:e.size||0,type:e.isfolder?"folder":"file",modified:e.modified})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.get(`${this.baseUrl}/deletefile`,{params:{access_token:r,path:"/"+t}});return 0===i.data.result||(console.error("Error deleting file:",i.data),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.refresh_token}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"pcloud",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://my.pcloud.com/oauth2/authorize?client_id=${C}&response_type=code&redirect_uri=${e}`}}class ae extends ne{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=o.split("/").slice(0,-1).join("/");if(!(yield this.checkFolderExists(n,s))){if(!(yield this.createFolder(n,s)))return!1}const a=r.join(this.storagePath,i),d=t.createReadStream(a),l=t.statSync(a),c=r.basename(i),h=yield e({method:"put",url:`${this.baseUrl}/uploadfile`,params:{access_token:s,path:`/${n}`,renew:1,filename:c},data:d,headers:{"Content-Length":l.size,"Content-Type":"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0});return 0===h.data.result||(console.error("Error uploading file:",h.data),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/getfilelink`,{params:{access_token:s,path:`/${i}`}});if(0!==n.data.result)return console.error("Error getting file link:",n.data),!1;const a=r.join(this.storagePath,o),d=t.createWriteStream(a),l=`https://${n.data.hosts[0]}${n.data.path}`,c=yield e({method:"get",url:l,responseType:"stream",maxContentLength:1/0,maxBodyLength:1/0});return new Promise((e=>{let t=0;c.data.on("data",(e=>{t+=e.length,this.taskQueue.setDownloadedSize(t)})),c.data.pipe(d),d.on("finish",(()=>{e(!0)})),d.on("error",(t=>{console.error("Error writing file:",t),e(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class de{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new E(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder;t&&""!==t.trim()&&(i=i+"/"+t),i=i.replace(/\/+/g,"/"),i.startsWith("/")&&(i=i.substring(1));let o=[],s=0;const n=1e3;for(;;){const t=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:r,dir:"/"+i,start:s,limit:n,order:"name",desc:0,web:1,folder:0},headers:{"User-Agent":"pan.baidu.com"}});if(t.status>=300||0!==t.data.errno){console.error("百度网盘API错误:",t.data);break}const a=t.data.list||[];if(0===a.length)break;if(o=o.concat(a),a.length({name:e.server_filename,size:e.size||0,type:e.isdir?"folder":"file",modified:new Date(1e3*e.server_mtime).toISOString(),path:e.path})))}catch(e){return console.error("获取百度网盘文件列表时发生错误:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder+"/"+t;i=i.replace(/\/+/g,"/"),i.startsWith("/")&&(i=i.substring(1));const o=new URLSearchParams({async:"0",filelist:JSON.stringify(["/"+i])}),s=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=filemanager&access_token=${r}&opera=delete`,o.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==s.data.errno)return console.error("百度网盘删除文件API错误:",s.data),-9===s.data.errno?console.error("文件不存在"):111===s.data.errno?console.error("有其他异步任务正在执行"):-7===s.data.errno&&console.error("文件名非法"),!1;const n=s.data.info||[];for(const e of n)if(0!==e.errno)return console.error(`文件删除失败: ${e.path}, 错误码: ${e.errno}`),!1;return!0}catch(e){return console.error("删除文件时发生错误:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dubox",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("dubox_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dubox",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=${A}&redirect_uri=${e}&scope=basic,netdisk&device_id=119827642&display=page&qrcode=1`}}const le=4194304;class ce extends de{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var s;let n=null;try{const s=yield this.refreshToken();let a=this.baseFolder+"/"+o;a=a.replace(/\/+/g,"/"),a.startsWith("/")&&(a=a.substring(1));const d=r.join(this.storagePath,i),l=yield this.getFileSize(d),{contentMd5:c,sliceMd5:h,blockList:u}=yield this.calculateFileMd5(d,l),p=new URLSearchParams({path:"/"+a,size:l.toString(),isdir:"0",autoinit:"1",rtype:"3",block_list:JSON.stringify(u),"content-md5":c,"slice-md5":h,local_ctime:Math.floor(Date.now()/1e3).toString(),local_mtime:Math.floor(Date.now()/1e3).toString()}),y=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=precreate&access_token=${s}`,p.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==y.data.errno)return console.error("预上传失败:",y.data),-7===y.data.errno?console.error("文件或目录名错误或无权访问"):-10===y.data.errno&&console.error("容量不足"),!1;const g=y.data.uploadid,m=y.data.block_list||[];if(0===m.length)return!0;const k=yield this.getUploadDomain(s,"/"+a,g);if(!k)return console.error("获取上传域名失败"),!1;n=yield t.promises.open(d,"r");for(const t of m){const r=t*le,i=Math.min(le,l-r),o=Buffer.alloc(i),{bytesRead:d}=yield n.read(o,0,i,r);if(0===d)break;const c=o.slice(0,d),h=u[t],p=new f;p.append("file",c,{filename:`chunk_${t}`,contentType:"application/octet-stream",knownLength:c.length});const y=`${k}/rest/2.0/pcs/superfile2?method=upload&access_token=${s}&type=tmpfile&path=${encodeURIComponent("/"+a)}&uploadid=${g}&partseq=${t}`,m=yield e.post(y,p,{headers:Object.assign(Object.assign({"User-Agent":"pan.baidu.com"},p.getHeaders()),{"Content-Length":p.getLengthSync().toString()}),maxContentLength:1/0,maxBodyLength:1/0,timeout:0});if(m.status>=300)throw 31024===m.data.errno?console.error("没有申请上传权限"):31299===m.data.errno?console.error("第一个分片的大小小于4MB"):31364===m.data.errno?console.error("超出分片大小限制"):31363===m.data.errno&&console.error("分片缺失"),new Error(`分片上传失败: ${JSON.stringify(m.data)}`);const v=m.data.md5;v&&v!==h&&console.warn(`分片 ${t} MD5不匹配: 期望 ${h}, 实际 ${v}`)}const v=new URLSearchParams({path:"/"+a,size:l.toString(),isdir:"0",block_list:JSON.stringify(u),uploadid:g,rtype:"3",local_ctime:Math.floor(Date.now()/1e3).toString(),local_mtime:Math.floor(Date.now()/1e3).toString()}),T=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=create&access_token=${s}`,v.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});return 0===T.data.errno||(console.error("创建文件失败:",T.data),-7===T.data.errno?console.error("文件或目录名错误或无权访问"):-8===T.data.errno?console.error("文件或目录已存在"):-10===T.data.errno?console.error("云端容量已满"):10===T.data.errno?console.error("创建文件失败,一般是分片问题"):31190===T.data.errno?console.error("文件不存在,一般是分片上传阶段有问题"):31355===T.data.errno?console.error("参数异常,一般是uploadid参数传的有问题"):31365===T.data.errno&&console.error("文件总大小超限"),!1)}catch(e){return console.error("文件上传过程中发生错误:",(null===(s=e.response)||void 0===s?void 0:s.data)||e.message||e),!1}finally{n&&(yield n.close())}}))))))}))}getUploadDomain(t,r,i){return T(this,void 0,void 0,(function*(){try{const o=yield e.get("https://d.pcs.baidu.com/rest/2.0/pcs/file",{params:{method:"locateupload",appid:"250528",access_token:t,path:r,uploadid:i,upload_version:"2.0"},headers:{"User-Agent":"pan.baidu.com"}});if(0!==o.data.error_code)return console.error("获取上传域名失败:",o.data),null;const s=o.data.servers||[],n=s.find((e=>e.server.startsWith("https://")));return n?n.server:s.length>0?s[0].server:(console.error("没有可用的上传服务器"),null)}catch(e){return console.error("获取上传域名时出错:",e),null}}))}calculateFileMd5(e,r){return T(this,void 0,void 0,(function*(){const i=yield t.promises.open(e,"r");try{const e=g.createHash("md5"),t=[];let o="",s=0;for(;sthis.retryOperation((()=>T(this,void 0,void 0,(function*(){var s,n;this.taskQueue.setDownloadedSize(0);try{const a=yield this.refreshToken();let d,l=this.baseFolder+"/"+i;l=l.replace(/\/+/g,"/"),l.startsWith("/")&&(l=l.substring(1));const c=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:a,dir:"/"+l.substring(0,l.lastIndexOf("/")),web:1},headers:{"User-Agent":"pan.baidu.com"}});if(0!==c.data.errno)return console.error("获取文件列表失败:",c.data),!1;const h=l.split("/").pop(),u=null===(s=c.data.list)||void 0===s?void 0:s.find((e=>e.server_filename===h));if(!u)return console.error("文件不存在:",i),!1;const p=yield e.get("https://pan.baidu.com/rest/2.0/xpan/multimedia",{params:{method:"filemetas",access_token:a,fsids:JSON.stringify([u.fs_id]),dlink:1},headers:{"User-Agent":"pan.baidu.com"}});if(0!==p.data.errno||!(null===(n=p.data.list)||void 0===n?void 0:n[0]))return console.error("获取下载链接失败:",p.data),!1;d=p.data.list[0];const f=d.dlink,y=yield e.get(f,{responseType:"stream",params:{access_token:a},headers:{"User-Agent":"pan.baidu.com"}});let g=0;const m=t.createWriteStream(r.join(this.storagePath,o));y.data.on("data",(e=>{g+=e.length,this.taskQueue.setDownloadedSize(g)})),yield new Promise(((e,t)=>{y.data.pipe(m),m.on("finish",(()=>{e()})),m.on("error",t)}));return(yield this.getFileSize(r.join(this.storagePath,o)))===d.size||(console.error("Downloaded file size does not match expected size."),yield t.promises.unlink(r.join(this.storagePath,o)),!1)}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class he{constructor(e){this.username=e.username,this.password=e.password,this.url=e.url,this.refreshTokenPromise=null,this.taskQueue=new E(3)}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{return(yield e.get(`${this.url}/list`,{params:{dir:t},auth:{username:this.username,password:this.password}})).data.files.map((e=>({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modifiedTime})))||[]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{return(yield e.delete(`${this.url}/delete`,{params:{dir:t.split("/").slice(0,-1).join("/")||"",filename:t.split("/").pop()},auth:{username:this.username,password:this.password}})).data.success}catch(e){return console.error("Error deleting file:",e),!1}}))}}const ue=i(o.pipeline);class pe extends he{constructor(e,t){super(e),this.storagePath=t}getAuthHeader(){return`Basic ${btoa(`${this.username}:${this.password}`)}`}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{o.split("/").pop();const s=o.substring(0,o.lastIndexOf("/"))||"";let n=this.listFiles("");const a=new Promise(((e,t)=>{setTimeout((()=>t(new Error("Docker connection timeout"))),5e3)}));yield Promise.race([n,a]);const d=t.createReadStream(r.join(this.storagePath,i)),l=new f;l.append("file",d);const c=yield e.post(`${this.url}/upload?dir=${encodeURIComponent(s)}`,l,{headers:Object.assign(Object.assign({},l.getHeaders()),{Authorization:this.getAuthHeader()}),maxContentLength:1/0,maxBodyLength:1/0});return!(c.status>=300)||(console.error("Error occurred during file upload:",c),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=i.split("/").pop()||"",n=i.substring(0,i.lastIndexOf("/"))||"",a=t.createWriteStream(r.join(this.storagePath,o)),d=yield e({url:`${this.url}/download`,method:"GET",params:{dir:n,filename:s},headers:{Authorization:this.getAuthHeader()},maxContentLength:1/0,maxBodyLength:1/0,responseType:"stream"});if(d.status>=300)return console.error("Error occurred during file download:",d),a.destroy(),t.existsSync(r.join(this.storagePath,o))&&t.unlinkSync(r.join(this.storagePath,o)),!1;let l=0;return d.data.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),yield ue(d.data,a),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class fe{constructor(e,t){this.baseUrl="https://proapi.115.com",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new E(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getUploadCredentials(t){return T(this,void 0,void 0,(function*(){try{const r=yield e.get(`${this.baseUrl}/open/upload/get_token`,{headers:{Authorization:`Bearer ${t}`}});return r.status>=300||!r.data.state?(console.error("Error getting upload credentials:",r.data),null):r.data.data}catch(e){return console.error("Error occurred during get upload credentials:",e),null}}))}generateOSSPolicy(e,t,r=new Date(Date.now()+36e5)){const i={expiration:r.toISOString(),conditions:[{bucket:e},{key:t},["starts-with","$success_action_status","2"],["content-length-range",0,1073741824]]};return JSON.stringify(i)}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token;if(!e)throw new Error("No refresh token available");let t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yiyiwu",refresh_token:e});if(!t.data.access_token)return"";if(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+18e5,!t.data.refresh_token)throw new Error("No refresh token returned");this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("yiyiwu_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yiyiwu",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://passportapi.115.com/open/authorize?client_id=${$}&response_type=code&redirect_uri=${e}`}}class ye extends fe{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var i;try{const i=yield this.refreshToken();let o=this.baseFolder+"/"+t;o.startsWith("/")||(o="/"+o);let s=r.dirname(o),n=yield this.getFolderInfo(s,!0),a="0";if(n)a=n.file_id;else{let e=yield this.createFolder(s);if(!e)return console.error("Failed to create folder:",s),!1;a=e}const d=r.join(this.storagePath,e),l=yield this.getFileSize(d),c=yield this.calculateFileSha1(d),h=yield this.calculatePreSha1(d),u=r.basename(t);yield this.deleteFileWithoutQueue(t);let p=yield this.initializeUpload(a,u,l,c,h,i);if(!p)return console.error("Failed to initialize upload"),!1;if((6===p.status||7===p.status||8===p.status)&&(p=yield this.handleSecondAuth(a,p,d,u,l,c,h,i),!p))return console.error("Second authentication failed"),!1;if(2===p.status)return console.info(`File ${e} uploaded successfully via instant upload.`),!0;const f=yield this.getUploadCredentials(i);if(!f)return console.error("Failed to get upload credentials"),!1;return(yield this.uploadToObjectStorage(d,p,f))?(console.info(`File ${e} uploaded successfully.`),!0):(console.error("Failed to upload to object storage"),!1)}catch(e){return console.error("Error occurred during file upload:",(null===(i=e.response)||void 0===i?void 0:i.data)||e.message||e),!1}}))))))}))}calculateFileSha1(e){return T(this,void 0,void 0,(function*(){return new Promise(((r,i)=>{const o=g.createHash("sha1"),s=t.createReadStream(e);s.on("data",(e=>{o.update(e)})),s.on("end",(()=>{r(o.digest("hex"))})),s.on("error",(e=>{i(e)}))}))}))}calculatePreSha1(e){return T(this,void 0,void 0,(function*(){return new Promise(((r,i)=>{const o=g.createHash("sha1"),s=t.createReadStream(e,{start:0,end:131071});s.on("data",(e=>{o.update(e)})),s.on("end",(()=>{r(o.digest("hex"))})),s.on("error",(e=>{i(e)}))}))}))}handleSecondAuth(e,r,i,o,s,n,a,d){return T(this,void 0,void 0,(function*(){try{if(!r.sign_check)return console.error("No sign_check provided for second authentication"),null;const[l,c]=r.sign_check.split("-"),h=parseInt(l),u=parseInt(c),p=Buffer.alloc(u-h+1),f=yield t.promises.open(i,"r");try{yield f.read(p,0,p.length,h);const t=g.createHash("sha1");t.update(p);const i=t.digest("hex").toUpperCase();return yield this.initializeUpload(e,o,s,n,a,d,r.sign_key,i,r.pick_code)}finally{yield f.close()}}catch(e){return console.error("Error during second authentication:",e),null}}))}calculateOSSSignature(e,t){const r=Buffer.from(t).toString("base64");return g.createHmac("sha1",e).update(r).digest("base64")}uploadToObjectStorage(i,o,s){var n;return T(this,void 0,void 0,(function*(){try{const n=s.endpoint,a=o.bucket,d=o.object;let l;if(n.includes(a))l=n;else{l=`https://${a}.${n.replace(/^https?:\/\//,"")}`}const c=this.generateOSSPolicy(a,d),h=this.calculateOSSSignature(s.AccessKeySecret,c),u=Buffer.from(c).toString("base64"),p=new f;if(p.append("key",d),p.append("policy",u),p.append("OSSAccessKeyId",s.AccessKeyId),p.append("signature",h),p.append("x-oss-security-token",s.SecurityToken),p.append("success_action_status","200"),o.callback&&o.callback.callback){const e=Buffer.from(o.callback.callback).toString("base64");if(p.append("callback",e),o.callback.callback_var){const e=JSON.parse(o.callback.callback_var);for(const[t,r]of Object.entries(e))p.append(t,String(r))}}const y=t.createReadStream(i);p.append("file",y,r.basename(i));const g=yield e.post(l,p,{headers:Object.assign({},p.getHeaders()),maxContentLength:1/0,maxBodyLength:1/0});return 200===g.status||204===g.status||(console.error("Upload failed with status:",g.status),!1)}catch(e){return console.error("Error uploading file via REST API:",(null===(n=e.response)||void 0===n?void 0:n.data)||e.message||e),!1}}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let s=this.baseFolder+"/"+i;s=s.replace(/\/+/g,"/"),s.startsWith("/")||(s="/"+s);const n=yield this.getFolderInfo(s,!1);if(!n||!n.pick_code)return console.error("Failed to get file info or pick_code for:",i),!1;const a=yield this.getFileDownloadUrl(n.pick_code);if(!a)return console.error("Failed to get download URL for:",i),!1;const d=yield e.get(a.url,{responseType:"stream"});let l=0;const c=t.createWriteStream(r.join(this.storagePath,o));return d.data.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),yield new Promise(((e,t)=>{d.data.pipe(c),c.on("finish",(()=>{e()})),c.on("error",t)})),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();(t=this.baseFolder+"/"+t).startsWith("/")||(t="/"+t);let i=[],o=0;const s=1150;let n=!0,a=yield this.getFolderInfo(t,!0),d="";if(a)d=a.file_id;else{let e=yield this.createFolder(t);if(!e)return console.error("Failed to create folder:",t),[];d=e}if(!d)return console.error("Failed to get or create folder ID:",t),[];let l=d;for(;n;){const t={offset:o,limit:s,cur:1,show_dir:1};l&&(t.cid=l);const a=yield e.get(`${this.baseUrl}/open/ufile/files`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"},params:t});if(a.status>=300)break;const d=a.data.data||[];i=i.concat(d),d.length({name:e.fn,size:e.fs||0,type:"0"===e.fc?"folder":"file",modified:new Date(1e3*e.upt).toISOString()})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}getFileDownloadUrl(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=new f;i.append("pick_code",t);const o=yield e.post(`${this.baseUrl}/open/ufile/downurl`,i,{headers:Object.assign({Authorization:`Bearer ${r}`},i.getHeaders())});if(o.status>=300)return console.error("Error getting download URL:",o.data),null;const s=o.data.data,n=Object.keys(s)[0];return n&&s[n]?s[n].url:(console.error("No file data found in download URL response"),null)}catch(e){return console.error("Error occurred during get download URL:",e),null}}))}initializeUpload(t,r,i,o,s,n,a,d,l){return T(this,void 0,void 0,(function*(){try{const c=new f;c.append("file_name",r),c.append("file_size",i.toString()),t?c.append("target","U_1_"+t):c.append("target","U_1_0"),c.append("fileid",o),c.append("preid",s),c.append("topupload","0"),l&&c.append("pick_code",l),a&&c.append("sign_key",a),d&&c.append("sign_val",d);const h=yield e.post(`${this.baseUrl}/open/upload/init`,c,{headers:Object.assign({Authorization:`Bearer ${n}`},c.getHeaders())});return h.status>=300||!h.data.state?(console.error("Error initializing upload:",h.data),null):h.data.data}catch(e){return console.error("Error occurred during upload initialization:",e),null}}))}createFolder(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=t.replace(/^\/+|\/+$/g,"");if(!i)return"";const o=i.split("/");let s="",n="0";for(const t of o){s=s?`${s}/${t}`:t;const i=yield this.getFolderInfo(s,!0);if(i&&i.file_id)n=i.file_id;else{const i=new f;i.append("pid",n),i.append("file_name",t);const o=yield e.post(`${this.baseUrl}/open/folder/add`,i,{headers:Object.assign({Authorization:`Bearer ${r}`},i.getHeaders())});if(o.status>=300||!o.data.state)return console.error("Error creating folder:",o.data),"";n=o.data.data.file_id}}return n}catch(e){return console.error("Error occurred during folder creation:",e),""}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();t=this.baseFolder+"/"+t;let i=yield this.getFolderInfo(t,!1);if(!i)return!0;let o=new f;o.append("file_ids",i.file_id);const s=yield e.post(`${this.baseUrl}/open/ufile/delete`,o,{headers:Object.assign({Authorization:`Bearer ${r}`},o.getHeaders())});return!(s.status>=300||!s.data.state)||(console.error("Error deleting file:",s),!1)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}getFolderInfo(t,r){return T(this,void 0,void 0,(function*(){if(""===t||"/"===t)return{file_id:"0"};t.startsWith("/")||(t="/"+t);try{const r=yield this.refreshToken();let i=new f;i.append("path",t);const o=yield e.post(`${this.baseUrl}/open/folder/get_info`,i,{headers:Object.assign(Object.assign({},i.getHeaders()),{Authorization:`Bearer ${r}`})});return o.status>=300||!o.data.state||0===o.data.data.length?(console.error("Error getting file info:",o.data),null):o.data.data}catch(e){return console.error("Error occurred during get file info:",e),null}}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}const ge=["book","config","cover","font"];class me{constructor(e,t,r,i){this.type=e,this.storagePath=r,this.remote="dropbox"===e?new j(t,r,i):"microsoft"===e?new W(t,r,i):"google"===e?new K(t,r,i):"microsoft_exp"===e?new W(Object.assign(Object.assign({},t),{isExp:!0}),r,i):"google_exp"===e?new K(Object.assign(Object.assign({},t),{isExp:!0}),r,i):"s3compatible"===e?new H(t,r):"webdav"===e?new J(t,r):"docker"===e?new pe(t,r):"ftp"===e?new B(t,r):"sftp"===e?new G(t,r):"boxnet"===e?new te(t,r,i):"mega"===e?new ie(t,r):"adrive"===e?new se(t,r,i):"pcloud"===e?new ae(t,r,i):"dubox"===e?new ce(t,r,i):"yandex"===e?new X(t,r,i):"yiyiwu"===e?new ye(t,r,i):new Z}downloadFile(e,i,o){return T(this,void 0,void 0,(function*(){if(t.existsSync(r.join(this.storagePath+"/"+o))||t.mkdirSync(r.join(this.storagePath+"/"+o)),"cover"!==o){if(!(yield this.listFiles(o)).find((t=>e.indexOf(t)>-1)))return!1}return yield this.remote.downloadFile(o+"/"+e,o+"/"+i)}))}uploadFile(e,t,r){return T(this,void 0,void 0,(function*(){return yield this.remote.uploadFile(r+"/"+e,r+"/"+t)}))}deleteFile(e,t){return T(this,void 0,void 0,(function*(){return!!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1))&&(yield this.remote.deleteFile(t+"/"+e))}))}isExist(e,t){return T(this,void 0,void 0,(function*(){return(yield this.listFiles(t)).find((t=>-1!==t.indexOf(e)))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return yield this.remote.listFiles(e)}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){return yield this.remote.listFileInfos(e)}))}downloadAllFiles(){return T(this,void 0,void 0,(function*(){for(let e of ge){let t=yield this.listFiles(e);for(let r of t)yield this.downloadFile(r,r,e)}}))}authToken(e){return T(this,void 0,void 0,(function*(){return yield this.remote.authToken(e)}))}getAuthUrl(e){return this.remote.getAuthUrl(e)}getStats(){return this.remote.taskQueue.getStats()}resetCounters(){this.remote.taskQueue.resetCounters()}getDownloadedSize(){return this.remote.taskQueue.getDownloadedSize()}}const ke={notes:"SELECT * FROM notes WHERE key = ?",bookmarks:"SELECT * FROM bookmarks WHERE key = ?",books:"SELECT * FROM books WHERE key = ?",plugins:"SELECT * FROM plugins WHERE key = ?",words:"SELECT * FROM words WHERE key = ?"},ve={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},Te={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"};function be(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const Fe={notes:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t.tag=JSON.parse(e.tag),t},bookmarks:e=>e,books:e=>e,plugins:e=>{let t=Object.assign({},e);return e.autoValue||delete t.autoValue,e.langList?t.langList=JSON.parse(e.langList):delete t.langList,e.voiceList?t.voiceList=JSON.parse(e.voiceList):delete t.voiceList,t.config=JSON.parse(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t}};var Ee={sqlStatement:{createTableStatement:be({notes:'\n CREATE TABLE IF NOT EXISTS "notes" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "chapter" text,\n "chapterIndex" integer,\n "text" text,\n "cfi" text,\n "range" text,\n "notes" text,\n "percentage" text,\n "color" integer,\n "tag" array\n )\n ',bookmarks:'\n CREATE TABLE IF NOT EXISTS "bookmarks" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "cfi" text,\n "label" text,\n "percentage" text,\n "chapter" text\n );\n ',books:'\n CREATE TABLE IF NOT EXISTS "books" (\n "key" text PRIMARY KEY,\n "name" text,\n "author" text,\n "description" text,\n "md5" text,\n "cover" text,\n "format" text,\n "publisher" text,\n "size" integer,\n "page" integer,\n "path" text,\n "charset" text\n );\n ',plugins:'\n CREATE TABLE IF NOT EXISTS "plugins" (\n "key" text PRIMARY KEY,\n "type" text,\n "displayName" text,\n "icon" text,\n "version" text,\n "config" object,\n "autoValue" string,\n "langList" text,\n "voiceList" text,\n "scriptSHA256" text,\n "script" text\n );\n ',words:'\n CREATE TABLE IF NOT EXISTS "words" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "word" text,\n "chapter" text\n );\n '}),getAllStatement:be({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),getPagedStatement:be({notes:"SELECT * FROM notes LIMIT ? OFFSET ?",bookmarks:"SELECT * FROM bookmarks LIMIT ? OFFSET ?",books:"SELECT * FROM books LIMIT ? OFFSET ?",plugins:"SELECT * FROM plugins LIMIT ? OFFSET ?",words:"SELECT * FROM words LIMIT ? OFFSET ?"}),getCountStatement:be({notes:"SELECT COUNT(*) as count FROM notes",bookmarks:"SELECT COUNT(*) as count FROM bookmarks",books:"SELECT COUNT(*) as count FROM books",plugins:"SELECT COUNT(*) as count FROM plugins",words:"SELECT COUNT(*) as count FROM words"}),saveStatement:be({notes:"INSERT OR REPLACE INTO notes (key, bookKey, chapter, chapterIndex, text, cfi, range, notes, date, percentage, color, tag) VALUES (@key, @bookKey, @chapter, @chapterIndex, @text, @cfi, @range, @notes, @date, @percentage, @color, @tag)",bookmarks:"INSERT OR REPLACE INTO bookmarks (key, bookKey, cfi, label, percentage, chapter) VALUES (@key, @bookKey, @cfi, @label, @percentage, @chapter)",books:"INSERT OR REPLACE INTO books (key, name, author, description, md5, cover, format, publisher, size, page, path, charset) VALUES (@key, @name, @author, @description, @md5, @cover, @format, @publisher, @size, @page, @path, @charset)",plugins:"INSERT OR REPLACE INTO plugins (key, type, displayName, icon, version, config, autoValue, langList, voiceList, scriptSHA256, script) VALUES (@key, @type, @displayName, @icon, @version, @config, @autoValue, @langList, @voiceList, @scriptSHA256, @script)",words:"INSERT OR REPLACE INTO words (key, bookKey, date, word, chapter) VALUES (@key, @bookKey, @date, @word, @chapter)"}),deleteAllStatement:be({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:be({notes:"UPDATE notes SET bookKey = @bookKey, chapter = @chapter, chapterIndex = @chapterIndex, text = @text, cfi = @cfi, range = @range, notes = @notes, date = @date, percentage = @percentage, color = @color, tag = @tag WHERE key = @key",bookmarks:"UPDATE bookmarks SET bookKey = @bookKey, cfi = @cfi, label = @label, percentage = @percentage, chapter = @chapter WHERE key = @key",books:"UPDATE books SET name = @name, author = @author, description = @description, md5 = @md5, cover = @cover, format = @format, publisher = @publisher, size = @size, page = @page, path = @path, charset = @charset WHERE key = @key",plugins:"UPDATE plugins SET type = @type, displayName = @displayName, icon = @icon, version = @version, config = @config, autoValue = @autoValue, langList = @langList, voiceList = @voiceList, scriptSHA256 = @scriptSHA256, script = @script WHERE key = @key",words:"UPDATE words SET bookKey = @bookKey, date = @date, word = @word, chapter = @chapter WHERE key = @key"}),deleteStatement:be({notes:"DELETE FROM notes WHERE key = ?",bookmarks:"DELETE FROM bookmarks WHERE key = ?",books:"DELETE FROM books WHERE key = ?",plugins:"DELETE FROM plugins WHERE key = ?",words:"DELETE FROM words WHERE key = ?"}),dropStatement:be({notes:"DROP TABLE IF EXISTS notes",bookmarks:"DROP TABLE IF EXISTS bookmarks",books:"DROP TABLE IF EXISTS books",plugins:"DROP TABLE IF EXISTS plugins",words:"DROP TABLE IF EXISTS words"}),getStatement:be(ke),getByBookKeyStatement:be(ve),getByBookKeysStatement:be({notes:e=>`SELECT * FROM notes WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,bookmarks:e=>`SELECT * FROM bookmarks WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,words:e=>`SELECT * FROM words WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,books:e=>`SELECT * FROM books WHERE key IN (${e.map((()=>"?")).join(",")})`}),getKeysStatement:be({notes:"SELECT key FROM notes",bookmarks:"SELECT key FROM bookmarks",books:"SELECT key FROM books",plugins:"SELECT key FROM plugins",words:"SELECT key FROM words"}),getWithSortAndPageStatement:be({notes:(e,t,r,i)=>`SELECT * FROM notes ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${i}`,bookmarks:(e,t,r,i)=>`SELECT * FROM bookmarks ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${i}`,books:(e,t,r,i)=>`SELECT * FROM books ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${i}`,plugins:(e,t,r,i)=>`SELECT * FROM plugins ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${i}`,words:(e,t,r,i)=>`SELECT * FROM words ORDER BY ${e} ${t} LIMIT ${r} OFFSET ${i}`}),getByKeysStatement:be({notes:e=>`SELECT * FROM notes WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`,bookmarks:e=>`SELECT * FROM bookmarks WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`,books:e=>`SELECT * FROM books WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`,plugins:e=>`SELECT * FROM plugins WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`,words:e=>`SELECT * FROM words WHERE key IN (${e.map((()=>"?")).join(",")}) ORDER BY CASE key ${e.map(((e,t)=>`WHEN ? THEN ${t}`)).join(" ")} END`}),deleteByBookKeyStatement:be(Te)},jsonToSqlite:be({notes:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t.tag=JSON.stringify(e.tag),t},bookmarks:e=>e,books:e=>{let t=Object.assign({},e);return t.page=e.page||0,t},plugins:e=>{let t=Object.assign({},e);return e.autoValue||(t.autoValue=null),e.langList?t.langList=JSON.stringify(e.langList):t.langList=null,e.voiceList?t.voiceList=JSON.stringify(e.voiceList):t.voiceList=null,t.config=JSON.stringify(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t}}),sqliteToJson:be(Fe)};const we=S,Se=w;class _e{constructor(e,t,r){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===r?Se:we,this.refreshToken="",this.accessToken="",this.streamPromise=null,this.expiresAt=0}refreshUserToken(){return T(this,void 0,void 0,(function*(){if(this.refreshToken=yield this.TokenService.getToken("refresh_token"),!this.refreshToken)return{code:401,message:"refresh token not found"};let t=(yield e.post(this.baseUrl+"/api/v1/public/user/refresh_token",{refresh_token:this.refreshToken})).data;return 200===t.code&&(yield this.TokenService.setToken("access_token",t.data.access_token),yield this.TokenService.setToken("refresh_token",t.data.refresh_token),yield this.TokenService.setToken("expires_at",(1e3*t.data.expires_at).toString()),this.accessToken=t.data.access_token,this.refreshToken=t.data.refresh_token,this.expiresAt=1e3*t.data.expires_at),t}))}requestWithRetry(e){return T(this,void 0,void 0,(function*(){return _e.requestQueue||(_e.requestQueue=[]),new Promise(((t,r)=>{_e.requestQueue.push({config:e,resolve:t,reject:r}),_e.processingQueue||this.processQueue()}))}))}isTokenValid(){return T(this,void 0,void 0,(function*(){if(this.accessToken||(this.accessToken=(yield this.TokenService.getToken("access_token"))||""),!this.expiresAt){const e=yield this.TokenService.getToken("expires_at");this.expiresAt=e?parseInt(e):(new Date).getTime()+31536e9}return""!==this.accessToken&&this.expiresAt>(new Date).getTime()+6e4}))}processQueue(){return T(this,void 0,void 0,(function*(){if(!_e.processingQueue){_e.processingQueue=!0;try{for(;_e.requestQueue.length>0;){const e=_e.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{_e.processingQueue=!1}}}))}executeRequest(t){return T(this,void 0,void 0,(function*(){try{try{this.accessToken=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let r="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);if(t.baseURL=this.baseUrl,t.headers)t.headers.Authorization="Bearer "+this.accessToken,t.headers["X-Request-ID"]=r;else{let e=this.ConfigService.getItem("appVersion"),i=this.ConfigService.getItem("appPlatform");t.headers={Authorization:"Bearer "+this.accessToken,"X-Request-ID":r,"X-App-Version":e||"1.0.0","X-App-Platform":i||"web"}}let i=(yield e(t)).data;if(402===i.code){let r=yield this.refreshUserToken();if(200===r.code){return t.headers=t.headers||{},t.headers.Authorization="Bearer "+this.accessToken,(yield e(t)).data}return r}return 200!==i.code&&this.ConfigService.setItem("errorLog",this.ConfigService.getItem("errorLog")+"\n"+JSON.stringify({request:t.data,url:t.url,result:i,requestID:r})),i}catch(e){return console.error("Request execution error:",e),{code:503,message:"network error",data:null}}}))}requestWithStream(e,t,r){return T(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>T(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let i=this.accessToken||"",o="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((s,n)=>{let a=this.ConfigService.getItem("appVersion"),d=this.ConfigService.getItem("appPlatform");const l=new r(this.baseUrl+e.url,{headers:{"Content-Type":"application/json",Authorization:"Bearer "+i,"X-Request-ID":o,"X-App-Version":a||"1.0.0","X-App-Platform":d||"web"},method:e.method,body:JSON.stringify(e.data),pollingInterval:0});l.addEventListener("open",(()=>{console.info("Connection to OpenAI established.")})),l.addEventListener("message",(e=>T(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(l.close(),s(r)):t(r.data)})))),l.addEventListener("error",(e=>{if(console.info("Error:",e),!e.data)return;const t=JSON.parse(e.data);s(t),l.close()}))}))}finally{this.streamPromise=null}})))()),this.streamPromise}))}requestWithFetch(e,t){return T(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>T(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let r=this.accessToken||"",i="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((o,s)=>T(this,void 0,void 0,(function*(){let s=this.ConfigService.getItem("appVersion"),n=this.ConfigService.getItem("appPlatform");var a=new m(this.baseUrl+e.url,{headers:{"Content-Type":"text/plain",Authorization:"Bearer "+r,"X-Request-ID":i,"X-App-Version":s||"1.0.0","X-App-Platform":n||"web"},payload:JSON.stringify(e.data),method:"POST"});a.addEventListener("message",(e=>T(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(a.close(),o(r)):t(r.data)})))),a.addEventListener("open",(e=>{console.info(e,"Connection to OpenAI established.")})),a.addEventListener("error",(e=>{if(console.error(e,"Error occurred while connecting to OpenAI"),!e.data)return;const t=JSON.parse(e.data);o(t),a.close()}))}))))}finally{this.streamPromise=null}})))()),this.streamPromise}))}}_e.processingQueue=!1,_e.requestQueue=[];class Re extends _e{constructor(e,t,r){super(e,t,r),this.serverRegion=r}encryptToken(e){return T(this,void 0,void 0,(function*(){let t=e.token,r=F.encode(t),{extracted:i,remaining:o}=function(e){let t="",r="",i=[],o=1;for(;o<=e.length;)i.push(o-1),o*=2;for(let o=0;o-1){let r=t.split("#");e.encrypted_token=r[1]}const r={method:"post",url:"/api/v1/pro/thirdparty/decrypt_token",data:e};let i=yield this.requestWithRetry(r);if(t.indexOf("#")>-1&&i.data&&i.data.token){let e=t.split("#"),r=function(e,t){let r="",i=[],o=1,s=e.length+t.length;for(;o<=s;)i.push(o-1),o*=2;let n=0,a=0;for(let o=0;o-1&&r.splice(i,1),this.setAllListConfig(r,t)}static setListConfig(e,t){let r=this.getAllListConfig(t);const i=r.indexOf(e);i>-1?(r.splice(i,1),r.unshift(e)):r.unshift(e),this.setAllListConfig(r,t)}static setAllListConfig(e,t,r=!0){this.setItem(t,JSON.stringify(e)),r&&this.setSyncRecord({type:"config",catergory:"listConfig",name:"general",key:t},{operation:"update",time:Date.now()})}static setObjectConfig(e,t,r,i=!0){let o=this.getAllObjectConfig(r);o[e]=t,i&&this.setSyncRecord({type:"config",catergory:"objectConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllObjectConfig(o,r)}static getObjectConfig(e,t,r){return this.getAllObjectConfig(t)[e]||r}static getAllObjectConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static setAllObjectConfig(e,t){this.setItem(t,JSON.stringify(e))}static deleteObjectConfig(e,t){let r=this.getAllObjectConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"objectConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllObjectConfig(r,t)}static getAllMapConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static getMapConfig(e,t){return this.getAllMapConfig(t)[e]||[]}static setAllMapConfig(e,t){this.setItem(t,JSON.stringify(e))}static setMapConfig(e,t,r){let i=this.getAllMapConfig(r);void 0===i[e]&&(i[e]=[]),t&&-1===i[e].indexOf(t)&&i[e].unshift(t),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static setOneMapConfig(e,t,r,i=!0){let o=this.getAllMapConfig(r);o[e]=t,i&&this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(o,r)}static deleteFromMapConfig(e,t,r){let i=this.getAllMapConfig(r),o=i[e].indexOf(t);i[e].splice(o,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static deleteFromAllMapConfig(e,t){let r=this.getAllMapConfig(t);Object.keys(r).forEach((i=>{let o=r[i].indexOf(e);o>-1&&(r[i].splice(o,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:i},{operation:"update",time:Date.now()}))})),this.setAllMapConfig(r,t)}static deleteMapConfig(e,t){let r=this.getAllMapConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllMapConfig(r,t)}static getFromAllMapConfig(e,t){let r=this.getAllMapConfig(t),i=[];for(let t in r)r[t]&&r[t].indexOf(e)>-1&&i.push(t);return i}static getSyncRecord(e){return JSON.parse(this.getItem("syncRecord")||"{}")[e.type+"."+e.catergory+"."+e.name+"."+e.key]||{operation:"",time:0}}static getAllSyncRecord(){return JSON.parse(this.getItem("syncRecord")||"{}")}static flushSyncRecords(){if(0===Object.keys(this.pendingSyncRecords).length)return;let e=JSON.parse(this.getItem("syncRecord")||"{}");Object.assign(e,this.pendingSyncRecords),this.setItem("syncRecord",JSON.stringify(e)),this.pendingSyncRecords={},this.syncRecordTimer=null}static setSyncRecord(e,t){const r=e.type+"."+e.catergory+"."+e.name+"."+e.key;this.pendingSyncRecords[r]=t,null!==this.syncRecordTimer&&clearTimeout(this.syncRecordTimer),this.syncRecordTimer=setTimeout((()=>{this.flushSyncRecords()}),this.DEBOUNCE_DELAY)}static setAllSyncRecord(e){this.setItem("syncRecord",JSON.stringify(e))}}).pendingSyncRecords={},Ae.syncRecordTimer=null,Ae.DEBOUNCE_DELAY=1e3,Ae);var Ce,Pe,Ae;let $e;const Ie=new Uint8Array(16);function Le(){if(!$e&&($e="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!$e))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return $e(Ie)}const ze=[];for(let e=0;e<256;++e)ze.push((e+256).toString(16).slice(1));var Qe={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function De(e,t,r){if(Qe.randomUUID&&!t&&!e)return Qe.randomUUID();const i=(e=e||{}).random||(e.rng||Le)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=i[e];return t}return function(e,t=0){return ze[e[t+0]]+ze[e[t+1]]+ze[e[t+2]]+ze[e[t+3]]+"-"+ze[e[t+4]]+ze[e[t+5]]+"-"+ze[e[t+6]]+ze[e[t+7]]+"-"+ze[e[t+8]]+ze[e[t+9]]+"-"+ze[e[t+10]]+ze[e[t+11]]+ze[e[t+12]]+ze[e[t+13]]+ze[e[t+14]]+ze[e[t+15]]}(i)}const je=new k;class Be{static encrypt(e,t){let r="";for(let i=0;i {[ { label: "Local", value: "local", isPro: false }, - ...driveList.filter((item) => { - if (getServerRegion() === "china") { - return item.isCNAvailable; - } - return true; - }), + ...driveList, { label: "Add data source", value: "add", isPro: false }, ] .filter( @@ -210,12 +205,7 @@ class BackupDialog extends React.Component< > {[ { label: "Local", value: "local", isPro: false }, - ...driveList.filter((item) => { - if (getServerRegion() === "china") { - return item.isCNAvailable; - } - return true; - }), + ...driveList, { label: "Add data source", value: "add", isPro: false }, ] .filter( diff --git a/src/components/dialogs/importDialog/component.tsx b/src/components/dialogs/importDialog/component.tsx index 2884ea0a..48893d94 100644 --- a/src/components/dialogs/importDialog/component.tsx +++ b/src/components/dialogs/importDialog/component.tsx @@ -368,12 +368,6 @@ class ImportDialog extends React.Component< {this.state.currentDrive === "" && ( <> {driveList - .filter((item) => { - if (getServerRegion() === "china") { - return item.isCNAvailable; - } - return true; - }) .filter( (item) => !item.scoped && diff --git a/src/constants/driveList.tsx b/src/constants/driveList.tsx index 7b6c86ce..b4be6c15 100644 --- a/src/constants/driveList.tsx +++ b/src/constants/driveList.tsx @@ -6,7 +6,6 @@ export const driveList = [ isPro: false, support: ["desktop", "browser", "phone"], scoped: false, - isCNAvailable: true, }, { label: "S3 Compatible", @@ -15,7 +14,6 @@ export const driveList = [ isPro: true, support: ["desktop", "browser", "phone"], scoped: false, - isCNAvailable: true, }, { label: "Docker", @@ -24,7 +22,6 @@ export const driveList = [ isPro: true, support: ["desktop", "browser", "phone"], scoped: true, - isCNAvailable: true, }, { label: "OneDrive", @@ -33,7 +30,6 @@ export const driveList = [ isPro: true, support: ["desktop", "browser", "phone"], scoped: true, - isCNAvailable: true, }, { label: "Google Drive", @@ -42,7 +38,6 @@ export const driveList = [ isPro: true, support: ["desktop", "browser", "phone"], scoped: false, - isCNAvailable: false, }, { label: "Dropbox", @@ -51,7 +46,6 @@ export const driveList = [ isPro: true, support: ["desktop", "browser", "phone"], scoped: true, - isCNAvailable: false, }, { @@ -61,7 +55,6 @@ export const driveList = [ isPro: true, support: ["desktop", "phone"], scoped: false, - isCNAvailable: true, }, { @@ -71,7 +64,6 @@ export const driveList = [ isPro: true, support: ["desktop", "browser", "phone"], scoped: false, - isCNAvailable: false, }, { @@ -81,7 +73,6 @@ export const driveList = [ isPro: true, support: ["desktop", "browser"], scoped: false, - isCNAvailable: false, }, { label: "Aliyun Drive", @@ -90,7 +81,6 @@ export const driveList = [ isPro: true, support: ["desktop", "phone"], scoped: false, - isCNAvailable: true, }, { label: "Yandex Disk", @@ -99,7 +89,6 @@ export const driveList = [ isPro: true, support: ["desktop", "phone"], scoped: false, - isCNAvailable: false, }, { label: "115 Yun", @@ -108,7 +97,6 @@ export const driveList = [ isPro: true, support: ["desktop", "phone"], scoped: false, - isCNAvailable: true, }, { @@ -118,7 +106,6 @@ export const driveList = [ isPro: true, support: ["desktop", "phone"], scoped: true, - isCNAvailable: false, }, { @@ -128,7 +115,6 @@ export const driveList = [ isPro: true, support: ["desktop", "browser", "phone"], scoped: false, - isCNAvailable: true, }, { @@ -138,7 +124,6 @@ export const driveList = [ isPro: false, support: ["desktop"], scoped: false, - isCNAvailable: true, }, { label: "SFTP", @@ -147,7 +132,6 @@ export const driveList = [ isPro: false, support: ["desktop"], scoped: false, - isCNAvailable: true, }, ]; interface ConfigItem { diff --git a/src/constants/loginList.tsx b/src/constants/loginList.tsx index 6cae5b2c..757b5ae0 100644 --- a/src/constants/loginList.tsx +++ b/src/constants/loginList.tsx @@ -4,27 +4,23 @@ export const loginList = [ value: "github", icon: "icon-github", fontsize: "20px", - isCNAvailable: false, }, { label: "Google", value: "google", icon: "icon-google", fontsize: "17px", - isCNAvailable: false, }, { label: "Email", value: "email", icon: "icon-email", fontsize: "20px", - isCNAvailable: true, }, { label: "Microsoft", value: "microsoft", icon: "icon-microsoft", fontsize: "17px", - isCNAvailable: true, }, ]; diff --git a/src/containers/settings/accountSetting/component.tsx b/src/containers/settings/accountSetting/component.tsx index 8a79ce55..8268bac7 100644 --- a/src/containers/settings/accountSetting/component.tsx +++ b/src/containers/settings/accountSetting/component.tsx @@ -622,109 +622,96 @@ class AccountSetting extends React.Component< className="lang-setting-dropdown" onChange={this.handleAddLoginOption} > - {[ - { label: "Please select", value: "" }, - ...loginList.filter((item) => { - if (getServerRegion() === "china") { - return item.isCNAvailable; - } - return true; - }), - ].map((item) => ( - - ))} + {[{ label: "Please select", value: "" }, ...loginList].map( + (item) => ( + + ) + )} )} {this.props.isAuthed && - loginList - .filter((item) => { - if (this.state.serverRegion === "china") { - return item.isCNAvailable; - } - return true; - }) - .map((login) => ( -
- {this.props.t(login.label)} -
{ - if ( - !this.props.loginOptionList.find( - (item) => item.provider === login.value - ) - ) { - this.handleAddLoginOption({ - target: { value: login.value }, - }); - } - }} - > -
- {this.props.loginOptionList.find( + loginList.map((login) => ( +
+ {this.props.t(login.label)} +
{ + if ( + !this.props.loginOptionList.find( (item) => item.provider === login.value - ) ? ( - this.props.loginOptionList.find( - (item) => item.provider === login.value - )?.email ? ( - - { - this.props.loginOptionList.find( - (item) => item.provider === login.value - )?.email - } - - ) : ( - {this.props.t("Bound")} - ) - ) : ( - - {this.props.t("Not bound")} - - )} -
+ ) + ) { + this.handleAddLoginOption({ + target: { value: login.value }, + }); + } + }} + > +
{this.props.loginOptionList.find( (item) => item.provider === login.value ) ? ( - { - event.stopPropagation(); - this.handleDeleteLoginOption({ - target: { value: login.value }, - }); - }} - > + this.props.loginOptionList.find( + (item) => item.provider === login.value + )?.email ? ( + + { + this.props.loginOptionList.find( + (item) => item.provider === login.value + )?.email + } + + ) : ( + {this.props.t("Bound")} + ) ) : ( - + + {this.props.t("Not bound")} + )}
+ {this.props.loginOptionList.find( + (item) => item.provider === login.value + ) ? ( + { + event.stopPropagation(); + this.handleDeleteLoginOption({ + target: { value: login.value }, + }); + }} + > + ) : ( + + )}
- ))} +
+ ))} {this.props.isAuthed && (
diff --git a/src/containers/settings/syncSetting/component.tsx b/src/containers/settings/syncSetting/component.tsx index 9b3cc3f7..6a87c0ae 100644 --- a/src/containers/settings/syncSetting/component.tsx +++ b/src/containers/settings/syncSetting/component.tsx @@ -586,12 +586,7 @@ class SyncSetting extends React.Component { isPro: false, support: ["desktop", "browser", "phone"], }, - ...driveList.filter((item) => { - if (getServerRegion() === "china") { - return item.isCNAvailable; - } - return true; - }), + ...driveList, ] .filter((item) => !this.props.dataSourceList.includes(item.value)) .filter((item) => { @@ -622,15 +617,7 @@ class SyncSetting extends React.Component { className="lang-setting-dropdown" onChange={this.handleDeleteDataSource} > - {[ - { label: "Please select", value: "", isPro: false }, - ...driveList.filter((item) => { - if (getServerRegion() === "china") { - return item.isCNAvailable; - } - return true; - }), - ] + {[{ label: "Please select", value: "", isPro: false }, ...driveList] .filter( (item) => this.props.dataSourceList.includes(item.value) || @@ -688,12 +675,7 @@ class SyncSetting extends React.Component { > {[ { label: "Please select", value: "", isPro: false }, - ...driveList.filter((item) => { - if (getServerRegion() === "china") { - return item.isCNAvailable; - } - return true; - }), + ...driveList, ] .filter( (item) => diff --git a/src/pages/login/component.tsx b/src/pages/login/component.tsx index 0f67ed5e..c103ca53 100644 --- a/src/pages/login/component.tsx +++ b/src/pages/login/component.tsx @@ -346,56 +346,48 @@ class Login extends React.Component {
- {loginList - .filter((item) => { - if (this.state.serverRegion === "china") { - return item.isCNAvailable; - } - return true; - }) - .map((item) => { - return ( -
{ - if (item.value === "email") { - this.setState({ currentStep: 5 }); - return; + {loginList.map((item) => { + return ( +
{ + if (item.value === "email") { + this.setState({ currentStep: 5 }); + return; + } + let url = LoginHelper.getAuthUrl( + item.value, + isElectron ? "desktop" : "browser", + getServerRegion() === "china" && + item.value === "microsoft" + ? KookitConfig.ThirdpartyConfig.cnCallbackUrl + : KookitConfig.ThirdpartyConfig.callbackUrl + ); + if (url) { + if (isElectron) { + openInBrowser(url); + } else { + window.location.replace(url); } - let url = LoginHelper.getAuthUrl( - item.value, - isElectron ? "desktop" : "browser", - getServerRegion() === "china" && - item.value === "microsoft" - ? KookitConfig.ThirdpartyConfig.cnCallbackUrl - : KookitConfig.ThirdpartyConfig.callbackUrl - ); - if (url) { - if (isElectron) { - openInBrowser(url); - } else { - window.location.replace(url); - } - } - }} - > -
- -
-
- - Continue with{" "} - {{ label: this.props.t(item.label) }} - -
+ } + }} + > +
+
- ); - })} +
+ + Continue with {{ label: this.props.t(item.label) }} + +
+
+ ); + })}
{ @@ -453,12 +445,6 @@ class Login extends React.Component {
{driveList - .filter((item) => { - if (getServerRegion() === "china") { - return item.isCNAvailable; - } - return true; - }) .filter((item) => { if (!isElectron) { return item.support.includes("browser"); diff --git a/yarn.lock b/yarn.lock index 83cf080e..1f0f2636 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10588,10 +10588,10 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -megajs@1.3.9-next.17: - version "1.3.9-next.17" - resolved "https://registry.yarnpkg.com/megajs/-/megajs-1.3.9-next.17.tgz#7e8d65977b57c9b514e60e7a24a04923d8d8a96a" - integrity sha512-wfGcxOWgO25E/7BP7GbVz6EDKHES/4Q87kdHs9aCzne1veRVRJh1LsKZBczZ35N0zu0Xd0+vNCDdwNGK9QJPVw== +megajs@^1.3.9: + version "1.3.9" + resolved "https://registry.yarnpkg.com/megajs/-/megajs-1.3.9.tgz#2a495ffc1264ae333206f4f5bf70a401d48e55bf" + integrity sha512-91GGJbUfUu9z/KFORHcn4bugVILWcGahaoy07Q7M5GLzT6zOsrpusxkjEvEys9XCXbxntg0v+f2JN6sITrEkPQ== dependencies: pumpify "^2.0.1" stream-skip "^1.0.3"