@onairos/react-native 3.6.2 → 3.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/api/index.js +1 -1
- package/lib/commonjs/components/BodyText.js +1 -1
- package/lib/commonjs/components/BrandMark.js +1 -1
- package/lib/commonjs/components/CodeInput.js +1 -1
- package/lib/commonjs/components/EmailInput.js +1 -1
- package/lib/commonjs/components/GoogleButton.js +1 -1
- package/lib/commonjs/components/HeadingGroup.js +1 -1
- package/lib/commonjs/components/LLMDataInputModal.js +1 -1
- package/lib/commonjs/components/ModalHeader.js +1 -1
- package/lib/commonjs/components/ModalSheet.js +1 -1
- package/lib/commonjs/components/Onairos.js +1 -1
- package/lib/commonjs/components/OnairosButton.js +1 -1
- package/lib/commonjs/components/OnairosSignInButton.js +1 -1
- package/lib/commonjs/components/Overlay.js +1 -1
- package/lib/commonjs/components/PersonaImage.js +1 -1
- package/lib/commonjs/components/PersonaLoadingScreen.js +1 -1
- package/lib/commonjs/components/PersonalizationConsentScreen.js +1 -1
- package/lib/commonjs/components/PinCreationScreen.js +1 -1
- package/lib/commonjs/components/PinInput.js +1 -1
- package/lib/commonjs/components/PlatformConnectorsStep.js +1 -1
- package/lib/commonjs/components/PlatformList.js +1 -1
- package/lib/commonjs/components/PlatformToggle.js +1 -1
- package/lib/commonjs/components/PrimaryButton.js +1 -1
- package/lib/commonjs/components/SignInMatchAnimation.js +1 -1
- package/lib/commonjs/components/SignInStep.js +1 -1
- package/lib/commonjs/components/UniversalOnboarding.js +1 -1
- package/lib/commonjs/components/VerificationStep.js +1 -1
- package/lib/commonjs/components/WelcomeScreen.js +1 -1
- package/lib/commonjs/components/icons/Basicproficon.js +1 -1
- package/lib/commonjs/components/icons/Basicprofile.js +1 -1
- package/lib/commonjs/components/icons/Checkbox.js +1 -1
- package/lib/commonjs/components/icons/Checkmark.js +1 -1
- package/lib/commonjs/components/icons/Contentanalysis.js +1 -1
- package/lib/commonjs/components/icons/Contenticon.js +1 -1
- package/lib/commonjs/components/icons/EnochE.js +1 -1
- package/lib/commonjs/components/icons/Personalityicon.js +1 -1
- package/lib/commonjs/components/icons/Personalityprofile.js +1 -1
- package/lib/commonjs/components/icons/Personalitytraits.js +1 -1
- package/lib/commonjs/components/icons/Userpreferences.js +1 -1
- package/lib/commonjs/components/icons/index.js +1 -1
- package/lib/commonjs/components/onboarding/OAuthWebView.js +1 -1
- package/lib/commonjs/components/onboarding/OnboardingHeader.js +1 -1
- package/lib/commonjs/components/onboarding/PinInput.js +1 -1
- package/lib/commonjs/components/onboarding/PlatformConnector.js +1 -1
- package/lib/commonjs/config/api.js +1 -1
- package/lib/commonjs/constants/index.js +1 -1
- package/lib/commonjs/context/AuthContext.js +1 -1
- package/lib/commonjs/hooks/useConnectedAccounts.js +1 -1
- package/lib/commonjs/hooks/useConnections.js +1 -1
- package/lib/commonjs/hooks/useCredentials.js +1 -1
- package/lib/commonjs/hooks/useUserConnections.js +1 -1
- package/lib/commonjs/index.js +1 -1
- package/lib/commonjs/services/apiClient.js +1 -1
- package/lib/commonjs/services/apiKeyService.js +1 -1
- package/lib/commonjs/services/authService.js +1 -1
- package/lib/commonjs/services/biometricPinService.js +1 -1
- package/lib/commonjs/services/chatGPTConversationExtractor.js +1 -1
- package/lib/commonjs/services/chatGPTConversationService.js +1 -1
- package/lib/commonjs/services/claudeConversationExtractor.js +1 -1
- package/lib/commonjs/services/claudeConversationService.js +1 -1
- package/lib/commonjs/services/connectedAccountsService.js +1 -1
- package/lib/commonjs/services/googleAuthService.js +1 -1
- package/lib/commonjs/services/hingeDataExtractor.js +1 -1
- package/lib/commonjs/services/hingeDataService.js +1 -1
- package/lib/commonjs/services/imageCompressionService.js +1 -1
- package/lib/commonjs/services/instagramDataExtractor.js +1 -1
- package/lib/commonjs/services/instagramDataService.js +1 -1
- package/lib/commonjs/services/jwtStorageService.js +1 -1
- package/lib/commonjs/services/linkedinDOMExtractor.js +1 -1
- package/lib/commonjs/services/linkedinProfileService.js +1 -1
- package/lib/commonjs/services/linkedinScrapingService.js +1 -1
- package/lib/commonjs/services/llmDataStorage.js +1 -1
- package/lib/commonjs/services/mobileTrainingService.js +1 -1
- package/lib/commonjs/services/oauthService.js +1 -1
- package/lib/commonjs/services/pinEncryptionService.js +1 -1
- package/lib/commonjs/services/pinStorageUtils.js +1 -1
- package/lib/commonjs/services/platformAuthService.js +1 -1
- package/lib/commonjs/services/sephoraDataExtractor.js +1 -1
- package/lib/commonjs/services/sephoraDataService.js +1 -1
- package/lib/commonjs/services/storageService.js +1 -1
- package/lib/commonjs/services/telegramDataExtractor.js +1 -1
- package/lib/commonjs/services/telegramDataService.js +1 -1
- package/lib/commonjs/services/trainingApiHelpers.js +1 -1
- package/lib/commonjs/services/userConnectionsService.js +1 -1
- package/lib/commonjs/services/youtubeMigrationService.js +1 -1
- package/lib/commonjs/theme/index.js +1 -1
- package/lib/commonjs/types/index.js +1 -1
- package/lib/commonjs/types.js +1 -1
- package/lib/commonjs/utils/Portal.js +1 -1
- package/lib/commonjs/utils/api.js +1 -1
- package/lib/commonjs/utils/assetRegistry.js +1 -1
- package/lib/commonjs/utils/auth.js +1 -1
- package/lib/commonjs/utils/connectorTests.js +1 -1
- package/lib/commonjs/utils/crypto.js +1 -1
- package/lib/commonjs/utils/debugHelper.js +1 -1
- package/lib/commonjs/utils/encryption.js +1 -1
- package/lib/commonjs/utils/eventUtils.js +1 -1
- package/lib/commonjs/utils/haptics.js +1 -1
- package/lib/commonjs/utils/imagePreloader.js +1 -1
- package/lib/commonjs/utils/networkDiagnostics.js +1 -1
- package/lib/commonjs/utils/onairosApi.js +1 -1
- package/lib/commonjs/utils/programmaticFlow.js +1 -1
- package/lib/commonjs/utils/retryHelper.js +1 -1
- package/lib/commonjs/utils/secureStorage.js +1 -1
- package/lib/commonjs/utils/webviewScripts/chatgpt.js +1 -1
- package/lib/commonjs/utils/webviewScripts/claude.js +1 -1
- package/lib/commonjs/utils/webviewScripts/hinge.js +1 -1
- package/lib/commonjs/utils/webviewScripts/index.js +1 -1
- package/lib/commonjs/utils/webviewScripts/instagram.js +1 -1
- package/lib/commonjs/utils/webviewScripts/linkedin.js +1 -1
- package/lib/commonjs/utils/webviewScripts/sephora.js +1 -1
- package/lib/commonjs/utils/webviewScripts/telegram.js +1 -1
- package/lib/module/api/index.js +1 -1
- package/lib/module/components/BodyText.js +1 -1
- package/lib/module/components/BrandMark.js +1 -1
- package/lib/module/components/CodeInput.js +1 -1
- package/lib/module/components/EmailInput.js +1 -1
- package/lib/module/components/GoogleButton.js +1 -1
- package/lib/module/components/HeadingGroup.js +1 -1
- package/lib/module/components/LLMDataInputModal.js +1 -1
- package/lib/module/components/ModalHeader.js +1 -1
- package/lib/module/components/ModalSheet.js +1 -1
- package/lib/module/components/Onairos.js +1 -1
- package/lib/module/components/OnairosButton.js +1 -1
- package/lib/module/components/OnairosSignInButton.js +1 -1
- package/lib/module/components/Overlay.js +1 -1
- package/lib/module/components/PersonaImage.js +1 -1
- package/lib/module/components/PersonaLoadingScreen.js +1 -1
- package/lib/module/components/PersonalizationConsentScreen.js +1 -1
- package/lib/module/components/PinCreationScreen.js +1 -1
- package/lib/module/components/PinInput.js +1 -1
- package/lib/module/components/PlatformConnectorsStep.js +1 -1
- package/lib/module/components/PlatformList.js +1 -1
- package/lib/module/components/PlatformToggle.js +1 -1
- package/lib/module/components/PrimaryButton.js +1 -1
- package/lib/module/components/SignInMatchAnimation.js +1 -1
- package/lib/module/components/SignInStep.js +1 -1
- package/lib/module/components/UniversalOnboarding.js +1 -1
- package/lib/module/components/VerificationStep.js +1 -1
- package/lib/module/components/WelcomeScreen.js +1 -1
- package/lib/module/components/icons/Basicproficon.js +1 -1
- package/lib/module/components/icons/Basicprofile.js +1 -1
- package/lib/module/components/icons/Checkbox.js +1 -1
- package/lib/module/components/icons/Checkmark.js +1 -1
- package/lib/module/components/icons/Contentanalysis.js +1 -1
- package/lib/module/components/icons/Contenticon.js +1 -1
- package/lib/module/components/icons/EnochE.js +1 -1
- package/lib/module/components/icons/Personalityicon.js +1 -1
- package/lib/module/components/icons/Personalityprofile.js +1 -1
- package/lib/module/components/icons/Personalitytraits.js +1 -1
- package/lib/module/components/icons/Userpreferences.js +1 -1
- package/lib/module/components/onboarding/OAuthWebView.js +1 -1
- package/lib/module/components/onboarding/OnboardingHeader.js +1 -1
- package/lib/module/components/onboarding/PinInput.js +1 -1
- package/lib/module/components/onboarding/PlatformConnector.js +1 -1
- package/lib/module/config/api.js +1 -1
- package/lib/module/constants/index.js +1 -1
- package/lib/module/context/AuthContext.js +1 -1
- package/lib/module/hooks/useConnectedAccounts.js +1 -1
- package/lib/module/hooks/useConnections.js +1 -1
- package/lib/module/hooks/useCredentials.js +1 -1
- package/lib/module/hooks/useUserConnections.js +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/services/apiClient.js +1 -1
- package/lib/module/services/apiKeyService.js +1 -1
- package/lib/module/services/authService.js +1 -1
- package/lib/module/services/biometricPinService.js +1 -1
- package/lib/module/services/chatGPTConversationExtractor.js +1 -1
- package/lib/module/services/chatGPTConversationService.js +1 -1
- package/lib/module/services/claudeConversationExtractor.js +1 -1
- package/lib/module/services/claudeConversationService.js +1 -1
- package/lib/module/services/connectedAccountsService.js +1 -1
- package/lib/module/services/googleAuthService.js +1 -1
- package/lib/module/services/hingeDataExtractor.js +1 -1
- package/lib/module/services/hingeDataService.js +1 -1
- package/lib/module/services/imageCompressionService.js +1 -1
- package/lib/module/services/instagramDataExtractor.js +1 -1
- package/lib/module/services/instagramDataService.js +1 -1
- package/lib/module/services/jwtStorageService.js +1 -1
- package/lib/module/services/linkedinDOMExtractor.js +1 -1
- package/lib/module/services/linkedinProfileService.js +1 -1
- package/lib/module/services/linkedinScrapingService.js +1 -1
- package/lib/module/services/llmDataStorage.js +1 -1
- package/lib/module/services/mobileTrainingService.js +1 -1
- package/lib/module/services/oauthService.js +1 -1
- package/lib/module/services/pinEncryptionService.js +1 -1
- package/lib/module/services/pinStorageUtils.js +1 -1
- package/lib/module/services/platformAuthService.js +1 -1
- package/lib/module/services/sephoraDataExtractor.js +1 -1
- package/lib/module/services/sephoraDataService.js +1 -1
- package/lib/module/services/storageService.js +1 -1
- package/lib/module/services/telegramDataExtractor.js +1 -1
- package/lib/module/services/telegramDataService.js +1 -1
- package/lib/module/services/trainingApiHelpers.js +1 -1
- package/lib/module/services/userConnectionsService.js +1 -1
- package/lib/module/services/youtubeMigrationService.js +1 -1
- package/lib/module/theme/index.js +1 -1
- package/lib/module/types.js +1 -1
- package/lib/module/utils/Portal.js +1 -1
- package/lib/module/utils/api.js +1 -1
- package/lib/module/utils/assetRegistry.js +1 -1
- package/lib/module/utils/auth.js +1 -1
- package/lib/module/utils/connectorTests.js +1 -1
- package/lib/module/utils/crypto.js +1 -1
- package/lib/module/utils/debugHelper.js +1 -1
- package/lib/module/utils/encryption.js +1 -1
- package/lib/module/utils/eventUtils.js +1 -1
- package/lib/module/utils/haptics.js +1 -1
- package/lib/module/utils/networkDiagnostics.js +1 -1
- package/lib/module/utils/onairosApi.js +1 -1
- package/lib/module/utils/programmaticFlow.js +1 -1
- package/lib/module/utils/retryHelper.js +1 -1
- package/lib/module/utils/secureStorage.js +1 -1
- package/lib/module/utils/webviewScripts/chatgpt.js +1 -1
- package/lib/module/utils/webviewScripts/claude.js +1 -1
- package/lib/module/utils/webviewScripts/hinge.js +1 -1
- package/lib/module/utils/webviewScripts/index.js +1 -1
- package/lib/module/utils/webviewScripts/instagram.js +1 -1
- package/lib/module/utils/webviewScripts/linkedin.js +1 -1
- package/lib/module/utils/webviewScripts/sephora.js +1 -1
- package/lib/module/utils/webviewScripts/telegram.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function _0x5c9b(){const _0x20e07d=['type','code','details','fetch','oqsXt','isConnected','Request\x20timed\x20out','timeout_error','No\x20username\x20available\x20-\x20either\x20provide\x20username\x20or\x20ensure\x20JWT\x20token\x20is\x20valid','auth_error','validation_error','server_error','API\x20request\x20failed','No\x20network\x20connection\x20available','network_error','hSjtv','tkahe','[REDACTED]','maKwi','User\x20API\x20Response','bdCQC','User\x20API\x20Error','Unknown\x20error','eAUlb','eesUm','HCuKn','LRdmv','xLRvk','xxMHw','wYIXM','HsBYW','XnKCS','YtBfi','Mhpqe','message','YQcPY','rtHwP','json','JOOFE','wrvDd','voxAf','status','gjKLD','MegnU','QiZXU','error','MbrxJ','FaMYR','name','AbortError','HHaGa','iZICq','naZdt','TeFdK','ruFlQ','SPfGJ','QKKQN','HwdaP','An\x20unexpected\x20error\x20occurred','unknown_error','Developer\x20API\x20Error','store-pin/mobile','tDIuN','XuCzZ','Developer\x20API\x20Request','Developer\x20API\x20Response','vvoRH','SahlQ','JjYum','TyEpW','MYmUw','phcev','tcnad','bPLnC','kDjhD','vWNqt','obtTH','SCWAk','AMuFu','wTQIH','MHmOi','gGVaT','stringify','iWXss','TXmIk','bhNyP','lcaBE','AzSGT','UEGzN','jnSpE','ZDljK','OLato','ivPhT','KTgKk','klIAu','rNuHb','bjAiZ','DQXVU','auth/validate','irrto','debug','success','wlklF','data','rgzYz','isValid','JXWtz','auth/register','EwlXr','NcTfH','username','platforms','auth/login','RvqWI','GhbjJ','yPNxj','yFaEm','VfcGf','platforms/','/data','BxHay','KcqJD','MDAaF','eypiU','LIjKo','kpaPo','eXgHC','DzVno'];_0x5c9b=function(){return _0x20e07d;};return _0x5c9b();}import NetInfo from'@react-native-community/netinfo';import{logDebug}from'./debugHelper';import{getJWT,makeUserRequest,makeDeveloperRequest,isUserAuthenticated,extractUsernameFromJWT}from'../services/apiKeyService';export class ApiError extends Error{constructor(_0x457972,_0x25bb87,_0x14314c,_0x137846){super(_0x457972),this[_0x3da4(0x0)]=_0x25bb87,this[_0x3da4(0x1)]=_0x14314c,this[_0x3da4(0x2)]=_0x137846,this['name']='ApiError';}}const checkNetworkConnection=async()=>{const _0x5ab6b4={'oqsXt':function(_0xeac4ae,_0x1da370){return _0xeac4ae===_0x1da370;}},_0x8ab78f=await NetInfo[_0x3da4(0x3)]();return _0x5ab6b4[_0x3da4(0x4)](_0x8ab78f[_0x3da4(0x5)],!![]);},makeUserApiRequest=async(_0x11971a,_0x5c6dc4,_0x999c10={})=>{const _0x45f2ea={'xxMHw':_0x3da4(0x6),'wYIXM':_0x3da4(0x7),'nhNbQ':_0x3da4(0x8),'XnKCS':_0x3da4(0x9),'iZICq':function(_0x462224,_0x220719){return _0x462224===_0x220719;},'mlPfL':_0x3da4(0xa),'naZdt':function(_0x5ed40a,_0x244202){return _0x5ed40a>=_0x244202;},'MegnU':_0x3da4(0xb),'QiZXU':'unknown_error','gjKLD':function(_0xc15980,_0x573d5e){return _0xc15980===_0x573d5e;},'TeFdK':_0x3da4(0xc),'ruFlQ':function(_0x531928,_0x4264fd){return _0x531928===_0x4264fd;},'eAUlb':function(_0x2931c6){return _0x2931c6();},'eesUm':_0x3da4(0xd),'HCuKn':_0x3da4(0xe),'LRdmv':function(_0x40f8e3,_0x3558f5){return _0x40f8e3!==_0x3558f5;},'xLRvk':'AGjKK','HsBYW':'User\x20not\x20authenticated.\x20Please\x20verify\x20email\x20first.','YtBfi':_0x3da4(0xf),'Mhpqe':_0x3da4(0x10),'YQcPY':function(_0x2b04fb,_0x58df07,_0x1152ce){return _0x2b04fb(_0x58df07,_0x1152ce);},'VOqNa':'User\x20API\x20Request','mDKNd':_0x3da4(0x11),'rtHwP':function(_0x22054a,_0x55d0f1){return _0x22054a||_0x55d0f1;},'wrvDd':_0x3da4(0x12),'voxAf':_0x3da4(0x13),'XSKmk':function(_0x1e5bf6,_0x115571){return _0x1e5bf6===_0x115571;},'MbrxJ':function(_0x45e88f,_0x1b10a3){return _0x45e88f===_0x1b10a3;},'FaMYR':function(_0x4d1a78,_0x5f0b52){return _0x4d1a78===_0x5f0b52;},'HHaGa':_0x3da4(0x14),'SPfGJ':function(_0x456a18,_0x2e1ed0,_0x17c21b){return _0x456a18(_0x2e1ed0,_0x17c21b);},'QKKQN':_0x3da4(0x15),'HwdaP':_0x3da4(0x16)},{data:_0xbdfec7,headers:headers={},debug:debug=![]}=_0x999c10;try{const _0x4757c6=await _0x45f2ea[_0x3da4(0x17)](checkNetworkConnection);if(!_0x4757c6)throw new ApiError(_0x45f2ea[_0x3da4(0x18)],_0x45f2ea[_0x3da4(0x19)]);if(!_0x45f2ea['eAUlb'](isUserAuthenticated)){if(_0x45f2ea[_0x3da4(0x1a)](_0x45f2ea[_0x3da4(0x1b)],_0x45f2ea[_0x3da4(0x1b)]))throw new _0x29f97f(_0x45f2ea[_0x3da4(0x1c)],_0x45f2ea[_0x3da4(0x1d)]);else throw new ApiError(_0x45f2ea[_0x3da4(0x1e)],_0x45f2ea[_0x3da4(0x1f)]);}if(debug){if(_0x45f2ea[_0x3da4(0x20)]===_0x45f2ea[_0x3da4(0x21)])return{'isValid':![],'message':_0x1f32fc[_0x3da4(0x22)]};else _0x45f2ea[_0x3da4(0x23)](logDebug,_0x45f2ea['VOqNa'],{'endpoint':_0x11971a,'method':_0x5c6dc4,'headers':{...headers,'Authorization':_0x45f2ea['mDKNd']},'data':_0x45f2ea[_0x3da4(0x24)](_0xbdfec7,null)});}const _0x389669=await _0x45f2ea[_0x3da4(0x23)](makeUserRequest,_0x11971a,{'method':_0x5c6dc4,'headers':headers,..._0xbdfec7?{'body':JSON['stringify'](_0xbdfec7)}:{}}),_0xe5b040=await _0x389669[_0x3da4(0x25)]();if(debug){if(_0x45f2ea['ruFlQ'](_0x3da4(0x26),_0x45f2ea[_0x3da4(0x27)]))throw new _0xa44695(_0x45f2ea['nhNbQ'],_0x45f2ea[_0x3da4(0x1f)]);else _0x45f2ea[_0x3da4(0x23)](logDebug,_0x45f2ea[_0x3da4(0x28)],{'status':_0x389669[_0x3da4(0x29)],'data':_0xe5b040});}if(!_0x389669['ok']){var _0xfbc3b7,_0x1a6443,_0x806c42;const _0x1c6e96=_0x45f2ea[_0x3da4(0x2a)](_0x389669[_0x3da4(0x29)],0x191)||_0x45f2ea['ruFlQ'](_0x389669[_0x3da4(0x29)],0x193)?_0x3da4(0x9):_0x45f2ea['XSKmk'](_0x389669[_0x3da4(0x29)],0x190)?'validation_error':_0x389669[_0x3da4(0x29)]>=0x1f4?_0x45f2ea[_0x3da4(0x2b)]:_0x45f2ea[_0x3da4(0x2c)];throw new ApiError((_0x45f2ea['iZICq'](_0xfbc3b7=_0xe5b040[_0x3da4(0x2d)],null)||_0x45f2ea['ruFlQ'](_0xfbc3b7,void 0x0)?void 0x0:_0xfbc3b7[_0x3da4(0x22)])||_0x45f2ea['TeFdK'],_0x1c6e96,_0x45f2ea[_0x3da4(0x2e)](_0x1a6443=_0xe5b040['error'],null)||_0x1a6443===void 0x0?void 0x0:_0x1a6443['code'],(_0x806c42=_0xe5b040['error'])===null||_0x45f2ea[_0x3da4(0x2f)](_0x806c42,void 0x0)?void 0x0:_0x806c42['details']);}return _0xe5b040;}catch(_0x5186d6){if(_0x5186d6 instanceof ApiError)throw _0x5186d6;if(_0x45f2ea[_0x3da4(0x2e)](_0x5186d6[_0x3da4(0x30)],_0x3da4(0x31))){if(_0x45f2ea[_0x3da4(0x32)]===_0x45f2ea[_0x3da4(0x32)])throw new ApiError(_0x45f2ea[_0x3da4(0x1c)],_0x45f2ea[_0x3da4(0x1d)]);else{var _0x4c7985,_0x569472,_0x4fbae1;const _0x3f288e=_0x45f2ea[_0x3da4(0x33)](_0x24b470[_0x3da4(0x29)],0x191)||_0x45f2ea[_0x3da4(0x33)](_0x8de512[_0x3da4(0x29)],0x193)?_0x45f2ea[_0x3da4(0x1f)]:_0x45f2ea[_0x3da4(0x33)](_0x1d5f70[_0x3da4(0x29)],0x190)?_0x45f2ea['mlPfL']:_0x45f2ea[_0x3da4(0x34)](_0xca0450[_0x3da4(0x29)],0x1f4)?_0x45f2ea['MegnU']:_0x45f2ea[_0x3da4(0x2c)];throw new _0x2265de((_0x45f2ea[_0x3da4(0x2a)](_0x4c7985=_0x21f549[_0x3da4(0x2d)],null)||_0x4c7985===void 0x0?void 0x0:_0x4c7985[_0x3da4(0x22)])||_0x45f2ea[_0x3da4(0x35)],_0x3f288e,(_0x569472=_0x42db27['error'])===null||_0x569472===void 0x0?void 0x0:_0x569472[_0x3da4(0x1)],_0x45f2ea[_0x3da4(0x36)](_0x4fbae1=_0x1d8df7[_0x3da4(0x2d)],null)||_0x4fbae1===void 0x0?void 0x0:_0x4fbae1['details']);}}debug&&_0x45f2ea[_0x3da4(0x37)](logDebug,_0x45f2ea[_0x3da4(0x38)],{'endpoint':_0x11971a,'method':_0x5c6dc4,'error':_0x5186d6[_0x3da4(0x22)]||_0x45f2ea[_0x3da4(0x39)]});throw new ApiError(_0x5186d6[_0x3da4(0x22)]||_0x3da4(0x3a),_0x45f2ea[_0x3da4(0x2c)]);}},makeDeveloperApiRequest=async(_0x263108,_0x4fa486,_0x4fbfae={})=>{const _0x42f846={'kDjhD':function(_0x13d759,_0x47c711){return _0x13d759 instanceof _0x47c711;},'vWNqt':function(_0x35b7e7,_0x1cf4a2){return _0x35b7e7===_0x1cf4a2;},'KTgKk':'AbortError','obtTH':_0x3da4(0x6),'klIAu':_0x3da4(0x7),'SCWAk':function(_0x218d49,_0x57fcb4,_0x5dada4){return _0x218d49(_0x57fcb4,_0x5dada4);},'AMwGd':_0x3da4(0x15),'TXmIk':_0x3da4(0x16),'AMuFu':_0x3da4(0x3b),'MZpAY':_0x3da4(0x3c),'cXgiC':function(_0x3c80eb){return _0x3c80eb();},'nsZfZ':'No\x20username\x20available\x20-\x20either\x20provide\x20username\x20or\x20ensure\x20JWT\x20token\x20is\x20valid','ZDljK':_0x3da4(0x9),'OLato':function(_0x9026db,_0x1df211,_0x3dad56,_0x4f46fb){return _0x9026db(_0x1df211,_0x3dad56,_0x4f46fb);},'ivPhT':_0x3da4(0x3d),'bjAiZ':function(_0x16d255,_0xee63a4,_0x586fce){return _0x16d255(_0xee63a4,_0x586fce);},'tcnad':function(_0x396015,_0x505b27){return _0x396015!==_0x505b27;},'MYmUw':_0x3da4(0x3e),'nBnso':function(_0x3dd017){return _0x3dd017();},'phcev':_0x3da4(0xd),'bPLnC':_0x3da4(0x3f),'wTQIH':function(_0x4cd7e2,_0x4ab267,_0x483794){return _0x4cd7e2(_0x4ab267,_0x483794);},'MHmOi':_0x3da4(0x40),'gGVaT':function(_0x2ae70d,_0x35919e){return _0x2ae70d||_0x35919e;},'DQXVU':function(_0x52b2e1,_0x1152d7,_0x4c5154){return _0x52b2e1(_0x1152d7,_0x4c5154);},'oeMcO':_0x3da4(0x41),'iWXss':_0x3da4(0x42),'bhNyP':'validation_error','lcaBE':function(_0x48953c,_0x58715f){return _0x48953c>=_0x58715f;},'AzSGT':_0x3da4(0xb),'UEGzN':function(_0x62635b,_0xdd0adf){return _0x62635b===_0xdd0adf;},'hHVnk':_0x3da4(0x43),'jnSpE':_0x3da4(0x44),'rNuHb':'uSQsk'},{data:_0x562322,headers:headers={},debug:debug=![]}=_0x4fbfae;try{if(_0x42f846['tcnad'](_0x3da4(0x45),_0x42f846[_0x3da4(0x46)])){const _0x3866a9=await _0x42f846['nBnso'](checkNetworkConnection);if(!_0x3866a9)throw new ApiError(_0x42f846[_0x3da4(0x47)],_0x3da4(0xe));if(debug){if(_0x42f846[_0x3da4(0x48)](_0x42f846[_0x3da4(0x49)],_0x42f846['bPLnC'])){if(_0x42f846[_0x3da4(0x4a)](_0x4ca751,_0x122261))throw _0x3064a6;if(_0x42f846[_0x3da4(0x4b)](_0x309ac2[_0x3da4(0x30)],_0x42f846['KTgKk']))throw new _0x46b09b(_0x42f846[_0x3da4(0x4c)],_0x42f846['klIAu']);_0x502d4a&&_0x42f846[_0x3da4(0x4d)](_0x557889,_0x42f846['AMwGd'],{'endpoint':_0x43b81d,'method':_0x3c28ae,'error':_0x131a96[_0x3da4(0x22)]||_0x42f846['TXmIk']});throw new _0x212fbf(_0x2b498c[_0x3da4(0x22)]||_0x3da4(0x3a),_0x42f846[_0x3da4(0x4e)]);}else _0x42f846[_0x3da4(0x4f)](logDebug,_0x42f846[_0x3da4(0x50)],{'endpoint':_0x263108,'method':_0x4fa486,'headers':{...headers,'Authorization':_0x3da4(0x11)},'data':_0x42f846[_0x3da4(0x51)](_0x562322,null)});}const _0x521c62=await _0x42f846['DQXVU'](makeDeveloperRequest,_0x263108,{'method':_0x4fa486,'headers':headers,..._0x562322?{'body':JSON[_0x3da4(0x52)](_0x562322)}:{}}),_0x50ed3d=await _0x521c62[_0x3da4(0x25)]();debug&&logDebug(_0x42f846['oeMcO'],{'status':_0x521c62['status'],'data':_0x50ed3d});if(!_0x521c62['ok']){if(_0x42f846[_0x3da4(0x53)]!==_0x42f846[_0x3da4(0x53)])_0x42f846[_0x3da4(0x4d)](_0x5bb9d5,_0x42f846['MZpAY'],{'endpoint':_0x267eca,'method':_0x22251c,'error':_0x134811['message']||_0x42f846[_0x3da4(0x54)]});else{var _0x4d6e11,_0x556bc2,_0x1ef0bf;const _0x443719=_0x42f846[_0x3da4(0x4b)](_0x521c62[_0x3da4(0x29)],0x191)||_0x42f846['vWNqt'](_0x521c62[_0x3da4(0x29)],0x193)?'auth_error':_0x42f846[_0x3da4(0x4b)](_0x521c62[_0x3da4(0x29)],0x190)?_0x42f846[_0x3da4(0x55)]:_0x42f846[_0x3da4(0x56)](_0x521c62['status'],0x1f4)?_0x42f846[_0x3da4(0x57)]:_0x42f846[_0x3da4(0x4e)];throw new ApiError((_0x42f846[_0x3da4(0x4b)](_0x4d6e11=_0x50ed3d[_0x3da4(0x2d)],null)||_0x42f846[_0x3da4(0x4b)](_0x4d6e11,void 0x0)?void 0x0:_0x4d6e11['message'])||'API\x20request\x20failed',_0x443719,_0x42f846['vWNqt'](_0x556bc2=_0x50ed3d[_0x3da4(0x2d)],null)||_0x42f846[_0x3da4(0x4b)](_0x556bc2,void 0x0)?void 0x0:_0x556bc2[_0x3da4(0x1)],_0x42f846[_0x3da4(0x4b)](_0x1ef0bf=_0x50ed3d['error'],null)||_0x42f846[_0x3da4(0x58)](_0x1ef0bf,void 0x0)?void 0x0:_0x1ef0bf[_0x3da4(0x2)]);}}return _0x50ed3d;}else throw _0x4c06cc;}catch(_0x4d6fdf){if(_0x4d6fdf instanceof ApiError){if(_0x42f846['hHVnk']===_0x42f846[_0x3da4(0x59)]){const {debug:debug=![],username:_0x3ef1df}=_0x2731b7,_0x57c724=_0x3ef1df||_0x42f846['cXgiC'](_0x48b480);if(!_0x57c724)throw new _0x387803(_0x42f846['nsZfZ'],_0x42f846[_0x3da4(0x5a)]);return _0x42f846[_0x3da4(0x5b)](_0x27bde0,_0x42f846[_0x3da4(0x5c)],'POST',{'data':{'username':_0x57c724,'pin':_0x4f7d6c},'debug':debug});}else throw _0x4d6fdf;}if(_0x42f846[_0x3da4(0x58)](_0x4d6fdf['name'],_0x42f846[_0x3da4(0x5d)]))throw new ApiError(_0x42f846['obtTH'],_0x42f846[_0x3da4(0x5e)]);debug&&(_0x42f846['tcnad'](_0x42f846[_0x3da4(0x5f)],_0x42f846[_0x3da4(0x5f)])?_0x42f846[_0x3da4(0x60)](_0x3af6f8,_0x42f846['AMwGd'],{'endpoint':_0x3bce7b,'method':_0x320745,'error':_0x2b7781[_0x3da4(0x22)]||_0x42f846['TXmIk']}):_0x42f846[_0x3da4(0x61)](logDebug,_0x3da4(0x3c),{'endpoint':_0x263108,'method':_0x4fa486,'error':_0x4d6fdf[_0x3da4(0x22)]||_0x42f846[_0x3da4(0x54)]}));throw new ApiError(_0x4d6fdf[_0x3da4(0x22)]||_0x3da4(0x3a),_0x3da4(0x3b));}};export const validateCredentials=async(_0x20e351,_0x26c69f={'debug':![]})=>{const _0x3287fc={'irrto':function(_0x4f0ae8,_0x9edec,_0x31ba09,_0x4af7b8){return _0x4f0ae8(_0x9edec,_0x31ba09,_0x4af7b8);},'Ulhkm':_0x3da4(0x62),'wlklF':function(_0x503243,_0x59de46){return _0x503243===_0x59de46;},'rgzYz':function(_0x529311,_0x2762c1){return _0x529311===_0x2762c1;},'JXWtz':function(_0x58fa5b,_0x4c165e){return _0x58fa5b===_0x4c165e;}};try{var _0x3a37ad,_0x5db92f;const _0x277ef5=await _0x3287fc[_0x3da4(0x63)](makeUserApiRequest,_0x3287fc['Ulhkm'],'POST',{'data':{'username':_0x20e351},'debug':_0x26c69f[_0x3da4(0x64)]});return{'isValid':_0x277ef5[_0x3da4(0x65)]&&_0x3287fc[_0x3da4(0x66)](_0x3287fc['wlklF'](_0x3a37ad=_0x277ef5[_0x3da4(0x67)],null)||_0x3287fc[_0x3da4(0x68)](_0x3a37ad,void 0x0)?void 0x0:_0x3a37ad[_0x3da4(0x69)],!![]),'message':(_0x5db92f=_0x277ef5[_0x3da4(0x2d)])===null||_0x3287fc[_0x3da4(0x6a)](_0x5db92f,void 0x0)?void 0x0:_0x5db92f[_0x3da4(0x22)]};}catch(_0xf88db){return{'isValid':![],'message':_0xf88db['message']};}};export const createAccount=async(_0x393408,_0x215e38={'debug':![]})=>{const _0x29641a={'EwlXr':function(_0x56f374,_0x4b7ec4,_0x4c4029,_0x22ec85){return _0x56f374(_0x4b7ec4,_0x4c4029,_0x22ec85);},'NcTfH':_0x3da4(0x6b)};return _0x29641a[_0x3da4(0x6c)](makeDeveloperApiRequest,_0x29641a[_0x3da4(0x6d)],'POST',{'data':{'username':_0x393408[_0x3da4(0x6e)],'platforms':_0x393408[_0x3da4(0x6f)]},'debug':_0x215e38[_0x3da4(0x64)]});};export const authenticate=async(_0x408fa4,_0x25e407={'debug':![]})=>{const _0x78f8a2={'RvqWI':function(_0x4396f6,_0x133972,_0x3b5379,_0x51b57c){return _0x4396f6(_0x133972,_0x3b5379,_0x51b57c);},'GhbjJ':_0x3da4(0x70)};return _0x78f8a2[_0x3da4(0x71)](makeUserApiRequest,_0x78f8a2[_0x3da4(0x72)],'POST',{'data':{'username':_0x408fa4[_0x3da4(0x6e)],'pin':_0x408fa4['userPin']},'debug':_0x25e407[_0x3da4(0x64)]});};export const refreshToken=async(_0x4b7461,_0x270e2d={'debug':![]})=>{const _0x280930={'yPNxj':function(_0x431103,_0x21a898,_0x3ba96e,_0x908447){return _0x431103(_0x21a898,_0x3ba96e,_0x908447);},'yFaEm':'auth/refresh'};return _0x280930[_0x3da4(0x73)](makeUserApiRequest,_0x280930[_0x3da4(0x74)],'POST',{'data':{'refreshToken':_0x4b7461},'debug':_0x270e2d[_0x3da4(0x64)]});};export const getPlatformData=async(_0x461b66,_0x1d912a={'debug':![]})=>{const _0x2d7137={'VfcGf':function(_0x292041,_0x31c1e0,_0x4fc888,_0x14d27e){return _0x292041(_0x31c1e0,_0x4fc888,_0x14d27e);}};return _0x2d7137[_0x3da4(0x75)](makeUserApiRequest,_0x3da4(0x76)+_0x461b66+_0x3da4(0x77),'GET',{'debug':_0x1d912a['debug']});};function _0x3da4(_0x5c9bfa,_0x3da41f){_0x5c9bfa=_0x5c9bfa-0x0;const _0x19bb1a=_0x5c9b();let _0x495e97=_0x19bb1a[_0x5c9bfa];return _0x495e97;}export const getUserProfile=async(_0x973c73={'debug':![]})=>{const _0x4bcf95={'BxHay':function(_0x1e465e,_0x2b67c6,_0x35958e,_0x2b9a7a){return _0x1e465e(_0x2b67c6,_0x35958e,_0x2b9a7a);},'KcqJD':'user/profile'};return _0x4bcf95[_0x3da4(0x78)](makeUserApiRequest,_0x4bcf95[_0x3da4(0x79)],'GET',{'debug':_0x973c73[_0x3da4(0x64)]});};export const updatePlatformConnections=async(_0x435fa8,_0x35992f={'debug':![]})=>{const _0x4d29bd={'MDAaF':function(_0x15c386,_0x5c88c6,_0x3ae46e,_0xf07cb1){return _0x15c386(_0x5c88c6,_0x3ae46e,_0xf07cb1);},'eypiU':'user/platforms'};return _0x4d29bd[_0x3da4(0x7a)](makeUserApiRequest,_0x4d29bd[_0x3da4(0x7b)],'PUT',{'data':{'platforms':_0x435fa8},'debug':_0x35992f[_0x3da4(0x64)]});};export const storePIN=async(_0x43bb67,_0x5c28fb={})=>{const _0x30b341={'zzeta':function(_0x3d5ec8){return _0x3d5ec8();},'LIjKo':'No\x20username\x20available\x20-\x20either\x20provide\x20username\x20or\x20ensure\x20JWT\x20token\x20is\x20valid','kpaPo':'auth_error','eXgHC':'store-pin/mobile'},{debug:debug=![],username:_0x1cc22d}=_0x5c28fb,_0x4f26d9=_0x1cc22d||_0x30b341['zzeta'](extractUsernameFromJWT);if(!_0x4f26d9)throw new ApiError(_0x30b341[_0x3da4(0x7c)],_0x30b341[_0x3da4(0x7d)]);return makeUserApiRequest(_0x30b341[_0x3da4(0x7e)],'POST',{'data':{'username':_0x4f26d9,'pin':_0x43bb67},'debug':debug});};export const getCurrentUserToken=async()=>{return await getJWT();};export const isCurrentUserAuthenticated=()=>{const _0x2b3429={'DzVno':function(_0x4cb6d8){return _0x4cb6d8();}};return _0x2b3429[_0x3da4(0x7f)](isUserAuthenticated);};
|
|
1
|
+
import NetInfo from'@react-native-community/netinfo';import{logDebug}from'./debugHelper';function _0x2643(_0x1540c4,_0x264315){_0x1540c4=_0x1540c4-0x0;const _0x239dd6=_0x1540();let _0x4be254=_0x239dd6[_0x1540c4];return _0x4be254;}import{getJWT,makeUserRequest,makeDeveloperRequest,isUserAuthenticated,extractUsernameFromJWT}from'../services/apiKeyService';export class ApiError extends Error{constructor(_0x2bc913,_0x1afd96,_0x346bc6,_0x2dc4a8){const _0x1abcfc={'vITIZ':'4|3|1|0|2','YLZSN':_0x2643(0x0)},_0x510faf=_0x1abcfc[_0x2643(0x1)][_0x2643(0x2)]('|');let _0x842ded=0x0;while(!![]){switch(_0x510faf[_0x842ded++]){case'0':this[_0x2643(0x3)]=_0x2dc4a8;continue;case'1':this['code']=_0x346bc6;continue;case'2':this['name']=_0x1abcfc[_0x2643(0x4)];continue;case'3':this[_0x2643(0x5)]=_0x1afd96;continue;case'4':super(_0x2bc913);continue;}break;}}}const checkNetworkConnection=async()=>{const _0x313302={'zpHeY':function(_0x88d3ab,_0x4a89f5){return _0x88d3ab===_0x4a89f5;}},_0x5821ab=await NetInfo[_0x2643(0x6)]();return _0x313302[_0x2643(0x7)](_0x5821ab[_0x2643(0x8)],!![]);},makeUserApiRequest=async(_0x44ede1,_0x81bdb2,_0x1382ba={})=>{const _0xf45a4={'cbklr':_0x2643(0x9),'KNNdC':_0x2643(0xa),'DzoCy':'auth_error','yCOdW':function(_0x5492d4){return _0x5492d4();},'ltEzX':'User\x20API\x20Error','gcvKb':_0x2643(0xb),'LTemS':function(_0x5ed171,_0x2ed507){return _0x5ed171!==_0x2ed507;},'dEsBV':'pWZfN','TtZMu':_0x2643(0xc),'dXkuk':_0x2643(0xd),'JwAMX':'No\x20network\x20connection\x20available','OkQyA':function(_0x12adad){return _0x12adad();},'WSnch':_0x2643(0xe),'pQzQt':_0x2643(0xf),'RbrWt':_0x2643(0x10),'tVByH':_0x2643(0x11),'sPZnT':function(_0x5d02bf,_0x2dae79,_0x1a279d){return _0x5d02bf(_0x2dae79,_0x1a279d);},'ifdfZ':function(_0xd27c4a,_0x4f6a3e){return _0xd27c4a!==_0x4f6a3e;},'ZPfla':_0x2643(0x12),'aCpdj':function(_0x104adc,_0x57e897,_0x5d1bf1){return _0x104adc(_0x57e897,_0x5d1bf1);},'SNnmB':function(_0x3936d5,_0x433d59){return _0x3936d5===_0x433d59;},'UtKrQ':'validation_error','sguJG':function(_0x46a2a0,_0x478054){return _0x46a2a0>=_0x478054;},'PpAfz':_0x2643(0x13),'HshJm':function(_0x415837,_0x3a7a16){return _0x415837===_0x3a7a16;},'RQWjF':function(_0x130198,_0x1f1dcd){return _0x130198===_0x1f1dcd;},'lWugF':function(_0x5072ca,_0x56b78c){return _0x5072ca===_0x56b78c;},'Plbwd':function(_0x2bce51,_0x320695){return _0x2bce51===_0x320695;},'ZTFnp':_0x2643(0x14),'SCfZh':'RPEgF','KkkFS':function(_0x1f5f13,_0x55de3a){return _0x1f5f13 instanceof _0x55de3a;},'cKKFr':function(_0x48e25d,_0x236b0c){return _0x48e25d===_0x236b0c;},'hgIwd':_0x2643(0x15),'FzMZt':_0x2643(0x16),'xZVnG':function(_0x11b530,_0x4c99af,_0x2380dc){return _0x11b530(_0x4c99af,_0x2380dc);},'vyDOy':_0x2643(0x17)},{data:_0x1d6769,headers:headers={},debug:debug=![]}=_0x1382ba;try{if(_0xf45a4[_0x2643(0x18)](_0xf45a4[_0x2643(0x19)],_0xf45a4['TtZMu'])){const _0x195082=await _0xf45a4[_0x2643(0x1a)](checkNetworkConnection);if(!_0x195082){if(_0xf45a4['LTemS'](_0x2643(0x1b),_0xf45a4['dXkuk']))throw new ApiError(_0xf45a4[_0x2643(0x1c)],_0x2643(0x1d));else return _0x1f4172(_0xf45a4['cbklr'],'POST',{'data':{'refreshToken':_0x17661a},'debug':_0x593b11[_0x2643(0x1e)]});}if(!_0xf45a4[_0x2643(0x1f)](isUserAuthenticated)){if(_0xf45a4[_0x2643(0x18)](_0x2643(0x20),_0xf45a4[_0x2643(0x21)]))throw new ApiError(_0xf45a4[_0x2643(0x22)],_0xf45a4[_0x2643(0x23)]);else throw new _0x3f69a1(_0xf45a4['KNNdC'],_0xf45a4[_0x2643(0x23)]);}debug&&logDebug(_0xf45a4[_0x2643(0x24)],{'endpoint':_0x44ede1,'method':_0x81bdb2,'headers':{...headers,'Authorization':_0xf45a4[_0x2643(0x25)]},'data':_0x1d6769||null});const _0xcb57d3=await _0xf45a4['sPZnT'](makeUserRequest,_0x44ede1,{'method':_0x81bdb2,'headers':headers,..._0x1d6769?{'body':JSON[_0x2643(0x26)](_0x1d6769)}:{}}),_0x2eea57=await _0xcb57d3[_0x2643(0x27)]();if(debug){if(_0xf45a4['ifdfZ'](_0xf45a4['ZPfla'],_0xf45a4[_0x2643(0x28)]))return{'isValid':![],'message':_0x2853e8[_0x2643(0x29)]};else _0xf45a4[_0x2643(0x2a)](logDebug,'User\x20API\x20Response',{'status':_0xcb57d3[_0x2643(0x2b)],'data':_0x2eea57});}if(!_0xcb57d3['ok']){var _0x24d90f,_0x2fa711,_0x2dd7a1;const _0x44e6d2=_0xcb57d3['status']===0x191||_0xf45a4[_0x2643(0x2c)](_0xcb57d3[_0x2643(0x2b)],0x193)?_0xf45a4[_0x2643(0x23)]:_0xf45a4[_0x2643(0x2c)](_0xcb57d3['status'],0x190)?_0xf45a4[_0x2643(0x2d)]:_0xf45a4[_0x2643(0x2e)](_0xcb57d3[_0x2643(0x2b)],0x1f4)?_0xf45a4['PpAfz']:_0x2643(0x2f);throw new ApiError((_0xf45a4['HshJm'](_0x24d90f=_0x2eea57[_0x2643(0x30)],null)||_0xf45a4[_0x2643(0x31)](_0x24d90f,void 0x0)?void 0x0:_0x24d90f[_0x2643(0x29)])||'API\x20request\x20failed',_0x44e6d2,_0xf45a4[_0x2643(0x32)](_0x2fa711=_0x2eea57['error'],null)||_0xf45a4['RQWjF'](_0x2fa711,void 0x0)?void 0x0:_0x2fa711['code'],_0xf45a4[_0x2643(0x32)](_0x2dd7a1=_0x2eea57['error'],null)||_0x2dd7a1===void 0x0?void 0x0:_0x2dd7a1['details']);}return _0x2eea57;}else throw _0x5c5617;}catch(_0x33bcd3){if(_0xf45a4[_0x2643(0x33)](_0xf45a4[_0x2643(0x34)],_0xf45a4['SCfZh'])){const {debug:debug=![],username:_0x593157}=_0x4d0091,_0x4d844c=_0x593157||_0xf45a4[_0x2643(0x1a)](_0x4870f4);if(!_0x4d844c)throw new _0x389532(_0xf45a4[_0x2643(0x35)],_0xf45a4[_0x2643(0x23)]);return _0x14464c(_0x2643(0x36),'POST',{'data':{'username':_0x4d844c,'pin':_0x36c90a},'debug':debug});}else{if(_0xf45a4[_0x2643(0x37)](_0x33bcd3,ApiError))throw _0x33bcd3;if(_0xf45a4[_0x2643(0x38)](_0x33bcd3[_0x2643(0x39)],_0x2643(0x3a)))throw new ApiError(_0x2643(0x3b),_0xf45a4[_0x2643(0x3c)]);debug&&(_0xf45a4[_0x2643(0x38)](_0xf45a4[_0x2643(0x3d)],'xUgTn')?_0x160135(_0xf45a4[_0x2643(0x3e)],{'endpoint':_0x2d8ca6,'method':_0xeea997,'error':_0x195643[_0x2643(0x29)]||_0xf45a4['gcvKb']}):_0xf45a4[_0x2643(0x3f)](logDebug,_0x2643(0x40),{'endpoint':_0x44ede1,'method':_0x81bdb2,'error':_0x33bcd3[_0x2643(0x29)]||_0xf45a4[_0x2643(0x41)]}));throw new ApiError(_0x33bcd3[_0x2643(0x29)]||_0xf45a4[_0x2643(0x42)],_0x2643(0x2f));}}},makeDeveloperApiRequest=async(_0x14de2b,_0xaa5f7b,_0x1c9a8a={})=>{const _0x46f729={'siXZn':function(_0x173fb2){return _0x173fb2();},'acWsy':function(_0x41ea1b,_0x49edfb){return _0x41ea1b===_0x49edfb;},'gKsAi':'auth_error','abfZu':'validation_error','NBKYZ':_0x2643(0x13),'OBGdQ':_0x2643(0x2f),'VNynI':function(_0x14e155,_0x419d24){return _0x14e155===_0x419d24;},'cPSzH':function(_0x579a8f,_0x15bdbf){return _0x579a8f===_0x15bdbf;},'kAYpQ':'API\x20request\x20failed','MBwBM':function(_0x1b7051,_0x20bd84){return _0x1b7051===_0x20bd84;},'TflZY':_0x2643(0xf),'AWrYB':_0x2643(0x43),'UHOSH':function(_0x49825f){return _0x49825f();},'siLTV':'network_error','lHtMX':function(_0x3d1eef,_0x3751c1,_0x58b065){return _0x3d1eef(_0x3751c1,_0x58b065);},'NUuLD':_0x2643(0x44),'imdxZ':function(_0x49277a,_0x24342d){return _0x49277a||_0x24342d;},'DquII':function(_0x56baa9,_0xacbe26,_0x48ac09){return _0x56baa9(_0xacbe26,_0x48ac09);},'iXGCN':'PpQFC','EfNxN':_0x2643(0x45),'NHeEj':function(_0x453cfc,_0x5f0f87){return _0x453cfc>=_0x5f0f87;},'lWVGi':function(_0x391f47,_0x24e7dd){return _0x391f47===_0x24e7dd;},'YkyFW':function(_0x473d2a,_0x1c0e6a){return _0x473d2a===_0x1c0e6a;},'jTRcP':function(_0x290ba1,_0x3b3089){return _0x290ba1!==_0x3b3089;},'eEZPL':'ODRKW','lYFiy':'ScKjw','bOJRS':function(_0x2dbd74,_0x34690e){return _0x2dbd74===_0x34690e;},'PoalQ':'AbortError','zlavv':_0x2643(0x46),'eOCTH':_0x2643(0x3b),'RnzdN':'Unknown\x20error','xvewM':_0x2643(0x17)},{data:_0x263454,headers:headers={},debug:debug=![]}=_0x1c9a8a;try{const _0x27b7d5=await _0x46f729[_0x2643(0x47)](checkNetworkConnection);if(!_0x27b7d5)throw new ApiError(_0x46f729[_0x2643(0x48)],_0x46f729[_0x2643(0x49)]);debug&&_0x46f729[_0x2643(0x4a)](logDebug,_0x46f729[_0x2643(0x4b)],{'endpoint':_0x14de2b,'method':_0xaa5f7b,'headers':{...headers,'Authorization':_0x2643(0x11)},'data':_0x46f729[_0x2643(0x4c)](_0x263454,null)});const _0x404aa8=await _0x46f729[_0x2643(0x4d)](makeDeveloperRequest,_0x14de2b,{'method':_0xaa5f7b,'headers':headers,..._0x263454?{'body':JSON['stringify'](_0x263454)}:{}}),_0x4bbe9f=await _0x404aa8[_0x2643(0x27)]();if(debug){if(_0x46f729[_0x2643(0x4e)]!==_0x2643(0x4f))logDebug(_0x46f729[_0x2643(0x50)],{'status':_0x404aa8[_0x2643(0x2b)],'data':_0x4bbe9f});else return _0x46f729[_0x2643(0x51)](_0x144c72);}if(!_0x404aa8['ok']){var _0x2e88c5,_0x5a50bb,_0x8ff296;const _0x35938f=_0x46f729[_0x2643(0x52)](_0x404aa8['status'],0x191)||_0x404aa8[_0x2643(0x2b)]===0x193?_0x46f729[_0x2643(0x53)]:_0x404aa8[_0x2643(0x2b)]===0x190?_0x46f729[_0x2643(0x54)]:_0x46f729[_0x2643(0x55)](_0x404aa8['status'],0x1f4)?_0x46f729[_0x2643(0x56)]:_0x46f729['OBGdQ'];throw new ApiError((_0x46f729[_0x2643(0x57)](_0x2e88c5=_0x4bbe9f['error'],null)||_0x2e88c5===void 0x0?void 0x0:_0x2e88c5[_0x2643(0x29)])||_0x46f729[_0x2643(0x58)],_0x35938f,_0x46f729[_0x2643(0x59)](_0x5a50bb=_0x4bbe9f[_0x2643(0x30)],null)||_0x46f729[_0x2643(0x5a)](_0x5a50bb,void 0x0)?void 0x0:_0x5a50bb[_0x2643(0x5b)],_0x46f729[_0x2643(0x5c)](_0x8ff296=_0x4bbe9f[_0x2643(0x30)],null)||_0x8ff296===void 0x0?void 0x0:_0x8ff296[_0x2643(0x3)]);}return _0x4bbe9f;}catch(_0x5b94ef){if(_0x46f729['jTRcP'](_0x46f729['eEZPL'],_0x46f729[_0x2643(0x5d)])){var _0x4bc8aa,_0x3bdb4e,_0x5e8c48;const _0x1a01f8=_0x46f729[_0x2643(0x52)](_0x17d35e[_0x2643(0x2b)],0x191)||_0x46f729['acWsy'](_0x32acd9[_0x2643(0x2b)],0x193)?_0x46f729[_0x2643(0x53)]:_0x46f729[_0x2643(0x52)](_0x213a17[_0x2643(0x2b)],0x190)?_0x46f729[_0x2643(0x54)]:_0x39efa8[_0x2643(0x2b)]>=0x1f4?_0x46f729[_0x2643(0x56)]:_0x46f729[_0x2643(0x5e)];throw new _0x13594a((_0x46f729[_0x2643(0x5f)](_0x4bc8aa=_0x3c2cdc['error'],null)||_0x46f729[_0x2643(0x59)](_0x4bc8aa,void 0x0)?void 0x0:_0x4bc8aa[_0x2643(0x29)])||_0x46f729[_0x2643(0x58)],_0x1a01f8,_0x46f729[_0x2643(0x57)](_0x3bdb4e=_0x4f055d[_0x2643(0x30)],null)||_0x3bdb4e===void 0x0?void 0x0:_0x3bdb4e[_0x2643(0x5b)],_0x46f729['MBwBM'](_0x5e8c48=_0x3c53f4[_0x2643(0x30)],null)||_0x46f729['cPSzH'](_0x5e8c48,void 0x0)?void 0x0:_0x5e8c48[_0x2643(0x3)]);}else{if(_0x5b94ef instanceof ApiError){if(_0x2643(0x60)===_0x46f729[_0x2643(0x61)])throw _0x5b94ef;else throw new _0x1f3f6a(_0x46f729[_0x2643(0x62)],_0x46f729[_0x2643(0x53)]);}if(_0x46f729['bOJRS'](_0x5b94ef[_0x2643(0x39)],_0x46f729[_0x2643(0x63)])){if(_0x46f729['jTRcP'](_0x46f729[_0x2643(0x64)],_0x46f729[_0x2643(0x64)]))throw new _0x1545e(_0x46f729[_0x2643(0x48)],_0x2643(0x1d));else throw new ApiError(_0x46f729[_0x2643(0x65)],'timeout_error');}debug&&logDebug(_0x2643(0x66),{'endpoint':_0x14de2b,'method':_0xaa5f7b,'error':_0x5b94ef[_0x2643(0x29)]||_0x46f729[_0x2643(0x67)]});throw new ApiError(_0x5b94ef[_0x2643(0x29)]||_0x46f729['xvewM'],_0x46f729['OBGdQ']);}}};export const validateCredentials=async(_0x4676d1,_0x80d7e3={'debug':![]})=>{const _0x46aadc={'RgAdV':function(_0x2e69a9,_0x5336f1){return _0x2e69a9===_0x5336f1;},'vbmMz':_0x2643(0x68),'yRFNL':'validation_error','rdXyQ':function(_0x4f945d,_0x524cce){return _0x4f945d>=_0x524cce;},'skfRz':_0x2643(0x13),'HBJHT':function(_0x3f0929,_0x7ba476){return _0x3f0929===_0x7ba476;},'aSkRj':_0x2643(0x69),'SQCLR':function(_0x40bd35,_0x5eab52){return _0x40bd35===_0x5eab52;},'rKzDC':function(_0x44df2f,_0x356d74){return _0x44df2f===_0x356d74;},'tTPmI':'VAUQr','AQZud':function(_0x12bba8,_0x53afc2,_0x489e89,_0x4c2c70){return _0x12bba8(_0x53afc2,_0x489e89,_0x4c2c70);},'iflIe':_0x2643(0x6a)};try{if(_0x46aadc[_0x2643(0x6b)](_0x46aadc[_0x2643(0x6c)],_0x46aadc['tTPmI'])){var _0x35e810,_0x56c4a9;const _0x109f74=await _0x46aadc[_0x2643(0x6d)](makeUserApiRequest,_0x46aadc['iflIe'],'POST',{'data':{'username':_0x4676d1},'debug':_0x80d7e3[_0x2643(0x1e)]});return{'isValid':_0x109f74['success']&&_0x46aadc['HBJHT'](_0x46aadc[_0x2643(0x6e)](_0x35e810=_0x109f74[_0x2643(0x6f)],null)||_0x35e810===void 0x0?void 0x0:_0x35e810[_0x2643(0x70)],!![]),'message':_0x46aadc[_0x2643(0x71)](_0x56c4a9=_0x109f74[_0x2643(0x30)],null)||_0x56c4a9===void 0x0?void 0x0:_0x56c4a9[_0x2643(0x29)]};}else{var _0x364675,_0x3a80d5,_0x3611ae;const _0x4c87bd=_0x46aadc['RgAdV'](_0x4ecf24['status'],0x191)||_0x46aadc[_0x2643(0x6e)](_0x8fed83[_0x2643(0x2b)],0x193)?_0x46aadc['vbmMz']:_0xb9916a[_0x2643(0x2b)]===0x190?_0x46aadc[_0x2643(0x72)]:_0x46aadc[_0x2643(0x73)](_0x52b480['status'],0x1f4)?_0x46aadc[_0x2643(0x74)]:_0x2643(0x2f);throw new _0x5c90a1((_0x46aadc[_0x2643(0x75)](_0x364675=_0x2aeed5[_0x2643(0x30)],null)||_0x46aadc[_0x2643(0x75)](_0x364675,void 0x0)?void 0x0:_0x364675['message'])||_0x46aadc[_0x2643(0x76)],_0x4c87bd,_0x46aadc['SQCLR'](_0x3a80d5=_0x2dabe8[_0x2643(0x30)],null)||_0x3a80d5===void 0x0?void 0x0:_0x3a80d5[_0x2643(0x5b)],(_0x3611ae=_0x26feb7[_0x2643(0x30)])===null||_0x46aadc[_0x2643(0x6e)](_0x3611ae,void 0x0)?void 0x0:_0x3611ae['details']);}}catch(_0x3e0f2d){return{'isValid':![],'message':_0x3e0f2d[_0x2643(0x29)]};}};export const createAccount=async(_0x440252,_0x308d4f={'debug':![]})=>{const _0x4219aa={'tiGPS':function(_0x44d860,_0x171862,_0xf42209,_0x46288b){return _0x44d860(_0x171862,_0xf42209,_0x46288b);},'RyoGo':_0x2643(0x77)};return _0x4219aa[_0x2643(0x78)](makeDeveloperApiRequest,_0x4219aa[_0x2643(0x79)],'POST',{'data':{'username':_0x440252[_0x2643(0x7a)],'platforms':_0x440252['platforms']},'debug':_0x308d4f[_0x2643(0x1e)]});};export const authenticate=async(_0x10aab4,_0x4e1c72={'debug':![]})=>{const _0x1d5cb4={'VOXul':function(_0x32465f,_0x35707a,_0x5c97f7,_0x1685f4){return _0x32465f(_0x35707a,_0x5c97f7,_0x1685f4);},'yxhAd':_0x2643(0x7b)};return _0x1d5cb4[_0x2643(0x7c)](makeUserApiRequest,_0x1d5cb4[_0x2643(0x7d)],'POST',{'data':{'username':_0x10aab4[_0x2643(0x7a)],'pin':_0x10aab4[_0x2643(0x7e)]},'debug':_0x4e1c72[_0x2643(0x1e)]});};export const refreshToken=async(_0x29f54f,_0x331ea9={'debug':![]})=>{const _0x4ef5b5={'SKxow':function(_0x4427da,_0x1ca404,_0x5eed04,_0xa0e07c){return _0x4427da(_0x1ca404,_0x5eed04,_0xa0e07c);},'QxjMY':_0x2643(0x9)};return _0x4ef5b5[_0x2643(0x7f)](makeUserApiRequest,_0x4ef5b5[_0x2643(0x80)],'POST',{'data':{'refreshToken':_0x29f54f},'debug':_0x331ea9['debug']});};export const getPlatformData=async(_0x407ae0,_0x1bbba3={'debug':![]})=>{const _0x268447={'HVNgY':function(_0x4761e9,_0x5739fa,_0x4ca81c,_0x3a895f){return _0x4761e9(_0x5739fa,_0x4ca81c,_0x3a895f);}};return _0x268447[_0x2643(0x81)](makeUserApiRequest,_0x2643(0x82)+_0x407ae0+'/data','GET',{'debug':_0x1bbba3[_0x2643(0x1e)]});};export const getUserProfile=async(_0x1a681b={'debug':![]})=>{const _0xe90486={'gDJrc':_0x2643(0x83)};return makeUserApiRequest(_0xe90486['gDJrc'],'GET',{'debug':_0x1a681b[_0x2643(0x1e)]});};export const updatePlatformConnections=async(_0x2fe8a5,_0x19f119={'debug':![]})=>{const _0x5a237b={'kedjy':function(_0x4045c2,_0x1c96a3,_0x1b2177,_0x49c362){return _0x4045c2(_0x1c96a3,_0x1b2177,_0x49c362);},'GZAKt':_0x2643(0x84)};return _0x5a237b[_0x2643(0x85)](makeUserApiRequest,_0x5a237b['GZAKt'],'PUT',{'data':{'platforms':_0x2fe8a5},'debug':_0x19f119[_0x2643(0x1e)]});};function _0x1540(){const _0x3f2b47=['ApiError','vITIZ','split','details','YLZSN','type','fetch','zpHeY','isConnected','auth/refresh','No\x20username\x20available\x20-\x20either\x20provide\x20username\x20or\x20ensure\x20JWT\x20token\x20is\x20valid','Unknown\x20error','yezXw','bCkUE','gOCOC','User\x20not\x20authenticated.\x20Please\x20verify\x20email\x20first.','User\x20API\x20Request','[REDACTED]','XyWMh','server_error','XXxjr','timeout_error','gzHey','An\x20unexpected\x20error\x20occurred','LTemS','dEsBV','yCOdW','FcvuJ','JwAMX','network_error','debug','OkQyA','qZJlf','WSnch','pQzQt','DzoCy','RbrWt','tVByH','stringify','json','ZPfla','message','aCpdj','status','SNnmB','UtKrQ','sguJG','unknown_error','error','RQWjF','lWugF','Plbwd','ZTFnp','KNNdC','store-pin/mobile','KkkFS','cKKFr','name','AbortError','Request\x20timed\x20out','hgIwd','FzMZt','ltEzX','xZVnG','User\x20API\x20Error','gcvKb','vyDOy','No\x20network\x20connection\x20available','Developer\x20API\x20Request','Developer\x20API\x20Response','zhWiC','UHOSH','AWrYB','siLTV','lHtMX','NUuLD','imdxZ','DquII','iXGCN','gTfiq','EfNxN','siXZn','acWsy','gKsAi','abfZu','NHeEj','NBKYZ','MBwBM','kAYpQ','cPSzH','lWVGi','code','YkyFW','eEZPL','OBGdQ','VNynI','ScKjw','lYFiy','TflZY','PoalQ','zlavv','eOCTH','Developer\x20API\x20Error','RnzdN','auth_error','API\x20request\x20failed','auth/validate','rKzDC','tTPmI','AQZud','RgAdV','data','isValid','SQCLR','yRFNL','rdXyQ','skfRz','HBJHT','aSkRj','auth/register','tiGPS','RyoGo','username','auth/login','VOXul','yxhAd','userPin','SKxow','QxjMY','HVNgY','platforms/','user/profile','user/platforms','kedjy','Qbspm','cqVrM','zCUNi'];_0x1540=function(){return _0x3f2b47;};return _0x1540();}export const storePIN=async(_0x47a1dd,_0x4cae2e={})=>{const _0x5b151f={'Qbspm':_0x2643(0xa),'cqVrM':'auth_error','bjRZI':function(_0x4358af,_0x297b22,_0x40d9a7,_0x3f2ef5){return _0x4358af(_0x297b22,_0x40d9a7,_0x3f2ef5);},'zCUNi':_0x2643(0x36)},{debug:debug=![],username:_0x13bfbb}=_0x4cae2e,_0x350984=_0x13bfbb||extractUsernameFromJWT();if(!_0x350984)throw new ApiError(_0x5b151f[_0x2643(0x86)],_0x5b151f[_0x2643(0x87)]);return _0x5b151f['bjRZI'](makeUserApiRequest,_0x5b151f[_0x2643(0x88)],'POST',{'data':{'username':_0x350984,'pin':_0x47a1dd},'debug':debug});};export const getCurrentUserToken=async()=>{const _0x5805cd={'oCyRr':function(_0x56e009){return _0x56e009();}};return await _0x5805cd['oCyRr'](getJWT);};export const isCurrentUserAuthenticated=()=>{const _0x764131={'lqdix':function(_0xec7a22){return _0xec7a22();}};return _0x764131['lqdix'](isUserAuthenticated);};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function _0x5de3(_0x3e2059,_0x5de3e4){_0x3e2059=_0x3e2059-0x0;const _0x1b89ef=_0x3e20();let _0x5813cc=_0x1b89ef[_0x3e2059];return _0x5813cc;}import{initializePlatformAuthService}from'../services/platformAuthService';export const executeOnairosFlow=async _0x299563=>{const _0x219ba6={'LRVmO':function(_0x2872e3,_0x55ab79){return _0x2872e3(_0x55ab79);},'MSXgG':function(_0xabc3a0,_0x20d6a2){return _0xabc3a0||_0x20d6a2;},'uQMLt':'Onairos\x20flow\x20was\x20rejected','nvcPt':function(_0x1418bb,_0x20731e){return _0x1418bb===_0x20731e;},'daXal':_0x5de3(0x0),'lWKLs':_0x5de3(0x1),'RhbTJ':function(_0xcd14fd,_0x4dbb9f){return _0xcd14fd(_0x4dbb9f);},'icEhN':_0x5de3(0x2),'rLnOm':function(_0x4100bc,_0x13a906){return _0x4100bc!==_0x13a906;},'aNapg':'BAZeo','RrJGn':_0x5de3(0x3),'msFxf':function(_0x5d0144){return _0x5d0144();},'KEHKK':'❌\x20Failed\x20to\x20execute\x20Onairos\x20flow:'};try{if(_0x219ba6[_0x5de3(0x4)](_0x219ba6['aNapg'],_0x219ba6[_0x5de3(0x5)]))_0x2b9de0['onResolved'](_0x21478e,_0xa0029,_0x46f418);else{console['log'](_0x219ba6[_0x5de3(0x6)]),await _0x219ba6['msFxf'](initializePlatformAuthService);const {UniversalOnboarding:_0x39d79c}=await import(_0x5de3(0x7)),React=await import('react');return new Promise((_0x385851,_0x80c1a3)=>{const _0x258ca3={'zDvpS':_0x5de3(0x8),'nagFU':function(_0x20a305,_0x38697f){return _0x219ba6['LRVmO'](_0x20a305,_0x38697f);},'RQVSR':function(_0xed64ae,_0x48e7e5){return _0x219ba6[_0x5de3(0x9)](_0xed64ae,_0x48e7e5);},'sUiEs':_0x219ba6[_0x5de3(0xa)],'eLuJo':function(_0x585d3a,_0x42a1ad){return _0x219ba6['nvcPt'](_0x585d3a,_0x42a1ad);},'Phwxm':_0x219ba6[_0x5de3(0xb)],'tFkAc':_0x219ba6[_0x5de3(0xc)],'HvoBw':function(_0x176706,_0x37cb40){return _0x219ba6[_0x5de3(0xd)](_0x176706,_0x37cb40);}};let _0x4a170a=null;const _0x1bebc6=(_0x578751,_0x33f07b,_0x47154b)=>{console[_0x5de3(0xe)](_0x5de3(0xf)),_0x4a170a&&_0x4a170a[_0x5de3(0x10)]&&_0x4a170a[_0x5de3(0x10)](),_0x299563[_0x5de3(0x11)]&&_0x299563[_0x5de3(0x11)](_0x578751,_0x33f07b,_0x47154b),_0x385851();},_0x304b99=_0x3e9574=>{_0x258ca3['eLuJo'](_0x5de3(0x12),_0x258ca3[_0x5de3(0x13)])?(_0x5bdf5f['log'](_0x258ca3[_0x5de3(0x14)],_0x448e29),_0x164c4c&&_0x1a82ed[_0x5de3(0x10)]&&_0x8f255f['close'](),_0x4cbc1b['onRejection']&&_0x36dc0f[_0x5de3(0x15)](_0x24df75),_0x258ca3[_0x5de3(0x16)](_0x299fd0,new _0x161691(_0x258ca3[_0x5de3(0x17)](_0x768b17,_0x258ca3['sUiEs'])))):(console[_0x5de3(0xe)](_0x258ca3[_0x5de3(0x14)],_0x3e9574),_0x4a170a&&_0x4a170a[_0x5de3(0x10)]&&_0x4a170a['close'](),_0x299563['onRejection']&&(_0x258ca3['eLuJo'](_0x258ca3[_0x5de3(0x18)],_0x258ca3[_0x5de3(0x18)])?_0x299563[_0x5de3(0x15)](_0x3e9574):_0x104475[_0x5de3(0x10)]()),_0x258ca3[_0x5de3(0x19)](_0x80c1a3,new Error(_0x3e9574||_0x258ca3['sUiEs'])));},_0x107cab=React[_0x5de3(0x1a)](_0x39d79c,{'visible':!![],'onClose':()=>_0x304b99('User\x20closed\x20the\x20modal'),'AppName':_0x299563[_0x5de3(0x1b)],'requestData':_0x299563[_0x5de3(0x1c)],'returnLink':_0x299563['returnLink'],'onComplete':_0x1bebc6,'preferredPlatform':_0x299563[_0x5de3(0x1d)],'debug':_0x299563[_0x5de3(0x1e)],'testMode':_0x299563['testMode']});_0x4a170a=_0x107cab,console[_0x5de3(0xe)](_0x219ba6[_0x5de3(0x1f)]);});}}catch(_0x31a84e){console['error'](_0x219ba6[_0x5de3(0x20)],_0x31a84e);throw _0x31a84e;}};export const startOnairosFlow=async _0xfd2b7d=>{const _0x1aa74a={'TGIir':function(_0x1eee88,_0x1ce961){return _0x1eee88===_0x1ce961;},'KBLfn':_0x5de3(0x21),'YaZYR':_0x5de3(0x22),'JALjQ':_0x5de3(0x23),'GeKHc':'Pre-check\x20failed','IfxDM':function(_0xe833b8,_0x3e5bbb){return _0xe833b8(_0x3e5bbb);}};if(_0xfd2b7d['preCheck']){const _0x7e1418=await _0xfd2b7d[_0x5de3(0x24)]();if(!_0x7e1418){if(_0x1aa74a[_0x5de3(0x25)](_0x1aa74a['KBLfn'],_0x1aa74a['YaZYR'])){_0x4647b3[_0x5de3(0x26)]('❌\x20Failed\x20to\x20execute\x20Onairos\x20flow:',_0xc789c);throw _0x29b61e;}else{console[_0x5de3(0xe)](_0x1aa74a['JALjQ']);_0xfd2b7d['onRejection']&&_0xfd2b7d[_0x5de3(0x15)](_0x1aa74a[_0x5de3(0x27)]);return;}}}return _0x1aa74a['IfxDM'](executeOnairosFlow,_0xfd2b7d);};function _0x3e20(){const _0x47bea9=['JvkNm','rExLX','📱\x20Onairos\x20modal\x20should\x20be\x20displayed','🚀\x20Starting\x20Onairos\x20flow\x20programmatically...','rLnOm','aNapg','RrJGn','../components/UniversalOnboarding','❌\x20Onairos\x20flow\x20rejected:','MSXgG','uQMLt','daXal','lWKLs','RhbTJ','log','✅\x20Onairos\x20flow\x20completed\x20successfully','close','onResolved','FftrK','Phwxm','zDvpS','onRejection','nagFU','RQVSR','tFkAc','HvoBw','createElement','AppName','requestData','preferredPlatform','debug','icEhN','KEHKK','lHaGJ','KxphQ','❌\x20Pre-check\x20failed,\x20not\x20starting\x20Onairos\x20flow','preCheck','TGIir','error','GeKHc'];_0x3e20=function(){return _0x47bea9;};return _0x3e20();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const DEFAULT_RETRY_OPTIONS={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'enableLogging':![],'shouldRetry':(_0xd8935b,_0x3f3829)=>{const _0x3fb1d4={'bcOdx':function(_0x2b72c6,_0x1dc1e7){return _0x2b72c6<=_0x1dc1e7;},'ODYRf':function(_0x4ea9f7,_0x4286ed){return _0x4ea9f7>=_0x4286ed;},'PFyGj':function(_0x5b9c6a,_0x1f6c25){return _0x5b9c6a!==_0x1f6c25;},'omkxf':'Network\x20request\x20failed','stMEU':'ENOTFOUND','eXirp':_0x4131(0x0),'LAlTr':function(_0x17e1ba,_0x32bf7d){return _0x17e1ba>=_0x32bf7d;},'Tqpcy':_0x4131(0x1),'uprbz':_0x4131(0x2),'EMzPc':'JSON\x20Parse\x20error','aMaBI':_0x4131(0x3),'GuZBC':_0x4131(0x4)};if(_0x3fb1d4['ODYRf'](_0xd8935b[_0x4131(0x5)],0x190)&&_0xd8935b[_0x4131(0x5)]<0x1f4&&_0x3fb1d4[_0x4131(0x6)](_0xd8935b[_0x4131(0x5)],0x198)&&_0xd8935b[_0x4131(0x5)]!==0x1ad)return![];if(_0xd8935b['name']===_0x4131(0x7)||_0xd8935b['message']['includes'](_0x3fb1d4[_0x4131(0x8)])||_0xd8935b['message'][_0x4131(0x9)]('fetch')||_0xd8935b[_0x4131(0xa)][_0x4131(0x9)](_0x3fb1d4[_0x4131(0xb)])||_0xd8935b['message']['includes'](_0x3fb1d4[_0x4131(0xc)])||_0x3fb1d4[_0x4131(0xd)](_0xd8935b[_0x4131(0x5)],0x1f4))return _0x3fb1d4[_0x4131(0xe)]===_0x3fb1d4[_0x4131(0xf)]?_0x3fb1d4[_0x4131(0x10)](_0x390d16,0x2):!![];if(_0xd8935b[_0x4131(0xa)]['includes'](_0x3fb1d4[_0x4131(0x11)])||_0xd8935b[_0x4131(0xa)][_0x4131(0x9)](_0x4131(0x12)))return _0x3fb1d4['PFyGj'](_0x3fb1d4[_0x4131(0x13)],_0x3fb1d4[_0x4131(0x14)])?!![]:!![];return![];}};export async function withRetry(_0x4e3735,_0x4afeed={}){const _0x3d08ce={'CnWRa':function(_0x28a9fa,_0x524179){return _0x28a9fa-_0x524179;},'jTGto':function(_0x353df7,_0x585d1d){return _0x353df7+_0x585d1d;},'HBskb':function(_0x46b8a3,_0x133eef){return _0x46b8a3===_0x133eef;},'pspbK':_0x4131(0x15),'KZBKW':function(_0x461c56,_0xe856c1){return _0x461c56+_0xe856c1;},'rtmWz':function(_0x4836eb){return _0x4836eb();},'QNyis':function(_0xf29db7,_0x1423d0){return _0xf29db7>_0x1423d0;},'RsTKZ':function(_0x11e400,_0x2755ac){return _0x11e400*_0x2755ac;},'aJpZu':function(_0xab1568,_0x49662d){return _0xab1568*_0x49662d;},'UMjIO':function(_0xe57f01,_0x21bdcf){return _0xe57f01!==_0x21bdcf;},'gOynM':_0x4131(0x16),'TCeNK':function(_0x1d4fcb,_0x2d3f38){return _0x1d4fcb+_0x2d3f38;},'iJYTH':'Unknown\x20error','jipny':function(_0x17183a,_0x4ca08c){return _0x17183a+_0x4ca08c;}},_0x1b9280={...DEFAULT_RETRY_OPTIONS,..._0x4afeed},_0x3b5218=Date[_0x4131(0x17)]();let _0x36f24e=null;for(let _0x5e864=0x1;_0x5e864<=_0x3d08ce[_0x4131(0x18)](_0x1b9280['maxRetries'],0x1);_0x5e864++){try{if(_0x1b9280['enableLogging']&&_0x5e864>0x1){if(_0x3d08ce[_0x4131(0x19)](_0x3d08ce['pspbK'],_0x4131(0x1a)))return!![];else console[_0x4131(0x1b)](_0x4131(0x1c)+_0x5e864+'/'+_0x3d08ce[_0x4131(0x1d)](_0x1b9280[_0x4131(0x1e)],0x1));}const _0x11db98=await _0x3d08ce[_0x4131(0x1f)](_0x4e3735);return{'success':!![],'data':_0x11db98,'attempts':_0x5e864,'totalDuration':Date[_0x4131(0x17)]()-_0x3b5218};}catch(_0x56862f){_0x36f24e=_0x56862f;const _0x3adb79=_0x1b9280[_0x4131(0x20)]?_0x1b9280['shouldRetry'](_0x56862f,_0x5e864):!![];if(_0x3d08ce['QNyis'](_0x5e864,_0x1b9280[_0x4131(0x1e)])||!_0x3adb79){_0x1b9280[_0x4131(0x21)]&&console['error'](_0x4131(0x22)+_0x56862f[_0x4131(0xa)]);break;}let _0x42d47e=_0x1b9280[_0x4131(0x23)];_0x1b9280[_0x4131(0x24)]&&(_0x42d47e=Math[_0x4131(0x25)](_0x3d08ce[_0x4131(0x26)](_0x1b9280['baseDelay'],Math[_0x4131(0x27)](0x2,_0x3d08ce['CnWRa'](_0x5e864,0x1))),_0x1b9280[_0x4131(0x28)]));const _0x52e926=_0x3d08ce['aJpZu'](_0x3d08ce[_0x4131(0x26)](Math['random'](),0.1),_0x42d47e);_0x42d47e=Math['floor'](_0x42d47e+_0x52e926);if(_0x1b9280[_0x4131(0x29)]){if(_0x3d08ce['UMjIO'](_0x3d08ce[_0x4131(0x2a)],_0x4131(0x16)))return{'reachable':![],'error':_0xfeb98a['message'],'duration':_0x3d08ce[_0x4131(0x2b)](_0x1f3370['now'](),_0xc01ce0)};else _0x1b9280['onRetry'](_0x56862f,_0x5e864,_0x42d47e);}_0x1b9280['enableLogging']&&console[_0x4131(0x1b)](_0x4131(0x2c)+_0x42d47e+'ms\x20before\x20retry\x20(attempt\x20'+_0x5e864+'/'+_0x3d08ce[_0x4131(0x2d)](_0x1b9280[_0x4131(0x1e)],0x1)+')'),await new Promise(_0x3db08d=>setTimeout(()=>_0x3db08d(),_0x42d47e));}}return{'success':![],'error':_0x36f24e||new Error(_0x3d08ce[_0x4131(0x2e)]),'attempts':_0x3d08ce['jipny'](_0x1b9280[_0x4131(0x1e)],0x1),'totalDuration':Date['now']()-_0x3b5218};}function _0x3f10(){const _0x242d04=['timeout','sEepz','lrgRG','FFMXD','iSeyO','status','PFyGj','AbortError','omkxf','includes','message','stMEU','eXirp','LAlTr','Tqpcy','uprbz','bcOdx','EMzPc','Unexpected\x20character','aMaBI','GuZBC','KzOCg','QUYnF','now','jTGto','HBskb','PvAOF','log','🔄\x20Retry\x20attempt\x20','KZBKW','maxRetries','rtmWz','shouldRetry','enableLogging','❌\x20All\x20retry\x20attempts\x20exhausted\x20or\x20error\x20not\x20retryable:\x20','baseDelay','exponentialBackoff','min','RsTKZ','pow','maxDelay','onRetry','gOynM','CnWRa','⏳\x20Waiting\x20','TCeNK','iJYTH','Network\x20request\x20failed','fetch','ENOTFOUND','JSON\x20Parse\x20error','FecTw','kzcKR','validation\x20endpoint','HTML\x20page\x20instead\x20of\x20JSON','fTgbB','RHubs','hkWVu','mKJUx','erpmZ','name','DoxCb','jYvYu','mlDXE','UNHeb','bFqLv','qXFMB','hKSZi','xaQxD','DfzvR','kIIlj','uKYYV','lUDUl','KOybQ','OBrPg','lTLWt','ZYGfF','warn','⚠️\x20API\x20call\x20failed\x20(attempt\x20','ms:\x20','DNS','WpJpm','woMdA','pnJgA','AvlsD','iuhIf','AsjTZ','success','dxiTj','yMJxt','azkXB','error','data','hXWOC','OnairosReactNative/HealthCheck','OOxea','LdqIJ','abort','yKsvV','signal','lurkN','SkfvL'];_0x3f10=function(){return _0x242d04;};return _0x3f10();}export const API_RETRY_OPTIONS={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'shouldRetry':(_0x1653cd,_0x2d0d98)=>{const _0x2ceab8={'mKJUx':function(_0x3674da,_0x2a45b9){return _0x3674da>=_0x2a45b9;},'xXbOD':function(_0x56a266,_0x22672c){return _0x56a266<_0x22672c;},'erpmZ':function(_0x4b7eab,_0x19186b){return _0x4b7eab!==_0x19186b;},'fTgbB':function(_0xd5b082,_0x358fbb){return _0xd5b082===_0x358fbb;},'DoxCb':'AbortError','jYvYu':_0x4131(0x2f),'mlDXE':_0x4131(0x30),'UNHeb':_0x4131(0x31),'bFqLv':_0x4131(0x0),'qXFMB':function(_0xd3907b,_0x20544b){return _0xd3907b>=_0x20544b;},'hKSZi':_0x4131(0x32),'xaQxD':_0x4131(0x12),'RHubs':_0x4131(0x33),'hkWVu':_0x4131(0x34),'DfzvR':_0x4131(0x35),'lUDUl':function(_0x5c3974,_0xb207){return _0x5c3974===_0xb207;},'KOybQ':function(_0x54d288,_0x5031d6){return _0x54d288<=_0x5031d6;},'OBrPg':function(_0x1ac2a7,_0x2607f6){return _0x1ac2a7>=_0x2607f6;},'lTLWt':function(_0x2b8438,_0x593178){return _0x2b8438===_0x593178;},'ZYGfF':_0x4131(0x36)};if(_0x2ceab8[_0x4131(0x37)](_0x1653cd[_0x4131(0x5)],0x191)||_0x1653cd[_0x4131(0x5)]===0x193){if(_0x2ceab8[_0x4131(0x38)]!==_0x2ceab8[_0x4131(0x39)])return![];else{if(_0x2ceab8[_0x4131(0x3a)](_0x585fb1[_0x4131(0x5)],0x190)&&_0x2ceab8['xXbOD'](_0x49e67e[_0x4131(0x5)],0x1f4)&&_0x2ceab8[_0x4131(0x3b)](_0x1bc3ce[_0x4131(0x5)],0x198)&&_0x2c4bb4['status']!==0x1ad)return![];if(_0x2ceab8[_0x4131(0x37)](_0x2d846a[_0x4131(0x3c)],_0x2ceab8[_0x4131(0x3d)])||_0xca2a73[_0x4131(0xa)]['includes'](_0x2ceab8[_0x4131(0x3e)])||_0x393ba0[_0x4131(0xa)]['includes'](_0x2ceab8[_0x4131(0x3f)])||_0x96992b[_0x4131(0xa)][_0x4131(0x9)](_0x2ceab8[_0x4131(0x40)])||_0x4c7323['message'][_0x4131(0x9)](_0x2ceab8[_0x4131(0x41)])||_0x2ceab8[_0x4131(0x42)](_0x1fd55c[_0x4131(0x5)],0x1f4))return!![];if(_0x1feec1[_0x4131(0xa)][_0x4131(0x9)](_0x2ceab8[_0x4131(0x43)])||_0x779dff['message'][_0x4131(0x9)](_0x2ceab8[_0x4131(0x44)]))return!![];return![];}}if(_0x2ceab8['fTgbB'](_0x1653cd[_0x4131(0x5)],0x190)||_0x2ceab8[_0x4131(0x37)](_0x1653cd[_0x4131(0x5)],0x194)&&!_0x1653cd['message'][_0x4131(0x9)](_0x2ceab8[_0x4131(0x45)]))return _0x2ceab8[_0x4131(0x3b)](_0x4131(0x46),_0x4131(0x47))?![]:!![];if(_0x2ceab8[_0x4131(0x48)](_0x1653cd['status'],0x1ad))return _0x2ceab8[_0x4131(0x49)](_0x2d0d98,0x2);if(_0x2ceab8[_0x4131(0x4a)](_0x1653cd[_0x4131(0x5)],0x1f4))return!![];if(_0x2ceab8[_0x4131(0x4b)](_0x1653cd['name'],_0x2ceab8[_0x4131(0x3d)])||_0x1653cd[_0x4131(0xa)][_0x4131(0x9)]('timeout')||_0x1653cd['message'][_0x4131(0x9)](_0x2ceab8[_0x4131(0x3e)])||_0x1653cd[_0x4131(0xa)]['includes'](_0x2ceab8[_0x4131(0x3f)])||_0x1653cd[_0x4131(0xa)]['includes'](_0x2ceab8[_0x4131(0x40)]))return!![];if(_0x1653cd[_0x4131(0xa)][_0x4131(0x9)](_0x2ceab8[_0x4131(0x43)])||_0x1653cd[_0x4131(0xa)][_0x4131(0x9)](_0x2ceab8[_0x4131(0x44)])||_0x1653cd[_0x4131(0xa)][_0x4131(0x9)](_0x2ceab8[_0x4131(0x4c)]))return!![];return![];},'onRetry':(_0x3ddf12,_0xfa8e34,_0x569d4b)=>{console[_0x4131(0x4d)](_0x4131(0x4e)+_0xfa8e34+'),\x20retrying\x20in\x20'+_0x569d4b+_0x4131(0x4f)+_0x3ddf12[_0x4131(0xa)]);}};export const NETWORK_RETRY_OPTIONS={'maxRetries':0x2,'baseDelay':0x7d0,'maxDelay':0x1f40,'exponentialBackoff':!![],'shouldRetry':(_0x5ece5e,_0x1872c0)=>{const _0xa9e593={'WpJpm':'Network\x20request\x20failed','woMdA':_0x4131(0x31),'pnJgA':_0x4131(0x50),'AvlsD':function(_0x113109,_0x1f9856){return _0x113109===_0x1f9856;},'iuhIf':_0x4131(0x7)};return _0x5ece5e[_0x4131(0xa)][_0x4131(0x9)](_0xa9e593[_0x4131(0x51)])||_0x5ece5e[_0x4131(0xa)]['includes'](_0xa9e593[_0x4131(0x52)])||_0x5ece5e['message'][_0x4131(0x9)](_0xa9e593[_0x4131(0x53)])||_0xa9e593[_0x4131(0x54)](_0x5ece5e[_0x4131(0x3c)],_0xa9e593[_0x4131(0x55)]);}};function _0x4131(_0x3f10ed,_0x41314c){_0x3f10ed=_0x3f10ed-0x0;const _0x28eb45=_0x3f10();let _0x4eea3a=_0x28eb45[_0x3f10ed];return _0x4eea3a;}export async function fetchWithRetry(_0x16f1d5,_0x5e9d27={},_0x4cbad5=API_RETRY_OPTIONS){const _0x251b59={'AsjTZ':function(_0x343cf2,_0x11fdd9,_0x559ae8){return _0x343cf2(_0x11fdd9,_0x559ae8);},'dxiTj':function(_0x564bd4,_0xefa154){return _0x564bd4!==_0xefa154;},'yMJxt':'CYQqh','azkXB':'styLS'},_0x2d2e7a=await _0x251b59[_0x4131(0x56)](withRetry,()=>fetch(_0x16f1d5,_0x5e9d27),_0x4cbad5);if(!_0x2d2e7a[_0x4131(0x57)]){if(_0x251b59[_0x4131(0x58)](_0x251b59[_0x4131(0x59)],_0x251b59[_0x4131(0x5a)]))throw _0x2d2e7a[_0x4131(0x5b)];else throw _0x24d1e1[_0x4131(0x5b)];}return _0x2d2e7a[_0x4131(0x5c)];}export async function healthCheck(_0xc9a32d,_0x5bc7e1=0x1388){const _0x36564a={'OOxea':_0x4131(0x5d),'LdqIJ':function(_0x4acc8c,_0x4b3691,_0x29b6a0){return _0x4acc8c(_0x4b3691,_0x29b6a0);},'yKsvV':function(_0x57bfee,_0x546823,_0x354ba2){return _0x57bfee(_0x546823,_0x354ba2);},'YvDqO':_0x4131(0x5e),'lurkN':function(_0x1a16e8,_0x30a1a0){return _0x1a16e8(_0x30a1a0);},'SkfvL':function(_0x1c8c9e,_0x424234){return _0x1c8c9e-_0x424234;}},_0x2665a7=Date['now']();try{if(_0x36564a[_0x4131(0x5f)]===_0x4131(0x5d)){const _0x21dab9=new AbortController(),_0x2ba69f=_0x36564a[_0x4131(0x60)](setTimeout,()=>_0x21dab9[_0x4131(0x61)](),_0x5bc7e1),_0x437adc=await _0x36564a[_0x4131(0x62)](fetch,_0xc9a32d,{'method':'GET','signal':_0x21dab9[_0x4131(0x63)],'headers':{'User-Agent':_0x36564a['YvDqO']}});return _0x36564a[_0x4131(0x64)](clearTimeout,_0x2ba69f),{'reachable':!![],'status':_0x437adc[_0x4131(0x5)],'duration':_0x36564a[_0x4131(0x65)](Date['now'](),_0x2665a7)};}else return!![];}catch(_0x43a277){return{'reachable':![],'error':_0x43a277[_0x4131(0xa)],'duration':_0x36564a[_0x4131(0x65)](Date[_0x4131(0x17)](),_0x2665a7)};}}
|
|
1
|
+
export const DEFAULT_RETRY_OPTIONS={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'enableLogging':![],'shouldRetry':(_0x117fa3,_0x32d949)=>{const _0x9a07c7={'DjGfW':function(_0x4fc338,_0x2572f7){return _0x4fc338>=_0x2572f7;},'WwqTx':function(_0x5d8efa,_0x1b98a1){return _0x5d8efa<_0x1b98a1;},'sUNjj':function(_0x211b58,_0x234757){return _0x211b58!==_0x234757;},'eZMOZ':_0x2808(0x0),'GRoyA':_0x2808(0x1),'cTLTf':_0x2808(0x2),'OKeTL':function(_0x453dde,_0x3980b8){return _0x453dde===_0x3980b8;},'qcfpp':_0x2808(0x3),'dpWES':_0x2808(0x4),'nfwEh':_0x2808(0x5),'Cutui':'Unexpected\x20character'};if(_0x9a07c7['DjGfW'](_0x117fa3['status'],0x190)&&_0x9a07c7[_0x2808(0x6)](_0x117fa3[_0x2808(0x7)],0x1f4)&&_0x9a07c7[_0x2808(0x8)](_0x117fa3[_0x2808(0x7)],0x198)&&_0x9a07c7[_0x2808(0x8)](_0x117fa3[_0x2808(0x7)],0x1ad))return![];if(_0x117fa3['name']===_0x2808(0x9)||_0x117fa3['message'][_0x2808(0xa)](_0x9a07c7[_0x2808(0xb)])||_0x117fa3['message'][_0x2808(0xa)]('fetch')||_0x117fa3[_0x2808(0xc)][_0x2808(0xa)](_0x9a07c7[_0x2808(0xd)])||_0x117fa3[_0x2808(0xc)][_0x2808(0xa)](_0x9a07c7[_0x2808(0xe)])||_0x9a07c7[_0x2808(0xf)](_0x117fa3[_0x2808(0x7)],0x1f4))return _0x9a07c7[_0x2808(0x10)](_0x9a07c7[_0x2808(0x11)],_0x9a07c7['dpWES'])?!![]:!![];if(_0x117fa3['message'][_0x2808(0xa)](_0x9a07c7[_0x2808(0x12)])||_0x117fa3[_0x2808(0xc)][_0x2808(0xa)](_0x9a07c7[_0x2808(0x13)]))return!![];return![];}};function _0x2808(_0x1c40f6,_0x280810){_0x1c40f6=_0x1c40f6-0x0;const _0x3f7bad=_0x1c40();let _0x98b054=_0x3f7bad[_0x1c40f6];return _0x98b054;}export async function withRetry(_0x14544b,_0x110a1b={}){const _0x5a0d47={'OHitJ':function(_0x57ecf0,_0x11c2d4){return _0x57ecf0<=_0x11c2d4;},'cRFNp':function(_0x4d7dfc,_0xea1740){return _0x4d7dfc>_0xea1740;},'QchoR':function(_0x3eafdd){return _0x3eafdd();},'Olpgh':function(_0x253af9,_0x2c7724){return _0x253af9-_0x2c7724;},'bfAOm':function(_0x5195a6,_0x51822a){return _0x5195a6!==_0x51822a;},'sWtvV':_0x2808(0x14),'RPjIy':_0x2808(0x15),'yVmGn':function(_0x3dbbf5,_0x1dcd89){return _0x3dbbf5*_0x1dcd89;},'kkmjA':function(_0x4ca2f3,_0x3307ff){return _0x4ca2f3+_0x3307ff;},'hkksQ':function(_0xc21cb4,_0x2ddc2d){return _0xc21cb4+_0x2ddc2d;},'KgNrf':_0x2808(0x16),'xRBWt':function(_0x2d5771,_0x2ece70){return _0x2d5771+_0x2ece70;}},_0x529aa0={...DEFAULT_RETRY_OPTIONS,..._0x110a1b},_0x3bec73=Date[_0x2808(0x17)]();let _0x1f4446=null;for(let _0x2b0643=0x1;_0x5a0d47['OHitJ'](_0x2b0643,_0x529aa0['maxRetries']+0x1);_0x2b0643++){try{_0x529aa0[_0x2808(0x18)]&&_0x5a0d47[_0x2808(0x19)](_0x2b0643,0x1)&&console[_0x2808(0x1a)](_0x2808(0x1b)+_0x2b0643+'/'+(_0x529aa0[_0x2808(0x1c)]+0x1));const _0x206013=await _0x5a0d47[_0x2808(0x1d)](_0x14544b);return{'success':!![],'data':_0x206013,'attempts':_0x2b0643,'totalDuration':_0x5a0d47[_0x2808(0x1e)](Date['now'](),_0x3bec73)};}catch(_0x1c75bf){if(_0x5a0d47[_0x2808(0x1f)](_0x5a0d47[_0x2808(0x20)],_0x5a0d47[_0x2808(0x21)])){_0x1f4446=_0x1c75bf;const _0x41bece=_0x529aa0[_0x2808(0x22)]?_0x529aa0[_0x2808(0x22)](_0x1c75bf,_0x2b0643):!![];if(_0x5a0d47[_0x2808(0x19)](_0x2b0643,_0x529aa0[_0x2808(0x1c)])||!_0x41bece){_0x529aa0[_0x2808(0x18)]&&console[_0x2808(0x23)](_0x2808(0x24)+_0x1c75bf[_0x2808(0xc)]);break;}let _0x3e1487=_0x529aa0[_0x2808(0x25)];_0x529aa0[_0x2808(0x26)]&&(_0x3e1487=Math['min'](_0x5a0d47['yVmGn'](_0x529aa0[_0x2808(0x25)],Math['pow'](0x2,_0x5a0d47[_0x2808(0x1e)](_0x2b0643,0x1))),_0x529aa0[_0x2808(0x27)]));const _0x14cbaf=_0x5a0d47[_0x2808(0x28)](Math[_0x2808(0x29)]()*0.1,_0x3e1487);_0x3e1487=Math[_0x2808(0x2a)](_0x5a0d47[_0x2808(0x2b)](_0x3e1487,_0x14cbaf)),_0x529aa0[_0x2808(0x2c)]&&_0x529aa0[_0x2808(0x2c)](_0x1c75bf,_0x2b0643,_0x3e1487),_0x529aa0[_0x2808(0x18)]&&console[_0x2808(0x1a)](_0x2808(0x2d)+_0x3e1487+_0x2808(0x2e)+_0x2b0643+'/'+_0x5a0d47[_0x2808(0x2f)](_0x529aa0[_0x2808(0x1c)],0x1)+')'),await new Promise(_0x9006e4=>setTimeout(()=>_0x9006e4(),_0x3e1487));}else _0x2543e5[_0x2808(0x23)](_0x2808(0x24)+_0x145af4[_0x2808(0xc)]);}}return{'success':![],'error':_0x1f4446||new Error(_0x5a0d47[_0x2808(0x30)]),'attempts':_0x5a0d47[_0x2808(0x31)](_0x529aa0[_0x2808(0x1c)],0x1),'totalDuration':_0x5a0d47[_0x2808(0x1e)](Date['now'](),_0x3bec73)};}export const API_RETRY_OPTIONS={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'shouldRetry':(_0x31655f,_0x3c50ab)=>{const _0x1149cd={'mbCdM':function(_0x2ba978,_0x52724b){return _0x2ba978+_0x52724b;},'QbjfK':'Network\x20request\x20failed','SKsoA':_0x2808(0x32),'LreFU':'AbortError','pKUVx':function(_0x473fbf,_0x4162ce){return _0x473fbf*_0x4162ce;},'lUSTa':function(_0x36d725,_0x2bd338){return _0x36d725===_0x2bd338;},'jjsAt':function(_0x182d48,_0x12d3b9){return _0x182d48===_0x12d3b9;},'egsvR':_0x2808(0x33),'gGJcC':'validation\x20endpoint','bupQj':'vrNLG','qsLev':function(_0xc26f96,_0x44477c){return _0xc26f96<=_0x44477c;},'WonCY':function(_0x2d6ee1,_0x2857c7){return _0x2d6ee1>=_0x2857c7;},'JSUqm':_0x2808(0x2),'VcPBi':_0x2808(0x34),'Cvaxb':_0x2808(0x1),'HJcqh':function(_0x4facd8,_0x15242b){return _0x4facd8===_0x15242b;},'KRAeV':_0x2808(0x35),'Hzcbq':'JSON\x20Parse\x20error','drmDZ':_0x2808(0x36),'HJhZj':'HTML\x20page\x20instead\x20of\x20JSON'};if(_0x1149cd['lUSTa'](_0x31655f['status'],0x191)||_0x1149cd[_0x2808(0x37)](_0x31655f[_0x2808(0x7)],0x193)){if(_0x1149cd[_0x2808(0x38)](_0x1149cd[_0x2808(0x39)],_0x1149cd[_0x2808(0x39)]))return![];else _0x36520c[_0x2808(0x1a)](_0x2808(0x2d)+_0x4c5d19+_0x2808(0x2e)+_0x121865+'/'+_0x1149cd[_0x2808(0x3a)](_0x4afe0b[_0x2808(0x1c)],0x1)+')');}if(_0x31655f['status']===0x190||_0x1149cd[_0x2808(0x38)](_0x31655f['status'],0x194)&&!_0x31655f[_0x2808(0xc)][_0x2808(0xa)](_0x1149cd[_0x2808(0x3b)]))return![];if(_0x1149cd['jjsAt'](_0x31655f[_0x2808(0x7)],0x1ad))return _0x1149cd[_0x2808(0x3c)]!==_0x1149cd[_0x2808(0x3c)]?_0x59e2e6['message'][_0x2808(0xa)](_0x1149cd[_0x2808(0x3d)])||_0x190423[_0x2808(0xc)][_0x2808(0xa)](_0x2808(0x1))||_0x2d9669[_0x2808(0xc)][_0x2808(0xa)](_0x1149cd[_0x2808(0x3e)])||_0x183265['name']===_0x1149cd[_0x2808(0x3f)]:_0x1149cd[_0x2808(0x40)](_0x3c50ab,0x2);if(_0x1149cd[_0x2808(0x41)](_0x31655f[_0x2808(0x7)],0x1f4))return!![];if(_0x1149cd[_0x2808(0x37)](_0x31655f[_0x2808(0x42)],_0x1149cd[_0x2808(0x3f)])||_0x31655f[_0x2808(0xc)][_0x2808(0xa)](_0x1149cd['JSUqm'])||_0x31655f[_0x2808(0xc)][_0x2808(0xa)](_0x1149cd[_0x2808(0x3d)])||_0x31655f['message'][_0x2808(0xa)](_0x1149cd['VcPBi'])||_0x31655f[_0x2808(0xc)][_0x2808(0xa)](_0x1149cd[_0x2808(0x43)])){if(_0x1149cd['HJcqh'](_0x1149cd[_0x2808(0x44)],_0x2808(0x45)))_0x3bb3fb=_0x3d9c24[_0x2808(0x46)](_0x1149cd[_0x2808(0x47)](_0x9a3752['baseDelay'],_0x5de975[_0x2808(0x48)](0x2,_0x16189a-0x1)),_0xb83dd9[_0x2808(0x27)]);else return!![];}if(_0x31655f[_0x2808(0xc)][_0x2808(0xa)](_0x1149cd[_0x2808(0x49)])||_0x31655f[_0x2808(0xc)][_0x2808(0xa)](_0x1149cd[_0x2808(0x4a)])||_0x31655f[_0x2808(0xc)][_0x2808(0xa)](_0x1149cd['HJhZj']))return!![];return![];},'onRetry':(_0x4c5d68,_0x26bc0a,_0x9954f7)=>{console[_0x2808(0x4b)](_0x2808(0x4c)+_0x26bc0a+_0x2808(0x4d)+_0x9954f7+_0x2808(0x4e)+_0x4c5d68[_0x2808(0xc)]);}};function _0x1c40(){const _0x2a54a9=['Network\x20request\x20failed','ENOTFOUND','timeout','KhyYw','aJsMX','JSON\x20Parse\x20error','WwqTx','status','sUNjj','AbortError','includes','eZMOZ','message','GRoyA','cTLTf','DjGfW','OKeTL','qcfpp','nfwEh','Cutui','yQyJX','xUata','Unknown\x20error','now','enableLogging','cRFNp','log','🔄\x20Retry\x20attempt\x20','maxRetries','QchoR','Olpgh','bfAOm','sWtvV','RPjIy','shouldRetry','error','❌\x20All\x20retry\x20attempts\x20exhausted\x20or\x20error\x20not\x20retryable:\x20','baseDelay','exponentialBackoff','maxDelay','yVmGn','random','floor','kkmjA','onRetry','⏳\x20Waiting\x20','ms\x20before\x20retry\x20(attempt\x20','hkksQ','KgNrf','xRBWt','DNS','maqDH','fetch','vYkOM','Unexpected\x20character','lUSTa','jjsAt','egsvR','mbCdM','gGJcC','bupQj','QbjfK','SKsoA','LreFU','qsLev','WonCY','name','Cvaxb','KRAeV','GvwIC','min','pKUVx','pow','Hzcbq','drmDZ','warn','⚠️\x20API\x20call\x20failed\x20(attempt\x20','),\x20retrying\x20in\x20','ms:\x20','yUCJz','goJcQ','success','IzgCN','BVdbR','data','OnairosReactNative/HealthCheck','XybbH','IuGxW','abort','signal'];_0x1c40=function(){return _0x2a54a9;};return _0x1c40();}export const NETWORK_RETRY_OPTIONS={'maxRetries':0x2,'baseDelay':0x7d0,'maxDelay':0x1f40,'exponentialBackoff':!![],'shouldRetry':(_0x17d2a4,_0x5f40f8)=>{const _0x372fba={'fNmcU':'Network\x20request\x20failed','QcDkD':_0x2808(0x32)};return _0x17d2a4[_0x2808(0xc)]['includes'](_0x372fba['fNmcU'])||_0x17d2a4[_0x2808(0xc)]['includes'](_0x2808(0x1))||_0x17d2a4[_0x2808(0xc)][_0x2808(0xa)](_0x372fba['QcDkD'])||_0x17d2a4[_0x2808(0x42)]===_0x2808(0x9);}};export async function fetchWithRetry(_0x5f4382,_0x3bda64={},_0x373db2=API_RETRY_OPTIONS){const _0x35760a={'uNrBM':function(_0x9ce72e,_0x2d3c1f,_0x55c4f0){return _0x9ce72e(_0x2d3c1f,_0x55c4f0);},'IzgCN':function(_0x2210e6,_0x4e5eea){return _0x2210e6!==_0x4e5eea;},'CkfVE':_0x2808(0x4f),'BVdbR':_0x2808(0x50)},_0x1a8264=await _0x35760a['uNrBM'](withRetry,()=>fetch(_0x5f4382,_0x3bda64),_0x373db2);if(!_0x1a8264[_0x2808(0x51)]){if(_0x35760a[_0x2808(0x52)](_0x35760a['CkfVE'],_0x35760a[_0x2808(0x53)]))throw _0x1a8264[_0x2808(0x23)];else return!![];}return _0x1a8264[_0x2808(0x54)];}export async function healthCheck(_0x3ea0bf,_0x4afe77=0x1388){const _0x60931f={'NoRNQ':function(_0x343a94,_0x1ab923){return _0x343a94===_0x1ab923;},'XybbH':'dMNYi','IuGxW':function(_0x5ed8c9,_0x2174f5,_0x18407c){return _0x5ed8c9(_0x2174f5,_0x18407c);},'fHWYi':_0x2808(0x55),'OhOtB':function(_0x31ce29,_0x143b9){return _0x31ce29(_0x143b9);},'kOITy':function(_0x29c51b,_0x49ea01){return _0x29c51b-_0x49ea01;}},_0x386473=Date[_0x2808(0x17)]();try{if(_0x60931f['NoRNQ'](_0x60931f['XybbH'],_0x60931f[_0x2808(0x56)])){const _0x2948f5=new AbortController(),_0x2d56c3=_0x60931f[_0x2808(0x57)](setTimeout,()=>_0x2948f5[_0x2808(0x58)](),_0x4afe77),_0xf181c4=await fetch(_0x3ea0bf,{'method':'GET','signal':_0x2948f5[_0x2808(0x59)],'headers':{'User-Agent':_0x60931f['fHWYi']}});return _0x60931f['OhOtB'](clearTimeout,_0x2d56c3),{'reachable':!![],'status':_0xf181c4[_0x2808(0x7)],'duration':Date[_0x2808(0x17)]()-_0x386473};}else return![];}catch(_0x1be512){return{'reachable':![],'error':_0x1be512['message'],'duration':_0x60931f['kOITy'](Date[_0x2808(0x17)](),_0x386473)};}}
|
|
@@ -4,4 +4,4 @@ var __ONAIROS_REQ_REGISTRY__ = [
|
|
|
4
4
|
require('react-native-keychain')
|
|
5
5
|
];
|
|
6
6
|
function __ONAIROS_REQ_FUNC__(i) { return __ONAIROS_REQ_REGISTRY__[i]; }
|
|
7
|
-
import{Platform}from'react-native';import{STORAGE_KEYS}from'../constants';import AsyncStorage from'@react-native-async-storage/async-storage';const JWT_TOKEN_KEY='onairos_jwt_token',mockStorage={};let Keychain=null;function _0x5ca2(){const _0x518964=['warn','mock','default','function','CWYRm','qPigy','EkBgj','fgJGv','getGenericPassword','ssPNb','service','GxTwM','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/','UAGoF','Keychain\x20access\x20failed,\x20using\x20mock\x20storage','GANmm','uqqND','ySwpS','length','indexOf','charAt','jBAHl','HHdHC','fromCharCode','GhHOs','GugKO','VwVQi','KxYcN','eCfPG','bspxs','MhXJO','kaOYx','setGenericPassword','omgcg','SwOzx','lhdrl','accessControl','ACCESS_CONTROL','BIOMETRY_ANY_OR_DEVICE_PASSCODE','accessible','WHEN_UNLOCKED','cbEPk','PhVQd','LwRfi','TzZSM','resetGenericPassword','hjoPE','aijsv','uHAIX','sDHgZ','HkUcK','Username\x20is\x20required\x20for\x20storing\x20credentials','web','aNsXf','PTxJR','createdAt','now','username','TQMYk','Wjmzy','❌\x20Failed\x20to\x20check\x20JWT\x20token:','ACCESSIBLE','ngqnX','stringify','parse','Weygt','XfMBu','kvsTc','dHTrt','QAyhK','CxuZn','dXNyV','zGrcj','iTCud','OXKhG','error','PVjnl','kLvol','Error\x20checking\x20credentials:','credentials','pmjlH','jtSQb','Error\x20deleting\x20credentials:','MjdqH','WsItf','random','toString','substring','dev_','Error\x20storing\x20credentials:','GwFyT','Error\x20verifying\x20credentials:','KSiwV','ZGBRQ','OGVoy','cahzK','jmrnn','piSNK','getItem','iNSyb','XjYKL','gYZmx','Miyfl','aoHWh','JhBHi','❌\x20Failed\x20to\x20retrieve\x20JWT\x20token:','log','bjaap','❌\x20Failed\x20to\x20clear\x20JWT\x20token:','eyGde','uxWty','frGoK','ntiPZ','zYypE','tzBIZ','FxVOm','❌\x20Failed\x20to\x20decode\x20JWT\x20payload:','arpVM','split','GPrym','zjJIh','wtWdS','JbVoK','WDIco','ZQISz','ZITWX','MwyRj','EBmOy','fKVmU','tkOio','zMdmI','floor','fVzFJ','exp','ENmFb','dCRUF','Error\x20getting\x20credentials:','GwmAw'];_0x5ca2=function(){return _0x518964;};return _0x5ca2();}try{Keychain=__ONAIROS_REQ_FUNC__(0x0);}catch(_0x5c8e6e){console[_0x5113(0x0)]('react-native-keychain module not available, using mock storage'),Keychain={'ACCESS_CONTROL':{'BIOMETRY_ANY_OR_DEVICE_PASSCODE':'mock'},'ACCESSIBLE':{'WHEN_UNLOCKED':_0x5113(0x1)},'getGenericPassword':async()=>null,'setGenericPassword':async()=>!![],'resetGenericPassword':async()=>!![]};}const isKeychainAvailable=()=>{const _0x5d4701={'ssPNb':function(_0x29833f,_0xe4ab22){return _0x29833f===_0xe4ab22;},'fgJGv':function(_0x21f0f9,_0x3c22bc){return _0x21f0f9===_0x3c22bc;},'GxTwM':_0x5113(0x2),'CWYRm':function(_0x20cfff,_0x408dfd){return _0x20cfff!==_0x408dfd;},'EkBgj':'xAaGt','yVGGR':_0x5113(0x3)};try{if(_0x5d4701[_0x5113(0x4)](_0x5113(0x5),_0x5d4701[_0x5113(0x6)]))return Keychain&&_0x5d4701[_0x5113(0x7)](typeof Keychain[_0x5113(0x8)],_0x5d4701['yVGGR']);else{const _0x3d4f26=(_0x5d4701[_0x5113(0x9)](_0x2f3158,null)||_0x5d4701[_0x5113(0x7)](_0xc59b6,void 0x0)?void 0x0:_0x33b5a1[_0x5113(0xa)])||_0x5d4701[_0x5113(0xb)];return delete _0x44371[_0x3d4f26],!![];}}catch(_0x20194a){return![];}},safeGetGenericPassword=async _0x562f3a=>{const _0x52be56={'THgcH':function(_0x4ec6f2,_0x127f3e){return _0x4ec6f2%_0x127f3e;},'ySwpS':_0x5113(0xc),'jBAHl':function(_0xa7c8be,_0x246bb3){return _0xa7c8be+_0x246bb3;},'HHdHC':function(_0x4c8275,_0x749ddc){return _0x4c8275|_0x749ddc;},'GhHOs':function(_0x24b372,_0x4ae8b3){return _0x24b372>>_0x4ae8b3;},'VwVQi':function(_0x1cd779,_0x47324b){return _0x1cd779!==_0x47324b;},'GugKO':function(_0xf35f48,_0x2b6fe7){return _0xf35f48&_0x2b6fe7;},'GANmm':function(_0xadcaa5){return _0xadcaa5();},'BoWDA':_0x5113(0xd),'uqqND':'AmtvA','KrBIa':function(_0x11e5a9,_0x549a27){return _0x11e5a9===_0x549a27;},'KxYcN':_0x5113(0xe)};try{if(_0x52be56[_0x5113(0xf)](isKeychainAvailable)){if(_0x52be56['BoWDA']!==_0x52be56[_0x5113(0x10)])return await Keychain[_0x5113(0x8)](_0x562f3a);else{while(_0x52be56['THgcH'](_0x43d99e['length'],0x4)){_0x3818b3+='=';}const _0x1214bc=_0x52be56[_0x5113(0x11)];let _0x44e95f='';for(let _0x1d089e=0x0;_0x1d089e<_0x3272e0[_0x5113(0x12)];_0x1d089e+=0x4){const _0x3e6329=_0x1214bc[_0x5113(0x13)](_0x211647['charAt'](_0x1d089e)),_0x44ad9b=_0x1214bc[_0x5113(0x13)](_0x26ffad[_0x5113(0x14)](_0x52be56[_0x5113(0x15)](_0x1d089e,0x1))),_0x3cde47=_0x1214bc[_0x5113(0x13)](_0x9f3cca[_0x5113(0x14)](_0x52be56['jBAHl'](_0x1d089e,0x2))),_0x2b753b=_0x1214bc[_0x5113(0x13)](_0x5cfefe['charAt'](_0x52be56['jBAHl'](_0x1d089e,0x3))),_0x2072e1=_0x52be56[_0x5113(0x16)](_0x3e6329<<0x12|_0x44ad9b<<0xc,_0x3cde47<<0x6)|_0x2b753b;_0x44e95f+=_0x49d1dc[_0x5113(0x17)](_0x52be56[_0x5113(0x18)](_0x2072e1,0x10)&0xff);if(_0x52be56['VwVQi'](_0x3cde47,0x40))_0x44e95f+=_0x12d89f[_0x5113(0x17)](_0x52be56[_0x5113(0x19)](_0x2072e1>>0x8,0xff));if(_0x52be56[_0x5113(0x1a)](_0x2b753b,0x40))_0x44e95f+=_0x17c558['fromCharCode'](_0x2072e1&0xff);}return _0x44e95f;}}else{const _0x5aed67=(_0x52be56['KrBIa'](_0x562f3a,null)||_0x52be56['KrBIa'](_0x562f3a,void 0x0)?void 0x0:_0x562f3a['service'])||_0x5113(0x2);return mockStorage[_0x5aed67]||null;}}catch(_0x3fab2e){console[_0x5113(0x0)](_0x52be56[_0x5113(0x1b)],_0x3fab2e);const _0x1dea7d=(_0x562f3a===null||_0x562f3a===void 0x0?void 0x0:_0x562f3a[_0x5113(0xa)])||_0x5113(0x2);return mockStorage[_0x1dea7d]||null;}},safeSetGenericPassword=async(_0xe6773d,_0x91c9cc,_0x4153e9)=>{const _0x31ccdf={'bspxs':function(_0x3c5a64,_0x34dc2c){return _0x3c5a64!==_0x34dc2c;},'MhXJO':'Nytxz','EfMLB':_0x5113(0x1c),'kaOYx':function(_0xc8a0a4){return _0xc8a0a4();},'omgcg':'mukwk','SwOzx':function(_0x1c898a,_0x3f34c7){return _0x1c898a===_0x3f34c7;},'lhdrl':'default'};try{if(_0x31ccdf[_0x5113(0x1d)](_0x31ccdf[_0x5113(0x1e)],_0x31ccdf['EfMLB'])){if(_0x31ccdf[_0x5113(0x1f)](isKeychainAvailable))return await Keychain[_0x5113(0x20)](_0xe6773d,_0x91c9cc,_0x4153e9);else{if(_0x31ccdf[_0x5113(0x1d)](_0x31ccdf['omgcg'],_0x31ccdf[_0x5113(0x21)]))return![];else{const _0x168010=(_0x31ccdf[_0x5113(0x22)](_0x4153e9,null)||_0x4153e9===void 0x0?void 0x0:_0x4153e9['service'])||_0x31ccdf[_0x5113(0x23)];return mockStorage[_0x168010]={'username':_0xe6773d,'password':_0x91c9cc},!![];}}}else _0x3f1e17[_0x5113(0x24)]=Keychain[_0x5113(0x25)][_0x5113(0x26)],_0x7fa058[_0x5113(0x27)]=Keychain['ACCESSIBLE'][_0x5113(0x28)];}catch(_0x4bdb53){console['warn'](_0x5113(0xe),_0x4bdb53);const _0x30c9a5=(_0x31ccdf[_0x5113(0x22)](_0x4153e9,null)||_0x4153e9===void 0x0?void 0x0:_0x4153e9[_0x5113(0xa)])||_0x31ccdf[_0x5113(0x23)];return mockStorage[_0x30c9a5]={'username':_0xe6773d,'password':_0x91c9cc},!![];}},safeResetGenericPassword=async _0x55fa24=>{const _0x51a75a={'hjoPE':function(_0x4597ce){return _0x4597ce();},'cbEPk':function(_0x1b4a16,_0x3d9ff4){return _0x1b4a16===_0x3d9ff4;},'PhVQd':'qtsFa','LwRfi':function(_0x1d4c48){return _0x1d4c48();},'TzZSM':'rOGnA','aijsv':_0x5113(0x2),'HdkmJ':_0x5113(0xe)};try{if(_0x51a75a[_0x5113(0x29)](_0x51a75a['PhVQd'],_0x51a75a[_0x5113(0x2a)])){if(_0x51a75a[_0x5113(0x2b)](isKeychainAvailable)){if(_0x51a75a['cbEPk'](_0x51a75a['TzZSM'],_0x51a75a[_0x5113(0x2c)]))return await Keychain[_0x5113(0x2d)](_0x55fa24);else{if(!_0x51a75a[_0x5113(0x2e)](_0x1f159f))return!![];return!![];}}else{const _0x5ca023=(_0x51a75a[_0x5113(0x29)](_0x55fa24,null)||_0x51a75a[_0x5113(0x29)](_0x55fa24,void 0x0)?void 0x0:_0x55fa24[_0x5113(0xa)])||_0x51a75a[_0x5113(0x2f)];return delete mockStorage[_0x5ca023],!![];}}else{const _0x3698df=(_0x51a75a[_0x5113(0x29)](_0x4cc58f,null)||_0x51a75a[_0x5113(0x29)](_0x121e9f,void 0x0)?void 0x0:_0x30be0e[_0x5113(0xa)])||'default';return _0x43d2f9[_0x3698df]={'username':_0x332402,'password':_0x4b54c8},!![];}}catch(_0x25f306){console[_0x5113(0x0)](_0x51a75a['HdkmJ'],_0x25f306);const _0x4409ed=(_0x51a75a[_0x5113(0x29)](_0x55fa24,null)||_0x51a75a['cbEPk'](_0x55fa24,void 0x0)?void 0x0:_0x55fa24[_0x5113(0xa)])||_0x51a75a[_0x5113(0x2f)];return delete mockStorage[_0x4409ed],!![];}};export const storeCredentials=async _0x1c7188=>{const _0xc9ec34={'kvsTc':function(_0x1189e9,_0x1e3411){return _0x1189e9+_0x1e3411;},'eKIFo':function(_0x1cfac7,_0x245257){return _0x1cfac7+_0x245257;},'dHTrt':function(_0x3b97d1,_0x1c1aa4){return _0x3b97d1+_0x1c1aa4;},'QAyhK':function(_0x9402a,_0x5bfa22){return _0x9402a|_0x5bfa22;},'CxuZn':function(_0x1c3f03,_0x5b0e00){return _0x1c3f03|_0x5b0e00;},'dXNyV':function(_0x5788e0,_0x5b190c){return _0x5788e0<<_0x5b190c;},'OXKhG':function(_0x2f480b,_0x1d689b){return _0x2f480b&_0x1d689b;},'fLleL':function(_0x8359f9,_0x41849f){return _0x8359f9>>_0x41849f;},'zGrcj':function(_0x52ec9d,_0x5e864c){return _0x52ec9d!==_0x5e864c;},'iTCud':function(_0x44d5a6,_0x3167c0){return _0x44d5a6&_0x3167c0;},'aNsXf':_0x5113(0x30),'PTxJR':'PaHsh','bzYcD':function(_0x1ac7d5){return _0x1ac7d5();},'rduni':function(_0x321165,_0x1444af){return _0x321165===_0x1444af;},'TQMYk':function(_0x47ec8c,_0xb01479){return _0x47ec8c===_0xb01479;},'Wjmzy':_0x5113(0x31),'JumQP':_0x5113(0x32),'FrUtU':_0x5113(0x33),'vtKtk':_0x5113(0x34),'ngqnX':function(_0x1e286b,_0x17da67,_0xa5c3cf,_0x372be5){return _0x1e286b(_0x17da67,_0xa5c3cf,_0x372be5);},'Weygt':'EmoPP','XfMBu':'fTPaH'};try{if(_0xc9ec34['zGrcj'](_0xc9ec34[_0x5113(0x35)],_0xc9ec34[_0x5113(0x36)])){const _0x4e038f=await _0xc9ec34['bzYcD'](getCredentials),_0x46c988={..._0x4e038f,..._0x1c7188,'createdAt':(_0xc9ec34['rduni'](_0x4e038f,null)||_0xc9ec34['rduni'](_0x4e038f,void 0x0)?void 0x0:_0x4e038f[_0x5113(0x37)])||Date[_0x5113(0x38)]()},_0x24db82=_0x46c988[_0x5113(0x39)];if(!_0x24db82){if(_0xc9ec34[_0x5113(0x3a)](_0xc9ec34[_0x5113(0x3b)],_0xc9ec34['JumQP']))return _0x380723['error'](_0x5113(0x3c),_0x609264),![];else throw new Error(_0xc9ec34['FrUtU']);}const _0x5a0212={'service':STORAGE_KEYS['credentials']};return _0xc9ec34['zGrcj'](Platform['OS'],_0xc9ec34['vtKtk'])&&isKeychainAvailable()&&(_0x5a0212[_0x5113(0x24)]=Keychain[_0x5113(0x25)][_0x5113(0x26)],_0x5a0212[_0x5113(0x27)]=Keychain[_0x5113(0x3d)][_0x5113(0x28)]),await _0xc9ec34[_0x5113(0x3e)](safeSetGenericPassword,_0x24db82,JSON[_0x5113(0x3f)](_0x46c988),_0x5a0212),!![];}else return _0x61fedc[_0x5113(0x40)](_0x4752ca['password']);}catch(_0x55b281){if(_0xc9ec34[_0x5113(0x41)]===_0xc9ec34[_0x5113(0x42)]){const _0xb59dcb=_0x91ea65[_0x5113(0x13)](_0x5796c8[_0x5113(0x14)](_0x4028a4)),_0x13b5bf=_0x35d112[_0x5113(0x13)](_0x38b71f[_0x5113(0x14)](_0xc9ec34[_0x5113(0x43)](_0x4ced21,0x1))),_0x1c4ccc=_0x44bd86[_0x5113(0x13)](_0x25293d['charAt'](_0xc9ec34['eKIFo'](_0x16679d,0x2))),_0x5a8154=_0x405bb3[_0x5113(0x13)](_0x17f1fc['charAt'](_0xc9ec34[_0x5113(0x44)](_0x201bc2,0x3))),_0xdc9ace=_0xc9ec34[_0x5113(0x45)](_0xc9ec34[_0x5113(0x46)](_0xc9ec34[_0x5113(0x47)](_0xb59dcb,0x12),_0x13b5bf<<0xc),_0xc9ec34[_0x5113(0x47)](_0x1c4ccc,0x6))|_0x5a8154;_0xd2603a+=_0x360521['fromCharCode'](_0xc9ec34['OXKhG'](_0xc9ec34['fLleL'](_0xdc9ace,0x10),0xff));if(_0xc9ec34[_0x5113(0x48)](_0x1c4ccc,0x40))_0x4cbd44+=_0x50cf0e['fromCharCode'](_0xc9ec34[_0x5113(0x49)](_0xdc9ace>>0x8,0xff));if(_0x5a8154!==0x40)_0x11ebc7+=_0x52e8cb[_0x5113(0x17)](_0xc9ec34[_0x5113(0x4a)](_0xdc9ace,0xff));}else return console[_0x5113(0x4b)]('Error\x20storing\x20credentials:',_0x55b281),![];}};export const getCredentials=async()=>{const _0x13b530={'OzZeY':function(_0x3de598,_0x5ee537){return _0x3de598(_0x5ee537);},'PVjnl':'Error\x20getting\x20credentials:'};try{const _0x369f86=await _0x13b530['OzZeY'](safeGetGenericPassword,{'service':STORAGE_KEYS['credentials']});if(_0x369f86)return JSON[_0x5113(0x40)](_0x369f86['password']);return null;}catch(_0x28e803){return console[_0x5113(0x4b)](_0x13b530[_0x5113(0x4c)],_0x28e803),null;}};export const hasCredentials=async()=>{const _0x5772ef={'HykcU':function(_0x2ec8a2,_0x248515){return _0x2ec8a2!==_0x248515;},'pmjlH':_0x5113(0x4d),'jtSQb':_0x5113(0x4e)};try{const _0x19fa34=await safeGetGenericPassword({'service':STORAGE_KEYS[_0x5113(0x4f)]});return!!_0x19fa34;}catch(_0x9fd130){if(_0x5772ef['HykcU'](_0x5772ef[_0x5113(0x50)],_0x5772ef['pmjlH']))try{return Keychain&&typeof Keychain[_0x5113(0x8)]===_0x5113(0x3);}catch(_0x118df2){return![];}else return console[_0x5113(0x4b)](_0x5772ef[_0x5113(0x51)],_0x9fd130),![];}};export const deleteCredentials=async()=>{const _0x9d415e={'MjdqH':_0x5113(0x52)};try{return await safeResetGenericPassword({'service':STORAGE_KEYS['credentials']}),!![];}catch(_0x4531dc){return console[_0x5113(0x4b)](_0x9d415e[_0x5113(0x53)],_0x4531dc),![];}};export const updateCredentials=async _0x3dc007=>{const _0x35650c={'WsItf':function(_0x4755fb,_0x442ced){return _0x4755fb(_0x442ced);}};return _0x35650c[_0x5113(0x54)](storeCredentials,_0x3dc007);};export const generateDeviceUsername=()=>{const _0x58dd22=Math[_0x5113(0x55)]()[_0x5113(0x56)](0x24)[_0x5113(0x57)](0x2,0xa);return _0x5113(0x58)+_0x58dd22;};export const verifyCredentials=async _0x20b8b6=>{const _0x3c1b5f={'OGVoy':_0x5113(0x59),'KSiwV':function(_0x315c48,_0x22f647){return _0x315c48===_0x22f647;},'cahzK':function(_0x2a47f9){return _0x2a47f9();},'jmrnn':function(_0x1b232d,_0x36e278){return _0x1b232d!==_0x36e278;},'ziqkf':_0x5113(0x5a),'piSNK':_0x5113(0x5b)};try{if(_0x3c1b5f[_0x5113(0x5c)](_0x5113(0x5d),'NpxLD'))return _0xfb5612['error'](_0x3c1b5f[_0x5113(0x5e)],_0x8ffbee),![];else{if(!_0x3c1b5f[_0x5113(0x5f)](isKeychainAvailable)){if(_0x3c1b5f[_0x5113(0x60)](_0x3c1b5f['ziqkf'],'GwFyT')){const _0x5e1c1c=(_0x3c1b5f[_0x5113(0x5c)](_0x4107d0,null)||_0x3c1b5f['KSiwV'](_0x4fd361,void 0x0)?void 0x0:_0x1e67fe[_0x5113(0xa)])||_0x5113(0x2);return _0x4d2a07[_0x5e1c1c]||null;}else return!![];}return!![];}}catch(_0x5dd19b){return console[_0x5113(0x4b)](_0x3c1b5f[_0x5113(0x61)],_0x5dd19b),![];}};export const getJWT=async()=>{const _0x22d89e={'hTmaW':'❌\x20Failed\x20to\x20retrieve\x20JWT\x20token:'};try{const _0x43caa4=await AsyncStorage[_0x5113(0x62)](JWT_TOKEN_KEY);return _0x43caa4;}catch(_0x440ad6){return console['error'](_0x22d89e['hTmaW'],_0x440ad6),null;}};export const hasJWT=async()=>{const _0x48c845={'iNSyb':function(_0x32a07f,_0x346651){return _0x32a07f!==_0x346651;},'gYZmx':'XjYKL','BTCjW':_0x5113(0x3c)};try{const _0x4bf293=await AsyncStorage[_0x5113(0x62)](JWT_TOKEN_KEY);return!!_0x4bf293;}catch(_0x3efd2b){if(_0x48c845[_0x5113(0x63)](_0x5113(0x64),_0x48c845[_0x5113(0x65)]))_0x5b93b8+='=';else return console[_0x5113(0x4b)](_0x48c845['BTCjW'],_0x3efd2b),![];}};export const clearJWT=async()=>{const _0x86272={'aoHWh':function(_0x2c57b9,_0xb16411){return _0x2c57b9!==_0xb16411;},'JhBHi':_0x5113(0x66),'bjaap':'🗑️\x20JWT\x20token\x20cleared'};try{return _0x86272[_0x5113(0x67)](_0x86272[_0x5113(0x68)],_0x86272[_0x5113(0x68)])?(_0x53d219[_0x5113(0x4b)](_0x5113(0x69),_0x3a84f7),null):(await AsyncStorage['removeItem'](JWT_TOKEN_KEY),console[_0x5113(0x6a)](_0x86272[_0x5113(0x6b)]),!![]);}catch(_0x3c3ee6){return console[_0x5113(0x4b)](_0x5113(0x6c),_0x3c3ee6),![];}};const base64Decode=_0x43127d=>{const _0x4dca38={'DmbDP':function(_0x19c534,_0x10c79e){return _0x19c534%_0x10c79e;},'eyGde':_0x5113(0xc),'uRlbQ':function(_0x320412,_0xf6ac2b){return _0x320412<_0xf6ac2b;},'uxWty':function(_0x346b16,_0x1b994e){return _0x346b16+_0x1b994e;},'vyfhp':function(_0x4cfa97,_0x1d752e){return _0x4cfa97|_0x1d752e;},'frGoK':function(_0x4fe624,_0x432e89){return _0x4fe624<<_0x432e89;},'ntiPZ':function(_0x1d6a5c,_0x4d240f){return _0x1d6a5c&_0x4d240f;},'zYypE':function(_0x12606d,_0x4616f3){return _0x12606d>>_0x4616f3;},'tzBIZ':function(_0xc3e2c6,_0x23ec79){return _0xc3e2c6!==_0x23ec79;},'mOceQ':function(_0x24c255,_0x236559){return _0x24c255!==_0x236559;},'FxVOm':function(_0x74ba73,_0x4fd367){return _0x74ba73&_0x4fd367;}};while(_0x4dca38['DmbDP'](_0x43127d[_0x5113(0x12)],0x4)){_0x43127d+='=';}const _0x3d1e26=_0x4dca38[_0x5113(0x6d)];let _0x17014c='';for(let _0x2279b3=0x0;_0x4dca38['uRlbQ'](_0x2279b3,_0x43127d[_0x5113(0x12)]);_0x2279b3+=0x4){const _0x21aaa7=_0x3d1e26['indexOf'](_0x43127d[_0x5113(0x14)](_0x2279b3)),_0x4c60c7=_0x3d1e26[_0x5113(0x13)](_0x43127d[_0x5113(0x14)](_0x4dca38[_0x5113(0x6e)](_0x2279b3,0x1))),_0x14dccd=_0x3d1e26[_0x5113(0x13)](_0x43127d[_0x5113(0x14)](_0x4dca38[_0x5113(0x6e)](_0x2279b3,0x2))),_0x16d497=_0x3d1e26[_0x5113(0x13)](_0x43127d['charAt'](_0x4dca38[_0x5113(0x6e)](_0x2279b3,0x3))),_0x4cbe8d=_0x4dca38['vyfhp'](_0x4dca38[_0x5113(0x6f)](_0x21aaa7,0x12),_0x4c60c7<<0xc)|_0x4dca38[_0x5113(0x6f)](_0x14dccd,0x6)|_0x16d497;_0x17014c+=String[_0x5113(0x17)](_0x4dca38[_0x5113(0x70)](_0x4dca38[_0x5113(0x71)](_0x4cbe8d,0x10),0xff));if(_0x4dca38[_0x5113(0x72)](_0x14dccd,0x40))_0x17014c+=String[_0x5113(0x17)](_0x4dca38['ntiPZ'](_0x4cbe8d>>0x8,0xff));if(_0x4dca38['mOceQ'](_0x16d497,0x40))_0x17014c+=String[_0x5113(0x17)](_0x4dca38[_0x5113(0x73)](_0x4cbe8d,0xff));}return _0x17014c;};function _0x5113(_0x5ca220,_0x5113c9){_0x5ca220=_0x5ca220-0x0;const _0x156062=_0x5ca2();let _0x366e93=_0x156062[_0x5ca220];return _0x366e93;}export const getJWTPayload=async()=>{const _0x4a6f6c={'JbVoK':_0x5113(0xe),'WDIco':function(_0x4b1123,_0x3bf830){return _0x4b1123===_0x3bf830;},'ZQISz':function(_0x21d214,_0x50c6fc){return _0x21d214===_0x50c6fc;},'ZITWX':_0x5113(0x2),'arpVM':function(_0x34b4bd){return _0x34b4bd();},'GPrym':function(_0x4551dc,_0xffa88e){return _0x4551dc(_0xffa88e);},'zjJIh':function(_0x222e69,_0x14fb31){return _0x222e69===_0x14fb31;},'mAvuf':_0x5113(0x74)};try{const _0x1b3d43=await _0x4a6f6c[_0x5113(0x75)](getJWT);if(!_0x1b3d43)return null;const _0x3764c8=_0x1b3d43[_0x5113(0x76)]('.');if(_0x3764c8[_0x5113(0x12)]!==0x3)return null;const _0x1ffa95=_0x4a6f6c[_0x5113(0x77)](base64Decode,_0x3764c8[0x1]),_0x378ea7=JSON[_0x5113(0x40)](_0x1ffa95);return _0x378ea7;}catch(_0x47ca42){if(_0x4a6f6c[_0x5113(0x78)](_0x5113(0x79),_0x5113(0x79)))return console[_0x5113(0x4b)](_0x4a6f6c['mAvuf'],_0x47ca42),null;else{_0x9edfb[_0x5113(0x0)](_0x4a6f6c[_0x5113(0x7a)],_0x42425f);const _0x5bc71b=(_0x4a6f6c[_0x5113(0x7b)](_0x2230af,null)||_0x4a6f6c[_0x5113(0x7c)](_0x41df01,void 0x0)?void 0x0:_0x245515[_0x5113(0xa)])||_0x4a6f6c[_0x5113(0x7d)];return _0x202e58[_0x5bc71b]||null;}}};export const isJWTExpired=async()=>{const _0x24c017={'EBmOy':function(_0x5ea9ad,_0x1f3408){return _0x5ea9ad===_0x1f3408;},'zMdmI':_0x5113(0x2),'fKVmU':_0x5113(0x7e),'tkOio':'gxKJq','VNIDv':function(_0x3ecfa6){return _0x3ecfa6();},'fVzFJ':function(_0x269a2c,_0x3f4cc2){return _0x269a2c/_0x3f4cc2;},'QYjyn':function(_0x6b0970,_0x460175){return _0x6b0970<_0x460175;},'ENmFb':function(_0x4ffa6f,_0x2526be){return _0x4ffa6f!==_0x2526be;},'GwmAw':'❌\x20Failed\x20to\x20check\x20JWT\x20expiration:'};try{if(_0x24c017[_0x5113(0x7f)](_0x24c017[_0x5113(0x80)],_0x24c017[_0x5113(0x81)])){_0xebefb8[_0x5113(0x0)]('Keychain\x20access\x20failed,\x20using\x20mock\x20storage',_0x27bc6b);const _0x2500ee=(_0x22b636===null||_0x24c017[_0x5113(0x7f)](_0x13b947,void 0x0)?void 0x0:_0x30c009[_0x5113(0xa)])||_0x24c017[_0x5113(0x82)];return delete _0x47759b[_0x2500ee],!![];}else{const _0x225d9f=await _0x24c017['VNIDv'](getJWTPayload);if(!_0x225d9f||!_0x225d9f['exp'])return!![];const _0x50a772=Math[_0x5113(0x83)](_0x24c017[_0x5113(0x84)](Date[_0x5113(0x38)](),0x3e8));return _0x24c017['QYjyn'](_0x225d9f[_0x5113(0x85)],_0x50a772);}}catch(_0x386279){return _0x24c017[_0x5113(0x86)](_0x5113(0x87),_0x5113(0x87))?(_0x4f0003[_0x5113(0x4b)](_0x5113(0x88),_0x19da77),null):(console[_0x5113(0x4b)](_0x24c017[_0x5113(0x89)],_0x386279),!![]);}};
|
|
7
|
+
import{Platform}from'react-native';import{STORAGE_KEYS}from'../constants';import AsyncStorage from'@react-native-async-storage/async-storage';const JWT_TOKEN_KEY=_0x158b(0x0),mockStorage={};let Keychain=null;try{Keychain=__ONAIROS_REQ_FUNC__(0x0);}catch(_0x323c51){console['warn']('react-native-keychain module not available, using mock storage'),Keychain={'ACCESS_CONTROL':{'BIOMETRY_ANY_OR_DEVICE_PASSCODE':'mock'},'ACCESSIBLE':{'WHEN_UNLOCKED':_0x158b(0x1)},'getGenericPassword':async()=>null,'setGenericPassword':async()=>!![],'resetGenericPassword':async()=>!![]};}const isKeychainAvailable=()=>{const _0x586bac={'PpYoD':function(_0x2bd973,_0x331b5a){return _0x2bd973===_0x331b5a;}};try{return Keychain&&_0x586bac[_0x158b(0x2)](typeof Keychain[_0x158b(0x3)],_0x158b(0x4));}catch(_0x4825cd){return![];}},safeGetGenericPassword=async _0x3d600d=>{const _0x98fb4f={'aDvKJ':function(_0x552431,_0xf608d6){return _0x552431===_0xf608d6;},'Jrumh':function(_0x5b9fef,_0x1dc3c1){return _0x5b9fef===_0x1dc3c1;},'HhrSV':'default','rwuPA':function(_0x1b98fb){return _0x1b98fb();},'BsIHB':'LLQxq','QgoUt':function(_0x304f4f,_0x2e61b8){return _0x304f4f===_0x2e61b8;},'syLpQ':function(_0x2953b2,_0x3c1cfd){return _0x2953b2===_0x3c1cfd;}};try{if(_0x98fb4f[_0x158b(0x5)](isKeychainAvailable))return await Keychain[_0x158b(0x3)](_0x3d600d);else{if(_0x98fb4f[_0x158b(0x6)]===_0x158b(0x7)){const _0x2794b3=(_0x3d600d===null||_0x98fb4f[_0x158b(0x8)](_0x3d600d,void 0x0)?void 0x0:_0x3d600d[_0x158b(0x9)])||_0x98fb4f[_0x158b(0xa)];return mockStorage[_0x2794b3]||null;}else{const _0x52e1d5=(_0x98fb4f['aDvKJ'](_0x49c31b,null)||_0x98fb4f['Jrumh'](_0x3ed621,void 0x0)?void 0x0:_0x381304[_0x158b(0x9)])||_0x98fb4f['HhrSV'];return _0x57ed77[_0x52e1d5]={'username':_0x49cf5,'password':_0x247e62},!![];}}}catch(_0x525822){console[_0x158b(0xb)]('Keychain\x20access\x20failed,\x20using\x20mock\x20storage',_0x525822);const _0x5f4f21=(_0x98fb4f[_0x158b(0xc)](_0x3d600d,null)||_0x3d600d===void 0x0?void 0x0:_0x3d600d[_0x158b(0x9)])||_0x98fb4f[_0x158b(0xa)];return mockStorage[_0x5f4f21]||null;}},safeSetGenericPassword=async(_0x543556,_0x1ececc,_0xeb1549)=>{const _0x529341={'oKztI':function(_0x11e173,_0x48c084){return _0x11e173%_0x48c084;},'wwVew':'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/','Tcfff':function(_0x3fc393,_0x5689a8){return _0x3fc393<_0x5689a8;},'gFfsr':function(_0x14545a,_0x38cc77){return _0x14545a+_0x38cc77;},'uGhbC':function(_0x2addcc,_0x2c11eb){return _0x2addcc+_0x2c11eb;},'bIGqy':function(_0x2c1ecf,_0x5b20c3){return _0x2c1ecf|_0x5b20c3;},'rtlyf':function(_0x329540,_0x244305){return _0x329540<<_0x244305;},'TzOih':function(_0x1ccb49,_0x6777fb){return _0x1ccb49&_0x6777fb;},'xVIjY':function(_0x439d8a,_0xd69194){return _0x439d8a>>_0xd69194;},'AlegS':function(_0x3a1372,_0x2f9b61){return _0x3a1372!==_0x2f9b61;},'EzzQZ':function(_0x53a00d,_0x3a3467){return _0x53a00d===_0x3a3467;},'WPPgY':'aLNtB','Wuxfq':function(_0x1f089d,_0x4e3d46){return _0x1f089d!==_0x4e3d46;},'nTEWC':_0x158b(0xd),'vibWg':function(_0x3a557b,_0x546886){return _0x3a557b===_0x546886;},'mnYgY':_0x158b(0xe),'YUayd':_0x158b(0xf),'tERdi':function(_0x24d649,_0x383786){return _0x24d649===_0x383786;}};try{if(_0x529341['EzzQZ'](_0x158b(0x10),_0x158b(0x10))){if(isKeychainAvailable()){if(_0x529341['AlegS']('qelss',_0x529341[_0x158b(0x11)]))return await Keychain[_0x158b(0x12)](_0x543556,_0x1ececc,_0xeb1549);else _0x43bfb9[_0x158b(0x13)]=Keychain[_0x158b(0x14)]['BIOMETRY_ANY_OR_DEVICE_PASSCODE'],_0x405e05[_0x158b(0x15)]=Keychain['ACCESSIBLE'][_0x158b(0x16)];}else{if(_0x529341[_0x158b(0x17)](_0x529341[_0x158b(0x18)],_0x529341['nTEWC'])){while(_0x529341[_0x158b(0x19)](_0x285c0f[_0x158b(0x1a)],0x4)){_0x3459a9+='=';}const _0x4cd327=_0x529341[_0x158b(0x1b)];let _0xd8ee03='';for(let _0x50eaa2=0x0;_0x529341[_0x158b(0x1c)](_0x50eaa2,_0x384ca5[_0x158b(0x1a)]);_0x50eaa2+=0x4){const _0xbe8905=_0x4cd327[_0x158b(0x1d)](_0xd2530c[_0x158b(0x1e)](_0x50eaa2)),_0xcc73f3=_0x4cd327['indexOf'](_0x211f0b[_0x158b(0x1e)](_0x529341[_0x158b(0x1f)](_0x50eaa2,0x1))),_0x1fef62=_0x4cd327[_0x158b(0x1d)](_0x11b006[_0x158b(0x1e)](_0x50eaa2+0x2)),_0x7fed3e=_0x4cd327[_0x158b(0x1d)](_0x475ea8['charAt'](_0x529341['uGhbC'](_0x50eaa2,0x3))),_0x5ab6eb=_0x529341[_0x158b(0x20)](_0x529341[_0x158b(0x20)](_0xbe8905<<0x12,_0x529341['rtlyf'](_0xcc73f3,0xc))|_0x529341[_0x158b(0x21)](_0x1fef62,0x6),_0x7fed3e);_0xd8ee03+=_0x329fa6[_0x158b(0x22)](_0x529341[_0x158b(0x23)](_0x529341[_0x158b(0x24)](_0x5ab6eb,0x10),0xff));if(_0x529341[_0x158b(0x25)](_0x1fef62,0x40))_0xd8ee03+=_0x5de3ec[_0x158b(0x22)](_0x529341[_0x158b(0x23)](_0x529341['xVIjY'](_0x5ab6eb,0x8),0xff));if(_0x529341[_0x158b(0x25)](_0x7fed3e,0x40))_0xd8ee03+=_0x26ca22[_0x158b(0x22)](_0x5ab6eb&0xff);}return _0xd8ee03;}else{const _0x2fb6af=(_0x529341['EzzQZ'](_0xeb1549,null)||_0x529341[_0x158b(0x26)](_0xeb1549,void 0x0)?void 0x0:_0xeb1549['service'])||_0x529341[_0x158b(0x27)];return mockStorage[_0x2fb6af]={'username':_0x543556,'password':_0x1ececc},!![];}}}else _0x57dd7d+='=';}catch(_0x296a09){console['warn'](_0x529341[_0x158b(0x28)],_0x296a09);const _0x2f3498=(_0x529341['vibWg'](_0xeb1549,null)||_0x529341[_0x158b(0x29)](_0xeb1549,void 0x0)?void 0x0:_0xeb1549[_0x158b(0x9)])||_0x529341[_0x158b(0x27)];return mockStorage[_0x2f3498]={'username':_0x543556,'password':_0x1ececc},!![];}},safeResetGenericPassword=async _0x368c27=>{const _0x298abe={'EGjGy':function(_0x32d159){return _0x32d159();},'RnlgN':function(_0x2b658c,_0x562a20){return _0x2b658c===_0x562a20;},'siwJe':_0x158b(0xe),'pJfRy':_0x158b(0xf)};try{if(_0x298abe[_0x158b(0x2a)](isKeychainAvailable))return await Keychain[_0x158b(0x2b)](_0x368c27);else{const _0x345b2e=(_0x298abe[_0x158b(0x2c)](_0x368c27,null)||_0x368c27===void 0x0?void 0x0:_0x368c27['service'])||_0x298abe[_0x158b(0x2d)];return delete mockStorage[_0x345b2e],!![];}}catch(_0x3983b2){console[_0x158b(0xb)](_0x298abe[_0x158b(0x2e)],_0x3983b2);const _0x40c6a0=(_0x298abe[_0x158b(0x2c)](_0x368c27,null)||_0x368c27===void 0x0?void 0x0:_0x368c27[_0x158b(0x9)])||_0x298abe['siwJe'];return delete mockStorage[_0x40c6a0],!![];}};export const storeCredentials=async _0x451c6f=>{const _0x3111ee={'TbAmv':function(_0x3d9d52,_0xbc1a37){return _0x3d9d52===_0xbc1a37;},'XKERz':_0x158b(0x4),'ZeBfT':function(_0x27a0f9){return _0x27a0f9();},'gfjrl':function(_0x414ddc,_0x2ef42c){return _0x414ddc===_0x2ef42c;},'mQKvb':'Username\x20is\x20required\x20for\x20storing\x20credentials','iyvpb':function(_0x3c738b,_0x52367a){return _0x3c738b!==_0x52367a;},'RLpRH':'web','pjYUq':function(_0xf61cb6){return _0xf61cb6();},'zyZjv':function(_0x4a1eca,_0x22043e){return _0x4a1eca===_0x22043e;},'XxyFy':'MUSmy','SvDFj':function(_0x157628,_0x38029f,_0xea9f20,_0x3e79aa){return _0x157628(_0x38029f,_0xea9f20,_0x3e79aa);},'CmpmH':_0x158b(0x2f)};try{const _0x2f157f=await _0x3111ee[_0x158b(0x30)](getCredentials),_0x466323={..._0x2f157f,..._0x451c6f,'createdAt':(_0x3111ee[_0x158b(0x31)](_0x2f157f,null)||_0x3111ee[_0x158b(0x31)](_0x2f157f,void 0x0)?void 0x0:_0x2f157f['createdAt'])||Date[_0x158b(0x32)]()},_0x2ba683=_0x466323[_0x158b(0x33)];if(!_0x2ba683)throw new Error(_0x3111ee[_0x158b(0x34)]);const _0x2bd28a={'service':STORAGE_KEYS[_0x158b(0x35)]};if(_0x3111ee[_0x158b(0x36)](Platform['OS'],_0x3111ee[_0x158b(0x37)])&&_0x3111ee['pjYUq'](isKeychainAvailable)){if(_0x3111ee[_0x158b(0x38)](_0x3111ee[_0x158b(0x39)],_0x3111ee[_0x158b(0x39)]))_0x2bd28a[_0x158b(0x13)]=Keychain['ACCESS_CONTROL']['BIOMETRY_ANY_OR_DEVICE_PASSCODE'],_0x2bd28a[_0x158b(0x15)]=Keychain[_0x158b(0x3a)][_0x158b(0x16)];else return Keychain&&_0x3111ee[_0x158b(0x3b)](typeof Keychain[_0x158b(0x3)],_0x3111ee[_0x158b(0x3c)]);}return await _0x3111ee[_0x158b(0x3d)](safeSetGenericPassword,_0x2ba683,JSON[_0x158b(0x3e)](_0x466323),_0x2bd28a),!![];}catch(_0x26e293){return console[_0x158b(0x3f)](_0x3111ee[_0x158b(0x40)],_0x26e293),![];}};export const getCredentials=async()=>{const _0x615d7b={'ZonKu':function(_0x397bb0,_0xe64163){return _0x397bb0(_0xe64163);},'HRNQh':function(_0x44a1a1,_0x3d6394){return _0x44a1a1===_0x3d6394;},'bdBZZ':_0x158b(0x41),'XGHRL':_0x158b(0x42)};try{const _0x2a031f=await _0x615d7b[_0x158b(0x43)](safeGetGenericPassword,{'service':STORAGE_KEYS[_0x158b(0x35)]});if(_0x2a031f)return JSON[_0x158b(0x44)](_0x2a031f['password']);return null;}catch(_0x4867f0){if(_0x615d7b[_0x158b(0x45)](_0x615d7b['bdBZZ'],_0x615d7b[_0x158b(0x46)]))return console['error'](_0x615d7b[_0x158b(0x47)],_0x4867f0),null;else{const _0x5096e7=_0x319f3e[_0x158b(0x48)]()['toString'](0x24)['substring'](0x2,0xa);return'dev_'+_0x5096e7;}}};export const hasCredentials=async()=>{const _0x42409d={'wHZTs':function(_0xb5e219,_0x3a7dd2){return _0xb5e219(_0x3a7dd2);},'MjWHH':function(_0x5a76be,_0x262dca){return _0x5a76be===_0x262dca;},'DAbAL':'LYlMz','eZdqG':'Error\x20checking\x20credentials:'};try{const _0x1fe548=await _0x42409d['wHZTs'](safeGetGenericPassword,{'service':STORAGE_KEYS['credentials']});return!!_0x1fe548;}catch(_0x376827){if(_0x42409d['MjWHH']('kWuLh',_0x42409d[_0x158b(0x49)]))Keychain=_0x42409d[_0x158b(0x4a)](_0x201514,0x0);else return console[_0x158b(0x3f)](_0x42409d[_0x158b(0x4b)],_0x376827),![];}};export const deleteCredentials=async()=>{const _0x1e6fa8={'xjDuV':function(_0x2c18a6,_0x372ea3){return _0x2c18a6===_0x372ea3;},'fQPbl':_0x158b(0x4c),'AVdKH':_0x158b(0x4d),'DwRiZ':_0x158b(0x4e)};try{return await safeResetGenericPassword({'service':STORAGE_KEYS[_0x158b(0x35)]}),!![];}catch(_0x4f7fc7){return _0x1e6fa8['xjDuV'](_0x1e6fa8[_0x158b(0x4f)],_0x1e6fa8[_0x158b(0x50)])?!![]:(console[_0x158b(0x3f)](_0x1e6fa8[_0x158b(0x51)],_0x4f7fc7),![]);}};export const updateCredentials=async _0x195195=>{return storeCredentials(_0x195195);};function _0x158b(_0x477572,_0x158bf4){_0x477572=_0x477572-0x0;const _0x46faf8=_0x4775();let _0x477208=_0x46faf8[_0x477572];return _0x477208;}export const generateDeviceUsername=()=>{const _0x4ee374=Math[_0x158b(0x48)]()[_0x158b(0x52)](0x24)[_0x158b(0x53)](0x2,0xa);return _0x158b(0x54)+_0x4ee374;};function _0x4775(){const _0x410f32=['onairos_jwt_token','mock','PpYoD','getGenericPassword','function','rwuPA','BsIHB','LLQxq','QgoUt','service','HhrSV','warn','syLpQ','zkqtk','default','Keychain\x20access\x20failed,\x20using\x20mock\x20storage','gNPhp','WPPgY','setGenericPassword','accessControl','ACCESS_CONTROL','accessible','WHEN_UNLOCKED','Wuxfq','nTEWC','oKztI','length','wwVew','Tcfff','indexOf','charAt','gFfsr','bIGqy','rtlyf','fromCharCode','TzOih','xVIjY','AlegS','vibWg','mnYgY','YUayd','tERdi','EGjGy','resetGenericPassword','RnlgN','siwJe','pJfRy','Error\x20storing\x20credentials:','ZeBfT','gfjrl','now','username','mQKvb','credentials','iyvpb','RLpRH','zyZjv','XxyFy','ACCESSIBLE','TbAmv','XKERz','SvDFj','stringify','error','CmpmH','qQlzL','Error\x20getting\x20credentials:','ZonKu','parse','HRNQh','bdBZZ','XGHRL','random','DAbAL','wHZTs','eZdqG','JkHfd','RCnOY','Error\x20deleting\x20credentials:','fQPbl','AVdKH','DwRiZ','toString','substring','dev_','Error\x20checking\x20credentials:','YawCw','qLOrx','Error\x20verifying\x20credentials:','htwru','oWNpY','AdPVD','zpTcq','rUHvC','QQJVR','bdFSG','ZFIyH','❌\x20Failed\x20to\x20retrieve\x20JWT\x20token:','getItem','Username\x20is\x20required\x20for\x20storing\x20credentials','hSZDk','HliyC','PEWlr','🗑️\x20JWT\x20token\x20cleared','kmFnY','❌\x20Failed\x20to\x20clear\x20JWT\x20token:','vPFSs','lVtym','removeItem','log','rQqLa','yffts','XVRwn','EPPlk','lWuIh','wxjPW','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/','aGghG','wbPgw','Exfas','NpGvp','RoIiS','HIYRx','wYSUv','sJvJd','LAIfy','iaEsM','vggjx','DMDls','split','YsvZI','RxpsA','Wfmww','wEzUd','❌\x20Failed\x20to\x20decode\x20JWT\x20payload:','eFtIT','WfjBl','teBpe','UYZGD','HdiQx','BjGny','yIYZG','UjQUd','yegUa','GrMeY','AGEzb','HBMLV','exp','floor','ZFCvs','❌\x20Failed\x20to\x20check\x20JWT\x20expiration:'];_0x4775=function(){return _0x410f32;};return _0x4775();}export const verifyCredentials=async _0xf3fc92=>{const _0x21fe8f={'rUHvC':_0x158b(0x55),'QQJVR':_0x158b(0x4e),'bdFSG':function(_0x342634,_0x24ec90){return _0x342634===_0x24ec90;},'htwru':function(_0x2cea3b,_0x11dbb6){return _0x2cea3b!==_0x11dbb6;},'oWNpY':'GlyPI','AdPVD':function(_0x10b438){return _0x10b438();},'zpTcq':_0x158b(0x56),'rortq':_0x158b(0x57),'ZFIyH':_0x158b(0x58)};try{if(_0x21fe8f[_0x158b(0x59)](_0x21fe8f[_0x158b(0x5a)],'VcSKk')){if(!_0x21fe8f[_0x158b(0x5b)](isKeychainAvailable))return _0x21fe8f[_0x158b(0x5c)]===_0x21fe8f[_0x158b(0x5c)]?!![]:(_0x6141d3[_0x158b(0x3f)](_0x21fe8f[_0x158b(0x5d)],_0x3ec414),![]);return!![];}else return _0x1a3d09[_0x158b(0x3f)](_0x21fe8f[_0x158b(0x5e)],_0x422d7e),![];}catch(_0x1a743d){if(_0x21fe8f['rortq']!==_0x158b(0x57)){_0x3e2724[_0x158b(0xb)]('Keychain\x20access\x20failed,\x20using\x20mock\x20storage',_0xfa33d0);const _0x5c7640=(_0x21fe8f[_0x158b(0x5f)](_0x223e75,null)||_0x470955===void 0x0?void 0x0:_0x357ee9[_0x158b(0x9)])||'default';return _0x530b5d[_0x5c7640]={'username':_0x4ec2a9,'password':_0x25ecdf},!![];}else return console[_0x158b(0x3f)](_0x21fe8f[_0x158b(0x60)],_0x1a743d),![];}};export const getJWT=async()=>{const _0x37809d={'mJCLJ':_0x158b(0x61)};try{const _0xd3fcb0=await AsyncStorage[_0x158b(0x62)](JWT_TOKEN_KEY);return _0xd3fcb0;}catch(_0x31d3e2){return console[_0x158b(0x3f)](_0x37809d['mJCLJ'],_0x31d3e2),null;}};export const hasJWT=async()=>{const _0x5105ce={'gBynR':_0x158b(0x63),'dRAdl':function(_0x4c1543,_0x3ce33d){return _0x4c1543!==_0x3ce33d;},'XaFNY':_0x158b(0x64),'HliyC':'❌\x20Failed\x20to\x20check\x20JWT\x20token:'};try{const _0x41ea00=await AsyncStorage['getItem'](JWT_TOKEN_KEY);return!!_0x41ea00;}catch(_0x2f5af3){if(_0x5105ce['dRAdl'](_0x158b(0x64),_0x5105ce['XaFNY']))throw new _0x1ec59f(_0x5105ce['gBynR']);else return console['error'](_0x5105ce[_0x158b(0x65)],_0x2f5af3),![];}};export const clearJWT=async()=>{const _0x363733={'lVtym':_0x158b(0x61),'agEgu':function(_0x1cce22,_0x4ccd6e){return _0x1cce22===_0x4ccd6e;},'EPPlk':function(_0x70be2c,_0x404e07){return _0x70be2c===_0x404e07;},'lWuIh':_0x158b(0xe),'yffts':function(_0x1db56d,_0x42a1b3){return _0x1db56d!==_0x42a1b3;},'vPFSs':_0x158b(0x66),'rQqLa':_0x158b(0x67),'XVRwn':_0x158b(0x68),'eCuFM':_0x158b(0x69)};try{return _0x363733['yffts'](_0x363733[_0x158b(0x6a)],_0x363733['vPFSs'])?(_0x4e36fe[_0x158b(0x3f)](_0x363733[_0x158b(0x6b)],_0x3c22ae),null):(await AsyncStorage[_0x158b(0x6c)](JWT_TOKEN_KEY),console[_0x158b(0x6d)](_0x363733[_0x158b(0x6e)]),!![]);}catch(_0x310d63){if(_0x363733[_0x158b(0x6f)](_0x363733[_0x158b(0x70)],'TZFPX'))return console[_0x158b(0x3f)](_0x363733['eCuFM'],_0x310d63),![];else{const _0x26420f=(_0x363733['agEgu'](_0x400cc0,null)||_0x363733[_0x158b(0x71)](_0x12c1dd,void 0x0)?void 0x0:_0x2e97fc[_0x158b(0x9)])||_0x363733[_0x158b(0x72)];return _0xf72976[_0x26420f]||null;}}};const base64Decode=_0x4c56bc=>{const _0x4a204f={'Exfas':'Error\x20storing\x20credentials:','DMxPx':function(_0x10af31,_0x6c4cc4){return _0x10af31%_0x6c4cc4;},'aGghG':function(_0x53a136,_0x4c0148){return _0x53a136===_0x4c0148;},'wbPgw':_0x158b(0x73),'fwJIl':_0x158b(0x74),'NpGvp':function(_0x56612c,_0x26e139){return _0x56612c<_0x26e139;},'RoIiS':function(_0x1f8459,_0x52c0a7){return _0x1f8459+_0x52c0a7;},'HIYRx':function(_0x1b88d0,_0x46d540){return _0x1b88d0|_0x46d540;},'wYSUv':function(_0x53a5b1,_0x53a8ab){return _0x53a5b1<<_0x53a8ab;},'sJvJd':function(_0x5e155b,_0x5839f4){return _0x5e155b&_0x5839f4;},'LAIfy':function(_0x47c997,_0x19ba05){return _0x47c997>>_0x19ba05;},'iaEsM':function(_0x3fee2f,_0x472661){return _0x3fee2f&_0x472661;},'vggjx':function(_0x4329e1,_0xcf19ac){return _0x4329e1!==_0xcf19ac;}};while(_0x4a204f['DMxPx'](_0x4c56bc[_0x158b(0x1a)],0x4)){if(_0x4a204f[_0x158b(0x75)](_0x4a204f[_0x158b(0x76)],_0x4a204f[_0x158b(0x76)]))_0x4c56bc+='=';else return _0x4f3545[_0x158b(0x3f)](_0x4a204f[_0x158b(0x77)],_0x4b75a5),![];}const _0x5afd5b=_0x4a204f['fwJIl'];let _0x18b730='';for(let _0x1f04ea=0x0;_0x4a204f[_0x158b(0x78)](_0x1f04ea,_0x4c56bc[_0x158b(0x1a)]);_0x1f04ea+=0x4){const _0x1c6645=_0x5afd5b[_0x158b(0x1d)](_0x4c56bc[_0x158b(0x1e)](_0x1f04ea)),_0x538fd7=_0x5afd5b[_0x158b(0x1d)](_0x4c56bc[_0x158b(0x1e)](_0x1f04ea+0x1)),_0x21661e=_0x5afd5b[_0x158b(0x1d)](_0x4c56bc[_0x158b(0x1e)](_0x4a204f[_0x158b(0x79)](_0x1f04ea,0x2))),_0x565c1b=_0x5afd5b['indexOf'](_0x4c56bc['charAt'](_0x4a204f[_0x158b(0x79)](_0x1f04ea,0x3))),_0x35e428=_0x4a204f[_0x158b(0x7a)](_0x4a204f['HIYRx'](_0x4a204f[_0x158b(0x7b)](_0x1c6645,0x12)|_0x4a204f[_0x158b(0x7b)](_0x538fd7,0xc),_0x21661e<<0x6),_0x565c1b);_0x18b730+=String['fromCharCode'](_0x4a204f[_0x158b(0x7c)](_0x4a204f[_0x158b(0x7d)](_0x35e428,0x10),0xff));if(_0x21661e!==0x40)_0x18b730+=String[_0x158b(0x22)](_0x4a204f[_0x158b(0x7e)](_0x4a204f[_0x158b(0x7d)](_0x35e428,0x8),0xff));if(_0x4a204f[_0x158b(0x7f)](_0x565c1b,0x40))_0x18b730+=String[_0x158b(0x22)](_0x35e428&0xff);}return _0x18b730;};export const getJWTPayload=async()=>{const _0x1af254={'RxpsA':function(_0x2f4da9,_0x4650a4){return _0x2f4da9===_0x4650a4;},'EbxeB':'❌\x20Failed\x20to\x20check\x20JWT\x20expiration:','WSZWB':function(_0x4de2a7,_0x5bbc41){return _0x4de2a7===_0x5bbc41;},'eykIQ':_0x158b(0x80),'tzWJX':function(_0x39c215){return _0x39c215();},'YsvZI':function(_0x76ab53,_0x354c9f){return _0x76ab53(_0x354c9f);},'Wfmww':function(_0x452ebf,_0x966925){return _0x452ebf===_0x966925;},'RksQY':'EkHAi'};try{if(_0x1af254['WSZWB'](_0x1af254['eykIQ'],_0x158b(0x80))){const _0x3844ae=await _0x1af254['tzWJX'](getJWT);if(!_0x3844ae)return null;const _0x2a3883=_0x3844ae[_0x158b(0x81)]('.');if(_0x2a3883[_0x158b(0x1a)]!==0x3)return null;const _0x186e67=_0x1af254[_0x158b(0x82)](base64Decode,_0x2a3883[0x1]),_0x26da60=JSON[_0x158b(0x44)](_0x186e67);return _0x26da60;}else try{return Keychain&&_0x1af254[_0x158b(0x83)](typeof Keychain['getGenericPassword'],_0x158b(0x4));}catch(_0x34bd32){return![];}}catch(_0x46acc8){return _0x1af254[_0x158b(0x84)](_0x158b(0x85),_0x1af254['RksQY'])?(_0x133952[_0x158b(0x3f)](_0x1af254['EbxeB'],_0x7fcda0),!![]):(console[_0x158b(0x3f)](_0x158b(0x86),_0x46acc8),null);}};export const isJWTExpired=async()=>{const _0xe16f16={'HdiQx':function(_0x274561,_0x4b7ffc){return _0x274561+_0x4b7ffc;},'BjGny':function(_0x56d3ec,_0x5228ba){return _0x56d3ec+_0x5228ba;},'yIYZG':function(_0x3e5056,_0x5df878){return _0x3e5056|_0x5df878;},'UjQUd':function(_0x7073e7,_0x5abd7f){return _0x7073e7<<_0x5abd7f;},'yegUa':function(_0x3c4fdf,_0x3539ac){return _0x3c4fdf&_0x3539ac;},'GrMeY':function(_0x426849,_0x55da4a){return _0x426849>>_0x55da4a;},'AGEzb':function(_0x2bb89e,_0x1401b9){return _0x2bb89e!==_0x1401b9;},'llYjX':function(_0x215c8e,_0x4a306f){return _0x215c8e&_0x4a306f;},'UJLQu':function(_0x5e8983,_0xd06718){return _0x5e8983===_0xd06718;},'teBpe':_0x158b(0x87),'UYZGD':_0x158b(0x88),'HBMLV':function(_0x2ee90c){return _0x2ee90c();},'gXxsz':function(_0x5e5c81,_0x17339c){return _0x5e5c81/_0x17339c;},'ZFCvs':function(_0x3ff9f0,_0x9c7432){return _0x3ff9f0<_0x9c7432;}};try{if(_0xe16f16['UJLQu'](_0xe16f16[_0x158b(0x89)],_0xe16f16[_0x158b(0x8a)])){const _0x5c5921=_0x53903c['indexOf'](_0x3babcc[_0x158b(0x1e)](_0x3e3609)),_0x7ed1fa=_0x229cf2[_0x158b(0x1d)](_0x3568c8[_0x158b(0x1e)](_0xe16f16[_0x158b(0x8b)](_0x38fedf,0x1))),_0x124698=_0x1ad36d['indexOf'](_0x5ca334[_0x158b(0x1e)](_0xe16f16['HdiQx'](_0x184b88,0x2))),_0x203c46=_0x85546b[_0x158b(0x1d)](_0x35bf6[_0x158b(0x1e)](_0xe16f16[_0x158b(0x8c)](_0x1dd9f2,0x3))),_0x129f92=_0xe16f16[_0x158b(0x8d)](_0xe16f16[_0x158b(0x8d)](_0x5c5921<<0x12,_0xe16f16[_0x158b(0x8e)](_0x7ed1fa,0xc)),_0x124698<<0x6)|_0x203c46;_0xf48298+=_0xe17e39[_0x158b(0x22)](_0xe16f16[_0x158b(0x8f)](_0xe16f16[_0x158b(0x90)](_0x129f92,0x10),0xff));if(_0xe16f16[_0x158b(0x91)](_0x124698,0x40))_0x196bda+=_0x2b7ba8[_0x158b(0x22)](_0x129f92>>0x8&0xff);if(_0xe16f16[_0x158b(0x91)](_0x203c46,0x40))_0x4e47ae+=_0x9ab295['fromCharCode'](_0xe16f16['llYjX'](_0x129f92,0xff));}else{const _0x12a020=await _0xe16f16[_0x158b(0x92)](getJWTPayload);if(!_0x12a020||!_0x12a020[_0x158b(0x93)])return!![];const _0x2750b3=Math[_0x158b(0x94)](_0xe16f16['gXxsz'](Date[_0x158b(0x32)](),0x3e8));return _0xe16f16[_0x158b(0x95)](_0x12a020['exp'],_0x2750b3);}}catch(_0x674844){return console['error'](_0x158b(0x96),_0x674844),!![];}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const CHATGPT_CONSENT_POPUP_SCRIPT=_0x13a8(0x0);function _0x22ec(){const _0x17b7fb=['\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20existing\x20=\x20document.getElementById(\x27onairos-consent-overlay\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(existing)\x20existing.remove();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20overlay\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.id\x20=\x20\x27onairos-consent-overlay\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.style.cssText\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20position:\x20fixed;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20top:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20left:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20height:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20rgba(0,\x200,\x200,\x200.7);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20z-index:\x20999999;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20-apple-system,\x20BlinkMacSystemFont,\x20\x27Segoe\x20UI\x27,\x20Roboto,\x20sans-serif;\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20popup\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20popup.style.cssText\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20400px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x2090%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x2020px\x2060px\x20rgba(0,\x200,\x200,\x200.3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20popup.innerHTML\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22text-align:\x20center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:\x2048px;\x20margin-bottom:\x2016px;\x22>🤖</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20style=\x22margin:\x200\x200\x2012px\x200;\x20font-size:\x2024px;\x20color:\x20#1a1a1a;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Export\x20Conversations?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20style=\x22margin:\x200\x200\x2024px\x200;\x20color:\x20#666;\x20font-size:\x2016px;\x20line-height:\x201.5;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Allow\x20Onairos\x20to\x20export\x20your\x20top\x2010\x20ChatGPT\x20conversations\x20for\x20analysis?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:\x20flex;\x20gap:\x2012px;\x20justify-content:\x20center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20id=\x22onairos-deny\x22\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20flex:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2014px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x202px\x20solid\x20#e0e0e0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20#666;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22>Deny</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20id=\x22onairos-allow\x22\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20flex:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2014px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(135deg,\x20#667eea\x200%,\x20#764ba2\x20100%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22>Allow</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.appendChild(popup);\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.body.appendChild(overlay);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-deny\x27).onclick\x20=\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20overlay.remove();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27denied\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).onclick\x20=\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).innerHTML\x20=\x20\x27⏳\x20Starting...\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).disabled\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27allowed\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setTimeout(()\x20=>\x20overlay.remove(),\x20500);\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20VERSION\x20CHECK:\x20This\x20confirms\x20new\x20code\x20is\x20running\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🔄\x20[CHATGPT]\x20Script\x20version:\x20SDK_V1\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27DEBUG_LOG\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20version:\x20SDK_V1\x20loaded\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!document.body)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Page\x20not\x20ready\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Use\x20chatgpt.com\x20as\x20iOS\x20does\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20baseUrl\x20=\x20\x27https://chatgpt.com\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🚀\x20[CHATGPT]\x20Starting\x20extraction\x20(iOS-style\x20with\x20access\x20token)...\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20(async\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x201:\x20Get\x20access\x20token\x20(matches\x20iOS\x20fetchAccessToken)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_token\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x202,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Getting\x20access\x20token...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Fetching\x20access\x20token\x20from\x20/api/auth/session...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20accessToken\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/api/auth/session\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Session\x20response\x20status:\x27,\x20sessionResponse.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sessionResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionData\x20=\x20await\x20sessionResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accessToken\x20=\x20sessionData.accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Got\x20accessToken:\x27,\x20accessToken\x20?\x20\x27YES\x20(len=\x27\x20+\x20accessToken.length\x20+\x20\x27)\x27\x20:\x20\x27NO\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(sessionError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20Session\x20fetch\x20failed:\x27,\x20sessionError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Build\x20headers\x20matching\x20iOS\x20exactly\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20headers\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27User-Agent\x27:\x20\x27Mozilla/5.0\x20(iPhone;\x20CPU\x20iPhone\x20OS\x2017_0\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Version/17.0\x20Mobile/15E148\x20Safari/604.1\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers[\x27Authorization\x27]\x20=\x20\x27Bearer\x20\x27\x20+\x20accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x202:\x20Start\x20BOTH\x20conversations\x20AND\x20memories\x20fetches\x20IN\x20PARALLEL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_list\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x205,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetching\x20conversations\x20and\x20memories...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Starting\x20PARALLEL\x20fetch\x20of\x20conversations\x20AND\x20memories...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Start\x20memories\x20fetch\x20IMMEDIATELY\x20using\x20XMLHttpRequest\x20(more\x20compatible\x20than\x20fetch)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20memoriesPromise\x20=\x20new\x20Promise((resolve)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20xhr\x20=\x20new\x20XMLHttpRequest();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.open(\x27GET\x27,\x20baseUrl\x20+\x20\x27/backend-api/memories?include_memory_entries=true&memory_entries_filter=all\x27,\x20true);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.withCredentials\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.setRequestHeader(\x27Accept\x27,\x20\x27application/json\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.setRequestHeader(\x27Authorization\x27,\x20\x27Bearer\x20\x27\x20+\x20accessToken);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.onload\x20=\x20function()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20XHR\x20status:\x27,\x20xhr.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(xhr.status\x20>=\x20200\x20&&\x20xhr.status\x20<\x20300)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20JSON.parse(xhr.responseText);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20allKeys\x20=\x20Object.keys(data\x20||\x20{});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20response\x20keys:\x27,\x20allKeys);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(data);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(parseErr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20parse\x20error:\x27,\x20parseErr.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20API\x20returned:\x27,\x20xhr.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.onerror\x20=\x20function()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20XHR\x20error\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.send();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20XHR\x20request\x20sent\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(xhrErr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20XHR\x20exception:\x27,\x20xhrErr.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Start\x20conversations\x20fetch\x20(in\x20parallel\x20with\x20memories)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Fetching\x20conversations\x20with\x20auth:\x27,\x20!!accessToken);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20listResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/conversations?limit=10\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Conversations\x20response:\x27,\x20listResponse.status);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!listResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27HTTP\x20\x27\x20+\x20listResponse.status\x20+\x20\x27:\x20Failed\x20to\x20fetch\x20conversations\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20listData\x20=\x20await\x20listResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20conversations\x20=\x20listData.items\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Found\x27,\x20conversations.length,\x20\x27conversations\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(conversations.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Still\x20wait\x20for\x20memories\x20even\x20if\x20no\x20conversations\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20No\x20conversations,\x20waiting\x20for\x20memories...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesData\x20=\x20await\x20memoriesPromise;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesItemsCount\x20=\x20noConvMemoriesData?.items?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesEntriesCount\x20=\x20noConvMemoriesData?.memory_entries?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversations:\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_conversations:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_messages:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories:\x20noConvMemoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_items_count:\x20noConvMemoriesItemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_entries_count:\x20noConvMemoriesEntriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Connected!\x20No\x20conversations\x20found.\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x203:\x20Fetch\x20each\x20conversation\x20(matches\x20iOS\x20fetchAllConversationDetails)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x2010,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Processing\x200/\x27\x20+\x20conversations.length\x20+\x20\x27\x20conversations\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20userMessages\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(let\x20i\x20=\x200;\x20i\x20<\x20conversations.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20conv\x20=\x20conversations[i];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20progressPercent\x20=\x2010\x20+\x20((i\x20/\x20conversations.length)\x20*\x2080);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27processing_conversation\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20current:\x20i\x20+\x201,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total:\x20conversations.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x20Math.round(progressPercent),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Processing\x20\x27\x20+\x20(i\x20+\x201)\x20+\x20\x27/\x27\x20+\x20conversations.length\x20+\x20\x27\x20conversations\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20iOS\x20uses\x200.3s\x20delay\x20-\x20we\x20use\x200.3s\x20too\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(i\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20new\x20Promise(resolve\x20=>\x20setTimeout(resolve,\x20300));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/conversation/\x27\x20+\x20conv.id,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(detailResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20convData\x20=\x20await\x20detailResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20messages\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Extract\x20user\x20messages\x20from\x20mapping\x20(same\x20as\x20iOS)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(convData.mapping)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20nodeId\x20in\x20convData.mapping)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20node\x20=\x20convData.mapping[nodeId];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(node.message\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.author\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.author.role\x20===\x20\x27user\x27\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.content\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.content.parts)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20part\x20of\x20node.message.content.parts)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(typeof\x20part\x20===\x20\x27string\x27\x20&&\x20part.trim())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20messages.push(part.trim());\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(messages.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20userMessages.push({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversation_id:\x20conv.id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title:\x20conv.title\x20||\x20\x27Untitled\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_messages:\x20messages\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20✅\x20Conversation\x27,\x20(i\x20+\x201)\x20+\x20\x27/\x27\x20+\x20conversations.length\x20+\x20\x27:\x27,\x20conv.title,\x20\x27(\x27\x20+\x20messages.length\x20+\x20\x27\x20msgs)\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Conversation\x27,\x20conv.id,\x20\x27returned\x27,\x20detailResponse.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(convError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Failed\x20conversation\x27,\x20conv.id\x20+\x20\x27:\x27,\x20convError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalMessages\x20=\x20userMessages.reduce((sum,\x20c)\x20=>\x20sum\x20+\x20c.user_messages.length,\x200);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27✅\x20[CHATGPT]\x20Extraction\x20complete:\x27,\x20totalMessages,\x20\x27messages\x20from\x27,\x20userMessages.length,\x20\x27conversations\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x204:\x20Wait\x20for\x20memories\x20(started\x20in\x20parallel\x20at\x20STEP\x202)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Waiting\x20for\x20parallel\x20memories\x20fetch\x20to\x20complete...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesData\x20=\x20await\x20memoriesPromise;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Check\x20all\x20possible\x20field\x20names\x20(API\x20structure\x20varies)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesItemsCount\x20=\x20memoriesData?.items?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesEntriesCount\x20=\x20memoriesData?.memory_entries?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesArrayCount\x20=\x20memoriesData?.memories?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalMemoriesCount\x20=\x20memoriesItemsCount\x20+\x20memoriesEntriesCount\x20+\x20memoriesArrayCount;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Final\x20memories\x20result:\x27,\x20memoriesItemsCount,\x20\x27items,\x27,\x20memoriesEntriesCount,\x20\x27entries,\x27,\x20memoriesArrayCount,\x20\x27memories\x20array\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Send\x20memories\x20to\x20React\x20Native\x20for\x20storage\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(memoriesData\x20&&\x20totalMemoriesCount\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Sending\x20memories\x20to\x20React\x20Native\x20for\x20storage...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_DATA\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memoriesData:\x20memoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20totalMemoriesCount:\x20totalMemoriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Send\x20conversation\x20data\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversations:\x20userMessages,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_conversations:\x20userMessages.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_messages:\x20totalMessages,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_items_count:\x20memoriesItemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_entries_count:\x20memoriesEntriesCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_array_count:\x20memoriesArrayCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_memories_count:\x20totalMemoriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Export\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetch\x20failed:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20})();\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Init\x20error:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20error:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20console.log(\x27✅\x20ChatGPT\x20export\x20successful!\x27);\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20baseUrl\x20=\x20\x27https://chatgpt.com\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Starting\x20memories\x20extraction...\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20(async\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x201:\x20Get\x20access\x20token\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_token\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Getting\x20access\x20token...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20accessToken\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/api/auth/session\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sessionResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionData\x20=\x20await\x20sessionResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accessToken\x20=\x20sessionData.accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(sessionError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20Session\x20fetch\x20failed:\x27,\x20sessionError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x202:\x20Fetch\x20memories\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_memories\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetching\x20ChatGPT\x20memories...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20headers\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers[\x27Authorization\x27]\x20=\x20\x27Bearer\x20\x27\x20+\x20accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/memories?include_memory_entries=true&memory_entries_filter=all\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!memoriesResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27HTTP\x20\x27\x20+\x20memoriesResponse.status\x20+\x20\x27:\x20Failed\x20to\x20fetch\x20memories\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesData\x20=\x20await\x20memoriesResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20itemsCount\x20=\x20memoriesData.items\x20?\x20memoriesData.items.length\x20:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20entriesCount\x20=\x20memoriesData.memory_entries\x20?\x20memoriesData.memory_entries.length\x20:\x200;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memoriesData:\x20memoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20itemsCount:\x20itemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20entriesCount:\x20entriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Memories\x20fetch\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Memories\x20fetch\x20failed:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20})();\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Memories\x20init\x20error:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20error:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a'];_0x22ec=function(){return _0x17b7fb;};return _0x22ec();}export const CHATGPT_EXPORT_SCRIPT=_0x13a8(0x1);export const CHATGPT_SUCCESS_SCRIPT=_0x13a8(0x2);function _0x13a8(_0x22ec53,_0x13a821){_0x22ec53=_0x22ec53-0x0;const _0x78372c=_0x22ec();let _0xe4d399=_0x78372c[_0x22ec53];return _0xe4d399;}export const CHATGPT_ERROR_SCRIPT='\x0a(function()\x20{\x0a\x20\x20\x20\x20console.log(\x27❌\x20ChatGPT\x20export\x20failed!\x27);\x0a})();\x0atrue;\x0a';export const CHATGPT_FETCH_MEMORIES_SCRIPT=_0x13a8(0x3);
|
|
1
|
+
export const CHATGPT_CONSENT_POPUP_SCRIPT=_0x2186(0x0);export const CHATGPT_EXPORT_SCRIPT=_0x2186(0x1);export const CHATGPT_SUCCESS_SCRIPT=_0x2186(0x2);function _0x2186(_0x322809,_0x21862e){_0x322809=_0x322809-0x0;const _0x2502a4=_0x3228();let _0x96ead9=_0x2502a4[_0x322809];return _0x96ead9;}export const CHATGPT_ERROR_SCRIPT=_0x2186(0x3);export const CHATGPT_FETCH_MEMORIES_SCRIPT=_0x2186(0x4);function _0x3228(){const _0x4c5d91=['\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20existing\x20=\x20document.getElementById(\x27onairos-consent-overlay\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(existing)\x20existing.remove();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20overlay\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.id\x20=\x20\x27onairos-consent-overlay\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.style.cssText\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20position:\x20fixed;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20top:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20left:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20height:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20rgba(0,\x200,\x200,\x200.7);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20z-index:\x20999999;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20-apple-system,\x20BlinkMacSystemFont,\x20\x27Segoe\x20UI\x27,\x20Roboto,\x20sans-serif;\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20popup\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20popup.style.cssText\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20400px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x2090%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x2020px\x2060px\x20rgba(0,\x200,\x200,\x200.3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20popup.innerHTML\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22text-align:\x20center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:\x2048px;\x20margin-bottom:\x2016px;\x22>🤖</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20style=\x22margin:\x200\x200\x2012px\x200;\x20font-size:\x2024px;\x20color:\x20#1a1a1a;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Export\x20Conversations?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20style=\x22margin:\x200\x200\x2024px\x200;\x20color:\x20#666;\x20font-size:\x2016px;\x20line-height:\x201.5;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Allow\x20Onairos\x20to\x20export\x20your\x20top\x2010\x20ChatGPT\x20conversations\x20for\x20analysis?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:\x20flex;\x20gap:\x2012px;\x20justify-content:\x20center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20id=\x22onairos-deny\x22\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20flex:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2014px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x202px\x20solid\x20#e0e0e0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20#666;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22>Deny</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20id=\x22onairos-allow\x22\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20flex:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2014px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(135deg,\x20#667eea\x200%,\x20#764ba2\x20100%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22>Allow</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.appendChild(popup);\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.body.appendChild(overlay);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-deny\x27).onclick\x20=\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20overlay.remove();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27denied\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).onclick\x20=\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).innerHTML\x20=\x20\x27⏳\x20Starting...\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).disabled\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27allowed\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setTimeout(()\x20=>\x20overlay.remove(),\x20500);\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20VERSION\x20CHECK:\x20This\x20confirms\x20new\x20code\x20is\x20running\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🔄\x20[CHATGPT]\x20Script\x20version:\x20SDK_V1\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27DEBUG_LOG\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20version:\x20SDK_V1\x20loaded\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!document.body)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Page\x20not\x20ready\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Use\x20chatgpt.com\x20as\x20iOS\x20does\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20baseUrl\x20=\x20\x27https://chatgpt.com\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🚀\x20[CHATGPT]\x20Starting\x20extraction\x20(iOS-style\x20with\x20access\x20token)...\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20(async\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x201:\x20Get\x20access\x20token\x20(matches\x20iOS\x20fetchAccessToken)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_token\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x202,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Getting\x20access\x20token...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Fetching\x20access\x20token\x20from\x20/api/auth/session...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20accessToken\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/api/auth/session\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Session\x20response\x20status:\x27,\x20sessionResponse.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sessionResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionData\x20=\x20await\x20sessionResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accessToken\x20=\x20sessionData.accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Got\x20accessToken:\x27,\x20accessToken\x20?\x20\x27YES\x20(len=\x27\x20+\x20accessToken.length\x20+\x20\x27)\x27\x20:\x20\x27NO\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(sessionError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20Session\x20fetch\x20failed:\x27,\x20sessionError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Build\x20headers\x20matching\x20iOS\x20exactly\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20headers\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27User-Agent\x27:\x20\x27Mozilla/5.0\x20(iPhone;\x20CPU\x20iPhone\x20OS\x2017_0\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Version/17.0\x20Mobile/15E148\x20Safari/604.1\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers[\x27Authorization\x27]\x20=\x20\x27Bearer\x20\x27\x20+\x20accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x202:\x20Start\x20BOTH\x20conversations\x20AND\x20memories\x20fetches\x20IN\x20PARALLEL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_list\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x205,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetching\x20conversations\x20and\x20memories...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Starting\x20PARALLEL\x20fetch\x20of\x20conversations\x20AND\x20memories...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Start\x20memories\x20fetch\x20IMMEDIATELY\x20using\x20XMLHttpRequest\x20(more\x20compatible\x20than\x20fetch)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20memoriesPromise\x20=\x20new\x20Promise((resolve)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20xhr\x20=\x20new\x20XMLHttpRequest();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.open(\x27GET\x27,\x20baseUrl\x20+\x20\x27/backend-api/memories?include_memory_entries=true&memory_entries_filter=all\x27,\x20true);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.withCredentials\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.setRequestHeader(\x27Accept\x27,\x20\x27application/json\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.setRequestHeader(\x27Authorization\x27,\x20\x27Bearer\x20\x27\x20+\x20accessToken);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.onload\x20=\x20function()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20XHR\x20status:\x27,\x20xhr.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(xhr.status\x20>=\x20200\x20&&\x20xhr.status\x20<\x20300)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20JSON.parse(xhr.responseText);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20allKeys\x20=\x20Object.keys(data\x20||\x20{});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20response\x20keys:\x27,\x20allKeys);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(data);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(parseErr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20parse\x20error:\x27,\x20parseErr.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20API\x20returned:\x27,\x20xhr.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.onerror\x20=\x20function()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20XHR\x20error\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.send();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20XHR\x20request\x20sent\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(xhrErr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20XHR\x20exception:\x27,\x20xhrErr.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Start\x20conversations\x20fetch\x20(in\x20parallel\x20with\x20memories)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Fetching\x20conversations\x20with\x20auth:\x27,\x20!!accessToken);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20listResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/conversations?limit=10\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Conversations\x20response:\x27,\x20listResponse.status);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!listResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27HTTP\x20\x27\x20+\x20listResponse.status\x20+\x20\x27:\x20Failed\x20to\x20fetch\x20conversations\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20listData\x20=\x20await\x20listResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20conversations\x20=\x20listData.items\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Found\x27,\x20conversations.length,\x20\x27conversations\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(conversations.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Still\x20wait\x20for\x20memories\x20even\x20if\x20no\x20conversations\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20No\x20conversations,\x20waiting\x20for\x20memories...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesData\x20=\x20await\x20memoriesPromise;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesItemsCount\x20=\x20noConvMemoriesData?.items?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesEntriesCount\x20=\x20noConvMemoriesData?.memory_entries?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversations:\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_conversations:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_messages:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories:\x20noConvMemoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_items_count:\x20noConvMemoriesItemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_entries_count:\x20noConvMemoriesEntriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Connected!\x20No\x20conversations\x20found.\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x203:\x20Fetch\x20each\x20conversation\x20(matches\x20iOS\x20fetchAllConversationDetails)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x2010,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Processing\x200/\x27\x20+\x20conversations.length\x20+\x20\x27\x20conversations\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20userMessages\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(let\x20i\x20=\x200;\x20i\x20<\x20conversations.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20conv\x20=\x20conversations[i];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20progressPercent\x20=\x2010\x20+\x20((i\x20/\x20conversations.length)\x20*\x2080);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27processing_conversation\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20current:\x20i\x20+\x201,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total:\x20conversations.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x20Math.round(progressPercent),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Processing\x20\x27\x20+\x20(i\x20+\x201)\x20+\x20\x27/\x27\x20+\x20conversations.length\x20+\x20\x27\x20conversations\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20iOS\x20uses\x200.3s\x20delay\x20-\x20we\x20use\x200.3s\x20too\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(i\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20new\x20Promise(resolve\x20=>\x20setTimeout(resolve,\x20300));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/conversation/\x27\x20+\x20conv.id,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(detailResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20convData\x20=\x20await\x20detailResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20messages\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Extract\x20user\x20messages\x20from\x20mapping\x20(same\x20as\x20iOS)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(convData.mapping)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20nodeId\x20in\x20convData.mapping)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20node\x20=\x20convData.mapping[nodeId];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(node.message\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.author\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.author.role\x20===\x20\x27user\x27\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.content\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.content.parts)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20part\x20of\x20node.message.content.parts)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(typeof\x20part\x20===\x20\x27string\x27\x20&&\x20part.trim())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20messages.push(part.trim());\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(messages.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20userMessages.push({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversation_id:\x20conv.id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title:\x20conv.title\x20||\x20\x27Untitled\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_messages:\x20messages\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20✅\x20Conversation\x27,\x20(i\x20+\x201)\x20+\x20\x27/\x27\x20+\x20conversations.length\x20+\x20\x27:\x27,\x20conv.title,\x20\x27(\x27\x20+\x20messages.length\x20+\x20\x27\x20msgs)\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Conversation\x27,\x20conv.id,\x20\x27returned\x27,\x20detailResponse.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(convError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Failed\x20conversation\x27,\x20conv.id\x20+\x20\x27:\x27,\x20convError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalMessages\x20=\x20userMessages.reduce((sum,\x20c)\x20=>\x20sum\x20+\x20c.user_messages.length,\x200);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27✅\x20[CHATGPT]\x20Extraction\x20complete:\x27,\x20totalMessages,\x20\x27messages\x20from\x27,\x20userMessages.length,\x20\x27conversations\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x204:\x20Wait\x20for\x20memories\x20(started\x20in\x20parallel\x20at\x20STEP\x202)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Waiting\x20for\x20parallel\x20memories\x20fetch\x20to\x20complete...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesData\x20=\x20await\x20memoriesPromise;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Check\x20all\x20possible\x20field\x20names\x20(API\x20structure\x20varies)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesItemsCount\x20=\x20memoriesData?.items?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesEntriesCount\x20=\x20memoriesData?.memory_entries?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesArrayCount\x20=\x20memoriesData?.memories?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalMemoriesCount\x20=\x20memoriesItemsCount\x20+\x20memoriesEntriesCount\x20+\x20memoriesArrayCount;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Final\x20memories\x20result:\x27,\x20memoriesItemsCount,\x20\x27items,\x27,\x20memoriesEntriesCount,\x20\x27entries,\x27,\x20memoriesArrayCount,\x20\x27memories\x20array\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Send\x20memories\x20to\x20React\x20Native\x20for\x20storage\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(memoriesData\x20&&\x20totalMemoriesCount\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Sending\x20memories\x20to\x20React\x20Native\x20for\x20storage...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_DATA\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memoriesData:\x20memoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20totalMemoriesCount:\x20totalMemoriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Send\x20conversation\x20data\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversations:\x20userMessages,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_conversations:\x20userMessages.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_messages:\x20totalMessages,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_items_count:\x20memoriesItemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_entries_count:\x20memoriesEntriesCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_array_count:\x20memoriesArrayCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_memories_count:\x20totalMemoriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Export\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetch\x20failed:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20})();\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Init\x20error:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20error:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20console.log(\x27✅\x20ChatGPT\x20export\x20successful!\x27);\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20console.log(\x27❌\x20ChatGPT\x20export\x20failed!\x27);\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20baseUrl\x20=\x20\x27https://chatgpt.com\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Starting\x20memories\x20extraction...\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20(async\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x201:\x20Get\x20access\x20token\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_token\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Getting\x20access\x20token...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20accessToken\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/api/auth/session\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sessionResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionData\x20=\x20await\x20sessionResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accessToken\x20=\x20sessionData.accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(sessionError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20Session\x20fetch\x20failed:\x27,\x20sessionError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x202:\x20Fetch\x20memories\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_memories\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetching\x20ChatGPT\x20memories...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20headers\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers[\x27Authorization\x27]\x20=\x20\x27Bearer\x20\x27\x20+\x20accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/memories?include_memory_entries=true&memory_entries_filter=all\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!memoriesResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27HTTP\x20\x27\x20+\x20memoriesResponse.status\x20+\x20\x27:\x20Failed\x20to\x20fetch\x20memories\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesData\x20=\x20await\x20memoriesResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20itemsCount\x20=\x20memoriesData.items\x20?\x20memoriesData.items.length\x20:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20entriesCount\x20=\x20memoriesData.memory_entries\x20?\x20memoriesData.memory_entries.length\x20:\x200;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memoriesData:\x20memoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20itemsCount:\x20itemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20entriesCount:\x20entriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Memories\x20fetch\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Memories\x20fetch\x20failed:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20})();\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Memories\x20init\x20error:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20error:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a'];_0x3228=function(){return _0x4c5d91;};return _0x3228();}
|