@onairos/react-native 3.7.1 → 3.7.3
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 +219 -9
- package/lib/commonjs/assets/icons/spotify.png +0 -0
- package/lib/commonjs/assets/images/spotify.png +0 -0
- package/lib/commonjs/components/BodyText.js +27 -9
- package/lib/commonjs/components/BrandMark.js +111 -10
- package/lib/commonjs/components/CodeInput.js +116 -9
- package/lib/commonjs/components/EmailInput.js +30 -8
- package/lib/commonjs/components/GoogleButton.js +56 -9
- package/lib/commonjs/components/HeadingGroup.js +43 -9
- package/lib/commonjs/components/LLMDataInputModal.js +664 -14
- package/lib/commonjs/components/ModalHeader.js +99 -9
- package/lib/commonjs/components/ModalSheet.js +47 -9
- package/lib/commonjs/components/Onairos.js +380 -14
- package/lib/commonjs/components/OnairosButton.js +313 -13
- package/lib/commonjs/components/OnairosSignInButton.js +130 -12
- package/lib/commonjs/components/Overlay.js +465 -13
- package/lib/commonjs/components/PersonaImage.js +137 -10
- package/lib/commonjs/components/PersonaLoadingScreen.js +318 -12
- package/lib/commonjs/components/PersonalizationConsentScreen.js +467 -13
- package/lib/commonjs/components/PinCreationScreen.js +403 -12
- package/lib/commonjs/components/PinInput.js +464 -9
- package/lib/commonjs/components/PlatformConnectorsStep.js +1311 -23
- package/lib/commonjs/components/PlatformList.js +137 -10
- package/lib/commonjs/components/PlatformToggle.js +180 -9
- package/lib/commonjs/components/PrimaryButton.js +180 -10
- package/lib/commonjs/components/SignInMatchAnimation.js +197 -9
- package/lib/commonjs/components/SignInStep.js +345 -12
- package/lib/commonjs/components/UniversalOnboarding.js +2780 -30
- package/lib/commonjs/components/VerificationStep.js +176 -11
- package/lib/commonjs/components/WelcomeScreen.js +461 -22
- package/lib/commonjs/components/icons/Basicproficon.js +37 -8
- package/lib/commonjs/components/icons/Basicprofile.js +21 -8
- package/lib/commonjs/components/icons/Checkbox.js +21 -8
- package/lib/commonjs/components/icons/Checkmark.js +27 -8
- package/lib/commonjs/components/icons/Contentanalysis.js +21 -8
- package/lib/commonjs/components/icons/Contenticon.js +39 -8
- package/lib/commonjs/components/icons/EnochE.js +41 -8
- package/lib/commonjs/components/icons/Personalityicon.js +30 -8
- package/lib/commonjs/components/icons/Personalityprofile.js +21 -8
- package/lib/commonjs/components/icons/Personalitytraits.js +21 -8
- package/lib/commonjs/components/icons/Userpreferences.js +21 -8
- package/lib/commonjs/components/icons/index.js +84 -17
- package/lib/commonjs/components/onboarding/OAuthWebView.js +1754 -18
- package/lib/commonjs/components/onboarding/OnboardingHeader.js +74 -10
- package/lib/commonjs/components/onboarding/PinInput.js +283 -10
- package/lib/commonjs/components/onboarding/PlatformConnector.js +249 -11
- package/lib/commonjs/config/PLATFORM_APIS.md +849 -0
- package/lib/commonjs/config/api.js +56 -7
- package/lib/commonjs/constants/index.js +120 -7
- package/lib/commonjs/context/AuthContext.js +345 -10
- package/lib/commonjs/hooks/useConnectedAccounts.js +111 -9
- package/lib/commonjs/hooks/useConnections.js +102 -8
- package/lib/commonjs/hooks/useCredentials.js +178 -10
- package/lib/commonjs/hooks/useUserConnections.js +148 -10
- package/lib/commonjs/index.js +439 -34
- package/lib/commonjs/services/apiClient.js +298 -8
- package/lib/commonjs/services/biometricPinService.js +180 -8
- package/lib/commonjs/services/chatGPTConversationExtractor.js +155 -8
- package/lib/commonjs/services/chatGPTConversationService.js +275 -9
- package/lib/commonjs/services/claudeConversationExtractor.js +103 -8
- package/lib/commonjs/services/claudeConversationService.js +158 -9
- package/lib/commonjs/services/connectedAccountsService.js +310 -10
- package/lib/commonjs/services/googleAuthService.js +252 -11
- package/lib/commonjs/services/hingeDataExtractor.js +105 -8
- package/lib/commonjs/services/hingeDataService.js +150 -9
- package/lib/commonjs/services/imageCompressionService.js +260 -7
- package/lib/commonjs/services/instagramDataExtractor.js +126 -8
- package/lib/commonjs/services/instagramDataService.js +163 -9
- package/lib/commonjs/services/jwtStorageService.js +276 -7
- package/lib/commonjs/services/linkedinDOMExtractor.js +245 -7
- package/lib/commonjs/services/linkedinProfileService.js +222 -9
- package/lib/commonjs/services/linkedinScrapingService.js +230 -8
- package/lib/commonjs/services/llmDataStorage.js +294 -8
- package/lib/commonjs/services/mobileTrainingService.js +186 -8
- package/lib/commonjs/services/netflixDataExtractor.js +120 -8
- package/lib/commonjs/services/netflixDataService.js +198 -9
- package/lib/commonjs/services/pinEncryptionService.js +84 -8
- package/lib/commonjs/services/pinStorageUtils.js +105 -7
- package/lib/commonjs/services/platformAuthService.js +1484 -12
- package/lib/commonjs/services/sephoraDataExtractor.js +140 -8
- package/lib/commonjs/services/sephoraDataService.js +200 -9
- package/lib/commonjs/services/spotifyDataExtractor.js +148 -8
- package/lib/commonjs/services/spotifyDataService.js +241 -9
- package/lib/commonjs/services/storageService.js +404 -8
- package/lib/commonjs/services/telegramDataExtractor.js +115 -8
- package/lib/commonjs/services/telegramDataService.js +499 -9
- package/lib/commonjs/services/trainingApiHelpers.js +73 -7
- package/lib/commonjs/services/userConnectionsService.js +340 -10
- package/lib/commonjs/services/youtubeMigrationService.js +416 -10
- package/lib/commonjs/theme/index.js +250 -7
- package/lib/commonjs/types/ambient.d.js +2 -1
- package/lib/commonjs/types/declarations.d.js +2 -1
- package/lib/commonjs/types/index.js +6 -1
- package/lib/commonjs/types/node-fix.d.js +2 -1
- package/lib/commonjs/types/node-override.d.js +2 -1
- package/lib/commonjs/types/opacity.d.js +2 -1
- package/lib/commonjs/types.js +14 -1
- package/lib/commonjs/utils/Portal.js +98 -8
- package/lib/commonjs/utils/api.js +130 -9
- package/lib/commonjs/utils/assetRegistry.js +210 -35
- package/lib/commonjs/utils/auth.js +112 -9
- package/lib/commonjs/utils/connectorTests.js +613 -29
- package/lib/commonjs/utils/crypto.js +62 -8
- package/lib/commonjs/utils/debugHelper.js +64 -1
- package/lib/commonjs/utils/encryption.js +76 -7
- package/lib/commonjs/utils/eventUtils.js +288 -1
- package/lib/commonjs/utils/haptics.js +66 -9
- package/lib/commonjs/utils/imagePreloader.js +6 -1
- package/lib/commonjs/utils/networkDiagnostics.js +226 -8
- package/lib/commonjs/utils/onairosApi.js +350 -9
- package/lib/commonjs/utils/programmaticFlow.js +117 -9
- package/lib/commonjs/utils/retryHelper.js +220 -1
- package/lib/commonjs/utils/secureStorage.js +349 -10
- package/lib/commonjs/utils/webviewScripts/chatgpt.js +551 -1
- package/lib/commonjs/utils/webviewScripts/claude.js +376 -1
- package/lib/commonjs/utils/webviewScripts/hinge.js +411 -1
- package/lib/commonjs/utils/webviewScripts/index.js +698 -15
- package/lib/commonjs/utils/webviewScripts/instagram.js +454 -1
- package/lib/commonjs/utils/webviewScripts/linkedin.js +880 -1
- package/lib/commonjs/utils/webviewScripts/netflix.js +382 -1
- package/lib/commonjs/utils/webviewScripts/sephora.js +516 -1
- package/lib/commonjs/utils/webviewScripts/spotify.js +419 -1
- package/lib/commonjs/utils/webviewScripts/telegram.js +678 -1
- package/lib/module/api/index.js +211 -1
- package/lib/module/assets/icons/spotify.png +0 -0
- package/lib/module/assets/images/spotify.png +0 -0
- package/lib/module/components/BodyText.js +20 -1
- package/lib/module/components/BrandMark.js +104 -1
- package/lib/module/components/CodeInput.js +109 -1
- package/lib/module/components/EmailInput.js +23 -1
- package/lib/module/components/GoogleButton.js +49 -1
- package/lib/module/components/HeadingGroup.js +36 -1
- package/lib/module/components/LLMDataInputModal.js +656 -7
- package/lib/module/components/ModalHeader.js +92 -1
- package/lib/module/components/ModalSheet.js +39 -1
- package/lib/module/components/Onairos.js +373 -1
- package/lib/module/components/OnairosButton.js +305 -1
- package/lib/module/components/OnairosSignInButton.js +121 -1
- package/lib/module/components/Overlay.js +456 -1
- package/lib/module/components/PersonaImage.js +129 -1
- package/lib/module/components/PersonaLoadingScreen.js +310 -1
- package/lib/module/components/PersonalizationConsentScreen.js +460 -1
- package/lib/module/components/PinCreationScreen.js +396 -1
- package/lib/module/components/PinInput.js +456 -1
- package/lib/module/components/PlatformConnectorsStep.js +1302 -6
- package/lib/module/components/PlatformList.js +129 -1
- package/lib/module/components/PlatformToggle.js +173 -1
- package/lib/module/components/PrimaryButton.js +172 -1
- package/lib/module/components/SignInMatchAnimation.js +189 -1
- package/lib/module/components/SignInStep.js +338 -1
- package/lib/module/components/UniversalOnboarding.js +2770 -1
- package/lib/module/components/VerificationStep.js +168 -1
- package/lib/module/components/WelcomeScreen.js +453 -1
- package/lib/module/components/icons/Basicproficon.js +30 -1
- package/lib/module/components/icons/Basicprofile.js +14 -1
- package/lib/module/components/icons/Checkbox.js +14 -1
- package/lib/module/components/icons/Checkmark.js +20 -1
- package/lib/module/components/icons/Contentanalysis.js +14 -1
- package/lib/module/components/icons/Contenticon.js +32 -1
- package/lib/module/components/icons/EnochE.js +34 -1
- package/lib/module/components/icons/Personalityicon.js +23 -1
- package/lib/module/components/icons/Personalityprofile.js +14 -1
- package/lib/module/components/icons/Personalitytraits.js +14 -1
- package/lib/module/components/icons/Userpreferences.js +14 -1
- package/lib/module/components/icons/index.js +13 -1
- package/lib/module/components/onboarding/OAuthWebView.js +1746 -1
- package/lib/module/components/onboarding/OnboardingHeader.js +66 -1
- package/lib/module/components/onboarding/PinInput.js +274 -1
- package/lib/module/components/onboarding/PlatformConnector.js +240 -1
- package/lib/module/config/PLATFORM_APIS.md +849 -0
- package/lib/module/config/api.js +47 -1
- package/lib/module/constants/index.js +114 -1
- package/lib/module/context/AuthContext.js +335 -1
- package/lib/module/hooks/useConnectedAccounts.js +106 -1
- package/lib/module/hooks/useConnections.js +95 -1
- package/lib/module/hooks/useCredentials.js +171 -6
- package/lib/module/hooks/useUserConnections.js +140 -1
- package/lib/module/index.js +172 -1
- package/lib/module/services/apiClient.js +295 -1
- package/lib/module/services/biometricPinService.js +169 -1
- package/lib/module/services/chatGPTConversationExtractor.js +149 -1
- package/lib/module/services/chatGPTConversationService.js +268 -1
- package/lib/module/services/claudeConversationExtractor.js +97 -1
- package/lib/module/services/claudeConversationService.js +151 -1
- package/lib/module/services/connectedAccountsService.js +293 -1
- package/lib/module/services/googleAuthService.js +241 -1
- package/lib/module/services/hingeDataExtractor.js +99 -1
- package/lib/module/services/hingeDataService.js +143 -1
- package/lib/module/services/imageCompressionService.js +250 -1
- package/lib/module/services/instagramDataExtractor.js +120 -1
- package/lib/module/services/instagramDataService.js +156 -1
- package/lib/module/services/jwtStorageService.js +257 -1
- package/lib/module/services/linkedinDOMExtractor.js +234 -1
- package/lib/module/services/linkedinProfileService.js +210 -1
- package/lib/module/services/linkedinScrapingService.js +219 -1
- package/lib/module/services/llmDataStorage.js +277 -1
- package/lib/module/services/mobileTrainingService.js +173 -1
- package/lib/module/services/netflixDataExtractor.js +114 -1
- package/lib/module/services/netflixDataService.js +191 -1
- package/lib/module/services/pinEncryptionService.js +74 -6
- package/lib/module/services/pinStorageUtils.js +93 -1
- package/lib/module/services/platformAuthService.js +1461 -1
- package/lib/module/services/sephoraDataExtractor.js +134 -1
- package/lib/module/services/sephoraDataService.js +193 -1
- package/lib/module/services/spotifyDataExtractor.js +142 -1
- package/lib/module/services/spotifyDataService.js +234 -1
- package/lib/module/services/storageService.js +383 -1
- package/lib/module/services/telegramDataExtractor.js +109 -1
- package/lib/module/services/telegramDataService.js +493 -1
- package/lib/module/services/trainingApiHelpers.js +67 -1
- package/lib/module/services/userConnectionsService.js +329 -1
- package/lib/module/services/youtubeMigrationService.js +405 -1
- package/lib/module/theme/index.js +245 -1
- package/lib/module/types.js +10 -1
- package/lib/module/utils/Portal.js +90 -1
- package/lib/module/utils/api.js +118 -1
- package/lib/module/utils/assetRegistry.js +200 -34
- package/lib/module/utils/auth.js +100 -1
- package/lib/module/utils/connectorTests.js +600 -27
- package/lib/module/utils/crypto.js +54 -1
- package/lib/module/utils/debugHelper.js +54 -1
- package/lib/module/utils/encryption.js +67 -1
- package/lib/module/utils/eventUtils.js +270 -1
- package/lib/module/utils/haptics.js +59 -8
- package/lib/module/utils/imagePreloader.js +3 -1
- package/lib/module/utils/networkDiagnostics.js +217 -1
- package/lib/module/utils/onairosApi.js +333 -1
- package/lib/module/utils/programmaticFlow.js +111 -1
- package/lib/module/utils/retryHelper.js +211 -1
- package/lib/module/utils/secureStorage.js +330 -6
- package/lib/module/utils/webviewScripts/chatgpt.js +545 -1
- package/lib/module/utils/webviewScripts/claude.js +370 -1
- package/lib/module/utils/webviewScripts/hinge.js +405 -1
- package/lib/module/utils/webviewScripts/index.js +434 -1
- package/lib/module/utils/webviewScripts/instagram.js +448 -1
- package/lib/module/utils/webviewScripts/linkedin.js +874 -1
- package/lib/module/utils/webviewScripts/netflix.js +376 -1
- package/lib/module/utils/webviewScripts/sephora.js +510 -1
- package/lib/module/utils/webviewScripts/spotify.js +413 -1
- package/lib/module/utils/webviewScripts/telegram.js +672 -1
- package/package.json +2 -2
|
@@ -1 +1,2770 @@
|
|
|
1
|
-
function _0xcd13(_0x539b57,_0xcd13a){_0x539b57=_0x539b57-0x0;const _0x3710bc=_0x539b();let _0x1c527e=_0x3710bc[_0x539b57];return _0x1c527e;}import React,{useCallback,useEffect,useState,useRef}from'react';import{View,Text,StyleSheet,Dimensions,TouchableOpacity,TouchableWithoutFeedback,Platform,Modal,Animated,Linking,Alert}from'react-native';import AsyncStorage from'@react-native-async-storage/async-storage';import _0x34d39e from'./BrandMark';import _0x5fe3f9 from'./HeadingGroup';import _0x56eedb from'./BodyText';import _0x2ab69d from'./PrimaryButton';function _0x539b(){const _0x170606=['window','🔍\x20UniversalOnboarding:\x20visible\x20prop\x20changed\x20to:','phPPq','signin','🍎\x20[APPLE\x20FIX]\x20Current\x20step\x20was:','->\x20Setting\x20to:\x20welcome','welcome','code','platform','connect','VsMeN','📱\x20Stored\x20connected\x20platform:','Error\x20storing\x20connected\x20platform:','vzHVG','📱\x20Removed\x20connected\x20platform:','Remaining\x20platforms:','Error\x20removing\x20connected\x20platform:','❌\x20[BACKGROUND]\x20Failed\x20to\x20continue\x20background\x20training:','kKuQF','Error\x20disconnecting\x20platform:','oauth','Disconnect\x20Platform','🔍\x20Socket\x20state:','fpAMz','1|0|4|3|2','Error\x20loading\x20user\x20data:','Ovyvt','KhUJI','url','📊\x20Training\x20type:','🔐\x20Encryption\x20enabled:','🔒\x20Compression\x20enabled:','🔌\x20Cleaning\x20up\x20socket\x20connection...','IqnQr','epBcN','NsfSv','VPlVG','2|3|4|5|0|1','consent','existing_user_token','existing_user_info','🔍\x20Found\x20existing\x20user\x20info\x20-\x20user\x20wants\x20to\x20add\x20more\x20data','disconnected','Initial\x20connection\x20status:','Connection\x20statuses\x20set:','Platform\x20toggles\x20set:','Error\x20loading\x20initial\x20connection\x20status:','OuAgt','🍎\x20Get\x20Started\x20pressed\x20(Apple\x20user)\x20-\x20skipping\x20signin,\x20going\x20to\x20platforms','Verification\x20failed.\x20Please\x20try\x20again.','Mfcfc','reviewer@bypass.com','2|0|6|4|1|3|5','onairos_user','true','eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyZXZpZXdlciI6dHJ1ZSwiaWF0IjoxNzA0MDY3MjAwfQ.reviewer-bypass-signature-placeholder','test@bypass.com','✅\x20Verification\x20code\x20sent\x20successfully','❌\x20Error\x20sending\x20verification\x20code:','WdBdm','Failed\x20to\x20resend\x20verification\x20code.','❌\x20No\x20authentication\x20token\x20available','No\x20authentication\x20token\x20available','No\x20background\x20socket\x20ID\x20available','🔌\x20[BACKGROUND]\x20Using\x20existing\x20socket\x20ID:','✅\x20[BACKGROUND]\x20PIN\x20submitted\x20for\x20existing\x20training\x20session','BhuDj','🔗\x20Initiating\x20Google\x20Sign-In','Xwizs','rAGcr','🔍\x20Is\x20new\x20user?','👤\x20Returning\x20user\x20detected\x20via\x20Google\x20Sign-In\x20-\x20checking\x20for\x20existing\x20connections','1|0|5|4|3|2','ℹ️\x20No\x20existing\x20connections\x20found\x20-\x20proceeding\x20to\x20platforms\x20step','⚠️\x20Could\x20not\x20fetch\x20existing\x20connections,\x20proceeding\x20to\x20platforms:','rjEiI','vXyZC','NbHEX','❌\x20Google\x20Sign-In\x20error:','Google\x20Sign-In\x20failed.\x20Please\x20try\x20again.','PnYBq','🧪\x20Test\x20bypass\x20-\x20skipping\x20code\x20verification,\x20going\x20to\x20platforms','🔍\x20App\x20name:','✅\x20Email\x20verification\x20successful','🔍\x20Checking\x20for\x20returning\x20user\x20data...','pzlZQ','👋\x20Welcome\x20back!\x20User\x20has\x20existing\x20connections,\x20skipping\x20to\x20consent\x20screen','NIUvL','🆕\x20New\x20user\x20or\x20no\x20existing\x20connections,\x20showing\x20platform\x20connection\x20screen','❌\x20Email\x20verification\x20failed:','Invalid\x20verification\x20code.\x20Please\x20try\x20again.','❌\x20Error\x20verifying\x20email\x20code:','👋\x20Logout\x20requested\x20-\x20clearing\x20tokens\x20and\x20navigating\x20to\x20login','sdk_jwt_token','onairos_jwt_token','onairos_username','training-complete-token','DnRih','🔄\x20Resending\x20verification\x20code\x20to:','YouTube\x20connection\x20failed.\x20Please\x20try\x20again.','KyOJC','✅\x20Onboarding\x20complete!\x20Connected\x20platforms:','user_email','🔑\x20[SDK]\x20Auth\x20data\x20retrieved\x20in\x20parallel','gBjII','✅\x20[SDK]\x20Calling\x20onComplete\x20with\x20token\x20and\x20user\x20data','takRH','🍎\x20[SDK]\x20Calling\x20onComplete\x20with\x20email\x20(no\x20SDK\x20token\x20-\x20Apple\x20auth)','⚠️\x20[SDK]\x20No\x20email\x20found\x20-\x20calling\x20onComplete\x20with\x20limited\x20data','CONNECTIONS_REQUIRED','Connections\x20required','Almost\x20done','⚠️\x20[SDK]\x20User\x20skipped\x20-\x20no\x20auth\x20data\x20available','vtSwe','✅\x20[SDK]\x20Skip\x20complete\x20-\x20waiting\x20for\x20parent\x20to\x20close\x20modal','3|2|4|5|0|1','🧪\x20Testing\x20mode\x20enabled','💾\x20Storage\x20method:','3|4|5|1|0|2','LEhYn','EAvbQ','iAlly','❌\x20Failed\x20to\x20store\x20reviewer\x20bypass:','🔍\x20UniversalOnboarding:\x20modalVisible\x20state\x20is:','➕\x20Returning\x20user\x20wants\x20to\x20connect\x20more\x20platforms','asJRV','QkTnC','❌\x20Training\x20update\x20error:','2|3|0|1|4','Training\x20model...','chatgpt','llm','🤖\x20Handling\x20LLM/ChatGPT\x20connection\x20-\x20sending\x20to\x20backend...','3|4|1|5|0|2','✅\x20Backend\x20received\x20and\x20stored\x20LLM\x20data','📝\x20Connection\x20ID:','cgTXi','NVHpt','CtWUe','NMICY','vANqF','AoSmT','htrOl','❌\x20[TRANSITION]\x20Background\x20training\x20failed\x20during\x20transition:','1|0|4|2|3','🧠\x20Inference\x20Complete:','PGDzy','XZIzB','🔄\x20Returning\x20to\x20connect\x20step','🔐\x20[PIN\x20SUBMIT]\x20PIN\x20submitted,\x20checking\x20for\x20background\x20training...','✅\x20[PIN\x20SUBMIT]\x20Background\x20training\x20detected,\x20continuing\x20with\x20PIN\x20validation...','persona','jhQJx','Error:\x20Failed\x20to\x20continue\x20training','ℹ️\x20[PIN\x20SUBMIT]\x20No\x20background\x20training\x20detected','pin','Failed\x20to\x20create\x20or\x20retrieve\x20authentication\x20token','SaVaa','Starting\x20training...','KxWUw','🚀\x20Starting\x20Enoch\x20training\x20with\x20socketId:','🔑\x20Using\x20auth\x20token:','None','mobile_user','📱\x20Connected\x20platforms\x20for\x20training:','📤\x20Sending\x20training\x20data\x20to\x20/mobile-training/enoch:','5|7|6|3|2|0|1|4','🔗\x20Connections\x20required\x20detected\x20from\x20HTTP\x20response','🚀\x20Training\x20Started:','HwohR','1|0|2|5|4|6|3','fsBvP','Training\x20failed\x20to\x20start','Unknown\x20error','SFjpH','XVlBJ','🔍\x20Socket\x20state\x20after\x205\x20seconds:','✅\x20Socket\x20connected\x20for\x20training','🔌\x20Socket\x20connection\x20details:','🔌\x20Socket\x20ID\x20for\x20training:','🔄\x20Socket\x20ready\x20for\x20persona\x20display\x20with\x20token:','Waiting\x20for\x20training\x20to\x20start\x20from\x20connector→PIN\x20transition','❌\x20No\x20socket\x20ID\x20available\x20after\x20connection','Connection\x20error.\x20Please\x20try\x20again.','❌\x20Socket\x20reconnection\x20error:','✅\x20Training\x20Complete:','3|1|0|4|2','Uploading\x20to\x20S3','yGgGs','🎉\x20All\x20Complete:','🧠\x20Inference\x20enabled:','bVZfZ','🔄\x20YouTube\x20token\x20expired,\x20triggering\x20reconnection...','YouTube\x20token\x20expired\x20-\x20reconnecting...','5|0|2|3|4|1|7|6','2|3|0|7|5|4|1|6','No\x20interaction\x20data\x20found','3|2|0|4|5|1','LIMITED_DATA','AKkNa','test@example.com','zXJIo','❌\x20Socket\x20connection\x20timeout\x20after\x2020\x20seconds','aDPFF','xzIih','❌\x20No\x20real\x20authentication\x20token\x20found\x20after\x20training\x20completion','❌\x20Socket\x20disconnected,\x20reason:','🔍\x20Disconnect\x20details:','🔄\x20Socket\x20reconnected\x20after','attempts','WrWNo','🔄\x20Socket\x20reconnection\x20attempt:','🍎\x20[APPLE\x20FIX]\x20primaryAuthOnly\x20detected\x20-\x20resetting\x20to\x20welcome\x20step','owhaF','VPMFA','🔍\x20Token\x20length:','cFDMJ','✅\x20YouTube\x20tokens\x20refreshed,\x20but\x20training\x20restart\x20disabled','❌\x20Token\x20refresh\x20failed,\x20attempting\x20full\x20reconnection...','❌\x20YouTube\x20reconnection\x20failed:','YouTube\x20reconnection\x20failed.\x20Please\x20restart\x20from\x20connector\x20screen.','❌\x20YouTube\x20token\x20refresh/reconnection\x20error:','VTbBc','Failed\x20to\x20create\x20authentication\x20token\x20for\x20background\x20training','Initializing','🚀\x20Starting\x20persona\x20creation...','🔐\x20Step\x201:\x20Ensuring\x20authentication\x20token...','✅\x20Authentication\x20token\x20set\x20in\x20state:','🔑\x20Token\x20stored\x20verification:','🔧\x20Setting\x20up\x20socket\x20connection\x20for\x20real\x20training...','🧑💻\x20User\x20info\x20available:','🔑\x20Token\x20available:','🔗\x20Network\x20connectivity\x20check\x20starting...','Connecting','websocket','🔌\x20Socket\x20instance\x20created:','disconnect','reconnect_error','connect_error','trainingCompleted','trainingUpdate','🔌\x20Attempting\x20to\x20connect\x20to\x20socket...','🔌\x20Socket\x20connect()\x20called\x20-\x20waiting\x20for\x20connection...','VcuWv','Failed\x20to\x20initialize\x20training.\x20Please\x20try\x20again.','🚀\x20Background\x20training\x20started:','🎯\x20Background\x20training\x20Features:','5|0|6|1|2|3|4','7|0|3|1|6|5|4|2','Something\x20went\x20wrong.\x20Please\x20try\x20again.','yWSwU','Trying\x20to\x20understand\x20your\x20mind','hKCHx','You\x27re\x20more\x20interesting\x20than\x20I\x20expected','IDKTk','GERtx','Finalizing\x20your\x20unique\x20persona','tRCgL','SYxor','sbwxg','Just\x20a\x20few\x20more\x20seconds','❌\x20[BACKGROUND]\x20Socket\x20disconnected','yOgsK','🎉\x20Real\x20persona\x20creation\x20completed\x20successfully','DSPpE','❌\x20Error\x20retrieving\x20real\x20token\x20for\x20onComplete:','ednCB','WIFXq','⚠️\x20No\x20authentication\x20token\x20found','ℹ️\x20SDK\x20does\x20not\x20create\x20users\x20during\x20onboarding','❌\x20Error\x20checking\x20authentication\x20token:','TFYJQ','kxdws','🚀\x20[TRANSITION]\x20Starting\x20background\x20training\x20during\x20connect\x20→\x20pin\x20transition','0|5|3|1|4|2','IXIGQ','OswYL','🚀\x20[BACKGROUND]\x20Starting\x20background\x20training\x20optimization...','✅\x20[BACKGROUND]\x20Auth\x20token\x20ready:','🔌\x20[BACKGROUND]\x20Setting\x20up\x20socket\x20for\x20background\x20training...','❌\x20[BACKGROUND]\x20Background\x20training\x20failed:','AVWGi','📡\x20Background\x20training\x20API\x20response:','🔗\x20Connections\x20required\x20detected\x20from\x20background\x20training','❌\x20Background\x20training\x20start\x20failed:','❌\x20Background\x20training\x20start\x20error:','ObWXy','✅\x20Returning\x20user\x20accepted\x20consent','RDgai','🔑\x20[SDK]\x20Auth\x20data\x20retrieved\x20in\x20parallel\x20for\x20returning\x20user','✅\x20[SDK]\x20Calling\x20onComplete\x20for\x20returning\x20user','djAKA','❌\x20[SDK]\x20Error\x20during\x20returning\x20user\x20consent:','Hvlxj','❌\x20Returning\x20user\x20declined\x20consent','pinterest','#0077B5','reddit','Reddit','Gmail','ChatGPT','#10A37F','Debug\x20Padding','Handle\x20Top:\x20','Hide\x20Debug','MoRdM','tMHlY','fPjPQ','ytfQP','Medium','Value','SDWQf','jSZgM','yVUMY','HxDgq','aVynB','ieUGz','XRGVN','log','OeeBp','FrMyS','OUvrc','zhFHk','DkFHX','xpktL','iHOag','ayNms','gewjw','rzioO','qROFK','yFLXK','iUaUN','XWleM','byheS','dNLPl','Initializing...','GmTkl','yyJlp','LFsDM','JchOF','dhxNO','DHMja','yigst','getItem','EkHXJ','parse','includes','HMcOO','setItem','stringify','fnzJC','searchParams','PWARV','get','uqIas','BbePH','error','uWzBI','rRlSv','lCwVl','Pfkpi','zirdE','uylnd','cgxsU','filter','connectedPlatforms','tXgpk','rMatU','pziOO','QBsFq','ycaoH','Are\x20you\x20sure\x20you\x20want\x20to\x20disconnect\x20','cancel','BspHC','destructive','MsfMh','wldky','VJgpu','aXGAF','fXYgo','TYFhS','gnfyn','aeDGl','🔌\x20Disconnected\x20platform:','Srhvo','zYRhS','hXdhC','cZhFg','rbLUr','FOKHM','current','XZGhh','connected','hQLgg','VChzM','nPAfZ','gqxEp','wqEkI','RuCOz','RDjdw','repeat','LCNxh','HTKeI','Pinterest','wZqZe','TarxY','linkedin','KChMr','hLJGo','#FFFFFF','gmail','bvoln','pzXzu','jTwpQ','mHdkv','cUaXV','jOhYD','hDhYA','nSIRg','aBmuq','GDUhp','LSVeK','❌\x20Socket\x20error\x20details:','kQmUr','RXaqM','csqum','npOxX','split','pohDW','message','name','stack','CLDlf','gIkUZ','EoJmN','DYeTY','QftVR','tYDUQ','ynLUA','HwgfO','EJVtI','QqgXb','setValue','gbPFb','KTZyZ','timing','start','addEventListener','ONgHo','CNJsS','Nfhla','ZjYtx','IBZCe','RVZeo','DAVUB','BFoYS','VRjeh','GXdaA','MjrZP','QOaqe','RVsJR','remove','PUnre','jgqhF','call','cyCXq','kCRAn','CxpmC','📈\x20Query\x20scores\x20enabled:','TsDvv','✅\x20Inference\x20enabled:','VrEhQ','LHhzu','qWjyV','5|2|4|3|0|6|1','RTNOW','features','type','bKQKK','queryScores','npfHp','encryption','lLMNr','jcINa','inference','databases','eFdxt','FIFbh','RaBQR','XaalJ','platforms','gHJKw','anmgF','YTbZo','iqVzo','nGZtf','fylJe','uAsmD','DYJch','ZaJfH','RzBNl','ZmiYv','DfatH','IHZxx','VYAMp','yvESz','fQmkR','NkjXP','vAWrV','VHunI','RXXnS','removeItem','pvNou','wruRp','TuHnb','wtUZj','RfSMQ','qtoeO','email','XSFUw','DfFiw','🔍\x20Using\x20username\x20for\x20training:','WxFsX','eiXGw','zPmXI','length','MzSAN','sUDHh','WyWNE','🔑\x20[CACHED\x20LOGIN]\x20User\x20has\x20existing\x20connections:','zsJhW','tWhEF','oPSIP','bjlMm','✅\x20Found\x20','KMrTs','hVFHJ','unEIG','erHYB','wxDRZ','oqXru','user_','floor','ghrXe','random','XnXqF','🔍\x20Loading\x20username\x20for\x20data\x20connections:','HcRas','keys','gdUOE','forEach','cgUCf','AUUbz','XJgpo','iDQqb','FnTUq','hVjre','kckAE','lpwse','NvHVt','YdBTY','jLrKA','MyQOj','Pxxlg','xYBlW','BUTTON_PRESS','pyqZE','IQodG','LWjjq','lwxUV','verification','PquyD','iggTy','ObGdw','PSZwv','cQluz','wUkps','LOvQh','LSiaR','GqmVH','dlcUy','jOqoP','eJhwy','🧪\x20Test\x20bypass\x20detected\x20-\x20skipping\x20to\x20verification\x20screen','DSKjh','TSIzz','AlFWv','iDUaS','success','zaJup','gbakJ','euwLB','Failed\x20to\x20send\x20verification\x20code.\x20Please\x20try\x20again.','lcwct','nqXjj','XkLLn','yrAfj','MHnDy','pPXgT','🔐\x20[BACKGROUND]\x20PIN\x20validation\x20-\x20continuing\x20with\x20existing\x20training\x20session','jWFTa','rTfdH','bWMNU','NypZL','qJnlV','xYrOd','wsPcN','user','tuPsL','✅\x20Google\x20Sign-In\x20successful:','naEXr','isNewUser','username','MfGUJ','oCdza','KaEpp','\x20existing\x20connections\x20-\x20skipping\x20to\x20consent','SUCCESS','map','tTvPi','GPsXK','cancelled','YCPZp','xvCdi','agBaY','ℹ️\x20Google\x20Sign-In\x20cancelled\x20by\x20user','EigLK','ERROR','rCbYR','UhGcy','TEMxX','VngJw','...','khfaE','Pboyc','OEtYy','iqrgq','NaUXi','idFig','kfBoc','YVwEA','mIpvl','eeCbp','jfuTy','xIOdw','yLROM','existingUserData','hasExistingData','QQpls','connections','flowType','EUzZT','CKYMe','isArray','hasData','status','active','🔍\x20Returning\x20user\x20check:','ToKqC','tJjQg','StMDQ','clTKX','SuRqm','iqEOz','UheqW','NNYPq','CWCRy','wLdYT','multiRemove','YjXvw','twGzL','nmpzH','sBDpE','aAzok','KCAzN','FRCHk','DvSTx','oTiNo','✅\x20Verification\x20code\x20resent\x20successfully','PZNLo','KbUzf','sBXry','BASE_URL','❌\x20Error\x20resending\x20verification\x20code:','INCUn','EFyEG','dgYAe','all','ikiai','MYDAS','IErJL','fAXSb','substring','📧\x20[SDK]\x20Email\x20available:','NvVbF','YIETQ','xvzLX','LTDcX','NXxOv','vabVp','qRXfp','HQYcE','GDzSM','IomYu','warn','mTxOw','iFzVq','NeoZb','❌\x20[SDK]\x20Error\x20retrieving\x20auth\x20data\x20for\x20onComplete:','catch','vUCVy','GrkcG','WHGbm','mrXCa','IimaV','JYDYe','ESeUi','vKKxj','⏭️\x20Skipping\x20platform\x20connections','✅\x20[SDK]\x20User\x20skipped\x20platforms\x20-\x20still\x20calling\x20onComplete\x20with\x20auth\x20data','NUUaf','RxufT','xqDFY','PJbvv','NTkYY','ccFSD','kmlbE','VsafH','iwVVD','wkDdm','pDNHW','tFkFJ','IBAYj','IzTic','jlJKF','CozEx','AUZAU','WdDxt','JmhzJ','CtSNU','join','testing','XOmLK','qZmUo','storage','LISEj','YKXjE','PCYLW','yxQEq','HIRnK','dFHbF','JAgla','rfhHi','lqgOJ','DjLzV','Xscbl','🔑\x20[CACHED\x20LOGIN]\x20Skipping\x20to\x20consent\x20screen','tuXEY','vgMOG','MByuW','zJstw','Dmzhw','fMrTj','ZMAfx','EmpdP','KkPVp','legee','🔍\x20UniversalOnboarding:\x20primaryAuthOnly\x20is:','JJHNj','DJzDW','Error\x20connecting\x20to\x20','DVupH','zoVNX','lcpqI','FzYdF','WqxHb','DKLDs','psZgE','fIsJh','VHlwr','AiNMK','❌\x20Failed\x20to\x20send\x20verification\x20code:','rtJns','ruAgt','xzJXA','kbyoN','PYOIe','oPmiA','vHFjt','JgzmN','wqPCr','_user','ksIeN','xcuuo','OKZzQ','QnTIp','XCnst','@temp.com','now','\x20successfully\x20connected\x20and\x20stored\x20in\x20backend','ZIxRN','connectionId','obXPl','BDORR','ybxgu','gJdVC','mDkic','details','Creating\x20your\x20persona\x20with\x20available\x20data','vLNcv','AbtKh','UQnZa','BFVIs','epAlg','kPMgd','ItZcA','vTpVA','EUFSx','gtbZs','uaqSD','LQguz','DTxtG','Error\x20initiating\x20OAuth\x20for\x20','Error:\x20','uqhdL','Djckh','PBoNp','AdYEX','PgYit','compression','UWhTC','MBpnv','uPMSz','kJfwW','xuHgz','yROWs','kVivD','XeIeg','NjaMy','KmGxY','jRxsQ','eBHpM','BbEIj','Error\x20handling\x20OAuth\x20callback:','zMPWX','xWOog','GbqqR','hvGjF','🎉\x20OAuth\x20success\x20for\x20','\x20-\x20backend\x20callback\x20completed','📝\x20Received\x20result:','hLBSC','DOpFS','MVShj','YitMA','\x20connection\x20stored\x20successfully','✅\x20Updating\x20connection\x20state\x20for\x20','EyWKG','otPgb','diPUi','GUHoB','traits','inferenceResults','DDbrJ','VGmrp','PgTPI','aKkhf','uJWfD','ObLOo','ExKjw','ckQtT','VUkby','sOikK','vTXcY','DOfQe','zeoOx','arHTl','tgpVJ','lHnNU','HGfWA','vKzeH','TWQGv','zmcxr','ODuma','upWCN','thGbq','wADPo','LEGqC','IIeob','cISOF','gJYYo','msoci','gQrBN','requiresConnections','mLDib','oWWuu','kMOcl','VIgQC','cTqBa','obuXY','OQTdI','sxLtU','GxMKo','BvoFf','OrWxj','❌\x20Training\x20start\x20failed:','qSYvR','qdsKp','ytzYO','❌\x20Training\x20start\x20error:','nhTWz','hgNXf','vxlyM','Iotze','dVSNS','HmdHK','VBbWW','TbreC','VUpxD','eCBNU','sMOJR','Vuyvf','SXPEE','xoaww','lZbgX','trtAk','galvJ','vexMC','KeCIw','qJqhQ','sftwx','KUOPi','Mejuy','PFEDi','GniOs','KsSKG','CFyIS','🔍\x20Socket\x20state\x20after\x201\x20second:','LGYIZ','FSdKv','kxGlw','qfVqE','DNbPb','❌\x20Socket\x20reconnection\x20failed\x20after\x20all\x20attempts','YaSwW','AhtcR','JqiTu','sYVhg','DjNzu','tGVim','aPWqs','FEhUD','wLDHC','PPPcZ','eVtzA','ynvuC','Yftjd','sINXt','Processing...','nUiZU','mSzfD','EqeEh','hjjbE','dcNpL','avvlH','cuFRU','nkWzW','ntExu','nTyQT','mGmpt','ZEOkp','xLeWy','sQJuM','engine','sKUkV','readyState','iFcMi','HSieJ','bjjIq','JZcCk','gbwVL','ctNnU','koSWN','WvDnH','dbBwd','Qzpee','gvpXo','dfhGK','eZZMS','ofBCv','dMejS','SFsFV','❌\x20No\x20authentication\x20token\x20available\x20after\x20ensureAuthToken','syBML','Ssdhp','🌐\x20Attempting\x20to\x20connect\x20to:\x20${API_CONFIG.BASE_URL}','TRSFZ','Catuv','egyfr','QMeVe','polling','shvYC','royis','kqTTI','IGeLK','plDZA','nalMg','ipqQX','kgqtO','anTGS','Starting\x20training','WVduB','nXOCU','dljSj','pgScs','XsVwS','NIkXg','iZqCB','EvULq','UYHVW','untZL','eQvVG','AAnPa','QMCll','ADfTO','ZOuyC','dPYQD','BOWIm','kDUCV','reconnect','RkRkF','IDZNu','WILAM','QPWwF','qtWLS','ZfYbD','ovskB','hjQro','mGVTI','Fhlrx','AsOWN','IulCg','reconnect_failed','XnwFA','TAGYs','qeryu','sheMb','xTvmK','lQrWV','nAwRb','fYriU','yGYqP','KGqbu','WSXUN','OMjuI','xabVF','UwEth','vTYoV','HtiBO','inferenceCompleted','tLIvX','PqkDH','modelStandby','TpvqX','BdIOm','yeRiQ','completed','yRvaT','SZiQQ','JEaHv','XrkPP','apOmH','ycdng','qBFkJ','IrRNl','sUnCB','NxSzr','YouTube\x20access\x20token\x20has\x20expired','JFaFl','CgzCJ','gAhNm','🔄\x20Attempting\x20to\x20refresh\x20YouTube\x20tokens...','xKfpJ','qpAjl','EDRrO','nnwYs','MCFSZ','jtLhs','gVtBS','CGyAk','✅\x20YouTube\x20reconnected,\x20but\x20training\x20restart\x20disabled','YouTube\x20reconnected\x20-\x20please\x20restart\x20from\x20connector\x20screen','zBRzt','IaKHQ','THKrM','tSMqn','jamAe','PNkbR','bCmOD','eibDm','UFzIr','nDsfA','UqfNW','SLwDH','tyOPL','NPTWp','tDfxV','NO_DATA','xgqzh','pGCJF','sWygj','dcnzw','efQNT','YhEva','HmIhK','yEaLi','lTvWj','progress','Hpmhk','pIFeL','ldvkk','ClbJr','rMvZs','Jyauz','NIzNe','TXIek','htUnR','hvkci','PBSGN','LLfIJ','CrhgO','nqpOE','PQsKA','ZJhDv','XhcIh','FIHKn','PaPTs','Connection\x20timeout.\x20Please\x20check\x20your\x20internet\x20and\x20try\x20again.','nwxYy','ApTbw','nbFdS','kGUXU','Nbabr','SRGoP','DaCGL','oKGpr','GucNQ','uSgJm','gDhxY','zjcAI','iGriw','qNUEZ','Keeping\x20your\x20data\x20private','bKESY','ELArj','pGbYY','VfbOA','VMyng','MhcTH','Background\x20training\x20model...','oqrZp','NojQl','DLLLT','RePXa','1|5|0|4|2|3','aNvcr','JKPQb','hHDbN','eutmY','PzYdq','GmZsf','PhBhV','HkKSy','BKHcG','Stgwp','bymmB','qsdru','QoYVQ','wbLTY','PVlSx','nNgNh','EDebU','CTykp','🔌\x20Disconnecting\x20training\x20socket...','bWQUr','✅\x20Using\x20real\x20authentication\x20token\x20for\x20onComplete:','DoqLB','kXEvg','QCPyE','ysazy','LfHKe','nWdzc','VElDx','divno','lfrWN','eijvg','slLdP','rPIXl','raGQf','SuAPs','values','some','vRfbS','QxYIx','Hlsxw','hUaKm','tgrGE','huvoR','EfhDN','ZlLHo','yEeGZ','UBLsh','Yolhs','AciNL','vmdQh','hjALT','gvgxq','rDKlD','kHqLc','MZzzO','RmxQJ','dNPPn','MqFtf','WfIHT','IEbOb','EIHOp','Initializing\x20data\x20collection...','aBOIj','alOXZ','rxoDv','enWdo','hWKHr','mHTWv','DAidy','AqupM','wwkGF','cGYFL','SLVOh','ahNEl','wantE','ieSdJ','RJSmS','DWxjv','vZeyS','ezgfy','nJOhm','📊\x20[BACKGROUND]\x20Training\x20progress:','KXtHl','lDESj','ZnLVo','yTJhH','cmAPG','cwsgt','AKyRh','poWiM','Hqdqd','htsty','mzPhH','BUcpt','IgYbC','qARkE','KRtNZ','KzUPF','ANPnR','DzoRd','YoGPP','Sxuud','mmJcM','bqzqq','vRyGR','gElcB','mFcuU','sIqFZ','🗄️\x20Databases:','QLiVW','MGUSM','mEljQ','sIhet','Background\x20training\x20failed\x20to\x20start','iqoeY','yOovB','createElement','ZfmGl','modalOverlay','View','backdrop','bottomSheet','container','handleContainer','debugPanel','debugTitle','VOxex','debugLabel','max','debugBtn','debugRow','HsUDz','debugCloseBtn','debugCloseBtnText','NCoVL','welcomeContainer','headingContainer','welcomeSpacer','welcomeButtonContainer','Get\x20Started','fklQa','cRtIG','GewIS','xyxPd','rUluC','cItJA','PsBuN','YUAVc','Jrrre','QVfCK','OOjCM','QACjr','HsBwM','xOGVa','uLgSt','USfDS','sDdNy','wXYEp','FnmUI','XVbkk','JuKdb','MuPXz','✅\x20[SDK]\x20Returning\x20user\x20onComplete\x20finished\x20-\x20waiting\x20for\x20parent\x20to\x20close\x20modal','QRVGP','NtseQ','GsfDu','RVTpM','create','flex-end','absoluteFillObject','rgba(0,\x200,\x200,\x200.5)','hidden','#FAFAFA','center','100%','transparent','#D0D0D0','absolute','rgba(0,0,0,0.85)','#fff','700','row','#444','bold','600','#666','#000000','underline','#F5F5F5','#333','#E5E5E5','#E9C46A','#000','space-between','#F0F0F0','flex-start','#1BA9D4','#FF3B30','500','italic','#FFF5F5','#FEB2B2','#D1D5DB','#6B7280','#FF6B6B','#F8F9FA','#E5E7EB','#F0F9FF','#0EA5E9','#0369A1','#0C4A6E'];_0x539b=function(){return _0x170606;};return _0x539b();}import _0x2dc3ce from'./SignInStep';import _0x26a6fe from'./VerificationStep';import _0x2417dd from'./PlatformConnectorsStep';import _0x248186 from'./PersonalizationConsentScreen';import{initiateOAuth,initiateNativeAuth,hasNativeSDK,isOAuthCallback}from'../services/platformAuthService';import{getUniversalOnboardingIcon}from'../utils/assetRegistry';import{signInWithGoogle}from'../services/googleAuthService';import{triggerHaptic,HapticType}from'../utils/haptics';import{getOnairosUsername,getAuthToken,sendEmailVerificationCode,confirmEmailVerificationCode}from'../services/authService';import{io}from'socket.io-client';import{setTemporaryPin,clearTemporaryPin}from'../services/pinStorageUtils';import{getEncryptedPinForAPI}from'../services/pinEncryptionService';import{startEnochTrainingWithYouTubeCheck}from'../services/mobileTrainingService';import{sendLLMDataToBackend}from'../services/llmDataStorage';import{getConnectedAccountsSmart}from'../services/connectedAccountsService';import{API_CONFIG}from'../config/api';import{getJWT,storeJWT}from'../services/jwtStorageService';import{refreshYouTubeTokens}from'../services/platformAuthService';const {height,width}=Dimensions['get'](_0xcd13(0x0));export const UniversalOnboarding=({visible:_0x1c3d99,onClose:_0x58d05c,AppName:_0x20ed1d,requestData:_0x4d56eb,returnLink:_0x3c71de,onComplete:_0x108330,embedd:embedd=![],debug:debug=![],test:test=![],preferredPlatform:_0x438f64,primaryAuthOnly:primaryAuthOnly=![],allowedPlatforms:_0x1d1474,recommendedPlatforms:_0x3cd581,allowSkip:allowSkip=!![]})=>{const _0x38fe1c={'PrfQq':_0xcd13(0x1),'OeeBp':'🔍\x20UniversalOnboarding:\x20current\x20step\x20is:','aEpvV':'🔍\x20UniversalOnboarding:\x20primaryAuthOnly\x20is:','yFLXK':function(_0x2b8e78,_0x1248a4){return _0x2b8e78(_0x1248a4);},'FrMyS':'🔑\x20[CACHED\x20LOGIN]\x20User\x20authenticated\x20but\x20no\x20connections\x20-\x20skipping\x20to\x20platforms','tMHlY':'platforms','wldky':function(_0x5c0c41,_0x283852){return _0x5c0c41!==_0x283852;},'OUvrc':_0xcd13(0x2),'iHOag':_0xcd13(0x3),'ayNms':function(_0x3e7ddb,_0x419f86){return _0x3e7ddb===_0x419f86;},'gewjw':'verification','fXYgo':function(_0x3bb783,_0x35cef8){return _0x3bb783!==_0x35cef8;},'vYDDM':'ZBFzh','rzioO':'TfcrA','qfVqE':_0xcd13(0x4),'qROFK':_0xcd13(0x5),'fPjPQ':_0xcd13(0x6),'PWARV':_0xcd13(0x7),'uqIas':_0xcd13(0x8),'csmep':function(_0x3677c2,_0x53e718){return _0x3677c2&&_0x53e718;},'BbePH':_0xcd13(0x9),'uWzBI':'Error\x20handling\x20OAuth\x20callback:','EkHXJ':'connectedPlatforms','HMcOO':_0xcd13(0xa),'fnzJC':_0xcd13(0xb),'nvtVh':'Total\x20platforms:','rRlSv':function(_0x377a6d,_0x50ceda){return _0x377a6d===_0x50ceda;},'lCwVl':'LeNtL','Pfkpi':_0xcd13(0xc),'zirdE':_0xcd13(0xd),'uylnd':function(_0x7c17d0,_0x55fbcf){return _0x7c17d0!==_0x55fbcf;},'cgxsU':'QHaLN','tXgpk':_0xcd13(0xe),'rMatU':_0xcd13(0xf),'pziOO':_0xcd13(0x10),'MsfMh':_0xcd13(0x11),'VJgpu':'eeyrF','TYFhS':_0xcd13(0x12),'RXaqM':function(_0x2a4822){return _0x2a4822();},'Srhvo':_0xcd13(0x13),'QBsFq':_0xcd13(0x14),'ycaoH':_0xcd13(0x15),'BspHC':'Yes','ZuIiG':function(_0x2f93eb,_0x195988){return _0x2f93eb%_0x195988;},'RuCOz':function(_0x2b4e29,_0x29ff56){return _0x2b4e29+_0x29ff56;},'RDjdw':function(_0x564ffe,_0x5f0950){return _0x564ffe===_0x5f0950;},'gqxEp':function(_0x393597,_0x15ce56){return _0x393597(_0x15ce56);},'hXdhC':_0xcd13(0x16),'zaJup':function(_0x3f27d9,_0x44f62c){return _0x3f27d9(_0x44f62c);},'cZhFg':'Connection\x20timeout.\x20Please\x20check\x20your\x20internet\x20and\x20try\x20again.','rbLUr':function(_0x594740,_0x193118){return _0x594740!==_0x193118;},'FOKHM':_0xcd13(0x17),'wqEkI':function(_0x2d449e,_0x577c0a,_0x2e2042){return _0x2d449e(_0x577c0a,_0x2e2042);},'LCNxh':function(_0x1c854a,_0x5e3f3c){return _0x1c854a(_0x5e3f3c);},'LSVeK':_0xcd13(0x18),'kQmUr':'❌\x20Socket\x20connection\x20error:','csqum':function(_0x49af0a,_0x5810a0){return _0x49af0a===_0x5810a0;},'npOxX':'jlJFi','QftVR':_0xcd13(0x19),'WYasO':function(_0x2f9405,_0xa7b55e){return _0x2f9405===_0xa7b55e;},'tYDUQ':function(_0x371e5c,_0x138adf){return _0x371e5c===_0x138adf;},'QqgXb':function(_0x25cbd2,_0x220eaa){return _0x25cbd2===_0x220eaa;},'pabBz':_0xcd13(0x1a),'ynLUA':_0xcd13(0x1b),'HwgfO':function(_0x944293,_0x35469b){return _0x944293(_0x35469b);},'EJVtI':function(_0x450a7a,_0x30fc5a){return _0x450a7a===_0x30fc5a;},'gbPFb':function(_0x537471,_0x3b40bc){return _0x537471(_0x3b40bc);},'KTZyZ':function(_0x994b8b,_0x15b1f9){return _0x994b8b(_0x15b1f9);},'ONgHo':_0xcd13(0x1c),'cyCXq':function(_0x3ea32a,_0xaf430f){return _0x3ea32a(_0xaf430f);},'CxpmC':_0xcd13(0x1d),'TsDvv':_0xcd13(0x1e),'PYOIe':_0xcd13(0x1f),'oPmiA':'🗄️\x20Databases:','clTKX':_0xcd13(0x20),'VrEhQ':function(_0x270e78,_0x5e0950){return _0x270e78===_0x5e0950;},'LHhzu':_0xcd13(0x21),'qWjyV':_0xcd13(0x22),'yvESz':function(_0x38b66d,_0x4a6e60){return _0x38b66d(_0x4a6e60);},'XaalJ':function(_0x231ea,_0x4e4e22){return _0x231ea(_0x4e4e22);},'gHJKw':_0xcd13(0x23),'uAsmD':_0xcd13(0x24),'cQluz':function(_0xf94830,_0x26db89){return _0xf94830(_0x26db89);},'DYJch':_0xcd13(0x25),'ZaJfH':_0xcd13(0x26),'RzBNl':_0xcd13(0x27),'ZmiYv':_0xcd13(0x28),'KGZfz':_0xcd13(0x29),'sINXt':function(_0x20ea37){return _0x20ea37();},'gdUOE':function(_0x23c26a,_0xa38f0c){return _0x23c26a(_0xa38f0c);},'LfHKe':function(_0x74d658,_0x35f9aa){return _0x74d658===_0x35f9aa;},'ToKqC':function(_0x42dc44,_0x1ae718){return _0x42dc44===_0x1ae718;},'DfatH':'mKmGX','IHZxx':'🔑\x20[CACHED\x20LOGIN]\x20Found\x20valid\x20token\x20for\x20user:','VYAMp':function(_0x2dd358,_0x1b42e3){return _0x2dd358>_0x1b42e3;},'QIEVK':_0xcd13(0x2a),'erHYB':function(_0x46091f){return _0x46091f();},'wxDRZ':function(_0x4d30a3,_0x450ef0){return _0x4d30a3===_0x450ef0;},'oqXru':function(_0x12a76c,_0x5d3287){return _0x12a76c===_0x5d3287;},'ghrXe':function(_0x3ca5e6,_0x4379d5){return _0x3ca5e6*_0x4379d5;},'XnXqF':function(_0x29745b,_0x2831a1){return _0x29745b||_0x2831a1;},'FnTUq':function(_0x445e8f,_0x3470e4){return _0x445e8f(_0x3470e4);},'HcRas':_0xcd13(0x2b),'AUUbz':_0xcd13(0x2c),'XJgpo':_0xcd13(0x2d),'iDQqb':_0xcd13(0x2e),'hVjre':function(_0x1525bd,_0x58a4d7){return _0x1525bd(_0x58a4d7);},'kckAE':function(_0xbd392e,_0x3968af){return _0xbd392e(_0x3968af);},'nZwyO':'lpwse','eeCbp':function(_0xdc944d,_0xca2d41,_0x5e56f0){return _0xdc944d(_0xca2d41,_0x5e56f0);},'MyQOj':function(_0x54b0e5,_0x37edf6){return _0x54b0e5(_0x37edf6);},'Pxxlg':function(_0x324627,_0x1270de){return _0x324627(_0x1270de);},'kMvCE':_0xcd13(0x2f),'xYBlW':'kywou','pyqZE':_0xcd13(0x30),'IQodG':'🚀\x20Get\x20Started\x20pressed\x20-\x20moving\x20to\x20signin','PVlSx':function(_0x4a318b,_0x2bf29e){return _0x4a318b+_0x2bf29e;},'PSZwv':function(_0x2eba9b,_0x3e8b48){return _0x2eba9b===_0x3e8b48;},'PquyD':function(_0x45ffed,_0x420a55){return _0x45ffed(_0x420a55);},'iggTy':_0xcd13(0x31),'ObGdw':_0xcd13(0x32),'wUkps':function(_0x4e5833,_0x387caf){return _0x4e5833(_0x387caf);},'LOvQh':function(_0xbe2eab,_0x27c741){return _0xbe2eab===_0x27c741;},'LSiaR':_0xcd13(0x33),'GqmVH':_0xcd13(0x34),'PCYLW':_0xcd13(0x35),'yxQEq':_0xcd13(0x36),'dlcUy':'🔍\x20Reviewer\x20bypass\x20detected','jOqoP':_0xcd13(0x37),'UQnZa':function(_0x4097b3,_0x15b3e1){return _0x4097b3===_0x15b3e1;},'eJhwy':_0xcd13(0x38),'DSKjh':function(_0x26deae,_0x4ee8fb){return _0x26deae(_0x4ee8fb);},'TSIzz':function(_0x2b0084,_0x5d5563){return _0x2b0084(_0x5d5563);},'AlFWv':'📧\x20Sending\x20verification\x20code\x20to:','iDUaS':function(_0x45efc9,_0x71eaa4){return _0x45efc9(_0x71eaa4);},'rHNgG':_0xcd13(0x39),'gbakJ':'❌\x20Failed\x20to\x20send\x20verification\x20code:','euwLB':function(_0x529a98,_0x5c00b7){return _0x529a98(_0x5c00b7);},'lcwct':_0xcd13(0x3a),'obXPl':function(_0x274b95,_0x264ea1){return _0x274b95(_0x264ea1);},'nqXjj':'Network\x20error.\x20Please\x20check\x20your\x20connection\x20and\x20try\x20again.','XkLLn':_0xcd13(0x3b),'NypZL':_0xcd13(0x3c),'fBKJd':_0xcd13(0x3d),'vKzeH':_0xcd13(0x3e),'HmdHK':'🔐\x20[BACKGROUND]\x20Continuing\x20existing\x20background\x20training\x20with\x20PIN\x20validation','pPXgT':function(_0x211547,_0x5d1caf){return _0x211547===_0x5d1caf;},'nTdUv':_0xcd13(0x3f),'TbreC':_0xcd13(0x40),'jWFTa':_0xcd13(0x41),'rTfdH':_0xcd13(0x42),'bWMNU':'ZGhnS','qJnlV':function(_0x102e22,_0x14de63){return _0x102e22(_0x14de63);},'xYrOd':function(_0x5d05b1,_0x72aadd){return _0x5d05b1(_0x72aadd);},'wsPcN':_0xcd13(0x43),'tuPsL':_0xcd13(0x44),'sXnjZ':_0xcd13(0x45),'naEXr':_0xcd13(0x46),'MfGUJ':function(_0x335340,_0xfa60b3){return _0x335340===_0xfa60b3;},'oCdza':_0xcd13(0x47),'NeoZb':function(_0x3cd841,_0x3c435b,_0xbac68a,_0x335558){return _0x3cd841(_0x3c435b,_0xbac68a,_0x335558);},'KaEpp':_0xcd13(0x48),'VUlQu':function(_0x491134,_0x40edc8){return _0x491134(_0x40edc8);},'tTvPi':_0xcd13(0x49),'GPsXK':_0xcd13(0x4a),'YCPZp':'hKxud','xvCdi':_0xcd13(0x4b),'EigLK':function(_0x475f54,_0x3d59ed){return _0x475f54(_0x3d59ed);},'rCbYR':_0xcd13(0x4c),'UhGcy':_0xcd13(0x4d),'Pboyc':_0xcd13(0x4e),'OEtYy':_0xcd13(0x4f),'iqrgq':function(_0x53fa65,_0x57904b){return _0x53fa65===_0x57904b;},'NaUXi':_0xcd13(0x50),'idFig':function(_0x36ad7a,_0x48e49a){return _0x36ad7a(_0x48e49a);},'kfBoc':_0xcd13(0x51),'YVwEA':'🔍\x20Verifying\x20email\x20code:','mIpvl':_0xcd13(0x52),'jfuTy':_0xcd13(0x53),'xIOdw':_0xcd13(0x54),'yLROM':function(_0x9139f5,_0x552600){return _0x9139f5===_0x552600;},'QQpls':function(_0x503be5,_0x2083ef){return _0x503be5===_0x2083ef;},'EUzZT':'returning_user','CKYMe':function(_0x17689f,_0x4c094f){return _0x17689f===_0x4c094f;},'vUCVy':function(_0x2c6ca9,_0x1b442b){return _0x2c6ca9===_0x1b442b;},'StMDQ':_0xcd13(0x55),'ayfFG':_0xcd13(0x56),'SuRqm':_0xcd13(0x57),'ElywW':_0xcd13(0x58),'iqEOz':function(_0x549633,_0x13038e){return _0x549633(_0x13038e);},'UheqW':_0xcd13(0x59),'tyOPL':function(_0x11c46e,_0x3c8f69){return _0x11c46e(_0x3c8f69);},'NNYPq':_0xcd13(0x5a),'hYAUg':_0xcd13(0x5b),'GmTkl':function(_0x354edb,_0x11025e){return _0x354edb(_0x11025e);},'CWCRy':function(_0x443675,_0xe0d920){return _0x443675(_0xe0d920);},'sBDpE':function(_0x4b9076,_0x3715e3){return _0x4b9076(_0x3715e3);},'wLdYT':_0xcd13(0x5c),'YjXvw':_0xcd13(0x5d),'OCXaj':_0xcd13(0x5e),'twGzL':_0xcd13(0x5f),'nmpzH':'auth_method','JbCOk':'✅\x20Logout\x20complete\x20-\x20user\x20is\x20now\x20on\x20login\x20page','aAzok':'❌\x20Error\x20during\x20logout:','nUiZU':function(_0x27c6fc,_0x37baa9){return _0x27c6fc===_0x37baa9;},'VElDx':_0xcd13(0x60),'yOovB':function(_0x1a71bf,_0x13ea2a){return _0x1a71bf(_0x13ea2a);},'KCAzN':function(_0x1aa9bf,_0x5585b0){return _0x1aa9bf(_0x5585b0);},'FRCHk':_0xcd13(0x61),'DvSTx':'hSUaD','oTiNo':_0xcd13(0x62),'INCUn':'Network\x20error.\x20Please\x20try\x20again.','eZZMS':function(_0x4ade22,_0x5e3245){return _0x4ade22(_0x5e3245);},'qRXfp':'YouTube\x20tokens\x20refreshed\x20-\x20but\x20training\x20only\x20starts\x20from\x20connector→PIN','HQYcE':function(_0x502d04,_0x19bb7f){return _0x502d04(_0x19bb7f);},'WHGbm':_0xcd13(0x63),'mrXCa':function(_0x4b88d8,_0x12f59a){return _0x4b88d8(_0x12f59a);},'IimaV':function(_0x37985a){return _0x37985a();},'EFyEG':_0xcd13(0x64),'dgYAe':function(_0x9c4097,_0x260486){return _0x9c4097(_0x260486);},'bdPhc':_0xcd13(0x65),'ikiai':function(_0x2b9925){return _0x2b9925();},'MYDAS':_0xcd13(0x66),'IErJL':function(_0x5667b8){return _0x5667b8();},'BdfHE':_0xcd13(0x67),'fAXSb':'🔑\x20[SDK]\x20Token\x20available:','NvVbF':function(_0x590366,_0x4b0f71){return _0x590366||_0x4b0f71;},'YIETQ':function(_0x19692b,_0x793f28){return _0x19692b&&_0x793f28;},'zzqSe':function(_0x19b465,_0x4b0818){return _0x19b465===_0x4b0818;},'RCuGQ':_0xcd13(0x68),'RYlsv':_0xcd13(0x69),'LTDcX':function(_0x1f7d74,_0x43f05d){return _0x1f7d74===_0x43f05d;},'NXxOv':_0xcd13(0x6a),'vabVp':'hEpji','GDzSM':_0xcd13(0x6b),'Iotze':function(_0x5a4427,_0x3c0667){return _0x5a4427===_0x3c0667;},'IomYu':function(_0x5dd271,_0x17b4ba,_0x324806,_0x3bed36){return _0x5dd271(_0x17b4ba,_0x324806,_0x3bed36);},'mTxOw':_0xcd13(0x6c),'iFzVq':function(_0x3af425,_0x5a11bb){return _0x3af425===_0x5a11bb;},'nXOCU':function(_0x50c0ba,_0x1371d4){return _0x50c0ba===_0x1371d4;},'GrkcG':function(_0x502002,_0x1a6fbb,_0x1f215e,_0x337985){return _0x502002(_0x1a6fbb,_0x1f215e,_0x337985);},'AShym':'✅\x20[SDK]\x20onComplete\x20finished\x20-\x20waiting\x20for\x20parent\x20to\x20close\x20modal','ZMAfx':function(_0x22b4af,_0x34f77e){return _0x22b4af(_0x34f77e);},'ccFSD':_0xcd13(0x6d),'ojrnZ':function(_0x53400f,_0x36f619){return _0x53400f(_0x36f619);},'kmlbE':function(_0x4af8e8,_0x5e0d76){return _0x4af8e8(_0x5e0d76);},'VsafH':_0xcd13(0x6e),'iwVVD':function(_0x235545){return _0x235545();},'XZwyC':_0xcd13(0x6f),'JYDYe':function(_0x347286,_0x1559ee){return _0x347286===_0x1559ee;},'ESeUi':'WnOfc','HUBGl':function(_0x22f947,_0x130b64){return _0x22f947&&_0x130b64;},'NUUaf':function(_0xf142af,_0x5ce4ca){return _0xf142af===_0x5ce4ca;},'tsFdZ':_0xcd13(0x70),'RxufT':function(_0x4a37ff,_0x384447){return _0x4a37ff===_0x384447;},'xqDFY':function(_0x29e4bc,_0x456add,_0x5acd18,_0x303453){return _0x29e4bc(_0x456add,_0x5acd18,_0x303453);},'PJbvv':_0xcd13(0x71),'NTkYY':'❌\x20[SDK]\x20Error\x20during\x20skip:','kgqtO':function(_0xd7f006,_0x32d89f){return _0xd7f006===_0x32d89f;},'wkDdm':_0xcd13(0x72),'sdaBP':_0xcd13(0x73),'pDNHW':'🗄️\x20Databases\x20used:','tFkFJ':_0xcd13(0x74),'kbyoN':_0xcd13(0x75),'yRvaT':'✅\x20Training\x20completed:','IBAYj':_0xcd13(0x76),'yROWs':function(_0x325bd8,_0x50633e){return _0x325bd8(_0x50633e);},'IzTic':function(_0x31b240,_0x2451e6){return _0x31b240!==_0x2451e6;},'jlJKF':_0xcd13(0x77),'CozEx':_0xcd13(0x78),'AUZAU':'HdXis','WdDxt':_0xcd13(0x79),'HIRnK':'✅\x20Stored\x20reviewer\x20bypass\x20markers','dFHbF':function(_0x21a2c3,_0x4be1de){return _0x21a2c3===_0x4be1de;},'kbtlJ':'JAgla','rfhHi':_0xcd13(0x7a),'lqgOJ':function(_0x213b23){return _0x213b23();},'legee':_0xcd13(0x7b),'DVupH':function(_0x42cc65,_0x1c82ca){return _0x42cc65(_0x1c82ca);},'MByuW':_0xcd13(0x7c),'zJstw':function(_0x48a795,_0x575dbc){return _0x48a795(_0x575dbc);},'Dmzhw':function(_0x4121b4,_0x424da6){return _0x4121b4(_0x424da6);},'fMrTj':function(_0x40808b,_0x5a90ac){return _0x40808b(_0x5a90ac);},'EmpdP':_0xcd13(0x7d),'fzryt':'zjfJP','KkPVp':function(_0x364572,_0x449b12){return _0x364572(_0x449b12);},'JJHNj':function(_0x31f2cd,_0x2e9a81){return _0x31f2cd!==_0x2e9a81;},'eYywn':'iBhOp','zoVNX':function(_0x4a7297,_0x37820c){return _0x4a7297!==_0x37820c;},'lcpqI':_0xcd13(0x7e),'fIsJh':'4|5|1|0|3|2','VHlwr':'ℹ️\x20Limited\x20data\x20scenario\x20detected','AiNMK':function(_0x3a0f7f,_0x4d2461){return _0x3a0f7f(_0x4d2461);},'rtJns':'Failed\x20to\x20send\x20verification\x20code.\x20Please\x20try\x20again.','ruAgt':_0xcd13(0x7f),'exFEI':_0xcd13(0x80),'xzJXA':'✅\x20Inference\x20enabled:','vHFjt':_0xcd13(0x81),'JgzmN':function(_0x1b9f0c,_0x54bdc7){return _0x1b9f0c===_0x54bdc7;},'wqPCr':'zkwBp','CimSF':function(_0x4bd0b9,_0x270800){return _0x4bd0b9(_0x270800);},'ksIeN':function(_0xf6aad2,_0x34ab64){return _0xf6aad2===_0x34ab64;},'jTwpQ':_0xcd13(0x82),'xcuuo':function(_0x2dd2d8,_0x111540){return _0x2dd2d8===_0x111540;},'OKZzQ':_0xcd13(0x83),'QnTIp':_0xcd13(0x84),'XCnst':function(_0x162d72,_0x2d12a3){return _0x162d72||_0x2d12a3;},'jAZmq':function(_0x3f2a74,_0x3c0e60){return _0x3f2a74(_0x3c0e60);},'lDkQr':_0xcd13(0x85),'yyJlp':function(_0x4e4223,_0xad6f31){return _0x4e4223(_0xad6f31);},'XLJKU':_0xcd13(0x86),'ZIxRN':_0xcd13(0x87),'kJfwW':function(_0x4e825e,_0x47071a){return _0x4e825e!==_0x47071a;},'BDORR':'SkPWg','ybxgu':_0xcd13(0x88),'DpoJK':function(_0x1eec47,_0x1aabac){return _0x1eec47(_0x1aabac);},'epAlg':function(_0x39111a,_0x4cd476){return _0x39111a(_0x4cd476);},'ExKjw':function(_0x35cbb7,_0x5e748e){return _0x35cbb7(_0x5e748e);},'kPMgd':function(_0x385cf0,_0x10fd5a){return _0x385cf0(_0x10fd5a);},'EUFSx':_0xcd13(0x89),'PlOdR':function(_0x560b09,_0x416b75){return _0x560b09(_0x416b75);},'gtbZs':function(_0x330d9e,_0x395f8e){return _0x330d9e(_0x395f8e);},'uaqSD':'zQgTB','LQguz':_0xcd13(0x8a),'Djckh':_0xcd13(0x8b),'fVSEW':function(_0x350d38,_0x35b5ad){return _0x350d38(_0x35b5ad);},'xyxPd':function(_0x583fc0,_0x4a4917){return _0x583fc0(_0x4a4917);},'xuHgz':_0xcd13(0x8c),'kVivD':function(_0x4ee4df,_0x595978){return _0x4ee4df===_0x595978;},'XeIeg':_0xcd13(0x8d),'yVUMY':function(_0x59cfc9,_0x48d9cf){return _0x59cfc9(_0x48d9cf);},'NjaMy':function(_0x1b5cbd,_0x1e107d){return _0x1b5cbd(_0x1e107d);},'BbEIj':_0xcd13(0x8e),'MVShj':_0xcd13(0x8f),'zMPWX':_0xcd13(0x90),'xWOog':_0xcd13(0x91),'GbqqR':function(_0xd50fe5,_0x24a66f){return _0xd50fe5===_0x24a66f;},'hvGjF':_0xcd13(0x92),'hLBSC':function(_0x12a15f,_0x3206b6){return _0x12a15f===_0x3206b6;},'DOpFS':'ADqUR','kElHm':_0xcd13(0x93),'YitMA':'5|1|2|3|0|4','Bspap':function(_0x59b8e1,_0x4ae749){return _0x59b8e1(_0x4ae749);},'EyWKG':_0xcd13(0x94),'otPgb':function(_0x3113fe,_0xfd9b35){return _0x3113fe(_0xfd9b35);},'DDbrJ':_0xcd13(0x95),'VGmrp':function(_0x369ad7,_0x373509){return _0x369ad7&&_0x373509;},'SbEFX':_0xcd13(0x96),'PgTPI':_0xcd13(0x97),'uJWfD':_0xcd13(0x98),'ObLOo':'❌\x20[PIN\x20SUBMIT]\x20Failed\x20to\x20continue\x20background\x20training:','ckQtT':function(_0x49034c,_0x4f9add){return _0x49034c(_0x4f9add);},'VUkby':_0xcd13(0x99),'ofBCv':_0xcd13(0x9a),'haqut':function(_0x1197c2,_0x22bef8){return _0x1197c2(_0x22bef8);},'dMejS':'No\x20training\x20in\x20progress.\x20Please\x20restart\x20the\x20flow.','TWQGv':'✅\x20Using\x20real\x20authentication\x20token\x20for\x20onComplete:','zmcxr':function(_0x4c48c2,_0xd3ec6b){return _0x4c48c2===_0xd3ec6b;},'vTXcY':'⚠️\x20Could\x20not\x20get\x20encrypted\x20PIN\x20for\x20training:','DOfQe':function(_0x1d4056,_0x2a211a){return _0x1d4056(_0x2a211a);},'zeoOx':_0xcd13(0x9b),'arHTl':_0xcd13(0x9c),'tgpVJ':_0xcd13(0x9d),'czBZT':function(_0x39a377,_0x435537){return _0x39a377(_0x435537);},'HGfWA':_0xcd13(0x9e),'wTCGb':_0xcd13(0x9f),'ODuma':_0xcd13(0xa0),'upWCN':_0xcd13(0xa1),'thGbq':_0xcd13(0xa2),'mmEAa':function(_0x1403fb,_0x1f7286){return _0x1403fb===_0x1f7286;},'wADPo':function(_0xe69344,_0x32f809){return _0xe69344===_0x32f809;},'LEGqC':_0xcd13(0xa3),'IIeob':_0xcd13(0xa4),'cISOF':function(_0x59dfad){return _0x59dfad();},'msoci':_0xcd13(0xa5),'TcNDz':function(_0xc9bb93,_0x89efb4){return _0xc9bb93(_0x89efb4);},'gQrBN':'📡\x20Training\x20API\x20response:','QkYjK':function(_0x1a7d73,_0x358fdb){return _0x1a7d73===_0x358fdb;},'mLDib':_0xcd13(0xa6),'oWWuu':function(_0x1599d9){return _0x1599d9();},'kMOcl':function(_0x41551d,_0xccd266){return _0x41551d(_0xccd266);},'VIgQC':function(_0xe5e4dc,_0x578790){return _0xe5e4dc(_0x578790);},'cTqBa':_0xcd13(0xa7),'obuXY':function(_0x78147e,_0x360bfc){return _0x78147e(_0x360bfc);},'ZRIYu':_0xcd13(0xa8),'OQTdI':_0xcd13(0xa9),'sxLtU':_0xcd13(0xaa),'MmIuU':function(_0x33a084,_0x1fd70a){return _0x33a084(_0x1fd70a);},'yfIzJ':_0xcd13(0xab),'qSYvR':_0xcd13(0xac),'qdsKp':function(_0x55a6b5,_0x505f51){return _0x55a6b5(_0x505f51);},'BCYys':function(_0x514f75,_0x5a360a){return _0x514f75(_0x5a360a);},'nhTWz':function(_0x275d26,_0x2dc0ed){return _0x275d26 instanceof _0x2dc0ed;},'hgNXf':_0xcd13(0xad),'VUpxD':function(_0x28e9cd,_0x4e51a9){return _0x28e9cd instanceof _0x4e51a9;},'eCBNU':function(_0x4b5647,_0x12b330){return _0x4b5647(_0x12b330);},'sMOJR':function(_0x56a5d5){return _0x56a5d5();},'vxlyM':_0xcd13(0xae),'dVSNS':'WfXjO','VBbWW':function(_0x3aedc3,_0x53472e){return _0x3aedc3===_0x53472e;},'Vuyvf':function(_0x10ea51,_0x366cc5){return _0x10ea51!==_0x366cc5;},'SXPEE':_0xcd13(0xaf),'dcNpL':_0xcd13(0xb0),'dfhGK':function(_0x27736f,_0x54c6a1){return _0x27736f===_0x54c6a1;},'xLeWy':function(_0x3acdbf,_0x42d666){return _0x3acdbf===_0x42d666;},'sQJuM':function(_0x32b63a,_0x397cc4){return _0x32b63a===_0x397cc4;},'csBCv':function(_0x582ad4,_0x1ba784){return _0x582ad4===_0x1ba784;},'sKUkV':function(_0x5ed031,_0x568371){return _0x5ed031===_0x568371;},'MoRdM':function(_0x6424d6,_0x3d9813){return _0x6424d6(_0x3d9813);},'royis':function(_0x16de10,_0x230f8d){return _0x16de10(_0x230f8d);},'kqTTI':'UXBgX','nalMg':_0xcd13(0xb1),'ipqQX':_0xcd13(0xb2),'cvzAl':function(_0x1df764,_0x5c89f4){return _0x1df764===_0x5c89f4;},'Qzpee':function(_0x147e73,_0x1a3dbe){return _0x147e73===_0x1a3dbe;},'mSzfD':function(_0x265271,_0x5c6a86){return _0x265271===_0x5c6a86;},'anTGS':function(_0x437ae5,_0x4620d8){return _0x437ae5===_0x4620d8;},'gvpXo':function(_0x125928,_0x581a4f){return _0x125928===_0x581a4f;},'WVduB':function(_0x331980,_0x2c46db){return _0x331980(_0x2c46db);},'dljSj':_0xcd13(0xb3),'pgScs':_0xcd13(0xb4),'UZVIr':'⏰\x20Socket\x20registered\x20but\x20training\x20will\x20not\x20start\x20from\x20persona\x20screen...','XsVwS':function(_0x465b00,_0x1d0230){return _0x465b00(_0x1d0230);},'NIkXg':_0xcd13(0xb5),'WvDnH':function(_0x555811,_0x176c15){return _0x555811===_0x176c15;},'Hlsxw':_0xcd13(0xb6),'JqiTu':_0xcd13(0xb7),'eQvVG':function(_0x3145e0){return _0x3145e0();},'GsfDu':_0xcd13(0xb8),'UwEth':_0xcd13(0xb9),'vTYoV':function(_0x1b00b7,_0x320da6){return _0x1b00b7(_0x320da6);},'XVbkk':'Running\x20test\x20inference','HtiBO':function(_0x1604b7,_0x74b592){return _0x1604b7(_0x74b592);},'tLIvX':_0xcd13(0xba),'OrFNj':_0xcd13(0xbb),'PqkDH':function(_0x45b6d5,_0x35b3de){return _0x45b6d5(_0x35b3de);},'TpvqX':_0xcd13(0xbc),'yeRiQ':_0xcd13(0xbd),'SZiQQ':_0xcd13(0xbe),'JEaHv':_0xcd13(0xbf),'VYqgU':'AEJsX','ycdng':function(_0x122e06,_0x473110){return _0x122e06(_0x473110);},'qBFkJ':'Complete!','IrRNl':function(_0x5056eb,_0x4cb601){return _0x5056eb(_0x4cb601);},'NxSzr':'📊\x20Training\x20update:','NyxRe':_0xcd13(0xc0),'JFaFl':function(_0x4decf4,_0x323c83){return _0x4decf4(_0x323c83);},'CgzCJ':_0xcd13(0xc1),'gAhNm':function(_0x3fda8b,_0x2d02b1,_0x2cf89c){return _0x3fda8b(_0x2d02b1,_0x2cf89c);},'bCmOD':function(_0x1ebd60,_0x135d13){return _0x1ebd60===_0x135d13;},'eibDm':function(_0x452109,_0x30ddf0){return _0x452109===_0x30ddf0;},'UFzIr':'eqXOC','nDsfA':'ppltK','raOUb':_0xcd13(0xc2),'SLwDH':function(_0x1cbc76,_0x3aee1b){return _0x1cbc76(_0x3aee1b);},'YDGOe':function(_0x17fbd1,_0x21195d){return _0x17fbd1(_0x21195d);},'NPTWp':'🔗\x20Connections\x20required\x20detected\x20from\x20socket','tDfxV':function(_0x34600b){return _0x34600b();},'XbVBT':_0xcd13(0xc3),'xgqzh':function(_0x584c85){return _0x584c85();},'ZXhSB':'🚫\x20No\x20data\x20scenario\x20detected','Mejuy':function(_0x558643,_0x2c18d4){return _0x558643(_0x2c18d4);},'MrdNi':'NO_DATA','pGCJF':_0xcd13(0xc4),'sWygj':function(_0xbe2b30,_0x2a3556){return _0xbe2b30===_0x2a3556;},'dcnzw':_0xcd13(0xc5),'efQNT':function(_0x232c82,_0xbcb6da){return _0x232c82(_0xbcb6da);},'qUcHr':_0xcd13(0xc6),'YhEva':'Creating\x20your\x20persona\x20with\x20available\x20data','HmIhK':_0xcd13(0xc7),'Hpmhk':function(_0x5991be,_0x291ddd){return _0x5991be(_0x291ddd);},'aVynB':function(_0x4863cd,_0x335dc9){return _0x4863cd(_0x335dc9);},'pIFeL':'Training\x20in\x20progress','Btrde':'🧪\x20Test\x20bypass\x20detected\x20-\x20skipping\x20to\x20verification\x20screen','wLDHC':function(_0x39b7eb,_0x2daab6){return _0x39b7eb(_0x2daab6);},'PQbsS':_0xcd13(0xc8),'ZvkOH':function(_0xd0f0c6,_0x29cae1){return _0xd0f0c6===_0x29cae1;},'PaPTs':_0xcd13(0xc9),'vDfmg':_0xcd13(0xca),'kcErb':function(_0x3559cb,_0x279a86){return _0x3559cb(_0x279a86);},'eKCgs':function(_0x2d485a,_0x39c777){return _0x2d485a(_0x39c777);},'yGAYq':function(_0x47e544){return _0x47e544();},'nwxYy':_0xcd13(0xcb),'ApTbw':_0xcd13(0xcc),'KeCIw':function(_0x379ce7,_0x16cfc4){return _0x379ce7(_0x16cfc4);},'qJqhQ':_0xcd13(0xcd),'sftwx':function(_0x50cf95,_0x5b6721){return _0x50cf95===_0x5b6721;},'OxIlR':function(_0x4df55a,_0x2e9a73){return _0x4df55a===_0x2e9a73;},'EoHHQ':function(_0x1c9bb2,_0x3c38a5){return _0x1c9bb2!==_0x3c38a5;},'ZVQQe':'qavxl','KUOPi':_0xcd13(0xce),'QwoLD':_0xcd13(0xcf),'PFEDi':_0xcd13(0xd0),'GniOs':_0xcd13(0xd1),'KsSKG':_0xcd13(0xd2),'CFyIS':_0xcd13(0xd3),'LGYIZ':function(_0x10eb8e,_0xf44957){return _0x10eb8e===_0xf44957;},'FSdKv':function(_0x33f76d,_0x20da81){return _0x33f76d===_0x20da81;},'kxGlw':_0xcd13(0xd4),'DNbPb':_0xcd13(0xd5),'UCdLQ':_0xcd13(0xd6),'JJeOI':'Connection\x20failed.\x20Please\x20try\x20again.','YaSwW':function(_0x898e26,_0x1e4625){return _0x898e26(_0x1e4625);},'sYVhg':'✅\x20Authentication\x20token\x20already\x20exists:','ctNnU':_0xcd13(0xd7),'DjNzu':function(_0x3ad252,_0x38fe06){return _0x3ad252!==_0x38fe06;},'tGVim':_0xcd13(0xd8),'aPWqs':_0xcd13(0xd9),'FEhUD':_0xcd13(0xda),'PPPcZ':'Token\x20refresh\x20failed\x20-\x20please\x20restart\x20from\x20connector\x20screen','eVtzA':'youtube','ynvuC':_0xcd13(0xdb),'Yftjd':_0xcd13(0xdc),'NwpLw':_0xcd13(0xdd),'flmRZ':function(_0xc0248e,_0x288def){return _0xc0248e(_0x288def);},'EqeEh':function(_0x52b9dc,_0xd17384){return _0x52b9dc===_0xd17384;},'hjjbE':_0xcd13(0xde),'avvlH':function(_0x232f8d,_0x1f5066){return _0x232f8d===_0x1f5066;},'cuFRU':function(_0x4f0a15,_0x5507de){return _0x4f0a15===_0x5507de;},'bwsjM':function(_0x1ba748,_0x1c39ad){return _0x1ba748===_0x1c39ad;},'nkWzW':_0xcd13(0xdf),'WslIS':_0xcd13(0xe0),'ntExu':function(_0x2cf643,_0x4f325d){return _0x2cf643(_0x4f325d);},'nTyQT':function(_0x4e5670){return _0x4e5670();},'mGmpt':function(_0xb22953,_0x5e253c){return _0xb22953!==_0x5e253c;},'iFcMi':_0xcd13(0xe1),'HSieJ':_0xcd13(0xe2),'bjjIq':function(_0x2d8714){return _0x2d8714();},'JZcCk':function(_0x89f38f,_0x3f6255){return _0x89f38f(_0x3f6255);},'gbwVL':_0xcd13(0xe3),'koSWN':function(_0x3d8048){return _0x3d8048();},'CWgij':_0xcd13(0xe4),'Joeuc':'Not\x20stored','VjQVr':'WiDTy','lnrXm':'🔄\x20UserInfo\x20not\x20available,\x20attempting\x20to\x20reload...','dbBwd':function(_0x1c06c3,_0x54cc1c){return _0x1c06c3===_0x54cc1c;},'uMnpH':'🧑💻\x20Set\x20user\x20info:','JDKBd':function(_0x1ea32b,_0x1f401d){return _0x1ea32b===_0x1f401d;},'YoGPP':function(_0x8d8704,_0x468a79){return _0x8d8704===_0x468a79;},'SFsFV':function(_0x56cfbe,_0x4c2b92){return _0x56cfbe===_0x4c2b92;},'syBML':_0xcd13(0xe5),'osHtZ':_0xcd13(0xe6),'Ssdhp':_0xcd13(0xe7),'TRSFZ':'📱\x20Device\x20platform:','Catuv':_0xcd13(0xe8),'egyfr':_0xcd13(0xe9),'QMeVe':_0xcd13(0xea),'shvYC':_0xcd13(0xeb),'AAnPa':_0xcd13(0xec),'MKUij':'reconnect_attempt','ZfYbD':_0xcd13(0xed),'RiGxn':_0xcd13(0xee),'xabVF':_0xcd13(0xef),'sUnCB':_0xcd13(0xf0),'ldvkk':_0xcd13(0xf1),'ClbJr':'🔌\x20Socket\x20config:','rMvZs':_0xcd13(0xf2),'ZlLHo':function(_0xec9011,_0x258632,_0xff38a3){return _0xec9011(_0x258632,_0xff38a3);},'FIHKn':function(_0x4c913b,_0x136e43,_0x182ead){return _0x4c913b(_0x136e43,_0x182ead);},'DaCGL':_0xcd13(0xf3),'oKGpr':'❌\x20Error\x20in\x20startPersonaCreation:','ntytw':_0xcd13(0xf4),'OXExp':function(_0x375219,_0xef08a8){return _0x375219(_0xef08a8);},'GmZsf':function(_0x153f60,_0x2ad599){return _0x153f60(_0x2ad599);},'PhBhV':function(_0x56eb10,_0x5e63ac){return _0x56eb10(_0x5e63ac);},'GucNQ':_0xcd13(0xf5),'uSgJm':_0xcd13(0xf6),'buKaS':_0xcd13(0xf7),'gDhxY':'📈\x20Query\x20scores\x20enabled:','scfXG':function(_0x2edf33){return _0x2edf33();},'fvXVF':_0xcd13(0xf8),'zjcAI':function(_0x12221b,_0x3b98e5){return _0x12221b(_0x3b98e5);},'Ziyat':_0xcd13(0xf9),'iGriw':'Your\x20persona\x20is\x20ready!\x20🎉','qNUEZ':function(_0x1f113f,_0xde6e2a){return _0x1f113f<_0xde6e2a;},'bKESY':function(_0x1a9a4c,_0x217bbb){return _0x1a9a4c<_0x217bbb;},'GAYPp':_0xcd13(0xfa),'oqrZp':_0xcd13(0xfb),'NojQl':_0xcd13(0xfc),'DLLLT':_0xcd13(0xfd),'PzYdq':_0xcd13(0xfe),'YgNmb':_0xcd13(0xff),'giDzX':_0xcd13(0x100),'HkKSy':function(_0x1e3059,_0x4642c2){return _0x1e3059===_0x4642c2;},'BKHcG':_0xcd13(0x101),'wLcVb':_0xcd13(0x102),'qsdru':_0xcd13(0x103),'wbLTY':_0xcd13(0x104),'CTykp':_0xcd13(0x105),'nNgNh':function(_0x5bb37b,_0x5e3dd0){return _0x5bb37b===_0x5e3dd0;},'nTNxY':_0xcd13(0x106),'HgLXG':_0xcd13(0x107),'bWQUr':_0xcd13(0x108),'DoqLB':function(_0xf3c6c4,_0x14352c){return _0xf3c6c4===_0x14352c;},'kXEvg':function(_0x1e547b,_0x552cc3){return _0x1e547b===_0x552cc3;},'QCPyE':function(_0x2bbbd1,_0x3ebf8e){return _0x2bbbd1===_0x3ebf8e;},'ysazy':function(_0x408d16,_0x5384a5){return _0x408d16===_0x5384a5;},'nWdzc':_0xcd13(0x109),'eijvg':'connected','divno':_0xcd13(0x10a),'lfrWN':_0xcd13(0x10b),'slLdP':function(_0x418157,_0x1fa2ba){return _0x418157>_0x1fa2ba;},'rPIXl':_0xcd13(0x10c),'raGQf':_0xcd13(0x10d),'SuAPs':_0xcd13(0x10e),'huvoR':_0xcd13(0x10f),'vRfbS':_0xcd13(0x110),'hUaKm':function(_0x52687c,_0x507f1e){return _0x52687c(_0x507f1e);},'tgrGE':_0xcd13(0x111),'vRyGR':function(_0x329e96,_0x3d19bb){return _0x329e96(_0x3d19bb);},'htsty':function(_0x55b9a8,_0x1633ea){return _0x55b9a8(_0x1633ea);},'aKeik':_0xcd13(0x112),'pprsW':_0xcd13(0x113),'yEeGZ':'✅\x20[BACKGROUND]\x20Socket\x20connected,\x20starting\x20background\x20data\x20collection...','UBLsh':function(_0x4482c9,_0x13834e){return _0x4482c9||_0x13834e;},'Yolhs':function(_0x4208fe,_0x42d39e){return _0x4208fe(_0x42d39e);},'AciNL':'Collecting\x20your\x20data...','RxWZU':function(_0x19b102,_0x3149a9){return _0x19b102(_0x3149a9);},'vmdQh':'sZZjc','hjALT':_0xcd13(0x114),'gvgxq':_0xcd13(0x115),'rDKlD':'Connecting...','kHqLc':function(_0x2ccf55){return _0x2ccf55();},'MZzzO':_0xcd13(0x116),'hDhYA':function(_0xe9b21e,_0x260281){return _0xe9b21e(_0x260281);},'RmxQJ':function(_0x5cfe84,_0x5c0a6b){return _0x5cfe84===_0x5c0a6b;},'dNPPn':function(_0x5cd842,_0x5d147a){return _0x5cd842===_0x5d147a;},'MqFtf':function(_0x2f92dc,_0x3a4866){return _0x2f92dc===_0x3a4866;},'WfIHT':function(_0x40c5d7,_0x2a9f9c){return _0x40c5d7(_0x2a9f9c);},'IEbOb':'🧑💻\x20[BACKGROUND]\x20User\x20info\x20set:','EIHOp':_0xcd13(0x117),'aBOIj':function(_0x39cfec,_0x127721,_0x28ada4){return _0x39cfec(_0x127721,_0x28ada4);},'alOXZ':'polling','lDESj':'✅\x20[BACKGROUND]\x20Background\x20training\x20initiated\x20successfully','cwsgt':'ZxxqU','poWiM':_0xcd13(0x118),'nSIRg':function(_0x1de519,_0x2ba92c){return _0x1de519(_0x2ba92c);},'mzPhH':function(_0x5596de,_0x5b3985){return _0x5596de(_0x5b3985);},'BUcpt':_0xcd13(0x119),'KzUPF':function(_0x153768,_0x1cc260){return _0x153768===_0x1cc260;},'ANPnR':function(_0x272e30,_0x30663b){return _0x272e30===_0x30663b;},'DzoRd':function(_0x917573,_0x2cc5e8){return _0x917573===_0x2cc5e8;},'Sxuud':'📤\x20Sending\x20background\x20training\x20data\x20to\x20/mobile-training/enoch:','euJSz':_0xcd13(0x11a),'mmJcM':function(_0x190399,_0x14111a){return _0x190399===_0x14111a;},'bqzqq':_0xcd13(0x11b),'gElcB':function(_0x4103af,_0x2a56f7){return _0x4103af(_0x2a56f7);},'mFcuU':function(_0x5006d8){return _0x5006d8();},'WLrhu':function(_0x5a1ed5,_0x176212){return _0x5a1ed5(_0x176212);},'sIqFZ':'1|3|4|0|6|5|2','QLiVW':function(_0x2fdcd0,_0x28611c){return _0x2fdcd0===_0x28611c;},'Jgbrh':'MdyAq','sIhet':_0xcd13(0x11c),'iqoeY':_0xcd13(0x11d),'rUluC':function(_0x4fc8b3,_0x1ba390){return _0x4fc8b3===_0x1ba390;},'cItJA':_0xcd13(0x11e),'PsBuN':_0xcd13(0x11f),'YUAVc':_0xcd13(0x120),'Jrrre':_0xcd13(0x121),'NKcWv':_0xcd13(0x122),'QVfCK':function(_0x3567b9,_0x42f961){return _0x3567b9===_0x42f961;},'OOjCM':function(_0x42d65c,_0x212e6d){return _0x42d65c!==_0x212e6d;},'HsBwM':_0xcd13(0x123),'xOGVa':'⚠️\x20[SDK]\x20No\x20token/email\x20found\x20for\x20returning\x20user','uLgSt':function(_0x248816,_0x4b36ed){return _0x248816===_0x4b36ed;},'JuKdb':_0xcd13(0x124),'YnTlq':function(_0xf3bba7,_0x3edc54){return _0xf3bba7===_0x3edc54;},'MuPXz':function(_0x597584,_0x464e98,_0x5dbe1c,_0x54d70d){return _0x597584(_0x464e98,_0x5dbe1c,_0x54d70d);},'NtseQ':_0xcd13(0x125),'RVTpM':_0xcd13(0x126),'ytfQP':function(_0x364153,_0x282d75){return _0x364153(_0x282d75);},'bWXPq':function(_0x30d9a0,_0x2e4054){return _0x30d9a0(_0x2e4054);},'SDWQf':function(_0x1bbc45,_0x147070){return _0x1bbc45(_0x147070);},'jSZgM':function(_0x2d6812,_0x55eb27){return _0x2d6812(_0x55eb27);},'HxDgq':function(_0x162b2c,_0x445212){return _0x162b2c(_0x445212);},'ieUGz':function(_0x39bb91,_0x6003d8){return _0x39bb91(_0x6003d8);},'ltWDc':function(_0x4a89f1,_0x37c5c2){return _0x4a89f1(_0x37c5c2);},'XRGVN':function(_0x394656,_0x16c1a5,_0x47e386){return _0x394656(_0x16c1a5,_0x47e386);},'iUaUN':function(_0x25c655,_0x24510f){return _0x25c655(_0x24510f);},'XWleM':function(_0x278edf,_0x4f6e5e){return _0x278edf(_0x4f6e5e);},'byheS':function(_0x443461,_0x7a7558){return _0x443461(_0x7a7558);},'dNLPl':function(_0x37edd3,_0x3d8b33){return _0x37edd3(_0x3d8b33);},'LFsDM':function(_0x3117e1,_0x14f4c9){return _0x3117e1(_0x14f4c9);},'JchOF':function(_0x39a056,_0x156979){return _0x39a056(_0x156979);},'dhxNO':function(_0x36e586,_0x291e74){return _0x36e586(_0x291e74);},'DHMja':function(_0x3c159a,_0x269a77){return _0x3c159a(_0x269a77);},'yigst':function(_0x3ac4fe,_0xe46598){return _0x3ac4fe(_0xe46598);},'TkRwW':function(_0x555a3d,_0x47f0a3){return _0x555a3d(_0x47f0a3);},'lcJvT':function(_0x375926,_0x1b7c5d){return _0x375926(_0x1b7c5d);},'HTKeI':_0xcd13(0x127),'wZqZe':'#E60023','TarxY':'YouTube','KChMr':'LinkedIn','jmBci':_0xcd13(0x128),'Lkgkx':_0xcd13(0x129),'hLJGo':_0xcd13(0x12a),'bvoln':_0xcd13(0x12b),'pzXzu':'#EA4335','mHdkv':_0xcd13(0x12c),'cUaXV':_0xcd13(0x12d),'jOhYD':function(_0x177419,_0x8eaa12){return _0x177419(_0x8eaa12);},'aBmuq':function(_0x11a4bf,_0x52ddb6){return _0x11a4bf(_0x52ddb6);},'GDUhp':function(_0x4957f3,_0x4a6c8f,_0x31d1b4){return _0x4957f3(_0x4a6c8f,_0x31d1b4);},'DYeTY':function(_0x4e6b8a,_0x1f8359,_0x35109f){return _0x4e6b8a(_0x1f8359,_0x35109f);},'kCRAn':function(_0xd503e1,_0x903de5,_0x202aad){return _0xd503e1(_0x903de5,_0x202aad);},'RaBQR':function(_0x3ed9a2,_0x59b0af,_0x35cd05){return _0x3ed9a2(_0x59b0af,_0x35cd05);},'psZgE':function(_0x4c6cf8,_0x46114f,_0x387a6e){return _0x4c6cf8(_0x46114f,_0x387a6e);},'ZfmGl':'slide','VOxex':_0xcd13(0x12e),'frfuy':'Container\x20Top:\x20','HsUDz':'Container\x20Bottom:\x20','KpDgD':_0xcd13(0x12f),'NCoVL':_0xcd13(0x130),'fklQa':'welcome-get-started-button','cRtIG':function(_0x506b51,_0x49b79b){return _0x506b51===_0x49b79b;},'GewIS':function(_0x8dacdf,_0xf3fea3){return _0x8dacdf===_0xf3fea3;}},[_0x1df82a,_0x40952e]=_0x38fe1c[_0xcd13(0x131)](useState,primaryAuthOnly?_0x38fe1c[_0xcd13(0x132)]:_0x38fe1c[_0xcd13(0x133)]),[_0x23a4da,_0x3bcf30]=useState({}),[_0x2eedd,_0x5aa325]=_0x38fe1c['VUlQu'](useState,''),[_0x821614,_0x3f7c9d]=_0x38fe1c[_0xcd13(0x134)](useState,_0xcd13(0x135)),[_0x4e7921]=_0x38fe1c['bWXPq'](useState,new Animated[(_0xcd13(0x136))](height)),[_0x2343ab]=useState(new Animated[(_0xcd13(0x136))](0x0)),[_0x4502e1,_0x43bd50]=_0x38fe1c['LCNxh'](useState,{}),[_0x351e69,_0x337c9f]=useState(''),[_0x365c4a,_0x1e938f]=_0x38fe1c[_0xcd13(0x137)](useState,''),[_0x4c1dae,_0x9941c1]=useState(''),[_0xf2a8ab,_0x4f24e8]=_0x38fe1c[_0xcd13(0x138)](useState,''),[_0x27f8d3,_0x23e6b8]=_0x38fe1c[_0xcd13(0x139)](useState,![]),[_0x505be1,_0x19a7d5]=useState(''),[_0x2a51ba,_0x519d53]=useState(![]),[_0x5a2b56,_0x29a734]=_0x38fe1c[_0xcd13(0x13a)](useState,[]),[_0x346bb4,_0x27fc35]=_0x38fe1c[_0xcd13(0x13b)](useState,null),[_0x177c2f,_0x4ab94d]=_0x38fe1c[_0xcd13(0x13c)](useState,![]),[_0x3192f0,_0x25ae7d]=useState(![]),[_0x27cd95,_0x96a904]=useState(![]),[_0xa9ffc1,_0x985394]=useState(0x0),[_0xb9a59f,_0x4243a4]=_0x38fe1c['ltWDc'](useState,0x8),[_0x5dab86,_0x341b75]=useState(0x6);_0x38fe1c[_0xcd13(0x13d)](useEffect,()=>{console[_0xcd13(0x13e)](_0x38fe1c['PrfQq'],_0x1c3d99),console[_0xcd13(0x13e)](_0xcd13(0x7b),_0x177c2f),console['log'](_0x38fe1c[_0xcd13(0x13f)],_0x1df82a),console[_0xcd13(0x13e)](_0x38fe1c['aEpvV'],primaryAuthOnly);},[_0x1c3d99,_0x177c2f,_0x1df82a,primaryAuthOnly]),_0x38fe1c['FIHKn'](useEffect,()=>{const _0x23dc0b={'zhFHk':_0x38fe1c[_0xcd13(0x140)],'DkFHX':function(_0x40c323,_0x501781){return _0x40c323(_0x501781);},'xpktL':_0x38fe1c[_0xcd13(0x132)]};_0x38fe1c['wldky'](_0x38fe1c[_0xcd13(0x141)],_0x38fe1c[_0xcd13(0x141)])?(_0x11d871[_0xcd13(0x13e)](_0x23dc0b[_0xcd13(0x142)]),_0x23dc0b[_0xcd13(0x143)](_0xf3ae54,_0x10766c),_0x23dc0b[_0xcd13(0x143)](_0x430cd3,_0x23dc0b[_0xcd13(0x144)])):primaryAuthOnly&&_0x1c3d99&&(_0x1df82a===_0x38fe1c[_0xcd13(0x145)]||_0x38fe1c[_0xcd13(0x146)](_0x1df82a,_0x38fe1c[_0xcd13(0x147)]))&&(_0x38fe1c['fXYgo'](_0x38fe1c['vYDDM'],_0x38fe1c[_0xcd13(0x148)])?(console[_0xcd13(0x13e)](_0xcd13(0xd4)),console['log'](_0x38fe1c['qfVqE'],_0x1df82a,_0x38fe1c[_0xcd13(0x149)]),_0x38fe1c[_0xcd13(0x14a)](_0x40952e,_0x38fe1c[_0xcd13(0x133)])):_0x38fe1c['yFLXK'](_0x53d1b3,![]));},[primaryAuthOnly,_0x1c3d99]);const _0x42fac1=_0x38fe1c[_0xcd13(0x14b)](useRef,![]),[_0x513bb2,_0x18f624]=useState(0x5),[_0x53e721,_0x5b5583]=_0x38fe1c[_0xcd13(0x14c)](useState,![]),[_0x4fdc5b]=_0x38fe1c['SDWQf'](useState,new Animated['Value'](0x0)),_0x1c280a=_0x38fe1c[_0xcd13(0x14d)](useRef,null),_0x554ecd=null,[_0x4b5df2,_0x77311d]=useState(''),[_0x55b100,_0x444384]=useState(0x0),[_0x5a7f6c,_0x2c54c4]=_0x38fe1c[_0xcd13(0x14e)](useState,_0xcd13(0x14f)),[_0x47303c,_0x1d0f1]=_0x38fe1c[_0xcd13(0x150)](useState,![]),[_0xa24eb7,_0x4506c7]=_0x38fe1c[_0xcd13(0x151)](useState,![]),[_0x1079d1,_0x75e131]=_0x38fe1c[_0xcd13(0x152)](useState,![]),[_0x539cc9,_0x194155]=_0x38fe1c['EigLK'](useState,null),[_0x93da33,_0x4b8bf2]=useState(null),[_0x4a1bb9,_0x28917a]=useState(null),[_0x36231e,_0xdddc3d]=_0x38fe1c['Mejuy'](useState,null),[_0x12fcb9,_0x5a0247]=_0x38fe1c[_0xcd13(0x153)](useState,''),_0x1f4bf0=useRef(null),_0x7fe1ad=_0x38fe1c['RxWZU'](useRef,null),[_0x2c1036,_0x17a8b7]=_0x38fe1c[_0xcd13(0x154)](useState,![]),[_0x275cb5,_0x2de285]=useState(null),[_0x820dc5,_0x368d60]=useState(null),[_0x314ca9,_0x9ddd5]=_0x38fe1c[_0xcd13(0x155)](useState,null),[_0x37821b,_0x5c6b2a]=_0x38fe1c[_0xcd13(0x156)](useState,null),[_0x537c8b,_0x6f85a3]=useState(![]),[_0x177cec,_0x1846be]=_0x38fe1c['HtiBO'](useState,![]),[_0x590584,_0x3bdd00]=_0x38fe1c['TkRwW'](useState,''),[_0x478609,_0xf67da]=_0x38fe1c['lcJvT'](useState,null),_0x12db93=async _0x418ebd=>{try{const _0x175502=await AsyncStorage[_0xcd13(0x157)](_0x38fe1c[_0xcd13(0x158)]);let _0x46b292=_0x175502?JSON[_0xcd13(0x159)](_0x175502):[];if(!_0x46b292[_0xcd13(0x15a)](_0x418ebd)){if(_0x38fe1c[_0xcd13(0x146)](_0x38fe1c[_0xcd13(0x15b)],_0x38fe1c['HMcOO']))_0x46b292['push'](_0x418ebd),await AsyncStorage[_0xcd13(0x15c)](_0x38fe1c[_0xcd13(0x158)],JSON[_0xcd13(0x15d)](_0x46b292)),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x15e)],_0x418ebd,_0x38fe1c['nvtVh'],_0x46b292);else try{const _0xe93623=new _0x2dc81f(_0x14b1d9),_0x450cc2=_0xe93623[_0xcd13(0x15f)]['get'](_0x38fe1c[_0xcd13(0x160)]),_0x2d5756=_0xe93623[_0xcd13(0x15f)][_0xcd13(0x161)](_0x38fe1c[_0xcd13(0x162)])||_0x332228;_0x38fe1c['csmep'](_0x450cc2,_0x2d5756)&&(_0x588654(_0x49b0d6=>({..._0x49b0d6,[_0x2d5756]:{'userName':_0x318f79,'connected':!![]}})),_0x38fe1c['yFLXK'](_0x5b83a4,_0x503342=>({..._0x503342,[_0x2d5756]:!![]})),_0x38fe1c['yFLXK'](_0x10ca00,_0x38fe1c[_0xcd13(0x163)]));}catch(_0x20d346){_0x2d89dc[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x165)],_0x20d346);}}}catch(_0x4c1a52){_0x38fe1c[_0xcd13(0x166)](_0x38fe1c['lCwVl'],_0x38fe1c[_0xcd13(0x167)])?console['error'](_0x38fe1c[_0xcd13(0x168)],_0x4c1a52):_0x38fe1c[_0xcd13(0x14a)](_0x4afa3f,![]);}},_0x5b8223=async _0x10649d=>{if(_0x38fe1c[_0xcd13(0x146)](_0x38fe1c['zirdE'],_0x38fe1c[_0xcd13(0x169)]))try{if(_0x38fe1c[_0xcd13(0x16a)](_0x38fe1c[_0xcd13(0x16b)],_0x38fe1c['cgxsU']))_0x343e0e=_0xcd13(0xfb);else{const _0x42f4fa=await AsyncStorage[_0xcd13(0x157)](_0x38fe1c[_0xcd13(0x158)]);let _0x5d3485=_0x42f4fa?JSON[_0xcd13(0x159)](_0x42f4fa):[];_0x5d3485=_0x5d3485[_0xcd13(0x16c)](_0x5ad14b=>_0x5ad14b!==_0x10649d),await AsyncStorage[_0xcd13(0x15c)](_0xcd13(0x16d),JSON[_0xcd13(0x15d)](_0x5d3485)),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x16e)],_0x10649d,_0x38fe1c[_0xcd13(0x16f)],_0x5d3485);}}catch(_0x385772){console[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x170)],_0x385772);}else _0x4bc238[_0xcd13(0x164)]('Error\x20connecting\x20to\x20'+_0x53e6b0+':',_0x128069);},_0x30803d=(_0x56c230,_0x12c211)=>{const _0x25ccec={'gnfyn':function(_0x2c95df,_0x31be7d){return _0x2c95df(_0x31be7d);},'aeDGl':_0x38fe1c[_0xcd13(0x171)]};Alert['alert'](_0x38fe1c[_0xcd13(0x172)],_0xcd13(0x173)+_0x12c211+'?',[{'text':'No','style':_0xcd13(0x174)},{'text':_0x38fe1c[_0xcd13(0x175)],'style':_0xcd13(0x176),'onPress':async()=>{const _0x2d3306={'zYRhS':_0x38fe1c[_0xcd13(0x177)]};if(_0x38fe1c[_0xcd13(0x178)](_0x38fe1c[_0xcd13(0x179)],_0xcd13(0x17a)))try{_0x38fe1c[_0xcd13(0x17b)](_0x38fe1c[_0xcd13(0x17c)],_0xcd13(0x12))?(_0x25ccec['gnfyn'](_0x157eac,_0xe28325),_0x25ccec[_0xcd13(0x17d)](_0x51ef35,_0x25ccec[_0xcd13(0x17e)])):(_0x38fe1c['yFLXK'](_0x4a6985,_0x346b02=>({..._0x346b02,[_0x56c230]:_0xcd13(0x2a)})),_0x3bcf30(_0x5993ab=>{const _0x48a9a5={..._0x5993ab};return delete _0x48a9a5[_0x56c230],_0x48a9a5;}),_0x38fe1c[_0xcd13(0x14a)](_0x43bd50,_0x427a9a=>({..._0x427a9a,[_0x56c230]:![]})),await _0x38fe1c['yFLXK'](_0x5b8223,_0x56c230),await _0x38fe1c['RXaqM'](_0x50c7e9),console[_0xcd13(0x13e)](_0xcd13(0x17f),_0x56c230));}catch(_0x44ed11){console[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x180)],_0x44ed11);}else{_0x344681[_0xcd13(0x164)](_0x2d3306[_0xcd13(0x181)],_0x1c2534);throw _0x310710;}}}]);},_0xcff9e7=()=>{const _0x889e09={'XZGhh':_0x38fe1c[_0xcd13(0x182)],'hQLgg':function(_0x52a697,_0x4434c4){return _0x38fe1c['zaJup'](_0x52a697,_0x4434c4);},'VChzM':_0x38fe1c[_0xcd13(0x183)],'nPAfZ':function(_0x9011a0,_0x573a12){return _0x38fe1c[_0xcd13(0x14a)](_0x9011a0,_0x573a12);}};_0x7fe1ad['current']&&(_0x38fe1c[_0xcd13(0x184)](_0xcd13(0x17),_0x38fe1c[_0xcd13(0x185)])?!_0x365b12&&_0x5a0356['current']&&!_0x4e2cfb[_0xcd13(0x186)]['connected']&&(_0x3d1c20[_0xcd13(0x164)](_0xcd13(0xca)),_0x297bf1['error'](_0x889e09[_0xcd13(0x187)],{'connected':_0x403b40[_0xcd13(0x186)][_0xcd13(0x188)],'disconnected':_0x523a82[_0xcd13(0x186)][_0xcd13(0x2a)],'id':_0x386a0f[_0xcd13(0x186)]['id']}),_0x889e09[_0xcd13(0x189)](_0x17a513,_0x889e09[_0xcd13(0x18a)]),_0x889e09[_0xcd13(0x18b)](_0x159805,!![]),_0xfa05fa(),_0x285783[_0xcd13(0x186)]&&(_0x328105[_0xcd13(0x186)][_0xcd13(0xec)](),_0x25dc73[_0xcd13(0x186)]=null)):_0x38fe1c[_0xcd13(0x18c)](clearInterval,_0x7fe1ad['current']));let _0x35e0d8=0x0;_0x7fe1ad['current']=_0x38fe1c[_0xcd13(0x18d)](setInterval,()=>{_0x35e0d8=_0x38fe1c['ZuIiG'](_0x38fe1c[_0xcd13(0x18e)](_0x35e0d8,0x1),0x4),_0x38fe1c[_0xcd13(0x18f)](_0x35e0d8,0x0)?_0x5a0247(''):_0x38fe1c[_0xcd13(0x18c)](_0x5a0247,'.'[_0xcd13(0x190)](_0x35e0d8));},0x1f4);},_0x1e105d=()=>{_0x7fe1ad['current']&&(_0x38fe1c[_0xcd13(0x191)](clearInterval,_0x7fe1ad['current']),_0x7fe1ad['current']=null),_0x38fe1c['LCNxh'](_0x5a0247,'');},_0x4f5545=[{'id':_0x38fe1c[_0xcd13(0x192)],'name':_0xcd13(0x193),'color':_0x38fe1c[_0xcd13(0x194)]},{'id':'youtube','name':_0x38fe1c[_0xcd13(0x195)],'color':'#FFFFFF'},{'id':_0xcd13(0x196),'name':_0x38fe1c[_0xcd13(0x197)],'color':_0x38fe1c['jmBci']}],_0xdec31a=[{'id':_0x38fe1c['Lkgkx'],'name':_0x38fe1c[_0xcd13(0x198)],'color':_0xcd13(0x199)},{'id':_0xcd13(0x19a),'name':_0x38fe1c[_0xcd13(0x19b)],'color':_0x38fe1c[_0xcd13(0x19c)]},{'id':_0x38fe1c[_0xcd13(0x19d)],'name':_0x38fe1c[_0xcd13(0x19e)],'color':_0x38fe1c[_0xcd13(0x19f)]}],_0x10f29a=[..._0x4f5545,..._0xdec31a],_0x5c0cfe=async()=>{},_0x50c7e9=async()=>{},_0x1a6e08=()=>_0xcd13(0x2a),_0x191fe7=![],_0x4d4ef6=()=>![],[_0x66ba3f,_0x4a6985]=_0x38fe1c[_0xcd13(0x1a0)](useState,{}),[_0x18936f,_0x2e2578]=_0x38fe1c[_0xcd13(0x1a1)](useState,null),_0x224b60=_0x3804a0=>{return _0x38fe1c[_0xcd13(0x18c)](getUniversalOnboardingIcon,_0x3804a0);},_0x5857c2=_0x38fe1c[_0xcd13(0x1a2)](useRef,![]),_0x4920a5=_0x38fe1c[_0xcd13(0x1a3)](useRef,_0x58d05c);_0x38fe1c[_0xcd13(0x1a4)](useEffect,()=>{const _0x7fe81a={'Faxrz':_0x38fe1c[_0xcd13(0x1a5)],'pohDW':_0xcd13(0x1a6),'CLDlf':_0x38fe1c[_0xcd13(0x1a7)],'NCYug':function(_0x171d21){return _0x38fe1c[_0xcd13(0x1a8)](_0x171d21);},'gIkUZ':function(_0x1b60cb,_0x8a4cad){return _0x38fe1c[_0xcd13(0x14a)](_0x1b60cb,_0x8a4cad);},'EoJmN':_0xcd13(0xb7)};if(_0x38fe1c[_0xcd13(0x1a9)](_0x38fe1c[_0xcd13(0x1aa)],_0x38fe1c['npOxX']))_0x4920a5[_0xcd13(0x186)]=_0x58d05c;else{const _0x5c3114=_0x7fe81a['Faxrz'][_0xcd13(0x1ab)]('|');let _0x17a956=0x0;while(!![]){switch(_0x5c3114[_0x17a956++]){case'0':_0x318310[_0xcd13(0x164)](_0x7fe81a[_0xcd13(0x1ac)],{'message':_0x398516[_0xcd13(0x1ad)],'name':_0x328c2d[_0xcd13(0x1ae)],'stack':_0x61f3f7[_0xcd13(0x1af)],'errorObject':_0x3a5d58});continue;case'1':_0x2f671f[_0xcd13(0x164)](_0x7fe81a[_0xcd13(0x1b0)],_0x1f9793);continue;case'2':_0x7fe81a['NCYug'](_0x5c46a0);continue;case'3':_0x4765b9(!![]);continue;case'4':_0x7fe81a[_0xcd13(0x1b1)](_0x31993b,_0x7fe81a[_0xcd13(0x1b2)]);continue;}break;}}},[_0x58d05c]),_0x38fe1c[_0xcd13(0x1b3)](useEffect,()=>{const _0x5bd5ac={'CNJsS':_0x38fe1c[_0xcd13(0x1b4)],'Nfhla':function(_0xc69946,_0x4975ba){return _0x38fe1c['WYasO'](_0xc69946,_0x4975ba);},'ZjYtx':function(_0x18a907,_0x4da8ea){return _0x38fe1c[_0xcd13(0x1b5)](_0x18a907,_0x4da8ea);},'EvTcl':function(_0x14e49f,_0x76fc35){return _0x14e49f===_0x76fc35;},'IBZCe':function(_0x45c795,_0x29d9a9){return _0x38fe1c['QqgXb'](_0x45c795,_0x29d9a9);},'qNcrx':_0x38fe1c['pabBz'],'RVZeo':_0x38fe1c[_0xcd13(0x1b6)],'PUnre':function(_0x646631,_0x3fa55f){return _0x38fe1c[_0xcd13(0x1b7)](_0x646631,_0x3fa55f);},'ipFyp':function(_0x257311,_0x220369){return _0x38fe1c[_0xcd13(0x1b8)](_0x257311,_0x220369);},'eIyfV':function(_0x2c3c08,_0x35e16a,_0x27bcb2){return _0x2c3c08(_0x35e16a,_0x27bcb2);}};if(_0x1c3d99){if(_0x38fe1c[_0xcd13(0x1b9)]('BedEg','IbmJL'))_0x290033[_0xcd13(0x186)][_0xcd13(0xec)](),_0x3fe917[_0xcd13(0x186)]=null;else{_0x5857c2[_0xcd13(0x186)]=!![],_0x42fac1['current']=![],_0x2343ab[_0xcd13(0x1ba)](0x0),_0x38fe1c[_0xcd13(0x1bb)](_0x4ab94d,!![]),_0x10916f(),_0x38fe1c[_0xcd13(0x1bc)](requestAnimationFrame,()=>{Animated[_0xcd13(0x1bd)](_0x2343ab,{'toValue':0x1,'duration':0x12c,'useNativeDriver':!![]})[_0xcd13(0x1be)]();});const _0x265917=Linking[_0xcd13(0x1bf)](_0x38fe1c[_0xcd13(0x1c0)],_0x28ae31);return()=>{const _0x422b70={'DAVUB':_0x5bd5ac[_0xcd13(0x1c1)],'BFoYS':function(_0x2632be,_0x2de3ee){return _0x5bd5ac[_0xcd13(0x1c2)](_0x2632be,_0x2de3ee);},'VRjeh':function(_0x49c7af,_0x54281d){return _0x5bd5ac[_0xcd13(0x1c2)](_0x49c7af,_0x54281d);},'GXdaA':function(_0x27b83f,_0x57c958){return _0x5bd5ac[_0xcd13(0x1c3)](_0x27b83f,_0x57c958);},'MjrZP':function(_0x5e08dc,_0x1756c8){return _0x5e08dc===_0x1756c8;},'QOaqe':function(_0x94bb5f,_0x36b335){return _0x5bd5ac['EvTcl'](_0x94bb5f,_0x36b335);},'RVsJR':function(_0x68064d,_0x28cbad){return _0x68064d(_0x28cbad);}};if(_0x5bd5ac[_0xcd13(0x1c4)](_0x5bd5ac['qNcrx'],_0x5bd5ac[_0xcd13(0x1c5)])){var _0xce0dca;_0x3dc25b[_0xcd13(0x164)](_0x422b70[_0xcd13(0x1c6)],_0x1a92ce);const _0x311526=(_0x422b70[_0xcd13(0x1c7)](_0x20a64f,null)||_0xfbe65f===void 0x0||_0x422b70['BFoYS'](_0xce0dca=_0x364e9e['email'],null)||_0x422b70[_0xcd13(0x1c8)](_0xce0dca,void 0x0)?void 0x0:_0xce0dca['split']('@')[0x0])||(_0x422b70[_0xcd13(0x1c9)](_0x32f0d0,null)||_0x422b70[_0xcd13(0x1ca)](_0xe4c518,void 0x0)?void 0x0:_0x416119[_0xcd13(0x1ae)])||'mobile_user';_0x46e813({'username':_0x311526,'email':(_0x422b70[_0xcd13(0x1cb)](_0x5b4890,null)||_0x422b70[_0xcd13(0x1ca)](_0x1a8855,void 0x0)?void 0x0:_0x4daa67['email'])||null,'id':null}),_0x422b70[_0xcd13(0x1cc)](_0x487852,_0x311526);}else _0x265917[_0xcd13(0x1cd)]();};}}else{if(_0x5857c2[_0xcd13(0x186)]&&!_0x42fac1[_0xcd13(0x186)])Animated['timing'](_0x2343ab,{'toValue':0x0,'duration':0xfa,'useNativeDriver':!![]})[_0xcd13(0x1be)](()=>{const _0x331abb={'jgqhF':function(_0x25ee00,_0x2c2539){return _0x5bd5ac[_0xcd13(0x1ce)](_0x25ee00,_0x2c2539);},'IkUoE':function(_0x41d1b4,_0x4153dc){return _0x5bd5ac['ipFyp'](_0x41d1b4,_0x4153dc);}};_0x5bd5ac['eIyfV'](setTimeout,()=>{var _0x4a89ef;_0x331abb[_0xcd13(0x1cf)](_0x4ab94d,![]),(_0x4a89ef=_0x4920a5[_0xcd13(0x186)])===null||_0x331abb['IkUoE'](_0x4a89ef,void 0x0)||_0x4a89ef[_0xcd13(0x1d0)](_0x4920a5);},0x10);});else _0x5857c2[_0xcd13(0x186)]&&_0x42fac1[_0xcd13(0x186)]&&(_0x38fe1c[_0xcd13(0x1d1)](_0x4ab94d,![]),_0x42fac1['current']=![]);}},[_0x1c3d99]),_0x38fe1c[_0xcd13(0x1d2)](useEffect,()=>{const _0x2c38c2={'RTNOW':_0x38fe1c[_0xcd13(0x1d3)],'bKQKK':_0xcd13(0x1d4),'npfHp':_0x38fe1c[_0xcd13(0x1d5)],'lLMNr':_0x38fe1c['PYOIe'],'jcINa':_0xcd13(0x1d6),'NBrAW':_0x38fe1c['oPmiA'],'eFdxt':_0x38fe1c['clTKX'],'FIFbh':function(_0x5033e1){return _0x5033e1();}};if(_0x38fe1c[_0xcd13(0x1d7)](_0x38fe1c[_0xcd13(0x1d8)],_0x38fe1c[_0xcd13(0x1d9)])){const _0x50d202=_0xcd13(0x1da)['split']('|');let _0x37fded=0x0;while(!![]){switch(_0x50d202[_0x37fded++]){case'0':_0x24547e[_0xcd13(0x13e)](_0x2c38c2[_0xcd13(0x1db)],_0x546b6e[_0xcd13(0x1dc)][_0xcd13(0x1dd)]);continue;case'1':_0x538a62[_0xcd13(0x13e)](_0x2c38c2[_0xcd13(0x1de)],_0x46deea['features'][_0xcd13(0x1df)]);continue;case'2':_0xf11de0[_0xcd13(0x13e)](_0xcd13(0x75),_0x483712[_0xcd13(0x1dc)]['storage']);continue;case'3':_0x20e933[_0xcd13(0x13e)](_0x2c38c2[_0xcd13(0x1e0)],_0xb8a2d3[_0xcd13(0x1dc)][_0xcd13(0x1e1)]);continue;case'4':_0x3a2a3c[_0xcd13(0x13e)](_0x2c38c2[_0xcd13(0x1e2)],_0xfaf827['features']['compression']);continue;case'5':_0xfc9831[_0xcd13(0x13e)](_0x2c38c2[_0xcd13(0x1e3)],_0xc8a6dd['features'][_0xcd13(0x1e4)]);continue;case'6':_0x5c8992[_0xcd13(0x13e)](_0x2c38c2['NBrAW'],_0x145584[_0xcd13(0x1dc)][_0xcd13(0x1e5)]);continue;}break;}}else return()=>{_0x1f4bf0[_0xcd13(0x186)]&&(console[_0xcd13(0x13e)](_0x2c38c2[_0xcd13(0x1e6)]),_0x1f4bf0[_0xcd13(0x186)]['disconnect'](),_0x1f4bf0['current']=null),_0x2c38c2[_0xcd13(0x1e7)](_0x1e105d);};},[_0x1c3d99]);const _0x28ae31=_0x38fe1c[_0xcd13(0x1e8)](useCallback,({url:_0x388ac7})=>{const _0x27f8ce={'anmgF':function(_0x37bd59,_0x200fcf){return _0x38fe1c['yvESz'](_0x37bd59,_0x200fcf);},'YTbZo':function(_0x174e70,_0x47b031){return _0x174e70(_0x47b031);},'iqVzo':function(_0x2f119d,_0x386188){return _0x38fe1c[_0xcd13(0x1e9)](_0x2f119d,_0x386188);},'nGZtf':_0xcd13(0x1ea)};_0x38fe1c[_0xcd13(0x1eb)]!==_0x38fe1c[_0xcd13(0x1eb)]?(_0x587657[_0xcd13(0x13e)]('🆕\x20New\x20user\x20or\x20no\x20existing\x20connections,\x20showing\x20platform\x20connection\x20screen'),_0x27f8ce[_0xcd13(0x1ec)](_0x360281,![]),_0x27f8ce[_0xcd13(0x1ed)](_0x31465d,[]),_0x27f8ce[_0xcd13(0x1ee)](_0x1978af,_0x27f8ce[_0xcd13(0x1ef)])):_0x38fe1c[_0xcd13(0x1b7)](isOAuthCallback,_0x388ac7)&&(_0x38fe1c[_0xcd13(0x17b)](_0xcd13(0x1f0),_0x38fe1c[_0xcd13(0x1f1)])?_0x38fe1c['cQluz'](_0xdbedbb,_0x388ac7):_0x33b1a3[_0xcd13(0x13e)](_0xcd13(0x74)));},[]);_0x38fe1c[_0xcd13(0x1d2)](useEffect,()=>{const _0x25c1bd={'bbBkG':_0x38fe1c[_0xcd13(0x1f2)],'NkjXP':function(_0x37b12a,_0x2a1e80){return _0x38fe1c[_0xcd13(0x18c)](_0x37b12a,_0x2a1e80);},'vAWrV':_0x38fe1c[_0xcd13(0x1f3)],'VHunI':_0x38fe1c[_0xcd13(0x1f4)],'pvNou':_0x38fe1c[_0xcd13(0x1f5)],'RXXnS':function(_0x1d9a9d,_0x15c79c){return _0x38fe1c['csmep'](_0x1d9a9d,_0x15c79c);},'wruRp':_0x38fe1c['KGZfz'],'Tovez':function(_0x19ccd1,_0x3d22af){return _0x38fe1c[_0xcd13(0x191)](_0x19ccd1,_0x3d22af);},'vxhoR':function(_0x47a9c2,_0x5366e6){return _0x38fe1c[_0xcd13(0x1b7)](_0x47a9c2,_0x5366e6);},'TuHnb':function(_0x16c7dd){return _0x38fe1c['sINXt'](_0x16c7dd);},'wtUZj':function(_0x1758f0,_0x3bfde0){return _0x38fe1c['gdUOE'](_0x1758f0,_0x3bfde0);},'RfSMQ':function(_0x3e021f,_0x35dfa3){return _0x38fe1c['QqgXb'](_0x3e021f,_0x35dfa3);},'qtoeO':function(_0x2e8215,_0x5db43f){return _0x2e8215===_0x5db43f;},'XSFUw':function(_0x52a320,_0x548e33){return _0x38fe1c[_0xcd13(0x146)](_0x52a320,_0x548e33);},'DfFiw':_0xcd13(0xa3),'unEIG':function(_0x2fe735,_0x439fc6){return _0x38fe1c['LfHKe'](_0x2fe735,_0x439fc6);},'ZIXQe':function(_0x4a980f,_0x4cc789){return _0x38fe1c['ToKqC'](_0x4a980f,_0x4cc789);},'WxFsX':_0x38fe1c[_0xcd13(0x1f6)],'zPmXI':_0x38fe1c[_0xcd13(0x1f7)],'DDNaT':function(_0x3b4b3b,_0xdfa76b){return _0x38fe1c[_0xcd13(0x1f8)](_0x3b4b3b,_0xdfa76b);},'UShZO':'4|1|5|2|0|3','MzSAN':function(_0x5e0c73,_0x30c5cd){return _0x38fe1c[_0xcd13(0x1f9)](_0x5e0c73,_0x30c5cd);},'sUDHh':'🔑\x20[CACHED\x20LOGIN]\x20Skipping\x20to\x20consent\x20screen','WyWNE':function(_0x3e5f77,_0x35ba65){return _0x3e5f77(_0x35ba65);},'zsJhW':function(_0x28f263,_0x23bf07){return _0x28f263!==_0x23bf07;},'tWhEF':_0xcd13(0x1fa),'vXDYv':'🔑\x20[CACHED\x20LOGIN]\x20User\x20authenticated\x20but\x20no\x20connections\x20-\x20skipping\x20to\x20platforms','hVFHJ':_0x38fe1c[_0xcd13(0x132)],'ucjgV':function(_0x182ab4,_0x15ae32){return _0x38fe1c['KTZyZ'](_0x182ab4,_0x15ae32);}},_0x44cfbf=async()=>{const _0x57e2fb={'oPSIP':_0x25c1bd['bbBkG'],'bjlMm':function(_0x43f2c4,_0x11bf82){return _0x25c1bd[_0xcd13(0x1fb)](_0x43f2c4,_0x11bf82);},'KMrTs':_0x25c1bd[_0xcd13(0x1fc)]};try{const _0xc2dc04=await AsyncStorage[_0xcd13(0x157)](_0x25c1bd[_0xcd13(0x1fd)]),_0x11a4e6=await AsyncStorage[_0xcd13(0x157)](_0x25c1bd['pvNou']);if(_0x25c1bd[_0xcd13(0x1fe)](_0xc2dc04,_0x11a4e6)){const _0x48ac53='3|5|4|1|0|2'[_0xcd13(0x1ab)]('|');let _0x51ba08=0x0;while(!![]){switch(_0x48ac53[_0x51ba08++]){case'0':await AsyncStorage[_0xcd13(0x1ff)](_0x25c1bd[_0xcd13(0x1fd)]);continue;case'1':_0x25c1bd[_0xcd13(0x1fb)](_0x368d60,JSON['parse'](_0x11a4e6));continue;case'2':await AsyncStorage[_0xcd13(0x1ff)](_0x25c1bd[_0xcd13(0x200)]);continue;case'3':console[_0xcd13(0x13e)](_0x25c1bd[_0xcd13(0x201)]);continue;case'4':_0x25c1bd['Tovez'](_0x2de285,_0xc2dc04);continue;case'5':_0x25c1bd['vxhoR'](_0x17a8b7,!![]);continue;}break;}}const _0x146360=await _0x25c1bd[_0xcd13(0x202)](getJWT);_0x25c1bd[_0xcd13(0x203)](_0x28917a,_0x146360);if(_0x146360){var _0x1227a2;const _0x1eba17=await _0x25c1bd['TuHnb'](getOnairosUsername),_0x41158e=await AsyncStorage[_0xcd13(0x157)](_0xcd13(0x66)),_0x38aa23=_0x1eba17||(_0x25c1bd[_0xcd13(0x204)](_0x554ecd,null)||_0x25c1bd[_0xcd13(0x205)](_0x554ecd,void 0x0)||_0x25c1bd['RfSMQ'](_0x1227a2=_0x554ecd[_0xcd13(0x206)],null)||_0x1227a2===void 0x0?void 0x0:_0x1227a2[_0xcd13(0x1ab)]('@')[0x0])||(_0x25c1bd[_0xcd13(0x205)](_0x554ecd,null)||_0x25c1bd[_0xcd13(0x207)](_0x554ecd,void 0x0)?void 0x0:_0x554ecd[_0xcd13(0x1ae)])||_0x25c1bd[_0xcd13(0x208)];console[_0xcd13(0x13e)](_0xcd13(0x209),_0x38aa23),_0xdddc3d({'username':_0x38aa23,'email':_0x41158e||(_0x25c1bd['unEIG'](_0x554ecd,null)||_0x25c1bd[_0xcd13(0x207)](_0x554ecd,void 0x0)?void 0x0:_0x554ecd[_0xcd13(0x206)])||null,'id':null}),_0x77311d(_0x38aa23);if(_0x41158e&&_0x1df82a==='welcome'&&!primaryAuthOnly){if(_0x25c1bd['ZIXQe'](_0x25c1bd[_0xcd13(0x20a)],_0xcd13(0x20b)))Animated[_0xcd13(0x1bd)](_0x1bd828,{'toValue':0x1,'duration':0x12c,'useNativeDriver':!![]})[_0xcd13(0x1be)]();else{console[_0xcd13(0x13e)](_0x25c1bd[_0xcd13(0x20c)],_0x41158e);const _0xb44a76=await AsyncStorage[_0xcd13(0x157)]('connectedPlatforms'),_0x33b3ab=_0xb44a76?JSON['parse'](_0xb44a76):[];if(_0x25c1bd['DDNaT'](_0x33b3ab[_0xcd13(0x20d)],0x0)){const _0xf010fb=_0x25c1bd['UShZO'][_0xcd13(0x1ab)]('|');let _0x241be5=0x0;while(!![]){switch(_0xf010fb[_0x241be5++]){case'0':_0x25c1bd[_0xcd13(0x20e)](_0x29a734,_0x33b3ab);continue;case'1':console[_0xcd13(0x13e)](_0x25c1bd[_0xcd13(0x20f)]);continue;case'2':_0x25c1bd[_0xcd13(0x210)](_0x519d53,!![]);continue;case'3':_0x40952e('consent');continue;case'4':console[_0xcd13(0x13e)](_0xcd13(0x211),_0x33b3ab);continue;case'5':_0x25c1bd['NkjXP'](_0x4f24e8,_0x41158e);continue;}break;}}else{if(_0x25c1bd[_0xcd13(0x212)](_0x25c1bd[_0xcd13(0x213)],_0x25c1bd[_0xcd13(0x213)])){const _0x4e9daa=_0x57e2fb[_0xcd13(0x214)][_0xcd13(0x1ab)]('|');let _0x55fba3=0x0;while(!![]){switch(_0x4e9daa[_0x55fba3++]){case'0':_0x57e2fb[_0xcd13(0x215)](_0x4b4426,_0x1a348b['SUCCESS']);continue;case'1':return;case'2':_0x265a6c[_0xcd13(0x13e)](_0xcd13(0x216)+_0x179073[_0xcd13(0x20d)]+'\x20existing\x20connections\x20-\x20skipping\x20to\x20consent');continue;case'3':_0x57e2fb[_0xcd13(0x215)](_0x3c9a7a,!![]);continue;case'4':_0x9a3b5a(_0xecbb3['map'](_0x3fe872=>_0x3fe872[_0xcd13(0x8)]));continue;case'5':_0x57e2fb['bjlMm'](_0x824003,_0x57e2fb[_0xcd13(0x217)]);continue;}break;}}else console[_0xcd13(0x13e)](_0x25c1bd['vXDYv']),_0x25c1bd[_0xcd13(0x1fb)](_0x4f24e8,_0x41158e),_0x25c1bd['NkjXP'](_0x40952e,_0x25c1bd[_0xcd13(0x218)]);}}}}}catch(_0x4b34f6){var _0x248384;console['error'](_0xcd13(0x19),_0x4b34f6);const _0x33ddb7=(_0x25c1bd[_0xcd13(0x207)](_0x554ecd,null)||_0x25c1bd[_0xcd13(0x207)](_0x554ecd,void 0x0)||_0x25c1bd['XSFUw'](_0x248384=_0x554ecd['email'],null)||_0x248384===void 0x0?void 0x0:_0x248384[_0xcd13(0x1ab)]('@')[0x0])||(_0x25c1bd[_0xcd13(0x204)](_0x554ecd,null)||_0x554ecd===void 0x0?void 0x0:_0x554ecd[_0xcd13(0x1ae)])||_0xcd13(0xa3);_0xdddc3d({'username':_0x33ddb7,'email':(_0x25c1bd[_0xcd13(0x219)](_0x554ecd,null)||_0x554ecd===void 0x0?void 0x0:_0x554ecd[_0xcd13(0x206)])||null,'id':null}),_0x25c1bd['ucjgV'](_0x77311d,_0x33ddb7);}};_0x1c3d99&&_0x38fe1c[_0xcd13(0x1a8)](_0x44cfbf);},[_0x1c3d99,_0x554ecd,_0x1df82a,primaryAuthOnly]);const _0x10916f=async()=>{const _0x1b9665={'cgUCf':function(_0x277206,_0x5aeab3){return _0x38fe1c[_0xcd13(0x1a9)](_0x277206,_0x5aeab3);}};try{const _0x2b41b6=await _0x38fe1c[_0xcd13(0x21a)](getOnairosUsername),_0x8e16d4=(_0x38fe1c['ayNms'](_0x554ecd,null)||_0x38fe1c[_0xcd13(0x1b8)](_0x554ecd,void 0x0)?void 0x0:_0x554ecd['email'])||(_0x38fe1c[_0xcd13(0x21b)](_0x554ecd,null)||_0x38fe1c[_0xcd13(0x21c)](_0x554ecd,void 0x0)?void 0x0:_0x554ecd[_0xcd13(0x1ae)])||_0xcd13(0x21d)+Math[_0xcd13(0x21e)](_0x38fe1c[_0xcd13(0x21f)](Math[_0xcd13(0x220)](),0x2710)),_0xbb85e6=_0x38fe1c[_0xcd13(0x221)](_0x2b41b6,_0x8e16d4);console[_0xcd13(0x13e)](_0xcd13(0x222),{'storedUsername':_0x2b41b6,'fallbackUsername':_0x8e16d4,'finalUsername':_0xbb85e6}),_0x38fe1c['FnTUq'](_0x77311d,_0xbb85e6);const _0x55dd32=await _0x38fe1c[_0xcd13(0x21a)](_0x1a6e08);console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x223)],_0x55dd32),_0x3bcf30(_0x55dd32);const _0x21b9c0={};Object[_0xcd13(0x224)](_0x55dd32)['forEach'](_0x73941c=>{var _0x503f82;_0x21b9c0[_0x73941c]=_0x38fe1c[_0xcd13(0x178)](_0x503f82=_0x55dd32[_0x73941c],null)&&_0x503f82!==void 0x0&&_0x503f82[_0xcd13(0x188)]?_0xcd13(0x188):_0x38fe1c['QIEVK'];}),_0x38fe1c[_0xcd13(0x225)](_0x4a6985,_0x21b9c0);const _0x308b74={};Object['keys'](_0x55dd32)[_0xcd13(0x226)](_0x2cee9b=>{var _0x451273;_0x308b74[_0x2cee9b]=(_0x1b9665[_0xcd13(0x227)](_0x451273=_0x55dd32[_0x2cee9b],null)||_0x1b9665['cgUCf'](_0x451273,void 0x0)?void 0x0:_0x451273[_0xcd13(0x188)])||![];}),_0x43bd50(_0x308b74),console['log'](_0x38fe1c[_0xcd13(0x228)],_0x21b9c0),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x229)],_0x308b74);}catch(_0x1c311b){console[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x22a)],_0x1c311b),_0x38fe1c[_0xcd13(0x22b)](_0x3bcf30,{}),_0x38fe1c[_0xcd13(0x1d1)](_0x4a6985,{}),_0x38fe1c[_0xcd13(0x22c)](_0x43bd50,{});const _0x1d3740=(_0x38fe1c[_0xcd13(0x1d7)](_0x554ecd,null)||_0x554ecd===void 0x0?void 0x0:_0x554ecd['email'])||(_0x554ecd===null||_0x38fe1c[_0xcd13(0x21c)](_0x554ecd,void 0x0)?void 0x0:_0x554ecd[_0xcd13(0x1ae)])||_0xcd13(0x21d)+Math[_0xcd13(0x21e)](Math[_0xcd13(0x220)]()*0x2710);_0x38fe1c[_0xcd13(0x18c)](_0x77311d,_0x1d3740);}},_0x582efe=()=>{const _0x15fe47=_0x42fac1[_0xcd13(0x186)];Animated[_0xcd13(0x1bd)](_0x2343ab,{'toValue':0x0,'duration':0xfa,'useNativeDriver':!![]})[_0xcd13(0x1be)](()=>{const _0x59e858={'NvHVt':function(_0x56eff5,_0x4d8922){return _0x56eff5(_0x4d8922);},'YdBTY':function(_0x43ecd9){return _0x38fe1c['sINXt'](_0x43ecd9);},'jLrKA':function(_0x36a690,_0x2fafc6){return _0x38fe1c[_0xcd13(0x22d)](_0x36a690,_0x2fafc6);}};_0x38fe1c['nZwyO']===_0xcd13(0x22e)?_0x38fe1c['eeCbp'](setTimeout,()=>{_0x59e858[_0xcd13(0x22f)](_0x4ab94d,![]),!_0x15fe47&&_0x59e858[_0xcd13(0x230)](_0x58d05c);},0x64):_0x59e858[_0xcd13(0x231)](_0x456ff0,![]);});},_0x1191d8=()=>{const _0x42bb03={'LWjjq':_0xcd13(0x39),'wpYzs':function(_0x47e7b9,_0x296434){return _0x38fe1c[_0xcd13(0x232)](_0x47e7b9,_0x296434);},'lwxUV':function(_0x3839f3,_0x3bae21){return _0x38fe1c[_0xcd13(0x233)](_0x3839f3,_0x3bae21);}};if(_0x38fe1c[_0xcd13(0x178)](_0x38fe1c['kMvCE'],_0x38fe1c[_0xcd13(0x234)])){_0x38fe1c['XaalJ'](triggerHaptic,HapticType[_0xcd13(0x235)]);if(primaryAuthOnly){console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x236)]),_0x38fe1c['zaJup'](_0x40952e,_0x38fe1c[_0xcd13(0x132)]);return;}console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x237)]),_0x38fe1c[_0xcd13(0x22d)](_0x40952e,_0x38fe1c[_0xcd13(0x145)]);}else _0x1113b4[_0xcd13(0x13e)](_0x42bb03[_0xcd13(0x238)]),_0x42bb03['wpYzs'](_0x35aa70,_0x2ba7d5),_0x42bb03[_0xcd13(0x239)](_0xc29fc2,_0xcd13(0x23a));},_0x19866d=async _0x175f8f=>{const _0x203b16={'Ezlnb':'❌\x20Error\x20verifying\x20email\x20code:','yrAfj':function(_0x3376d9,_0x479ad6){return _0x38fe1c[_0xcd13(0x23b)](_0x3376d9,_0x479ad6);},'MHnDy':_0x38fe1c[_0xcd13(0x23c)]};if(_0x38fe1c['ObGdw']!==_0x38fe1c[_0xcd13(0x23d)])_0x48b4fc=_0x38fe1c['PVlSx'](_0x574a2d,0x1)%0x4,_0x38fe1c[_0xcd13(0x23e)](_0x3b3e29,0x0)?_0x1d5429(''):_0x38fe1c[_0xcd13(0x23f)](_0xcee0d3,'.'['repeat'](_0x3c5c54));else{_0x38fe1c[_0xcd13(0x240)](triggerHaptic,HapticType[_0xcd13(0x235)]),_0x38fe1c[_0xcd13(0x240)](_0x23e6b8,!![]),_0x38fe1c['LCNxh'](_0x19a7d5,'');try{if(_0x38fe1c[_0xcd13(0x241)](_0x175f8f,_0x38fe1c[_0xcd13(0x242)])){const _0x5cfacc=_0x38fe1c[_0xcd13(0x243)][_0xcd13(0x1ab)]('|');let _0x29dd6c=0x0;while(!![]){switch(_0x5cfacc[_0x29dd6c++]){case'0':await AsyncStorage['setItem'](_0x38fe1c['PCYLW'],_0x38fe1c['yxQEq']);continue;case'1':_0x38fe1c[_0xcd13(0x225)](_0x40952e,_0xcd13(0x1ea));continue;case'2':console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x244)]);continue;case'3':_0x38fe1c[_0xcd13(0x23b)](_0x23e6b8,![]);continue;case'4':_0x38fe1c[_0xcd13(0x22b)](_0x4f24e8,_0x175f8f);continue;case'5':return;case'6':await _0x38fe1c[_0xcd13(0x1f9)](storeJWT,_0x38fe1c[_0xcd13(0x245)]);continue;}break;}}if(_0x38fe1c['UQnZa'](_0x175f8f,_0x38fe1c[_0xcd13(0x246)])){console[_0xcd13(0x13e)](_0xcd13(0x247)),_0x38fe1c[_0xcd13(0x248)](_0x4f24e8,_0xcd13(0xc8)),_0x40952e('verification'),_0x38fe1c[_0xcd13(0x249)](_0x23e6b8,![]);return;}console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x24a)],_0x175f8f);const _0x206edc=await _0x38fe1c[_0xcd13(0x24b)](sendEmailVerificationCode,_0x175f8f);_0x206edc[_0xcd13(0x24c)]?(console[_0xcd13(0x13e)](_0x38fe1c['rHNgG']),_0x38fe1c[_0xcd13(0x24d)](_0x4f24e8,_0x175f8f),_0x38fe1c['DSKjh'](_0x40952e,_0x38fe1c[_0xcd13(0x147)])):(console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x24e)],_0x206edc[_0xcd13(0x1ad)]),_0x38fe1c[_0xcd13(0x24f)](_0x19a7d5,_0x206edc[_0xcd13(0x1ad)]||_0xcd13(0x250)));}catch(_0x1d2c2c){console[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x251)],_0x1d2c2c),_0x38fe1c['obXPl'](_0x19a7d5,_0x38fe1c[_0xcd13(0x252)]);}finally{_0x38fe1c['XkLLn']===_0x38fe1c[_0xcd13(0x253)]?_0x38fe1c[_0xcd13(0x14a)](_0x23e6b8,![]):(_0x288c09[_0xcd13(0x164)](_0x203b16['Ezlnb'],_0x4e164f),_0x203b16[_0xcd13(0x254)](_0x5079e6,_0x203b16[_0xcd13(0x255)]));}}},_0x1343b4=async()=>{const _0x481be6={'agBaY':function(_0x1fb228,_0x1687cf){return _0x1fb228(_0x1687cf);},'TEMxX':_0x38fe1c['HmdHK'],'VngJw':function(_0x19d7e0,_0xcb04e0){return _0x38fe1c[_0xcd13(0x256)](_0x19d7e0,_0xcb04e0);},'khfaE':_0x38fe1c['nTdUv'],'wpBHX':_0xcd13(0x257),'bWwCl':_0x38fe1c['TbreC'],'MhiLS':_0x38fe1c[_0xcd13(0x258)]};if(_0x38fe1c[_0xcd13(0x259)]===_0x38fe1c[_0xcd13(0x25a)])_0x533253(_0x284dd3['message']||_0x38fe1c[_0xcd13(0x25b)]);else{_0x38fe1c[_0xcd13(0x25c)](triggerHaptic,HapticType[_0xcd13(0x235)]),_0x23e6b8(!![]),_0x38fe1c[_0xcd13(0x25d)](_0x19a7d5,'');try{console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x25e)]);const _0x386beb=await signInWithGoogle();if(_0x386beb[_0xcd13(0x24c)]&&_0x386beb[_0xcd13(0x25f)]){if(_0x38fe1c[_0xcd13(0x260)]!==_0x38fe1c['sXnjZ']){console[_0xcd13(0x13e)](_0xcd13(0x261),_0x386beb[_0xcd13(0x25f)][_0xcd13(0x206)]),console['log'](_0x38fe1c[_0xcd13(0x262)],_0x386beb[_0xcd13(0x263)]),_0x4f24e8(_0x386beb['user'][_0xcd13(0x206)]);const _0x149846=_0x386beb[_0xcd13(0x25f)][_0xcd13(0x264)]||_0x386beb[_0xcd13(0x25f)][_0xcd13(0x206)][_0xcd13(0x1ab)]('@')[0x0];_0x77311d(_0x149846);if(_0x38fe1c[_0xcd13(0x265)](_0x386beb[_0xcd13(0x263)],![])){console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x266)]);try{const _0xb13a1c=await _0x38fe1c['NeoZb'](getConnectedAccountsSmart,_0x386beb[_0xcd13(0x25f)][_0xcd13(0x206)],_0x386beb['user']['id'],_0x149846);if(_0xb13a1c&&_0x38fe1c['VYAMp'](_0xb13a1c[_0xcd13(0x20d)],0x0)){const _0x45dcdb=_0x38fe1c[_0xcd13(0x267)][_0xcd13(0x1ab)]('|');let _0x1f93cf=0x0;while(!![]){switch(_0x45dcdb[_0x1f93cf++]){case'0':_0x38fe1c[_0xcd13(0x248)](_0x519d53,!![]);continue;case'1':console[_0xcd13(0x13e)](_0xcd13(0x216)+_0xb13a1c[_0xcd13(0x20d)]+_0xcd13(0x268));continue;case'2':return;case'3':_0x38fe1c['VUlQu'](triggerHaptic,HapticType[_0xcd13(0x269)]);continue;case'4':_0x38fe1c[_0xcd13(0x240)](_0x40952e,_0xcd13(0x26));continue;case'5':_0x38fe1c[_0xcd13(0x1bc)](_0x29a734,_0xb13a1c[_0xcd13(0x26a)](_0x5e2625=>_0x5e2625[_0xcd13(0x8)]));continue;}break;}}else console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x26b)]);}catch(_0x29c605){console['log'](_0x38fe1c[_0xcd13(0x26c)],_0x29c605);}}_0x38fe1c[_0xcd13(0x24b)](_0x40952e,_0xcd13(0x1ea)),_0x38fe1c[_0xcd13(0x24f)](triggerHaptic,HapticType[_0xcd13(0x269)]);}else{_0x7a9c94[_0xcd13(0x164)](_0x38fe1c['fBKJd']);throw new _0xc8e4ed(_0x38fe1c['vKzeH']);}}else{if(_0x386beb[_0xcd13(0x26d)]){if(_0x38fe1c['MfGUJ'](_0x38fe1c[_0xcd13(0x26e)],_0x38fe1c[_0xcd13(0x26f)]))return _0x481be6[_0xcd13(0x270)](_0x426dae,_0x1c1375);else console[_0xcd13(0x13e)](_0xcd13(0x271));}else _0x38fe1c[_0xcd13(0x272)](_0x19a7d5,_0x386beb['message']||_0xcd13(0x4f)),_0x38fe1c[_0xcd13(0x25c)](triggerHaptic,HapticType[_0xcd13(0x273)]);}}catch(_0x56aa2d){if(_0x38fe1c[_0xcd13(0x256)](_0x38fe1c[_0xcd13(0x274)],_0x38fe1c[_0xcd13(0x275)])){_0x3b6b67[_0xcd13(0x13e)](_0x481be6[_0xcd13(0x276)]),_0x451179['log']('🔑\x20Using\x20auth\x20token:',(_0x481be6[_0xcd13(0x277)](_0x52eb67,null)||_0x481be6['VngJw'](_0x286c78,void 0x0)?void 0x0:_0x243552['substring'](0x0,0x14))+_0xcd13(0x278));if(!_0x1ebcf4)throw new _0x20a20c(_0x481be6[_0xcd13(0x279)]);_0x22b06b[_0xcd13(0x13e)](_0x481be6['wpBHX']),_0x1d51d8[_0xcd13(0x13e)](_0x481be6['bWwCl'],_0x2acc92),_0x103dff['log'](_0x481be6['MhiLS']);}else console['error'](_0x38fe1c[_0xcd13(0x27a)],_0x56aa2d),_0x38fe1c[_0xcd13(0x24f)](_0x19a7d5,_0x56aa2d[_0xcd13(0x1ad)]||'Google\x20Sign-In\x20failed.\x20Please\x20try\x20again.'),_0x38fe1c[_0xcd13(0x24b)](triggerHaptic,HapticType[_0xcd13(0x273)]),_0x38fe1c['gbPFb'](_0x19a7d5,_0x38fe1c[_0xcd13(0x27b)]);}finally{_0x38fe1c[_0xcd13(0x24d)](_0x23e6b8,![]);}}},_0x18023b=async _0x4f72bf=>{if(_0x38fe1c[_0xcd13(0x27c)]('Sgjbh',_0x38fe1c[_0xcd13(0x27d)]))_0x12f1b3[_0xcd13(0x1cd)]();else{_0x38fe1c[_0xcd13(0x27e)](triggerHaptic,HapticType[_0xcd13(0x235)]),_0x23e6b8(!![]),_0x38fe1c[_0xcd13(0x24f)](_0x19a7d5,'');try{if(_0xf2a8ab===_0xcd13(0xc8)){console['log'](_0x38fe1c[_0xcd13(0x27f)]),_0x38fe1c['DSKjh'](_0x40952e,_0x38fe1c[_0xcd13(0x132)]),_0x38fe1c['euwLB'](_0x23e6b8,![]);return;}console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x280)],_0xf2a8ab,_0x4f72bf),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x281)],_0x20ed1d);const _0x472a30=await _0x38fe1c[_0xcd13(0x282)](confirmEmailVerificationCode,_0xf2a8ab,_0x4f72bf);if(_0x472a30['success']){var _0x3f8650,_0x5f3ba2,_0x627c88,_0x29e3cc;console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x283)]),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x284)],{'isNewUser':_0x472a30[_0xcd13(0x263)],'flowType':_0x472a30['flowType'],'hasExistingData':_0x38fe1c[_0xcd13(0x285)](_0x3f8650=_0x472a30[_0xcd13(0x286)],null)||_0x3f8650===void 0x0?void 0x0:_0x3f8650[_0xcd13(0x287)],'connectionsCount':(_0x38fe1c[_0xcd13(0x288)](_0x5f3ba2=_0x472a30[_0xcd13(0x286)],null)||_0x5f3ba2===void 0x0||_0x38fe1c['VrEhQ'](_0x5f3ba2=_0x5f3ba2[_0xcd13(0x289)],null)||_0x5f3ba2===void 0x0?void 0x0:_0x5f3ba2[_0xcd13(0x20d)])||0x0});const _0x3fc86f=_0x38fe1c['iqrgq'](_0x472a30[_0xcd13(0x263)],![])||_0x472a30[_0xcd13(0x28a)]===_0x38fe1c[_0xcd13(0x28b)],_0x5eb19c=_0x38fe1c[_0xcd13(0x28c)](_0x627c88=_0x472a30[_0xcd13(0x286)],null)||_0x38fe1c[_0xcd13(0x18f)](_0x627c88,void 0x0)?void 0x0:_0x627c88['connections'],_0xf5e866=Array[_0xcd13(0x28d)](_0x5eb19c)?_0x5eb19c:[],_0x3b075f=_0xf5e866[_0xcd13(0x16c)](_0x47878c=>_0x47878c&&(_0x47878c[_0xcd13(0x28e)]||_0x47878c[_0xcd13(0x28f)]===_0xcd13(0x290)))[_0xcd13(0x26a)](_0x536447=>_0x536447===null||_0x536447===void 0x0?void 0x0:_0x536447[_0xcd13(0x8)])[_0xcd13(0x16c)](Boolean);console['log'](_0xcd13(0x291),{'isReturning':_0x3fc86f,'connectedPlatformNames':_0x3b075f,'showWelcomeBack':_0x38fe1c[_0xcd13(0x292)](_0x29e3cc=_0x472a30['enochInstructions'],null)||_0x38fe1c['vUCVy'](_0x29e3cc,void 0x0)?void 0x0:_0x29e3cc['showWelcomeBack']}),_0x3fc86f&&_0x38fe1c[_0xcd13(0x1f8)](_0x3b075f['length'],0x0)?_0x38fe1c[_0xcd13(0x184)](_0xcd13(0x293),_0x38fe1c[_0xcd13(0x294)])?(console[_0xcd13(0x13e)](_0x38fe1c['ayfFG']),_0x38fe1c[_0xcd13(0x27e)](_0x519d53,!![]),_0x29a734(_0x3b075f),_0x38fe1c['xYrOd'](_0x40952e,'consent')):(_0x520d3f['log'](_0x38fe1c[_0xcd13(0x295)]),_0x2d1539['current']['disconnect'](),_0x51c61a['current']=null):_0x38fe1c[_0xcd13(0x28c)](_0x38fe1c[_0xcd13(0x296)],_0xcd13(0x57))?(console[_0xcd13(0x13e)](_0x38fe1c['ElywW']),_0x38fe1c['FnTUq'](_0x519d53,![]),_0x38fe1c[_0xcd13(0x1f9)](_0x29a734,[]),_0x38fe1c[_0xcd13(0x297)](_0x40952e,_0x38fe1c[_0xcd13(0x132)])):_0x3ca7b2[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x26b)]);}else console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x298)],_0x472a30[_0xcd13(0x1ad)]),_0x38fe1c['tyOPL'](_0x19a7d5,_0x472a30['message']||_0x38fe1c[_0xcd13(0x299)]);}catch(_0x3622ea){console['error'](_0x38fe1c['hYAUg'],_0x3622ea),_0x38fe1c[_0xcd13(0x150)](_0x19a7d5,_0xcd13(0x31));}finally{_0x38fe1c['LCNxh'](_0x23e6b8,![]);}}},_0x58c45a=()=>{_0x38fe1c[_0xcd13(0x29a)](triggerHaptic,HapticType['BUTTON_PRESS']),_0x19a7d5(''),_0x38fe1c['sBDpE'](_0x40952e,_0x38fe1c[_0xcd13(0x145)]);},_0x3b3154=async()=>{triggerHaptic(HapticType['BUTTON_PRESS']),console['log'](_0x38fe1c[_0xcd13(0x29b)]);try{await AsyncStorage[_0xcd13(0x29c)]([_0x38fe1c[_0xcd13(0x29d)],_0x38fe1c['OCXaj'],_0xcd13(0x66),_0x38fe1c[_0xcd13(0x29e)],_0x38fe1c[_0xcd13(0x29f)],_0x38fe1c['PCYLW']]),_0x38fe1c[_0xcd13(0x2a0)](_0x28917a,null),_0x38fe1c[_0xcd13(0x24f)](_0xdddc3d,null),_0x38fe1c[_0xcd13(0x24b)](_0x4f24e8,''),_0x38fe1c[_0xcd13(0x225)](_0x519d53,![]),_0x29a734([]),_0x19a7d5(''),_0x38fe1c[_0xcd13(0x22b)](_0x40952e,_0x38fe1c['iHOag']),console[_0xcd13(0x13e)](_0x38fe1c['JbCOk']);}catch(_0x50b6f2){console[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x2a1)],_0x50b6f2),_0x40952e(_0xcd13(0x3));}},_0x113a74=async()=>{const _0x46bf69={'PZNLo':function(_0x4cffc5,_0x48355c){return _0x38fe1c['nUiZU'](_0x4cffc5,_0x48355c);},'KbUzf':function(_0x39afd8,_0x38b546){return _0x38fe1c[_0xcd13(0x27c)](_0x39afd8,_0x38b546);},'sBXry':function(_0x184485,_0x24977e,_0x1379b1,_0x21fff8){return _0x184485(_0x24977e,_0x1379b1,_0x21fff8);},'fpUer':_0x38fe1c['VElDx'],'lYCEQ':function(_0x2547ae,_0x4bbabf){return _0x38fe1c[_0xcd13(0x21b)](_0x2547ae,_0x4bbabf);}};_0x38fe1c[_0xcd13(0x249)](triggerHaptic,HapticType[_0xcd13(0x235)]),_0x38fe1c['yOovB'](_0x23e6b8,!![]),_0x38fe1c[_0xcd13(0x2a2)](_0x19a7d5,'');try{if(_0x38fe1c[_0xcd13(0x2a3)]!==_0x38fe1c[_0xcd13(0x2a4)]){console['log'](_0x38fe1c[_0xcd13(0x2a5)],_0xf2a8ab);const _0x52d3dd=await _0x38fe1c[_0xcd13(0x24d)](sendEmailVerificationCode,_0xf2a8ab);_0x52d3dd[_0xcd13(0x24c)]?console[_0xcd13(0x13e)](_0xcd13(0x2a6)):_0x38fe1c[_0xcd13(0x2a0)](_0x19a7d5,_0x52d3dd[_0xcd13(0x1ad)]||_0x38fe1c[_0xcd13(0x25b)]);}else _0xa6aeb1[_0xcd13(0x164)](_0xcd13(0x109),_0x56a1b5),_0x46bf69[_0xcd13(0x2a7)](_0x32f5b5,null)||_0x46bf69[_0xcd13(0x2a8)](_0x1cd614,void 0x0)||_0x46bf69[_0xcd13(0x2a9)](_0x26cc2b,_0x2fe7db[_0xcd13(0x2aa)],_0x46bf69['fpUer'],{'email':(_0x4badd7===null||_0x46bf69['lYCEQ'](_0x16ec7b,void 0x0)?void 0x0:_0xf41496[_0xcd13(0x206)])||'',..._0x13449d});}catch(_0x344727){console[_0xcd13(0x164)](_0xcd13(0x2ab),_0x344727),_0x38fe1c[_0xcd13(0x1e9)](_0x19a7d5,_0x38fe1c[_0xcd13(0x2ac)]);}finally{_0x38fe1c['eZZMS'](_0x23e6b8,![]);}},_0x55a8e7=async _0xcb0204=>{if(_0x38fe1c[_0xcd13(0x285)](_0x38fe1c[_0xcd13(0x2ad)],_0x38fe1c['EFyEG'])){_0x38fe1c[_0xcd13(0x2ae)](triggerHaptic,HapticType[_0xcd13(0x269)]),console['log'](_0x38fe1c['bdPhc'],_0xcb0204);try{const [_0x35dbc6,_0x5a7467,_0x26f44f]=await Promise[_0xcd13(0x2af)]([_0x38fe1c[_0xcd13(0x2b0)](getAuthToken),AsyncStorage[_0xcd13(0x157)](_0x38fe1c[_0xcd13(0x2b1)]),_0x38fe1c[_0xcd13(0x2b2)](getOnairosUsername)]);console[_0xcd13(0x13e)](_0x38fe1c['BdfHE']),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x2b3)],_0x35dbc6?_0x35dbc6[_0xcd13(0x2b4)](0x0,0x14)+_0xcd13(0x278):'NO'),console[_0xcd13(0x13e)](_0xcd13(0x2b5),_0x38fe1c[_0xcd13(0x2b6)](_0x5a7467,'NO')),_0x42fac1[_0xcd13(0x186)]=!![];const _0x4ebaa0={'connectedPlatforms':_0xcb0204};_0x5a7467&&(_0x4ebaa0[_0xcd13(0x206)]=_0x5a7467,_0x4ebaa0[_0xcd13(0x264)]=_0x26f44f||_0x5a7467[_0xcd13(0x1ab)]('@')[0x0]);if(_0x38fe1c[_0xcd13(0x2b7)](_0x35dbc6,_0x5a7467))_0x38fe1c['zzqSe'](_0x38fe1c['RCuGQ'],_0xcd13(0x2b8))?_0x50d0ed[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x168)],_0x457209):(console[_0xcd13(0x13e)](_0x38fe1c['RYlsv']),await(_0x38fe1c[_0xcd13(0x1b8)](_0x108330,null)||_0x108330===void 0x0?void 0x0:_0x38fe1c['NeoZb'](_0x108330,API_CONFIG[_0xcd13(0x2aa)],_0x35dbc6,_0x4ebaa0)));else _0x5a7467?_0x38fe1c[_0xcd13(0x2b9)](_0x38fe1c[_0xcd13(0x2ba)],_0x38fe1c[_0xcd13(0x2bb)])?(_0x5d9634[_0xcd13(0x13e)](_0xcd13(0xd9)),_0x38fe1c[_0xcd13(0x249)](_0x5df5c3,_0x38fe1c[_0xcd13(0x2bc)]),_0x38fe1c[_0xcd13(0x2bd)](_0x5df775,!![])):(console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x2be)]),await(_0x38fe1c[_0xcd13(0x18f)](_0x108330,null)||_0x38fe1c['Iotze'](_0x108330,void 0x0)?void 0x0:_0x38fe1c[_0xcd13(0x2bf)](_0x108330,API_CONFIG[_0xcd13(0x2aa)],'',_0x4ebaa0))):(console[_0xcd13(0x2c0)](_0x38fe1c[_0xcd13(0x2c1)]),await(_0x38fe1c[_0xcd13(0x2c2)](_0x108330,null)||_0x38fe1c['nXOCU'](_0x108330,void 0x0)?void 0x0:_0x38fe1c[_0xcd13(0x2c3)](_0x108330,API_CONFIG[_0xcd13(0x2aa)],'',_0x4ebaa0)));}catch(_0x17e1ab){console[_0xcd13(0x164)](_0xcd13(0x2c4),_0x17e1ab);const _0x47295d=await AsyncStorage[_0xcd13(0x157)]('user_email')[_0xcd13(0x2c5)](()=>null);await(_0x38fe1c[_0xcd13(0x2c6)](_0x108330,null)||_0x38fe1c[_0xcd13(0x28c)](_0x108330,void 0x0)?void 0x0:_0x38fe1c[_0xcd13(0x2c7)](_0x108330,API_CONFIG[_0xcd13(0x2aa)],'',{'connectedPlatforms':_0xcb0204,..._0x38fe1c['YIETQ'](_0x47295d,{'email':_0x47295d})}));}console[_0xcd13(0x13e)](_0x38fe1c['AShym']);}else _0x58b421[_0xcd13(0x164)](_0xcd13(0xdd),_0x1058a9),_0x3fdc6e(_0x38fe1c[_0xcd13(0x2c8)]),_0x38fe1c[_0xcd13(0x2c9)](_0x16414d,!![]),_0x38fe1c[_0xcd13(0x2ca)](_0xcb4ed5);},_0x142c2b=async()=>{const _0x316eaa={'vKKxj':_0x38fe1c['XZwyC']};if(_0x38fe1c[_0xcd13(0x2cb)]('mUhKy',_0x38fe1c[_0xcd13(0x2cc)]))_0x2dce4c=_0x316eaa[_0xcd13(0x2cd)];else{_0x38fe1c[_0xcd13(0x232)](triggerHaptic,HapticType[_0xcd13(0x235)]),console[_0xcd13(0x13e)](_0xcd13(0x2ce));try{const [_0x254dc5,_0x38bb36,_0x5277fa]=await Promise[_0xcd13(0x2af)]([getAuthToken(),AsyncStorage[_0xcd13(0x157)](_0x38fe1c[_0xcd13(0x2b1)]),_0x38fe1c['erHYB'](getOnairosUsername)]);_0x42fac1[_0xcd13(0x186)]=!![],_0x38fe1c['HUBGl'](_0x254dc5,_0x38bb36)?(console[_0xcd13(0x13e)](_0xcd13(0x2cf)),await(_0x108330===null||_0x38fe1c[_0xcd13(0x2d0)](_0x108330,void 0x0)?void 0x0:_0x38fe1c[_0xcd13(0x2c3)](_0x108330,API_CONFIG[_0xcd13(0x2aa)],_0x254dc5,{'email':_0x38bb36,'connectedPlatforms':[],'username':_0x5277fa||_0x38bb36['split']('@')[0x0],'skipped':!![]}))):(console[_0xcd13(0x2c0)](_0x38fe1c['tsFdZ']),await(_0x38fe1c[_0xcd13(0x2d1)](_0x108330,null)||_0x38fe1c['RxufT'](_0x108330,void 0x0)?void 0x0:_0x38fe1c[_0xcd13(0x2d2)](_0x108330,API_CONFIG[_0xcd13(0x2aa)],'',{'connectedPlatforms':[],'skipped':!![]})));}catch(_0x38a8b9){if(_0x38fe1c[_0xcd13(0x2d3)]===_0xcd13(0x71))console[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x2d4)],_0x38a8b9),await(_0x38fe1c[_0xcd13(0x28c)](_0x108330,null)||_0x38fe1c['kgqtO'](_0x108330,void 0x0)?void 0x0:_0x108330(API_CONFIG[_0xcd13(0x2aa)],'',{'connectedPlatforms':[],'skipped':!![]}));else{_0x151236['log'](_0xcd13(0x11b)),_0x38fe1c['ZMAfx'](_0x4adccf,_0x38fe1c[_0xcd13(0x2d5)]),_0x38fe1c['ojrnZ'](_0x303142,_0x535950),_0x38fe1c[_0xcd13(0x2d6)](_0x402170,!![]),_0x38fe1c[_0xcd13(0x25c)](_0x2705c8,_0x38fe1c[_0xcd13(0x2d7)]),_0x38fe1c['CWCRy'](_0x1d924d,!![]),_0x38fe1c[_0xcd13(0x2d8)](_0x2569bf);return;}}console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x2d9)]);}},_0x5d48d7=async()=>{const _0x49dc0e={'JmhzJ':_0x38fe1c['sdaBP'],'CtSNU':_0x38fe1c[_0xcd13(0x2da)],'XOmLK':_0x38fe1c[_0xcd13(0x2db)],'qZmUo':_0x38fe1c['kbyoN'],'LISEj':_0x38fe1c['yRvaT'],'YKXjE':_0x38fe1c[_0xcd13(0x1d5)],'DjLzV':_0x38fe1c[_0xcd13(0x2dc)],'Xscbl':function(_0x3c6166,_0x3e6524){return _0x38fe1c['yROWs'](_0x3c6166,_0x3e6524);},'ygalI':function(_0x3b778d,_0x30499d){return _0x3b778d(_0x30499d);},'tuXEY':function(_0x92f48b,_0x420db1,_0x57fcf8){return _0x92f48b(_0x420db1,_0x57fcf8);}};if(_0x38fe1c[_0xcd13(0x2dd)](_0x38fe1c[_0xcd13(0x2de)],_0x38fe1c[_0xcd13(0x2df)])){console[_0xcd13(0x13e)]('🔍\x20Reviewer\x20bypass\x20triggered\x20from\x20platforms'),triggerHaptic(HapticType['BUTTON_PRESS']);try{if(_0x38fe1c[_0xcd13(0x2e0)]===_0x38fe1c[_0xcd13(0x2e1)]){const _0x211605=_0x49dc0e[_0xcd13(0x2e2)][_0xcd13(0x1ab)]('|');let _0x23e88b=0x0;while(!![]){switch(_0x211605[_0x23e88b++]){case'0':_0x2a4032['databases']&&_0x1e776b[_0xcd13(0x28d)](_0x4fa112[_0xcd13(0x1e5)])&&_0x594cd9['log'](_0x49dc0e[_0xcd13(0x2e3)],_0x3fc55b[_0xcd13(0x1e5)][_0xcd13(0x2e4)](',\x20'));continue;case'1':_0x579efc[_0xcd13(0x2e5)]&&_0x5bc7d4[_0xcd13(0x13e)](_0x49dc0e[_0xcd13(0x2e6)]);continue;case'2':_0x4bf278[_0xcd13(0x13e)](_0x49dc0e[_0xcd13(0x2e7)],_0x4bda04[_0xcd13(0x2e8)]);continue;case'3':_0x5a6a20[_0xcd13(0x13e)](_0x49dc0e[_0xcd13(0x2e9)],_0x57bfc8['message']);continue;case'4':_0xdeb1df['log'](_0x49dc0e[_0xcd13(0x2ea)],_0x587692['encryption']);continue;case'5':_0x2af426['log']('🧠\x20Inference\x20enabled:',_0x1d09d8[_0xcd13(0x1e4)]);continue;}break;}}else await AsyncStorage[_0xcd13(0x15c)](_0x38fe1c[_0xcd13(0x2eb)],_0x38fe1c[_0xcd13(0x2ec)]),await _0x38fe1c[_0xcd13(0x25c)](storeJWT,_0x38fe1c[_0xcd13(0x245)]),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x2ed)]),_0x582efe();}catch(_0x446ef3){if(_0x38fe1c[_0xcd13(0x2ee)](_0x38fe1c['kbtlJ'],_0xcd13(0x2ef)))console[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x2f0)],_0x446ef3),_0x38fe1c[_0xcd13(0x2f1)](_0x582efe);else{const _0x21ed96=_0x49dc0e[_0xcd13(0x2f2)][_0xcd13(0x1ab)]('|');let _0x56be53=0x0;while(!![]){switch(_0x21ed96[_0x56be53++]){case'0':_0x49dc0e[_0xcd13(0x2f3)](_0x408539,_0x4277fa);continue;case'1':_0x2bcd18(!![]);continue;case'2':_0x49dc0e['ygalI'](_0xea276e,'consent');continue;case'3':_0x408bfc['log']('🔑\x20[CACHED\x20LOGIN]\x20User\x20has\x20existing\x20connections:',_0x2e0bd3);continue;case'4':_0x5b8790[_0xcd13(0x13e)](_0xcd13(0x2f4));continue;case'5':_0x19434e(_0x3df056);continue;}break;}}}}else{const _0x4840ee={'vgMOG':function(_0x426fc5,_0x5ac9c9){return _0x38fe1c[_0xcd13(0x2bd)](_0x426fc5,_0x5ac9c9);},'LrAfs':function(_0x3696a2){return _0x38fe1c['IimaV'](_0x3696a2);}},_0x2a01e1=_0x38e6f3[_0xcd13(0x186)];Animated[_0xcd13(0x1bd)](_0x1ca6d7,{'toValue':0x0,'duration':0xfa,'useNativeDriver':!![]})['start'](()=>{_0x49dc0e[_0xcd13(0x2f5)](_0x44ea98,()=>{_0x4840ee[_0xcd13(0x2f6)](_0x18e95e,![]),!_0x2a01e1&&_0x4840ee['LrAfs'](_0x251b51);},0x64);});}},_0x515741=async _0x5d49ca=>{const _0xf74ab0={'FzYdF':_0x38fe1c[_0xcd13(0x2f7)],'WqxHb':function(_0x3a0657,_0x3756e2){return _0x38fe1c[_0xcd13(0x2f8)](_0x3a0657,_0x3756e2);},'DKLDs':_0x38fe1c[_0xcd13(0x132)]};_0x38fe1c['eZZMS'](triggerHaptic,HapticType[_0xcd13(0x235)]),_0x38fe1c[_0xcd13(0x2f9)](_0x2e2578,_0x5d49ca);try{if(_0x38fe1c[_0xcd13(0x2fa)](hasNativeSDK,_0x5d49ca)){_0x1e938f(_0x5d49ca);const _0x41c421=await initiateNativeAuth(_0x5d49ca,_0x4b5df2);_0x41c421&&(_0x38fe1c[_0xcd13(0x2d6)](_0x3bcf30,_0x4ed6a7=>({..._0x4ed6a7,[_0x5d49ca]:{'userName':_0x4b5df2,'connected':!![]}})),_0x43bd50(_0x34cfcf=>({..._0x34cfcf,[_0x5d49ca]:!![]})),_0x38fe1c[_0xcd13(0x2fb)](_0x4a6985,_0xc36bdc=>({..._0xc36bdc,[_0x5d49ca]:'connected'})),await _0x38fe1c[_0xcd13(0x1d1)](_0x12db93,_0x5d49ca));}else{if(_0x38fe1c[_0xcd13(0x17b)](_0x38fe1c[_0xcd13(0x2fc)],_0x38fe1c['fzryt'])){_0x1e938f(_0x5d49ca);const _0x281277=await initiateOAuth(_0x5d49ca,_0x4b5df2);_0x281277&&(_0x38fe1c[_0xcd13(0x2fd)](_0x337c9f,_0x281277),_0x40952e(_0x38fe1c[_0xcd13(0x171)]));}else _0x263654['log'](_0xcd13(0x1),_0x55aaad),_0xcc132f[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x2fe)],_0x49ae82),_0x2bdf24[_0xcd13(0x13e)](_0x38fe1c['OeeBp'],_0x4664f2),_0x5e725e['log'](_0xcd13(0x2ff),_0x119e6f);}}catch(_0xe934f2){_0x38fe1c[_0xcd13(0x300)](_0x38fe1c['eYywn'],_0xcd13(0x301))?console[_0xcd13(0x164)](_0xcd13(0x302)+_0x5d49ca+':',_0xe934f2):(_0x38fe1c[_0xcd13(0x303)](_0x405a18,_0x2fce9b[_0xcd13(0x1ad)]||_0xcd13(0x4f)),_0x38fe1c[_0xcd13(0x22b)](_0x316f80,_0x47be8c[_0xcd13(0x273)]));}finally{_0x38fe1c[_0xcd13(0x304)](_0xcd13(0x7e),_0x38fe1c[_0xcd13(0x305)])?(_0x3d150d[_0xcd13(0x13e)](_0xf74ab0[_0xcd13(0x306)]),_0xf74ab0[_0xcd13(0x307)](_0x1f5f65,_0xf74ab0[_0xcd13(0x308)])):_0x2e2578(null);}},_0x3f952e=_0x38fe1c[_0xcd13(0x309)](useCallback,async _0x1fe14c=>{const _0x2cfd63={'gJdVC':_0x38fe1c[_0xcd13(0x30a)],'mDkic':function(_0x5708d0,_0x520e9c){return _0x5708d0(_0x520e9c);},'vLNcv':_0x38fe1c[_0xcd13(0x30b)],'AbtKh':function(_0x2d2670,_0x3b4ebf){return _0x38fe1c[_0xcd13(0x30c)](_0x2d2670,_0x3b4ebf);},'ItZcA':_0xcd13(0x30d),'vTpVA':_0x38fe1c[_0xcd13(0x30e)],'DTxtG':_0x38fe1c[_0xcd13(0x251)],'vokJB':_0x38fe1c[_0xcd13(0x252)],'zYxZL':_0x38fe1c[_0xcd13(0x30f)],'FvAuU':function(_0x260c38,_0x4bece7){return _0x38fe1c['PquyD'](_0x260c38,_0x4bece7);},'uqhdL':function(_0x1ee60b){return _0x38fe1c[_0xcd13(0x2f1)](_0x1ee60b);},'PBoNp':_0x38fe1c['exFEI'],'GOWfs':_0x38fe1c[_0xcd13(0x310)],'AdYEX':_0x38fe1c[_0xcd13(0x311)],'PgYit':_0x38fe1c[_0xcd13(0x312)],'UWhTC':_0x38fe1c[_0xcd13(0x1d5)],'MBpnv':_0x38fe1c[_0xcd13(0x313)],'hueNQ':_0x38fe1c[_0xcd13(0x314)],'uPMSz':function(_0x4e0c75,_0x5b0dc9){return _0x38fe1c[_0xcd13(0x2f8)](_0x4e0c75,_0x5b0dc9);}};if(!_0x4502e1[_0x1fe14c]){if(_0x38fe1c[_0xcd13(0x315)](_0x38fe1c[_0xcd13(0x316)],_0x38fe1c[_0xcd13(0x316)]))try{if(_0x38fe1c['LfHKe'](_0x1fe14c,'instagram')){_0x38fe1c['CimSF'](_0x43bd50,_0x1bc0b9=>({..._0x1bc0b9,[_0x1fe14c]:!_0x1bc0b9[_0x1fe14c]})),_0x38fe1c[_0xcd13(0x22b)](_0x3bcf30,_0x2f1df3=>({..._0x2f1df3,[_0x1fe14c]:{'userName':_0x1fe14c+_0xcd13(0x317),'connected':!![]}})),await _0x12db93(_0x1fe14c);return;}if(_0x38fe1c[_0xcd13(0x318)](_0x1fe14c,_0x38fe1c[_0xcd13(0x19d)])||_0x38fe1c[_0xcd13(0x319)](_0x1fe14c,_0x38fe1c[_0xcd13(0x31a)])){console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x31b)]);const _0x1e0e2d={'userId':_0x38fe1c[_0xcd13(0x31c)](_0x4c1dae,_0x4b5df2),'email':_0x4c1dae||_0x4b5df2+_0xcd13(0x31d),'appName':_0x20ed1d,'timestamp':Date[_0xcd13(0x31e)](),'data':{'conversations':[],'chatHistory':[],'preferences':{},'customData':{}},'accessToken':undefined,'refreshToken':undefined,'tokenExpiry':undefined},_0x245f7e=await _0x38fe1c['jAZmq'](sendLLMDataToBackend,_0x1e0e2d);if(_0x245f7e['success']){const _0x2ecdd2=_0x38fe1c['lDkQr'][_0xcd13(0x1ab)]('|');let _0x4b6444=0x0;while(!![]){switch(_0x2ecdd2[_0x4b6444++]){case'0':await _0x38fe1c[_0xcd13(0x151)](_0x12db93,_0x1fe14c);continue;case'1':_0x38fe1c['xYrOd'](_0x43bd50,_0x464897=>({..._0x464897,[_0x1fe14c]:!![]}));continue;case'2':console[_0xcd13(0x13e)]('✅\x20'+_0x1fe14c+_0xcd13(0x31f));continue;case'3':console[_0xcd13(0x13e)](_0x38fe1c['XLJKU']);continue;case'4':console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x320)],_0x245f7e[_0xcd13(0x321)]);continue;case'5':_0x38fe1c[_0xcd13(0x322)](_0x3bcf30,_0x2d1aa5=>({..._0x2d1aa5,[_0x1fe14c]:{'userName':_0x4b5df2,'connected':!![],'connectionId':_0x245f7e['connectionId'],'storedInBackend':!![]}}));continue;}break;}}else{if(_0x38fe1c['kJfwW'](_0x38fe1c[_0xcd13(0x323)],_0x38fe1c[_0xcd13(0x324)]))throw new Error('Failed\x20to\x20send\x20LLM\x20data\x20to\x20backend:\x20'+_0x245f7e[_0xcd13(0x1ad)]);else{const _0x1866e4=_0x2cfd63[_0xcd13(0x325)][_0xcd13(0x1ab)]('|');let _0x432c01=0x0;while(!![]){switch(_0x1866e4[_0x432c01++]){case'0':_0x16d0c3(!![]);continue;case'1':_0x2cfd63[_0xcd13(0x326)](_0x3caa0d,_0x4987e7[_0xcd13(0x327)]);continue;case'2':return;case'3':_0x2cfd63['mDkic'](_0x35bb1e,_0xcd13(0x328));continue;case'4':_0x4299d4[_0xcd13(0x13e)](_0x2cfd63[_0xcd13(0x329)]);continue;case'5':_0x2cfd63[_0xcd13(0x32a)](_0x4f3cd8,'LIMITED_DATA');continue;}break;}}}return;}if(_0x38fe1c[_0xcd13(0x29a)](hasNativeSDK,_0x1fe14c)){_0x38fe1c['DpoJK'](_0x1e938f,_0x1fe14c);const _0x44bfb1=await _0x38fe1c[_0xcd13(0x18d)](initiateNativeAuth,_0x1fe14c,_0x4b5df2);_0x44bfb1&&(_0x38fe1c[_0xcd13(0x32b)](_0xcd13(0x32c),_0xcd13(0x32c))?(_0x38fe1c[_0xcd13(0x32d)](_0x3bcf30,_0x5cb224=>({..._0x5cb224,[_0x1fe14c]:{'userName':_0x4b5df2,'connected':!![]}})),_0x38fe1c['ExKjw'](_0x43bd50,_0x5b7483=>({..._0x5b7483,[_0x1fe14c]:!![]})),await _0x38fe1c[_0xcd13(0x32e)](_0x12db93,_0x1fe14c)):(_0x100744[_0xcd13(0x13e)](_0x2cfd63[_0xcd13(0x32f)],_0x54317f['message']),_0x2522a4(_0x42565a['message']||_0x2cfd63[_0xcd13(0x330)])));return;}_0x1e938f(_0x1fe14c);const _0x1a514c=await initiateOAuth(_0x1fe14c,_0x4b5df2);_0x1a514c&&(_0x38fe1c[_0xcd13(0x2b9)](_0x38fe1c[_0xcd13(0x331)],_0x38fe1c['EUFSx'])?(_0x38fe1c['PlOdR'](_0x337c9f,_0x1a514c),_0x38fe1c[_0xcd13(0x332)](_0x40952e,_0x38fe1c['QBsFq'])):_0x36d45a(![]));}catch(_0x1bb9d4){if(_0x38fe1c['WYasO'](_0x38fe1c[_0xcd13(0x333)],_0x38fe1c[_0xcd13(0x334)]))_0x3b279d[_0xcd13(0x164)](_0x2cfd63[_0xcd13(0x335)],_0x2f4245),_0x2cfd63[_0xcd13(0x32a)](_0x4c7900,_0x2cfd63['vokJB']);else{console['error'](_0xcd13(0x336)+_0x1fe14c+':',_0x1bb9d4);return;}}else _0x5f3393[_0xcd13(0x164)](_0x2cfd63['zYxZL'],_0x2d5908[_0xcd13(0x164)]),_0x2cfd63[_0xcd13(0x326)](_0x9b58bb,_0xcd13(0x337)+_0x1c0aa8[_0xcd13(0x164)]),_0x2cfd63['FvAuU'](_0x5807f5,!![]),_0x2cfd63[_0xcd13(0x338)](_0x1d4f24);}else{if(_0x38fe1c['Djckh']===_0x38fe1c[_0xcd13(0x339)])_0x43bd50(_0x56cc76=>({..._0x56cc76,[_0x1fe14c]:!_0x56cc76[_0x1fe14c]})),_0x38fe1c['fVSEW'](_0x3bcf30,_0x33d9ee=>{const _0x30c207={..._0x33d9ee};return delete _0x30c207[_0x1fe14c],_0x30c207;});else{const _0x39f901=_0x2cfd63[_0xcd13(0x33a)][_0xcd13(0x1ab)]('|');let _0x3631d7=0x0;while(!![]){switch(_0x39f901[_0x3631d7++]){case'0':_0x192c88['features']&&(_0x1a7c4b[_0xcd13(0x13e)](_0x2cfd63['GOWfs'],_0x2d9f1d[_0xcd13(0x1dc)][_0xcd13(0x1e4)]),_0x207553[_0xcd13(0x13e)](_0x2cfd63[_0xcd13(0x33b)],_0x14cd24[_0xcd13(0x1dc)]['storage']),_0x4022a1['log'](_0x2cfd63[_0xcd13(0x33c)],_0x5ef315['features'][_0xcd13(0x33d)]),_0x372ce3[_0xcd13(0x13e)](_0x2cfd63[_0xcd13(0x33e)],_0x471761[_0xcd13(0x1dc)][_0xcd13(0x1e1)]),_0x128374[_0xcd13(0x13e)](_0xcd13(0x1d),_0x38a7b0[_0xcd13(0x1dc)][_0xcd13(0x1dd)]),_0x1c284e[_0xcd13(0x13e)](_0x2cfd63[_0xcd13(0x33f)],_0x2a666a[_0xcd13(0x1dc)][_0xcd13(0x1e5)]),_0x1f3a16[_0xcd13(0x13e)]('📈\x20Query\x20scores\x20enabled:',_0x545110[_0xcd13(0x1dc)]['queryScores']));continue;case'1':_0x202a8c(_0x2cfd63['hueNQ']);continue;case'2':_0x2626de[_0xcd13(0x13e)]('🚀\x20Training\x20Started:',_0xe1f6fc[_0xcd13(0x1ad)]);continue;case'3':_0x56af44[_0xcd13(0x13e)]('🎯\x20Training\x20Features:',_0x409e16[_0xcd13(0x1dc)]);continue;case'4':_0x2cfd63[_0xcd13(0x340)](_0x57d05c,0x19);continue;}break;}}}},[_0x4502e1,_0x4b5df2]),_0xdbedbb=useCallback(_0x346ed8=>{const _0x4775ab={'KmGxY':'❌\x20Training\x20start\x20failed:','eNBLm':'Training\x20failed\x20to\x20start','jRxsQ':function(_0x23b2d2,_0x1eda70){return _0x38fe1c['xyxPd'](_0x23b2d2,_0x1eda70);},'eBHpM':function(_0x1e54eb){return _0x1e54eb();}};if(_0x38fe1c[_0xcd13(0x341)](_0x38fe1c['xuHgz'],_0x38fe1c[_0xcd13(0x342)]))_0x476d89['log'](_0x38fe1c['ayfFG']),_0x5b3339(!![]),_0x38fe1c[_0xcd13(0x343)](_0x60a632,_0x48dff8),_0x38fe1c['xyxPd'](_0x91c1ab,_0x38fe1c[_0xcd13(0x1f3)]);else try{const _0x1550a3=new URL(_0x346ed8),_0x268e40=_0x1550a3[_0xcd13(0x15f)][_0xcd13(0x161)](_0x38fe1c[_0xcd13(0x160)]),_0x2e7835=_0x1550a3[_0xcd13(0x15f)][_0xcd13(0x161)](_0x38fe1c[_0xcd13(0x162)])||_0x365c4a;_0x268e40&&_0x2e7835&&(_0x38fe1c[_0xcd13(0x344)](_0x38fe1c[_0xcd13(0x345)],_0xcd13(0x8d))?(_0x38fe1c['gdUOE'](_0x3bcf30,_0x652029=>({..._0x652029,[_0x2e7835]:{'userName':_0x4b5df2,'connected':!![]}})),_0x38fe1c['yVUMY'](_0x43bd50,_0x49a7b0=>({..._0x49a7b0,[_0x2e7835]:!![]})),_0x38fe1c[_0xcd13(0x346)](_0x40952e,_0x38fe1c[_0xcd13(0x163)])):(_0x2caf17[_0xcd13(0x164)](_0x4775ab[_0xcd13(0x347)],_0x33380a[_0xcd13(0x164)]),_0x536529(_0xcd13(0x337)+(_0x2f9469[_0xcd13(0x164)]||_0x4775ab['eNBLm'])),_0x4775ab[_0xcd13(0x348)](_0x10c281,!![]),_0x4775ab[_0xcd13(0x349)](_0x4489be)));}catch(_0x4348d0){_0x38fe1c['oqXru'](_0x38fe1c[_0xcd13(0x34a)],'htrOl')?console[_0xcd13(0x164)](_0xcd13(0x34b),_0x4348d0):_0x4775ab['jRxsQ'](_0x51704e,null);}},[_0x365c4a,_0x4b5df2]),_0x296ce7=useCallback(async _0x1c9dac=>{const _0x1450d1={'HthXE':_0x38fe1c[_0xcd13(0x34c)],'diPUi':function(_0x1c5e47,_0x53bab8){return _0x38fe1c[_0xcd13(0x23b)](_0x1c5e47,_0x53bab8);},'GUHoB':_0xcd13(0xbb),'iRIkt':_0x38fe1c[_0xcd13(0x34d)]};if(_0x38fe1c[_0xcd13(0x34e)](_0x38fe1c[_0xcd13(0x34f)],_0x38fe1c[_0xcd13(0x34f)])){console['log'](_0xcd13(0x350)+_0x365c4a+_0xcd13(0x351)),console[_0xcd13(0x13e)](_0xcd13(0x352),_0x1c9dac);if(_0x365c4a){if(_0x38fe1c[_0xcd13(0x353)](_0x38fe1c[_0xcd13(0x354)],_0x38fe1c['kElHm']))_0x10f11f['error'](_0x38fe1c[_0xcd13(0x355)],_0x478419);else{const _0x506f58=_0x38fe1c[_0xcd13(0x356)][_0xcd13(0x1ab)]('|');let _0x3c5e24=0x0;while(!![]){switch(_0x506f58[_0x3c5e24++]){case'0':await _0x38fe1c[_0xcd13(0x303)](_0x12db93,_0x365c4a);continue;case'1':_0x38fe1c['Bspap'](_0x3bcf30,_0x1fe160=>({..._0x1fe160,[_0x365c4a]:{'userName':_0x4b5df2,'connected':!![]}}));continue;case'2':_0x38fe1c[_0xcd13(0x25d)](_0x43bd50,_0x159122=>({..._0x159122,[_0x365c4a]:!![]}));continue;case'3':_0x4a6985(_0x10127e=>({..._0x10127e,[_0x365c4a]:'connected'}));continue;case'4':console['log']('💾\x20'+_0x365c4a+_0xcd13(0x357));continue;case'5':console['log'](_0xcd13(0x358)+_0x365c4a);continue;}break;}}}console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x359)]),_0x38fe1c['kPMgd'](_0x337c9f,''),_0x38fe1c[_0xcd13(0x35a)](_0x40952e,_0x38fe1c[_0xcd13(0x163)]);}else{const _0x5913a1=_0x1450d1['HthXE'][_0xcd13(0x1ab)]('|');let _0x5ea30c=0x0;while(!![]){switch(_0x5913a1[_0x5ea30c++]){case'0':_0x1450d1[_0xcd13(0x35b)](_0xf57356,_0x1450d1[_0xcd13(0x35c)]);continue;case'1':_0x3c80b4[_0xcd13(0x13e)](_0x1450d1['iRIkt'],_0x50a440);continue;case'2':_0x1450d1[_0xcd13(0x35b)](_0x21506f,_0xbd55d7[_0xcd13(0x35d)]);continue;case'3':_0x1450d1['diPUi'](_0x532344,_0x340af7[_0xcd13(0x35e)]);continue;case'4':_0x1450d1[_0xcd13(0x35b)](_0x24802c,0x50);continue;}break;}}},[_0x365c4a,_0x4b5df2,_0x12db93]),_0x41f73f=_0x38fe1c[_0xcd13(0x309)](useCallback,async _0x367fbf=>{const _0x58a823={'sOikK':_0x38fe1c[_0xcd13(0x26c)]};_0x5aa325(_0x367fbf),_0x38fe1c[_0xcd13(0x1bb)](setTemporaryPin,_0x367fbf),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x35f)]);if(_0x38fe1c[_0xcd13(0x360)](_0x177cec,_0x478609)){console[_0xcd13(0x13e)](_0x38fe1c['SbEFX']);try{await _0x38fe1c[_0xcd13(0x30c)](_0x393ea8,_0x367fbf),_0x40952e(_0x38fe1c[_0xcd13(0x361)]);}catch(_0x1b672e){_0xcd13(0x362)!==_0x38fe1c[_0xcd13(0x363)]?(console[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x364)],_0x1b672e),_0x38fe1c[_0xcd13(0x365)](_0x40952e,'persona'),_0x38fe1c[_0xcd13(0x366)](_0x2c54c4,_0x38fe1c[_0xcd13(0x367)]),_0x75e131(!![])):_0x578111[_0xcd13(0x13e)](_0x58a823[_0xcd13(0x368)],_0x59d7de);}}else console[_0xcd13(0x13e)](_0x38fe1c['ofBCv']),_0x38fe1c['fVSEW'](_0x40952e,_0x38fe1c[_0xcd13(0x361)]),_0x38fe1c['haqut'](_0x2c54c4,_0x38fe1c['dMejS']),_0x75e131(!![]);console[_0xcd13(0x13e)]('🔐\x20[PIN\x20SUBMIT]\x20PIN\x20stored\x20securely,\x20moved\x20to\x20persona\x20step');},[_0x177cec,_0x478609]),_0x4470f8=async(_0x333e4b,_0x828a86)=>{const _0xa58dc6={'gJYYo':_0x38fe1c[_0xcd13(0x369)],'GxMKo':_0xcd13(0x111),'BvoFf':function(_0x5909d4,_0x475203){return _0x38fe1c[_0xcd13(0x36a)](_0x5909d4,_0x475203);},'OrWxj':_0x38fe1c[_0xcd13(0x36b)],'jJqqy':'Error\x20removing\x20connected\x20platform:','ytzYO':_0x38fe1c[_0xcd13(0x36c)]};try{if(_0x38fe1c[_0xcd13(0x36d)]!==_0xcd13(0x36e)){_0x38fe1c['czBZT'](_0x2c54c4,_0x38fe1c[_0xcd13(0x36f)]),_0x38fe1c[_0xcd13(0x32d)](_0x444384,0xf);const _0x5c12b6=_0x828a86||await _0x38fe1c[_0xcd13(0x2b2)](getJWT);if(!_0x5c12b6){if(_0x38fe1c['wTCGb']===_0xcd13(0x9f)){console[_0xcd13(0x164)](_0xcd13(0x3d));throw new Error(_0x38fe1c[_0xcd13(0x370)]);}else _0xf72905['log'](_0x38fe1c[_0xcd13(0x371)],_0x44a3bd[_0xcd13(0x2b4)](0x0,0x1e)+_0xcd13(0x278)),_0x38fe1c[_0xcd13(0x372)](_0x1f9866,null)||_0x376db8===void 0x0||_0x38fe1c[_0xcd13(0x2c3)](_0x2cf661,_0x2afebd['BASE_URL'],_0x4a1ae5,{'email':(_0x38fe1c[_0xcd13(0x315)](_0x2b6a12,null)||_0x38fe1c['wxDRZ'](_0xb5b6a5,void 0x0)?void 0x0:_0x5d9c72[_0xcd13(0x206)])||'',..._0x3bfcf9});}console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x373)],_0x333e4b),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x374)],_0x5c12b6?_0x5c12b6['substring'](0x0,0x14)+_0xcd13(0x278):_0x38fe1c[_0xcd13(0x375)]);const _0x5a8d34=await _0x38fe1c[_0xcd13(0x2ca)](getOnairosUsername),_0x3714cd=_0x5a8d34||(_0x38fe1c['mmEAa'](_0x36231e,null)||_0x36231e===void 0x0?void 0x0:_0x36231e['username'])||(_0x36231e===null||_0x38fe1c[_0xcd13(0x376)](_0x36231e,void 0x0)?void 0x0:_0x36231e[_0xcd13(0x1ae)])||_0x4b5df2||_0x38fe1c[_0xcd13(0x377)],_0x27b48d=await AsyncStorage['getItem']('connectedPlatforms'),_0x523b08=_0x27b48d?JSON[_0xcd13(0x159)](_0x27b48d):[];console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x378)],_0x523b08);const _0x30610d=await _0x38fe1c[_0xcd13(0x379)](getEncryptedPinForAPI)[_0xcd13(0x2c5)](_0xcb5411=>{return console[_0xcd13(0x2c0)](_0xa58dc6[_0xcd13(0x37a)],_0xcb5411),null;}),_0x39af6a={'socketId':_0x333e4b,'username':_0x3714cd,'email':(_0x38fe1c[_0xcd13(0x23e)](_0x36231e,null)||_0x38fe1c[_0xcd13(0x288)](_0x36231e,void 0x0)?void 0x0:_0x36231e['email'])||null,'modelKey':null,'connectedPlatforms':_0x523b08,'platformConnections':_0x23a4da,..._0x38fe1c[_0xcd13(0x2b7)](_0x30610d,{'encryptedPin':_0x30610d,'hasPinData':!![]})};console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x37b)],_0x39af6a);const _0xe76694=await _0x38fe1c['TcNDz'](startEnochTrainingWithYouTubeCheck,_0x39af6a);console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x37c)],_0xe76694);if(_0xe76694[_0xcd13(0x37d)]||_0x38fe1c['QkYjK'](_0xe76694[_0xcd13(0x7)],_0x38fe1c[_0xcd13(0x2d5)])){const _0x519555=_0x38fe1c[_0xcd13(0x37e)]['split']('|');let _0x1b7a42=0x0;while(!![]){switch(_0x519555[_0x1b7a42++]){case'0':_0x38fe1c[_0xcd13(0x303)](_0x75e131,!![]);continue;case'1':_0x38fe1c[_0xcd13(0x37f)](_0x1e105d);continue;case'2':_0x38fe1c[_0xcd13(0x380)](_0x2c54c4,'Connections\x20required');continue;case'3':_0x38fe1c[_0xcd13(0x381)](_0x6f85a3,!![]);continue;case'4':return;case'5':console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x382)]);continue;case'6':_0x38fe1c[_0xcd13(0x2a2)](_0x5c6b2a,_0xe76694);continue;case'7':_0x38fe1c[_0xcd13(0x383)](_0x9ddd5,_0x38fe1c[_0xcd13(0x2d5)]);continue;}break;}}if(_0xe76694['success']){console[_0xcd13(0x13e)](_0x38fe1c['ZRIYu'],_0xe76694[_0xcd13(0x1ad)]),console['log']('🎯\x20Training\x20Features:',_0xe76694[_0xcd13(0x1dc)]);if(_0xe76694['features']){if(_0x38fe1c['OQTdI']===_0x38fe1c[_0xcd13(0x384)]){const _0x3e7bb4=_0x38fe1c[_0xcd13(0x385)][_0xcd13(0x1ab)]('|');let _0x5af9d6=0x0;while(!![]){switch(_0x3e7bb4[_0x5af9d6++]){case'0':console['log']('💾\x20Storage\x20method:',_0xe76694[_0xcd13(0x1dc)][_0xcd13(0x2e8)]);continue;case'1':console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x310)],_0xe76694[_0xcd13(0x1dc)]['inference']);continue;case'2':console['log'](_0x38fe1c[_0xcd13(0x312)],_0xe76694[_0xcd13(0x1dc)]['compression']);continue;case'3':console['log'](_0xcd13(0x1d4),_0xe76694['features'][_0xcd13(0x1df)]);continue;case'4':console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x1d3)],_0xe76694['features'][_0xcd13(0x1dd)]);continue;case'5':console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x1d5)],_0xe76694[_0xcd13(0x1dc)]['encryption']);continue;case'6':console['log'](_0x38fe1c[_0xcd13(0x313)],_0xe76694[_0xcd13(0x1dc)][_0xcd13(0x1e5)]);continue;}break;}}else _0x44029a(_0x4971ba[_0xcd13(0x235)]),_0x17d7f3[_0xcd13(0x13e)](_0xa58dc6[_0xcd13(0x386)]),_0x3b83d6()[_0xcd13(0x2c5)](_0x4532f8=>{_0x6b4cf9[_0xcd13(0x164)](_0xcd13(0x8f),_0x4532f8);}),_0xa58dc6[_0xcd13(0x387)](_0x2b24d2,_0xa58dc6[_0xcd13(0x388)]);}_0x38fe1c['MmIuU'](_0x2c54c4,_0x38fe1c[_0xcd13(0x314)]),_0x444384(0x19);}else _0x38fe1c[_0xcd13(0x292)](_0x38fe1c['yfIzJ'],'fsBvP')?(console[_0xcd13(0x164)](_0xcd13(0x389),_0xe76694[_0xcd13(0x164)]),_0x2c54c4('Error:\x20'+(_0xe76694[_0xcd13(0x164)]||_0x38fe1c[_0xcd13(0x38a)])),_0x38fe1c[_0xcd13(0x38b)](_0x75e131,!![]),_0x38fe1c[_0xcd13(0x2f1)](_0x1e105d)):_0x893434[_0xcd13(0x164)](_0xa58dc6['jJqqy'],_0x25de00);}else throw new _0x533323(_0xa58dc6[_0xcd13(0x38c)]);}catch(_0x19780e){console[_0xcd13(0x164)](_0xcd13(0x38d),_0x19780e),_0x38fe1c['BCYys'](_0x2c54c4,_0xcd13(0x337)+(_0x38fe1c[_0xcd13(0x38e)](_0x19780e,Error)?_0x19780e[_0xcd13(0x1ad)]:_0x38fe1c[_0xcd13(0x38f)])),_0x38fe1c[_0xcd13(0x35a)](_0x75e131,!![]),_0x38fe1c[_0xcd13(0x21a)](_0x1e105d);}},_0x393ea8=async _0x3c31d1=>{const _0x31d93b={'xoaww':'0|1|3|2|5|4','lZbgX':_0xcd13(0xca),'wSJva':function(_0x459780,_0x1e63d3){return _0x459780(_0x1e63d3);},'trtAk':function(_0x33f24c,_0x51000a){return _0x33f24c(_0x51000a);},'galvJ':_0x38fe1c[_0xcd13(0x183)],'vexMC':function(_0x1fd3e3){return _0x38fe1c['oWWuu'](_0x1fd3e3);}};if(_0x38fe1c[_0xcd13(0x390)]!==_0x38fe1c[_0xcd13(0x390)])_0x25aa77=_0xcd13(0xfd);else try{if(_0x38fe1c[_0xcd13(0x391)](_0x38fe1c[_0xcd13(0x392)],_0x38fe1c[_0xcd13(0x392)])){console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x393)]),console['log'](_0x38fe1c[_0xcd13(0x374)],(_0x38fe1c[_0xcd13(0x2cb)](_0x4a1bb9,null)||_0x38fe1c[_0xcd13(0x394)](_0x4a1bb9,void 0x0)?void 0x0:_0x4a1bb9[_0xcd13(0x2b4)](0x0,0x14))+_0xcd13(0x278));if(!_0x478609)throw new Error(_0xcd13(0x3f));console['log'](_0xcd13(0x257)),console['log'](_0x38fe1c[_0xcd13(0x395)],_0x478609),console[_0xcd13(0x13e)](_0x38fe1c['jWFTa']);}else _0xcfc621['error']('❌\x20Background\x20training\x20start\x20error:',_0x470aaf),_0x38fe1c['eZZMS'](_0x2c8dd4,'Error:\x20'+(_0x38fe1c[_0xcd13(0x396)](_0x134481,_0x5d60f6)?_0x4c2127[_0xcd13(0x1ad)]:_0xcd13(0xad))),_0x38fe1c[_0xcd13(0x397)](_0x502575,!![]),_0x38fe1c[_0xcd13(0x398)](_0x439e56);}catch(_0x350e29){if(_0x38fe1c[_0xcd13(0x399)](_0x38fe1c[_0xcd13(0x39a)],_0x38fe1c[_0xcd13(0x39a)])){const _0x263211=_0x31d93b[_0xcd13(0x39b)][_0xcd13(0x1ab)]('|');let _0x527ee2=0x0;while(!![]){switch(_0x263211[_0x527ee2++]){case'0':_0x3f7ecb[_0xcd13(0x164)](_0x31d93b[_0xcd13(0x39c)]);continue;case'1':_0xbe019f[_0xcd13(0x164)](_0xcd13(0x16),{'connected':_0x12447a[_0xcd13(0x186)][_0xcd13(0x188)],'disconnected':_0x464fba[_0xcd13(0x186)][_0xcd13(0x2a)],'id':_0x2a851e[_0xcd13(0x186)]['id']});continue;case'2':_0x31d93b['wSJva'](_0x262bb9,!![]);continue;case'3':_0x31d93b[_0xcd13(0x39d)](_0xd2e854,_0x31d93b[_0xcd13(0x39e)]);continue;case'4':_0x106e2c[_0xcd13(0x186)]&&(_0x5ae203[_0xcd13(0x186)][_0xcd13(0xec)](),_0x5d18bb[_0xcd13(0x186)]=null);continue;case'5':_0x31d93b[_0xcd13(0x39f)](_0x253031);continue;}break;}}else{console[_0xcd13(0x164)](_0x38fe1c['MsfMh'],_0x350e29);throw _0x350e29;}}},_0x1fb6c7=async()=>{const _0xa165eb={'plDZA':function(_0x3d117d,_0x1cef67){return _0x38fe1c[_0xcd13(0x3a0)](_0x3d117d,_0x1cef67);},'ZOuyC':_0x38fe1c[_0xcd13(0x3a1)],'dPYQD':function(_0x341e9f,_0x2ac320){return _0x38fe1c[_0xcd13(0x3a2)](_0x341e9f,_0x2ac320);},'BOWIm':function(_0x10645a,_0x10b976){return _0x38fe1c['OxIlR'](_0x10645a,_0x10b976);},'TiRge':function(_0x218ee9,_0x5a2f1c,_0x24ee6a,_0x21b399){return _0x218ee9(_0x5a2f1c,_0x24ee6a,_0x21b399);},'QMCll':function(_0x464dfc,_0x8ee3b5){return _0x38fe1c['EoHHQ'](_0x464dfc,_0x8ee3b5);},'ADfTO':_0x38fe1c['ZVQQe'],'kWPGB':_0x38fe1c[_0xcd13(0x3a3)],'WXKiJ':_0x38fe1c['QwoLD'],'kDUCV':function(_0x104573,_0x772028){return _0x38fe1c[_0xcd13(0x3a4)](_0x104573,_0x772028);},'RkRkF':_0x38fe1c[_0xcd13(0x3a5)],'IDZNu':_0x38fe1c[_0xcd13(0x3a6)],'kGRSE':function(_0x233ef8,_0x35cb0e){return _0x38fe1c[_0xcd13(0x22d)](_0x233ef8,_0x35cb0e);},'hjQro':function(_0x28e207,_0x13a850){return _0x38fe1c['JYDYe'](_0x28e207,_0x13a850);},'WILAM':_0x38fe1c[_0xcd13(0x3a7)],'oPtYE':_0x38fe1c[_0xcd13(0x3a8)],'ovskB':_0xcd13(0x3a9),'mGVTI':function(_0x23696f,_0x3d22a4){return _0x38fe1c[_0xcd13(0x3aa)](_0x23696f,_0x3d22a4);},'Fhlrx':function(_0x57abb5,_0x46165f){return _0x57abb5===_0x46165f;},'AsOWN':function(_0x577dbd,_0x110fcc){return _0x38fe1c['sQJuM'](_0x577dbd,_0x110fcc);},'IulCg':function(_0x5b9912,_0x26f539){return _0x38fe1c[_0xcd13(0x3ab)](_0x5b9912,_0x26f539);},'uxTGh':_0x38fe1c[_0xcd13(0x145)],'JpTMl':_0x38fe1c[_0xcd13(0x147)],'YzYMd':_0x38fe1c[_0xcd13(0x3ac)],'qeryu':_0x38fe1c[_0xcd13(0x3ad)],'sheMb':_0x38fe1c[_0xcd13(0x149)],'XnwFA':_0x38fe1c[_0xcd13(0x3ae)],'TAGYs':_0x38fe1c['UCdLQ'],'xTvmK':_0xcd13(0x3af),'lQrWV':_0x38fe1c['JJeOI'],'nAwRb':function(_0x4c2dcb,_0x1bf0de){return _0x38fe1c[_0xcd13(0x3b0)](_0x4c2dcb,_0x1bf0de);},'fYriU':function(_0x17cc62){return _0x38fe1c[_0xcd13(0x2ca)](_0x17cc62);},'yGYqP':_0xcd13(0x3b1),'KGqbu':_0x38fe1c[_0xcd13(0x1a7)],'WSXUN':'❌\x20Socket\x20error\x20details:','OMjuI':_0x38fe1c[_0xcd13(0x3b2)],'XrkPP':_0x38fe1c[_0xcd13(0x3b3)],'apOmH':_0x38fe1c['ctNnU'],'xKfpJ':function(_0x3c237a,_0x4e13b9){return _0x38fe1c[_0xcd13(0x3b4)](_0x3c237a,_0x4e13b9);},'qpAjl':'JWgIj','EDRrO':_0x38fe1c[_0xcd13(0x3b5)],'NeVkk':_0x38fe1c[_0xcd13(0x3b6)],'nnwYs':function(_0x194bbc,_0x26d8ac){return _0x194bbc(_0x26d8ac);},'MCFSZ':_0x38fe1c[_0xcd13(0x2bc)],'jtLhs':function(_0x4e7460,_0x48959a){return _0x4e7460(_0x48959a);},'EWsuo':_0x38fe1c[_0xcd13(0x3b7)],'JWyvy':function(_0x5d2c93,_0x28c975){return _0x38fe1c[_0xcd13(0x3b8)](_0x5d2c93,_0x28c975);},'gVtBS':_0x38fe1c[_0xcd13(0x3b9)],'CGyAk':_0x38fe1c[_0xcd13(0x3ba)],'zBRzt':_0x38fe1c[_0xcd13(0x3bb)],'IaKHQ':_0x38fe1c[_0xcd13(0x3bc)],'THKrM':function(_0x36a772){return _0x38fe1c[_0xcd13(0x3bd)](_0x36a772);},'tSMqn':_0x38fe1c['NwpLw'],'jamAe':function(_0x2d08ec,_0x40adb6){return _0x2d08ec(_0x40adb6);},'UYorp':_0xcd13(0x63),'PNkbR':function(_0xa22c58,_0x4d2a38){return _0x38fe1c['flmRZ'](_0xa22c58,_0x4d2a38);},'UqfNW':_0xcd13(0x118),'lTvWj':_0xcd13(0x3be),'Jyauz':function(_0xc78d39,_0x5f2e85){return _0x38fe1c[_0xcd13(0x3aa)](_0xc78d39,_0x5f2e85);},'NIzNe':function(_0x395b4e,_0x352bc1){return _0x38fe1c[_0xcd13(0x3bf)](_0x395b4e,_0x352bc1);},'uICpe':function(_0x541088,_0x4c0179){return _0x541088===_0x4c0179;},'TXIek':function(_0x2ede42,_0x36e7d1){return _0x38fe1c[_0xcd13(0x3c0)](_0x2ede42,_0x36e7d1);},'wyQlv':function(_0x4ac7c3,_0x2f2a55){return _0x38fe1c[_0xcd13(0x3c1)](_0x4ac7c3,_0x2f2a55);},'XhcIh':'❌\x20Error\x20checking\x20authentication\x20token:','htUnR':function(_0x64cdcf,_0x590190){return _0x64cdcf===_0x590190;},'hvkci':_0x38fe1c[_0xcd13(0x3c2)],'PBSGN':_0x38fe1c[_0xcd13(0x3c3)],'LLfIJ':function(_0x1f9863,_0x5e6f5d){return _0x38fe1c['kVivD'](_0x1f9863,_0x5e6f5d);},'CrhgO':function(_0x14127d,_0xd229ed){return _0x38fe1c[_0xcd13(0x34e)](_0x14127d,_0xd229ed);},'nqpOE':function(_0x1bf7e4,_0x10509c){return _0x38fe1c[_0xcd13(0x3c4)](_0x1bf7e4,_0x10509c);},'PQsKA':function(_0x4908bc,_0x57df9b){return _0x38fe1c[_0xcd13(0x3c5)](_0x4908bc,_0x57df9b);},'ZJhDv':function(_0x21423c,_0x4917f2){return _0x38fe1c['bwsjM'](_0x21423c,_0x4917f2);},'SRGoP':_0x38fe1c[_0xcd13(0x3c6)]};_0x444384(0x0),_0x2c54c4(_0x38fe1c['WslIS']),_0x38fe1c['MoRdM'](_0x1d0f1,![]),_0x38fe1c[_0xcd13(0x3c7)](_0x75e131,![]),_0x38fe1c[_0xcd13(0x3c8)](_0xcff9e7);try{if(_0x38fe1c[_0xcd13(0x3c9)](_0xcd13(0x3ca),_0xcd13(0x3ca))){var _0x2b668f,_0x9d5c59,_0x382c43,_0x5ecd9a;_0x245694[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x3c3)],{'connected':_0x38fe1c['ksIeN'](_0x2b668f=_0x385771[_0xcd13(0x186)],null)||_0x38fe1c[_0xcd13(0x21c)](_0x2b668f,void 0x0)?void 0x0:_0x2b668f[_0xcd13(0x188)],'disconnected':_0x38fe1c['dfhGK'](_0x9d5c59=_0x48f0d8[_0xcd13(0x186)],null)||_0x9d5c59===void 0x0?void 0x0:_0x9d5c59['disconnected'],'id':_0x38fe1c[_0xcd13(0x3cb)](_0x382c43=_0x2929e9['current'],null)||_0x382c43===void 0x0?void 0x0:_0x382c43['id'],'engineConnected':_0x38fe1c['kVivD'](_0x5ecd9a=_0x51f190[_0xcd13(0x186)],null)||_0x38fe1c[_0xcd13(0x3cc)](_0x5ecd9a,void 0x0)||_0x38fe1c[_0xcd13(0x1b9)](_0x5ecd9a=_0x5ecd9a['io'],null)||_0x38fe1c['csBCv'](_0x5ecd9a,void 0x0)||_0x38fe1c[_0xcd13(0x285)](_0x5ecd9a=_0x5ecd9a[_0xcd13(0x3cd)],null)||_0x38fe1c[_0xcd13(0x3ce)](_0x5ecd9a,void 0x0)?void 0x0:_0x5ecd9a[_0xcd13(0x3cf)]});}else{var _0x1aac98;console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x3d0)]),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x3d1)]);const _0x19ce9d=await _0x38fe1c[_0xcd13(0x3d2)](_0x1520cc);if(!_0x19ce9d)throw new Error(_0xcd13(0x9c));_0x38fe1c[_0xcd13(0x3d3)](_0x28917a,_0x19ce9d),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x3d4)],_0x19ce9d[_0xcd13(0x2b4)](0x0,0x14)+_0xcd13(0x278)),console['log'](_0x38fe1c[_0xcd13(0x3d5)],_0x19ce9d[_0xcd13(0x20d)]);const _0x4686bd=await _0x38fe1c[_0xcd13(0x3d6)](getJWT);console['log'](_0x38fe1c['CWgij'],_0x4686bd?_0x4686bd[_0xcd13(0x2b4)](0x0,0x14)+_0xcd13(0x278):_0x38fe1c['Joeuc']);if(!_0x36231e){if(_0x38fe1c[_0xcd13(0x18f)](_0x38fe1c['VjQVr'],_0x38fe1c['VjQVr'])){var _0x5097f9;console[_0xcd13(0x13e)](_0x38fe1c['lnrXm']);const _0x3e07b8=await getOnairosUsername(),_0x2aa639=_0x3e07b8||(_0x38fe1c[_0xcd13(0x394)](_0x554ecd,null)||_0x38fe1c[_0xcd13(0x146)](_0x554ecd,void 0x0)||_0x38fe1c[_0xcd13(0x3d7)](_0x5097f9=_0x554ecd['email'],null)||_0x38fe1c[_0xcd13(0x3d8)](_0x5097f9,void 0x0)?void 0x0:_0x5097f9['split']('@')[0x0])||(_0x38fe1c[_0xcd13(0x3d9)](_0x554ecd,null)||_0x554ecd===void 0x0?void 0x0:_0x554ecd[_0xcd13(0x1ae)])||_0x38fe1c[_0xcd13(0x377)],_0x158010={'username':_0x2aa639,'email':(_0x38fe1c[_0xcd13(0x3da)](_0x554ecd,null)||_0x38fe1c[_0xcd13(0x3db)](_0x554ecd,void 0x0)?void 0x0:_0x554ecd['email'])||null,'id':null};_0x38fe1c['Bspap'](_0xdddc3d,_0x158010),_0x38fe1c[_0xcd13(0x3dc)](_0x77311d,_0x2aa639),console[_0xcd13(0x13e)](_0x38fe1c['uMnpH'],_0x158010),await new Promise(_0x3a54b0=>setTimeout(()=>_0x3a54b0(),0xc8));}else _0x391630['log'](_0x38fe1c[_0xcd13(0x3dd)]),_0x38fe1c[_0xcd13(0x131)](_0x32f654,_0x38fe1c[_0xcd13(0x361)]),_0x38fe1c['MmIuU'](_0x10ed55,_0x38fe1c[_0xcd13(0x3de)]),_0x38fe1c[_0xcd13(0x1bb)](_0xcf8fdf,!![]);}const _0xb5d713=_0x38fe1c['XnXqF'](_0x36231e,{'username':_0x4b5df2||(_0x38fe1c[_0xcd13(0x319)](_0x554ecd,null)||_0x38fe1c['vUCVy'](_0x554ecd,void 0x0)||_0x38fe1c['LTDcX'](_0x1aac98=_0x554ecd[_0xcd13(0x206)],null)||_0x38fe1c['JDKBd'](_0x1aac98,void 0x0)?void 0x0:_0x1aac98[_0xcd13(0x1ab)]('@')[0x0])||(_0x38fe1c['YoGPP'](_0x554ecd,null)||_0x554ecd===void 0x0?void 0x0:_0x554ecd[_0xcd13(0x1ae)])||_0x38fe1c['LEGqC'],'email':(_0x38fe1c[_0xcd13(0x372)](_0x554ecd,null)||_0x38fe1c[_0xcd13(0x3df)](_0x554ecd,void 0x0)?void 0x0:_0x554ecd[_0xcd13(0x206)])||null,'id':null});if(!_0x19ce9d){console[_0xcd13(0x164)](_0xcd13(0x3e0));throw new Error(_0x38fe1c[_0xcd13(0x370)]);}console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x3e1)]),console[_0xcd13(0x13e)](_0x38fe1c['osHtZ'],_0xb5d713),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x3e2)],!!_0x19ce9d),console['log'](_0xcd13(0x3e3)),console['log'](_0x38fe1c[_0xcd13(0x3e4)],Platform['OS']),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x3e5)]),_0x38fe1c[_0xcd13(0x24d)](_0x2c54c4,_0x38fe1c[_0xcd13(0x3e6)]),_0x38fe1c[_0xcd13(0x2c9)](_0x444384,0x5),_0x1f4bf0[_0xcd13(0x186)]=_0x38fe1c['wqEkI'](io,API_CONFIG[_0xcd13(0x2aa)],{'transports':[_0x38fe1c[_0xcd13(0x3e7)],_0xcd13(0x3e8)],'autoConnect':![],'timeout':0x3a98,'reconnection':!![],'reconnectionAttempts':0x3,'reconnectionDelay':0x3e8,'forceNew':!![]}),console['log'](_0x38fe1c[_0xcd13(0x3e9)],{'connected':_0x1f4bf0[_0xcd13(0x186)][_0xcd13(0x188)],'id':_0x1f4bf0[_0xcd13(0x186)]['id'],'disconnected':_0x1f4bf0[_0xcd13(0x186)]['disconnected']}),_0x1f4bf0[_0xcd13(0x186)]['on'](_0xcd13(0x9),()=>{const _0x11b4c8={'UYHVW':function(_0x589af6,_0x553aa8){return _0x38fe1c[_0xcd13(0x3ea)](_0x589af6,_0x553aa8);},'untZL':function(_0x54c001,_0x58e87c){return _0x38fe1c[_0xcd13(0x29a)](_0x54c001,_0x58e87c);}};if(_0x38fe1c[_0xcd13(0x3eb)]===_0xcd13(0x3ec))_0xa165eb[_0xcd13(0x3ed)](_0x13b5ab,_0x25e588[_0xcd13(0x186)]),_0x44c4b7[_0xcd13(0x186)]=null;else{var _0x6bbecd,_0x128898,_0x2a4bcc,_0x5c43e7;console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x3ee)]),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x3ef)],{'id':(_0x6bbecd=_0x1f4bf0[_0xcd13(0x186)])===null||_0x38fe1c['dFHbF'](_0x6bbecd,void 0x0)?void 0x0:_0x6bbecd['id'],'connected':_0x38fe1c[_0xcd13(0x3f0)](_0x128898=_0x1f4bf0['current'],null)||_0x38fe1c['cvzAl'](_0x128898,void 0x0)?void 0x0:_0x128898[_0xcd13(0x188)],'transport':_0x38fe1c['Qzpee'](_0x2a4bcc=_0x1f4bf0['current'],null)||_0x38fe1c[_0xcd13(0x2d0)](_0x2a4bcc,void 0x0)||_0x38fe1c[_0xcd13(0x319)](_0x2a4bcc=_0x2a4bcc['io'],null)||_0x38fe1c['mSzfD'](_0x2a4bcc,void 0x0)||_0x38fe1c[_0xcd13(0x3f1)](_0x2a4bcc=_0x2a4bcc[_0xcd13(0x3cd)],null)||_0x2a4bcc===void 0x0||_0x38fe1c[_0xcd13(0x3da)](_0x2a4bcc=_0x2a4bcc['transport'],null)||_0x2a4bcc===void 0x0?void 0x0:_0x2a4bcc[_0xcd13(0x1ae)]}),_0x38fe1c[_0xcd13(0x30c)](_0x4506c7,!![]),_0x2c54c4(_0xcd13(0x3f2)),_0x38fe1c[_0xcd13(0x3f3)](_0x444384,0xa);const _0x352053=_0x38fe1c['wADPo'](_0x5c43e7=_0x1f4bf0[_0xcd13(0x186)],null)||_0x38fe1c[_0xcd13(0x3f4)](_0x5c43e7,void 0x0)?void 0x0:_0x5c43e7['id'];console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x3f5)],_0x352053),_0x352053?(console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x3f6)],_0x19ce9d?_0x19ce9d[_0xcd13(0x2b4)](0x0,0x14)+_0xcd13(0x278):_0x38fe1c[_0xcd13(0x375)]),console[_0xcd13(0x13e)](_0x38fe1c['UZVIr']),_0x38fe1c[_0xcd13(0x3f7)](_0x2c54c4,_0x38fe1c[_0xcd13(0x3f8)])):_0x38fe1c[_0xcd13(0x3d7)](_0xcd13(0x3f9),_0xcd13(0x3fa))?_0x11b4c8[_0xcd13(0x3fb)](_0x5af695,_0x41da05)&&_0x11b4c8[_0xcd13(0x3fc)](_0x2b5deb,_0x42d3a2):(console['error'](_0x38fe1c['Hlsxw']),_0x38fe1c['gqxEp'](_0x2c54c4,_0x38fe1c[_0xcd13(0x3b2)]),_0x75e131(!![]),_0x38fe1c[_0xcd13(0x3fd)](_0x1e105d));}}),_0x1f4bf0['current']['on'](_0x38fe1c[_0xcd13(0x3fe)],_0x1bb75d=>{if(_0xa165eb[_0xcd13(0x3ff)](_0xa165eb[_0xcd13(0x400)],_0xa165eb['ADfTO']))_0x4d5ed7[_0xcd13(0x164)](_0xa165eb[_0xcd13(0x401)]),_0xa165eb[_0xcd13(0x402)](_0x62eba3,null)||_0xa165eb[_0xcd13(0x403)](_0x4ab698,void 0x0)||_0xa165eb['TiRge'](_0x5864b6,_0x368f4b[_0xcd13(0x2aa)],_0xcd13(0x60),{'email':(_0xa165eb[_0xcd13(0x403)](_0x347214,null)||_0x57df41===void 0x0?void 0x0:_0x3e2da9[_0xcd13(0x206)])||'',..._0x4e73d4});else{var _0x485445;console[_0xcd13(0x13e)](_0xa165eb['kWPGB'],_0x1bb75d),console[_0xcd13(0x13e)](_0xa165eb['WXKiJ'],{'reason':_0x1bb75d,'wasConnected':_0xa24eb7,'socketId':_0xa165eb[_0xcd13(0x403)](_0x485445=_0x1f4bf0[_0xcd13(0x186)],null)||_0x485445===void 0x0?void 0x0:_0x485445['id']}),_0xa165eb[_0xcd13(0x404)](_0x4506c7,![]);}}),_0x1f4bf0['current']['on'](_0xcd13(0x405),_0x18c7b2=>{console[_0xcd13(0x13e)](_0xa165eb[_0xcd13(0x406)],_0x18c7b2,_0xa165eb[_0xcd13(0x407)]),_0xa165eb[_0xcd13(0x3ed)](_0x4506c7,!![]);}),_0x1f4bf0['current']['on'](_0x38fe1c['MKUij'],_0x171a7b=>{const _0xcdbc08={'qtWLS':function(_0x19f86c,_0x1583a1){return _0xa165eb['kGRSE'](_0x19f86c,_0x1583a1);}};_0xa165eb['hjQro'](_0xa165eb[_0xcd13(0x408)],_0xcd13(0x409))?(_0xcdbc08[_0xcd13(0x40a)](_0x3e7ec8,_0x3b9b7f=>({..._0x3b9b7f,[_0x12fbba]:!_0x3b9b7f[_0x1cea32]})),_0xcdbc08[_0xcd13(0x40a)](_0x51e881,_0x474295=>{const _0x3d232e={..._0x474295};return delete _0x3d232e[_0x112070],_0x3d232e;})):(console['log'](_0xa165eb['oPtYE'],_0x171a7b),_0xa165eb[_0xcd13(0x3ed)](_0x2c54c4,'Reconnecting...\x20('+_0x171a7b+'/3)'));}),_0x1f4bf0[_0xcd13(0x186)]['on'](_0x38fe1c[_0xcd13(0x40b)],_0x52240b=>{if('iJBVf'!=='iJBVf'){var _0x14cf53,_0x11d3b8,_0x3834c5,_0x4b5181;_0x40890a[_0xcd13(0x13e)](_0xa165eb[_0xcd13(0x40c)],{'connected':_0xa165eb[_0xcd13(0x40d)](_0x14cf53=_0xdc6d43['current'],null)||_0xa165eb[_0xcd13(0x40e)](_0x14cf53,void 0x0)?void 0x0:_0x14cf53[_0xcd13(0x188)],'disconnected':(_0x11d3b8=_0x2cc2e2[_0xcd13(0x186)])===null||_0xa165eb[_0xcd13(0x40d)](_0x11d3b8,void 0x0)?void 0x0:_0x11d3b8[_0xcd13(0x2a)],'id':_0xa165eb[_0xcd13(0x40d)](_0x3834c5=_0x3a30b7[_0xcd13(0x186)],null)||_0xa165eb[_0xcd13(0x40f)](_0x3834c5,void 0x0)?void 0x0:_0x3834c5['id'],'engineConnected':_0xa165eb[_0xcd13(0x403)](_0x4b5181=_0xa3573f[_0xcd13(0x186)],null)||_0xa165eb[_0xcd13(0x40d)](_0x4b5181,void 0x0)||_0xa165eb[_0xcd13(0x40d)](_0x4b5181=_0x4b5181['io'],null)||_0xa165eb[_0xcd13(0x410)](_0x4b5181,void 0x0)||_0xa165eb[_0xcd13(0x411)](_0x4b5181=_0x4b5181['engine'],null)||_0x4b5181===void 0x0?void 0x0:_0x4b5181[_0xcd13(0x3cf)]});}else console[_0xcd13(0x164)](_0x38fe1c['GsfDu'],_0x52240b);}),_0x1f4bf0[_0xcd13(0x186)]['on'](_0xcd13(0x412),()=>{_0xa165eb[_0xcd13(0x413)]===_0xa165eb[_0xcd13(0x414)]?_0x2f81fd&&_0x4c2514&&(_0x1d4bb2===_0xa165eb['uxTGh']||_0x814a96===_0xa165eb['JpTMl'])&&(_0x2e1a72[_0xcd13(0x13e)](_0xa165eb['YzYMd']),_0x1e9bfd['log'](_0xa165eb[_0xcd13(0x415)],_0x57e082,_0xa165eb[_0xcd13(0x416)]),_0xa165eb[_0xcd13(0x3ed)](_0x5cde18,_0xcd13(0x6))):(console[_0xcd13(0x164)](_0xa165eb[_0xcd13(0x417)]),_0xa165eb[_0xcd13(0x404)](_0x2c54c4,_0xa165eb[_0xcd13(0x418)]),_0xa165eb[_0xcd13(0x419)](_0x75e131,!![]),_0xa165eb[_0xcd13(0x41a)](_0x1e105d));}),_0x1f4bf0[_0xcd13(0x186)]['on'](_0x38fe1c['RiGxn'],_0x592c5f=>{if(_0xcd13(0x3b1)!==_0xa165eb[_0xcd13(0x41b)]){_0x2571d0[_0xcd13(0x164)](_0xcd13(0x3e0));throw new _0x4cbafa(_0xcd13(0x3e));}else console[_0xcd13(0x164)](_0xa165eb[_0xcd13(0x41c)],_0x592c5f),console['error'](_0xa165eb[_0xcd13(0x41d)],{'message':_0x592c5f[_0xcd13(0x1ad)],'name':_0x592c5f['name'],'stack':_0x592c5f[_0xcd13(0x1af)],'errorObject':_0x592c5f}),_0xa165eb[_0xcd13(0x419)](_0x2c54c4,_0xa165eb[_0xcd13(0x41e)]),_0xa165eb[_0xcd13(0x419)](_0x75e131,!![]),_0xa165eb[_0xcd13(0x41a)](_0x1e105d);}),_0x1f4bf0[_0xcd13(0x186)]['on'](_0x38fe1c[_0xcd13(0x41f)],_0x2ee938=>{console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x420)],_0x2ee938),_0x38fe1c[_0xcd13(0x421)](_0x2c54c4,_0x38fe1c['XVbkk']),_0x38fe1c[_0xcd13(0x422)](_0x444384,0x3c);}),_0x1f4bf0[_0xcd13(0x186)]['on'](_0xcd13(0x423),_0x147d5d=>{const _0x11d337=_0x38fe1c[_0xcd13(0x424)]['split']('|');let _0x39d4a2=0x0;while(!![]){switch(_0x11d337[_0x39d4a2++]){case'0':_0x444384(0x50);continue;case'1':_0x2c54c4(_0x38fe1c['OrFNj']);continue;case'2':_0x38fe1c[_0xcd13(0x425)](_0x4b8bf2,_0x147d5d[_0xcd13(0x35e)]);continue;case'3':console['log'](_0x38fe1c[_0xcd13(0x34d)],_0x147d5d);continue;case'4':_0x194155(_0x147d5d[_0xcd13(0x35d)]);continue;}break;}}),_0x1f4bf0[_0xcd13(0x186)]['on'](_0xcd13(0x426),_0x251013=>{const _0xe7faee={'BdIOm':_0xcd13(0x104)};if(_0x38fe1c['TpvqX']!==_0x38fe1c[_0xcd13(0x427)])_0x3c391e=_0xe7faee[_0xcd13(0x428)];else{console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x429)],_0x251013);if(_0x251013[_0xcd13(0x42a)]){console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x42b)],_0x251013[_0xcd13(0x1ad)]),console[_0xcd13(0x13e)](_0xcd13(0x75),_0x251013['storage']),console['log'](_0x38fe1c[_0xcd13(0x1d5)],_0x251013['encryption']),console['log'](_0x38fe1c[_0xcd13(0x42c)],_0x251013[_0xcd13(0x1e4)]);_0x251013['databases']&&Array[_0xcd13(0x28d)](_0x251013[_0xcd13(0x1e5)])&&console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x2da)],_0x251013[_0xcd13(0x1e5)][_0xcd13(0x2e4)](',\x20'));if(_0x251013['testing']){if(_0x38fe1c[_0xcd13(0x42d)]!==_0x38fe1c['VYqgU'])console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x2db)]);else return _0x1e0e03[_0xcd13(0x13e)](_0xa165eb[_0xcd13(0x42e)],_0xc682d['substring'](0x0,0x14)+_0xcd13(0x278)),_0x794e3e[_0xcd13(0x13e)](_0xa165eb[_0xcd13(0x42f)],_0x22f8fa['length']),_0x30b351;}}_0x38fe1c[_0xcd13(0x430)](_0x1d0f1,!![]),_0x38fe1c['DpoJK'](_0x2c54c4,_0x38fe1c[_0xcd13(0x431)]),_0x38fe1c[_0xcd13(0x432)](_0x444384,0x64),_0x38fe1c['erHYB'](_0x1e105d);}}),_0x1f4bf0[_0xcd13(0x186)]['on'](_0x38fe1c[_0xcd13(0x433)],_0x6d1661=>{console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x434)],_0x6d1661);if(_0x6d1661[_0xcd13(0x164)]&&_0x6d1661['error'][_0xcd13(0x15a)](_0xcd13(0x435))){console[_0xcd13(0x13e)](_0x38fe1c['NyxRe']),_0x9ddd5(null),_0x38fe1c[_0xcd13(0x436)](_0x6f85a3,![]),_0x2c54c4(_0x38fe1c[_0xcd13(0x437)]),_0x38fe1c[_0xcd13(0x438)](setTimeout,async()=>{try{console['log'](_0xcd13(0x439));const _0x50762e=await _0xa165eb['fYriU'](refreshYouTubeTokens);if(_0x50762e){if(_0xa165eb[_0xcd13(0x43a)](_0xa165eb[_0xcd13(0x43b)],_0xa165eb[_0xcd13(0x43c)]))console[_0xcd13(0x13e)](_0xa165eb['NeVkk']),_0xa165eb[_0xcd13(0x43d)](_0x2c54c4,_0xa165eb[_0xcd13(0x43e)]),_0xa165eb[_0xcd13(0x43f)](_0x75e131,!![]);else{const _0x44afc2={..._0x4fa53c};return delete _0x44afc2[_0x589ffd],_0x44afc2;}}else{console[_0xcd13(0x13e)](_0xa165eb['EWsuo']),_0xa165eb['JWyvy'](_0x2c54c4,_0xa165eb[_0xcd13(0x440)]);try{await _0xa165eb[_0xcd13(0x43d)](_0x515741,_0xa165eb[_0xcd13(0x441)]),console[_0xcd13(0x13e)](_0xcd13(0x442)),_0x2c54c4(_0xcd13(0x443)),_0xa165eb[_0xcd13(0x419)](_0x75e131,!![]);}catch(_0x443e01){console['error'](_0xa165eb[_0xcd13(0x444)],_0x443e01),_0x2c54c4(_0xa165eb[_0xcd13(0x445)]),_0x75e131(!![]),_0xa165eb[_0xcd13(0x446)](_0x1e105d);}}}catch(_0x11411d){console[_0xcd13(0x164)](_0xa165eb[_0xcd13(0x447)],_0x11411d),_0xa165eb[_0xcd13(0x448)](_0x2c54c4,_0xa165eb['UYorp']),_0xa165eb[_0xcd13(0x449)](_0x75e131,!![]),_0x1e105d();}},0x3e8);return;}if(_0x6d1661['requiresConnections']||_0x38fe1c[_0xcd13(0x44a)](_0x6d1661[_0xcd13(0x7)],_0xcd13(0x6d))){if(_0x38fe1c[_0xcd13(0x44b)](_0x38fe1c[_0xcd13(0x44c)],_0x38fe1c[_0xcd13(0x44d)])){_0x3d8dd0[_0xcd13(0x164)](_0xa165eb[_0xcd13(0x44e)],_0x457f72),_0xa165eb[_0xcd13(0x43d)](_0xa725c1,'');throw _0x5a2e5f;}else{const _0x227c03=_0x38fe1c['raOUb']['split']('|');let _0x154d9d=0x0;while(!![]){switch(_0x227c03[_0x154d9d++]){case'0':_0x38fe1c[_0xcd13(0x44f)](_0x9ddd5,_0xcd13(0x6d));continue;case'1':_0x38fe1c['PquyD'](_0x75e131,!![]);continue;case'2':_0x38fe1c[_0xcd13(0x450)](_0x5c6b2a,_0x6d1661);continue;case'3':_0x38fe1c[_0xcd13(0x2bd)](_0x6f85a3,!![]);continue;case'4':_0x38fe1c['YDGOe'](_0x2c54c4,_0x38fe1c[_0xcd13(0x2d7)]);continue;case'5':console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x451)]);continue;case'6':return;case'7':_0x38fe1c[_0xcd13(0x452)](_0x1e105d);continue;}break;}}}if(_0x6d1661[_0xcd13(0x7)]===_0xcd13(0x453)){const _0x1d5dab=_0x38fe1c['XbVBT'][_0xcd13(0x1ab)]('|');let _0x295d6c=0x0;while(!![]){switch(_0x1d5dab[_0x295d6c++]){case'0':_0x5c6b2a(_0x6d1661['details']);continue;case'1':_0x38fe1c[_0xcd13(0x454)](_0x1e105d);continue;case'2':console[_0xcd13(0x13e)](_0x38fe1c['ZXhSB']);continue;case'3':_0x38fe1c[_0xcd13(0x3a4)](_0x9ddd5,_0x38fe1c['MrdNi']);continue;case'4':_0x38fe1c['epAlg'](_0x75e131,!![]);continue;case'5':_0x38fe1c[_0xcd13(0x1bb)](_0x2c54c4,_0x38fe1c[_0xcd13(0x455)]);continue;case'6':return;case'7':_0x6f85a3(!![]);continue;}break;}}if(_0x38fe1c[_0xcd13(0x456)](_0x6d1661[_0xcd13(0x7)],_0xcd13(0xc6))){const _0x5d00a6=_0x38fe1c[_0xcd13(0x457)][_0xcd13(0x1ab)]('|');let _0x388226=0x0;while(!![]){switch(_0x5d00a6[_0x388226++]){case'0':_0x38fe1c[_0xcd13(0x232)](_0x5c6b2a,_0x6d1661[_0xcd13(0x327)]);continue;case'1':return;case'2':_0x38fe1c[_0xcd13(0x458)](_0x9ddd5,_0x38fe1c['qUcHr']);continue;case'3':console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x30b)]);continue;case'4':_0x6f85a3(!![]);continue;case'5':_0x2c54c4(_0x38fe1c[_0xcd13(0x459)]);continue;}break;}}if(_0x6d1661[_0xcd13(0x164)])_0x38fe1c['kgqtO'](_0x38fe1c[_0xcd13(0x45a)],_0xcd13(0x45b))?_0x485e2d['progress']&&(_0x5dc6c3(_0x5285fb[_0xcd13(0x28f)]||_0xa165eb[_0xcd13(0x45c)]),_0x1a4806[_0xcd13(0x13e)]('📊\x20[BACKGROUND]\x20Training\x20progress:',_0x1566d1[_0xcd13(0x45d)],'%')):(console['error'](_0x38fe1c['ruAgt'],_0x6d1661[_0xcd13(0x164)]),_0x38fe1c[_0xcd13(0x45e)](_0x2c54c4,_0xcd13(0x337)+_0x6d1661[_0xcd13(0x164)]),_0x38fe1c[_0xcd13(0x1bc)](_0x75e131,!![]),_0x1e105d());else _0x6d1661['progress']&&(_0x38fe1c[_0xcd13(0x13b)](_0x444384,_0x6d1661['progress']),_0x38fe1c['qdsKp'](_0x2c54c4,_0x6d1661[_0xcd13(0x28f)]||_0x38fe1c[_0xcd13(0x45f)]),_0x537c8b&&_0x38fe1c[_0xcd13(0x1f8)](_0x6d1661['progress'],0x1e)&&_0x38fe1c[_0xcd13(0x1d1)](_0x6f85a3,![]));}),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x460)]),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x461)],{'url':API_CONFIG['BASE_URL'],'transports':[_0x38fe1c['QMeVe']],'autoConnect':![],'timeout':0x2710,'reconnection':![]}),_0x1f4bf0[_0xcd13(0x186)][_0xcd13(0x9)](),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x462)]),_0x38fe1c['ZlLHo'](setTimeout,()=>{var _0x248bc8,_0x266eab,_0xd95abb,_0x12e6d2;console[_0xcd13(0x13e)](_0xa165eb[_0xcd13(0x40c)],{'connected':_0xa165eb[_0xcd13(0x463)](_0x248bc8=_0x1f4bf0[_0xcd13(0x186)],null)||_0xa165eb[_0xcd13(0x402)](_0x248bc8,void 0x0)?void 0x0:_0x248bc8[_0xcd13(0x188)],'disconnected':_0xa165eb[_0xcd13(0x464)](_0x266eab=_0x1f4bf0['current'],null)||_0xa165eb['uICpe'](_0x266eab,void 0x0)?void 0x0:_0x266eab[_0xcd13(0x2a)],'id':(_0xd95abb=_0x1f4bf0['current'])===null||_0xa165eb[_0xcd13(0x40d)](_0xd95abb,void 0x0)?void 0x0:_0xd95abb['id'],'engineConnected':_0xa165eb[_0xcd13(0x465)](_0x12e6d2=_0x1f4bf0[_0xcd13(0x186)],null)||_0xa165eb['wyQlv'](_0x12e6d2,void 0x0)||(_0x12e6d2=_0x12e6d2['io'])===null||_0x12e6d2===void 0x0||(_0x12e6d2=_0x12e6d2[_0xcd13(0x3cd)])===null||_0xa165eb[_0xcd13(0x410)](_0x12e6d2,void 0x0)?void 0x0:_0x12e6d2[_0xcd13(0x3cf)]});},0x3e8),setTimeout(()=>{if(_0xa165eb[_0xcd13(0x466)](_0xcd13(0xde),_0xa165eb[_0xcd13(0x467)])){var _0xf6477e,_0x239f48,_0x1e03e0,_0x54d256;console[_0xcd13(0x13e)](_0xa165eb[_0xcd13(0x468)],{'connected':_0xa165eb[_0xcd13(0x469)](_0xf6477e=_0x1f4bf0['current'],null)||_0xf6477e===void 0x0?void 0x0:_0xf6477e[_0xcd13(0x188)],'disconnected':_0xa165eb['BOWIm'](_0x239f48=_0x1f4bf0['current'],null)||_0xa165eb[_0xcd13(0x46a)](_0x239f48,void 0x0)?void 0x0:_0x239f48[_0xcd13(0x2a)],'id':_0xa165eb[_0xcd13(0x46b)](_0x1e03e0=_0x1f4bf0[_0xcd13(0x186)],null)||_0xa165eb[_0xcd13(0x46c)](_0x1e03e0,void 0x0)?void 0x0:_0x1e03e0['id'],'engineConnected':_0xa165eb[_0xcd13(0x403)](_0x54d256=_0x1f4bf0[_0xcd13(0x186)],null)||_0x54d256===void 0x0||_0xa165eb[_0xcd13(0x40e)](_0x54d256=_0x54d256['io'],null)||_0xa165eb[_0xcd13(0x46d)](_0x54d256,void 0x0)||(_0x54d256=_0x54d256[_0xcd13(0x3cd)])===null||_0x54d256===void 0x0?void 0x0:_0x54d256[_0xcd13(0x3cf)]});}else{_0x13afe0['error'](_0xa165eb[_0xcd13(0x46e)],_0x27edeb);throw _0x4c80d8;}},0x1388),_0x38fe1c[_0xcd13(0x46f)](setTimeout,()=>{const _0x2c0a4c={'UHdar':_0x38fe1c['Btrde'],'nbFdS':function(_0x284984,_0x26dd86){return _0x38fe1c[_0xcd13(0x3b8)](_0x284984,_0x26dd86);},'kGUXU':_0x38fe1c['PQbsS'],'Nbabr':_0x38fe1c[_0xcd13(0x147)]};if(_0x38fe1c['ZvkOH'](_0x38fe1c[_0xcd13(0x470)],_0x38fe1c[_0xcd13(0x470)])){if(!_0xa24eb7&&_0x1f4bf0[_0xcd13(0x186)]&&!_0x1f4bf0[_0xcd13(0x186)][_0xcd13(0x188)]){console[_0xcd13(0x164)](_0x38fe1c['vDfmg']),console[_0xcd13(0x164)](_0xcd13(0x16),{'connected':_0x1f4bf0[_0xcd13(0x186)][_0xcd13(0x188)],'disconnected':_0x1f4bf0[_0xcd13(0x186)][_0xcd13(0x2a)],'id':_0x1f4bf0[_0xcd13(0x186)]['id']}),_0x38fe1c['kcErb'](_0x2c54c4,_0xcd13(0x471)),_0x38fe1c['eKCgs'](_0x75e131,!![]),_0x38fe1c['yGAYq'](_0x1e105d);if(_0x1f4bf0[_0xcd13(0x186)]){if(_0x38fe1c[_0xcd13(0x472)]!==_0x38fe1c[_0xcd13(0x473)])_0x1f4bf0[_0xcd13(0x186)]['disconnect'](),_0x1f4bf0[_0xcd13(0x186)]=null;else{_0x3ed61e['log'](_0x2c0a4c['UHdar']),_0x2c0a4c[_0xcd13(0x474)](_0x5d68d0,_0x2c0a4c[_0xcd13(0x475)]),_0x5f213c(_0x2c0a4c[_0xcd13(0x476)]),_0x2c0a4c[_0xcd13(0x474)](_0x4b140e,![]);return;}}}}else throw new _0x3d71af(_0xa165eb[_0xcd13(0x477)]);},0x4e20);}}catch(_0x15a1d2){_0x38fe1c[_0xcd13(0x478)]===_0x38fe1c[_0xcd13(0x478)]?(console[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x479)],_0x15a1d2),_0x2c54c4(_0x38fe1c['ntytw']),_0x38fe1c['OXExp'](_0x75e131,!![]),_0x1e105d()):_0x10f174[_0xcd13(0x164)](_0xcd13(0x34b),_0xd5b44a);}},_0x2a86a7=_0x4a0846=>{const _0x3b67cf={'VLCMR':_0x38fe1c[_0xcd13(0x47a)],'jVqbD':_0x38fe1c[_0xcd13(0x47b)],'ELArj':function(_0x17289d,_0x26c7a9){return _0x38fe1c[_0xcd13(0x22d)](_0x17289d,_0x26c7a9);},'pGbYY':_0x38fe1c['buKaS'],'VfbOA':_0x38fe1c[_0xcd13(0x311)],'VMyng':_0x38fe1c[_0xcd13(0x1d5)],'QwdkS':_0x38fe1c[_0xcd13(0x1d3)],'MhcTH':_0x38fe1c[_0xcd13(0x313)],'SyeMS':_0x38fe1c[_0xcd13(0x47c)],'axsZs':_0x38fe1c[_0xcd13(0x310)],'DmHit':_0x38fe1c[_0xcd13(0x312)],'RePXa':_0x38fe1c[_0xcd13(0x429)],'aNvcr':_0x38fe1c[_0xcd13(0x2da)],'JKPQb':_0x38fe1c[_0xcd13(0x42c)],'hHDbN':_0x38fe1c['qBFkJ'],'eutmY':function(_0x3c23e0){return _0x38fe1c['scfXG'](_0x3c23e0);},'Stgwp':_0x38fe1c['fvXVF'],'tIynz':function(_0x40c841){return _0x38fe1c[_0xcd13(0x452)](_0x40c841);},'JrdFX':_0xcd13(0x6e),'XXGzo':_0x38fe1c['cTqBa'],'QoYVQ':function(_0x3ec55f,_0xea921e){return _0x38fe1c[_0xcd13(0x47d)](_0x3ec55f,_0xea921e);}};if(_0x1079d1)return _0x38fe1c['Ziyat'];if(_0x47303c)return _0x38fe1c[_0xcd13(0x47e)];let _0x24e2c6='';if(_0x38fe1c[_0xcd13(0x47f)](_0x4a0846,0x14))_0x24e2c6=_0xcd13(0x480);else{if(_0x38fe1c[_0xcd13(0x481)](_0x4a0846,0x28)){if(_0xcd13(0xfa)!==_0x38fe1c['GAYPp']){_0x3440ed[_0xcd13(0x13e)](_0x3b67cf['VLCMR'],_0xef08ac['message']),_0x376461[_0xcd13(0x13e)](_0x3b67cf['jVqbD'],_0x130a14['features']),_0x3b67cf[_0xcd13(0x482)](_0x75967b,!![]);if(_0x15aa3c[_0xcd13(0x1dc)]){const _0x3910ef=_0x3b67cf[_0xcd13(0x483)][_0xcd13(0x1ab)]('|');let _0x1ea2c7=0x0;while(!![]){switch(_0x3910ef[_0x1ea2c7++]){case'0':_0x4c0b9f['log'](_0x3b67cf[_0xcd13(0x484)],_0x924e2c['features']['storage']);continue;case'1':_0x406219[_0xcd13(0x13e)](_0x3b67cf[_0xcd13(0x485)],_0x509ed7[_0xcd13(0x1dc)][_0xcd13(0x1e1)]);continue;case'2':_0x43c8c9[_0xcd13(0x13e)](_0x3b67cf['QwdkS'],_0x5d6cf1[_0xcd13(0x1dc)]['type']);continue;case'3':_0x54ecc4[_0xcd13(0x13e)](_0x3b67cf[_0xcd13(0x486)],_0x2718d9[_0xcd13(0x1dc)][_0xcd13(0x1e5)]);continue;case'4':_0x196997[_0xcd13(0x13e)](_0x3b67cf['SyeMS'],_0x6f1420[_0xcd13(0x1dc)]['queryScores']);continue;case'5':_0x4264bd[_0xcd13(0x13e)](_0x3b67cf['axsZs'],_0x161547[_0xcd13(0x1dc)][_0xcd13(0x1e4)]);continue;case'6':_0x29e685[_0xcd13(0x13e)](_0x3b67cf['DmHit'],_0x20911b[_0xcd13(0x1dc)][_0xcd13(0x33d)]);continue;}break;}}_0x3b67cf[_0xcd13(0x482)](_0xd3ff5a,_0xcd13(0x487)),_0x3b67cf['ELArj'](_0x3a538f,0x19);}else _0x24e2c6=_0x38fe1c[_0xcd13(0x488)];}else{if(_0x4a0846<0x3c){if(_0xcd13(0xfc)===_0x38fe1c[_0xcd13(0x489)])_0x24e2c6=_0x38fe1c[_0xcd13(0x48a)];else{_0x4635ad['log'](_0x3b67cf[_0xcd13(0x48b)],_0x45767b);if(_0x5d3bab[_0xcd13(0x42a)]){const _0xd19e7f=_0xcd13(0x48c)[_0xcd13(0x1ab)]('|');let _0x2f4869=0x0;while(!![]){switch(_0xd19e7f[_0x2f4869++]){case'0':_0x132ab8[_0xcd13(0x13e)](_0x3b67cf['VMyng'],_0x46be3a[_0xcd13(0x1e1)]);continue;case'1':_0x299b07['log']('✅\x20Training\x20completed:',_0x380b00[_0xcd13(0x1ad)]);continue;case'2':_0x5b1697[_0xcd13(0x1e5)]&&_0x2a8078[_0xcd13(0x28d)](_0x2aed4e['databases'])&&_0x1c225a[_0xcd13(0x13e)](_0x3b67cf[_0xcd13(0x48d)],_0x29c8fc['databases'][_0xcd13(0x2e4)](',\x20'));continue;case'3':_0x4ac62f[_0xcd13(0x2e5)]&&_0x592ce1[_0xcd13(0x13e)]('🧪\x20Testing\x20mode\x20enabled');continue;case'4':_0x58ac52[_0xcd13(0x13e)](_0x3b67cf[_0xcd13(0x48e)],_0x1287fd['inference']);continue;case'5':_0x3223b0[_0xcd13(0x13e)](_0x3b67cf[_0xcd13(0x484)],_0x115002[_0xcd13(0x2e8)]);continue;}break;}}_0x3b67cf[_0xcd13(0x482)](_0x35562,!![]),_0x3b67cf[_0xcd13(0x482)](_0x2eccdb,_0x3b67cf[_0xcd13(0x48f)]),_0xe044e9(0x64),_0x3b67cf[_0xcd13(0x490)](_0x11ffa3);}}else{if(_0x38fe1c[_0xcd13(0x47f)](_0x4a0846,0x50))_0x38fe1c[_0xcd13(0x3d9)](_0x38fe1c[_0xcd13(0x491)],_0x38fe1c['YgNmb'])?(_0x1a8024[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x364)],_0x56fdd9),_0x38fe1c[_0xcd13(0x430)](_0x1978b4,_0x38fe1c[_0xcd13(0x361)]),_0x38fe1c[_0xcd13(0x492)](_0x2c2491,_0x38fe1c[_0xcd13(0x367)]),_0x38fe1c[_0xcd13(0x493)](_0x143e0d,!![])):_0x24e2c6=_0x38fe1c['giDzX'];else{if(_0x4a0846<0x5f){if(_0x38fe1c[_0xcd13(0x494)](_0x38fe1c[_0xcd13(0x495)],_0x38fe1c['wLcVb'])){const _0x338da2=_0x3b67cf[_0xcd13(0x496)][_0xcd13(0x1ab)]('|');let _0x3b4eb3=0x0;while(!![]){switch(_0x338da2[_0x3b4eb3++]){case'0':_0x1a01cb(_0xcd13(0x6d));continue;case'1':_0x5c96f1(!![]);continue;case'2':return;case'3':_0x35425d(_0x284501);continue;case'4':_0x3b67cf['tIynz'](_0x365cb6);continue;case'5':_0x3b67cf[_0xcd13(0x482)](_0x23187a,!![]);continue;case'6':_0x3b67cf['ELArj'](_0x5e7132,_0x3b67cf['JrdFX']);continue;case'7':_0x14817e['log'](_0x3b67cf['XXGzo']);continue;}break;}}else _0x24e2c6=_0x38fe1c['XZwyC'];}else _0xcd13(0x497)===_0x38fe1c[_0xcd13(0x498)]?_0x3b67cf[_0xcd13(0x499)](_0x552502,_0x4fd2e1[_0xcd13(0x186)]):_0x24e2c6=_0x38fe1c[_0xcd13(0x49a)];}}}}return _0x38fe1c[_0xcd13(0x49b)](_0x24e2c6,_0x12fcb9);},_0x32ccca=async()=>{if(_0x38fe1c[_0xcd13(0x49c)](_0xcd13(0x49d),_0x38fe1c['nTNxY']))_0x172f3f[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x49e)]);else{console[_0xcd13(0x13e)](_0x38fe1c['HgLXG']);_0x1f4bf0['current']&&(console[_0xcd13(0x13e)](_0xcd13(0x49f)),_0x1f4bf0[_0xcd13(0x186)][_0xcd13(0xec)](),_0x1f4bf0[_0xcd13(0x186)]=null);clearTemporaryPin(),_0x42fac1['current']=!![];try{const _0x269b49=await getJWT();_0x269b49?_0x38fe1c['IzTic'](_0x38fe1c[_0xcd13(0x4a0)],'DSPpE')?_0x2483e7[_0xcd13(0x164)](_0xcd13(0x13),_0x4621c5):(console[_0xcd13(0x13e)](_0xcd13(0x4a1),_0x269b49[_0xcd13(0x2b4)](0x0,0x1e)+'...'),_0x38fe1c[_0xcd13(0x21b)](_0x108330,null)||_0x38fe1c[_0xcd13(0x4a2)](_0x108330,void 0x0)||_0x38fe1c['xqDFY'](_0x108330,API_CONFIG[_0xcd13(0x2aa)],_0x269b49,{'email':(_0x38fe1c[_0xcd13(0x1b9)](_0x36231e,null)||_0x38fe1c[_0xcd13(0x4a3)](_0x36231e,void 0x0)?void 0x0:_0x36231e['email'])||'',..._0x36231e})):(console[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x3a1)]),_0x38fe1c[_0xcd13(0x4a4)](_0x108330,null)||_0x108330===void 0x0||_0x38fe1c[_0xcd13(0x2d2)](_0x108330,API_CONFIG['BASE_URL'],_0x38fe1c['VElDx'],{'email':(_0x38fe1c[_0xcd13(0x4a5)](_0x36231e,null)||_0x38fe1c[_0xcd13(0x4a6)](_0x36231e,void 0x0)?void 0x0:_0x36231e[_0xcd13(0x206)])||'',..._0x36231e}));}catch(_0x309ba6){console['error'](_0x38fe1c[_0xcd13(0x4a7)],_0x309ba6),_0x108330===null||_0x38fe1c['FSdKv'](_0x108330,void 0x0)||_0x108330(API_CONFIG[_0xcd13(0x2aa)],_0x38fe1c[_0xcd13(0x4a8)],{'email':(_0x38fe1c[_0xcd13(0x3f4)](_0x36231e,null)||_0x36231e===void 0x0?void 0x0:_0x36231e[_0xcd13(0x206)])||'',..._0x36231e});}}},_0x1520cc=async()=>{if(_0x38fe1c[_0xcd13(0x4a9)]===_0x38fe1c[_0xcd13(0x4aa)]){var _0x1ff8a9;_0x360ee6[_0x558def]=_0x38fe1c[_0xcd13(0x17b)](_0x1ff8a9=_0x1dd03f[_0x4bae88],null)&&_0x38fe1c[_0xcd13(0x184)](_0x1ff8a9,void 0x0)&&_0x1ff8a9['connected']?_0x38fe1c[_0xcd13(0x4ab)]:_0xcd13(0x2a);}else try{const _0x5a4755=await _0x38fe1c[_0xcd13(0x2b0)](getJWT);if(_0x5a4755&&_0x38fe1c[_0xcd13(0x4ac)](_0x5a4755['trim']()[_0xcd13(0x20d)],0x14))return console['log'](_0x38fe1c[_0xcd13(0x3b3)],_0x5a4755[_0xcd13(0x2b4)](0x0,0x14)+_0xcd13(0x278)),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x3d5)],_0x5a4755[_0xcd13(0x20d)]),_0x5a4755;return console[_0xcd13(0x2c0)](_0x38fe1c[_0xcd13(0x4ad)]),console[_0xcd13(0x2c0)](_0x38fe1c[_0xcd13(0x4ae)]),console[_0xcd13(0x2c0)]('ℹ️\x20User\x20should\x20authenticate\x20first\x20via\x20Google/Apple/Email'),null;}catch(_0x2233c9){console[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x4af)],_0x2233c9);throw _0x2233c9;}},_0x429168=Object[_0xcd13(0x4b0)](_0x4502e1)[_0xcd13(0x4b1)](_0x4f6f87=>_0x4f6f87),_0x1f53c5=()=>{const _0x2f05bc={'EfhDN':function(_0x278098){return _0x38fe1c[_0xcd13(0x3d6)](_0x278098);}};_0x38fe1c[_0xcd13(0x3a2)](_0x38fe1c[_0xcd13(0x4b2)],_0xcd13(0x4b3))?(_0x2fad82[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x4b4)]),_0x4f8c18(_0x38fe1c['JqiTu']),_0x140ed6(!![]),_0x103fd3()):_0x429168&&(_0x38fe1c[_0xcd13(0x4b5)](triggerHaptic,HapticType['BUTTON_PRESS']),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x4b6)]),_0x21c386()[_0xcd13(0x2c5)](_0x342c54=>{_0x38fe1c[_0xcd13(0x341)](_0x38fe1c['huvoR'],_0x38fe1c[_0xcd13(0x4b7)])?(_0x4d7658(![]),!_0x27f533&&_0x2f05bc[_0xcd13(0x4b8)](_0x137e79)):console[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x355)],_0x342c54);}),_0x40952e(_0xcd13(0x9b)));},_0x21c386=_0x38fe1c[_0xcd13(0x4b9)](useCallback,async()=>{const _0x3c879a={'xHAfx':_0x38fe1c['aKeik'],'rxoDv':_0x38fe1c[_0xcd13(0x393)],'enWdo':_0xcd13(0x41),'MqhXT':_0x38fe1c['nTdUv'],'hWKHr':_0x38fe1c[_0xcd13(0x395)],'mHTWv':_0x38fe1c[_0xcd13(0x177)],'DAidy':function(_0x14829c,_0x13b4bf){return _0x14829c===_0x13b4bf;},'AqupM':_0x38fe1c['pprsW'],'wwkGF':_0x38fe1c[_0xcd13(0x4ba)],'cGYFL':function(_0x13aa99,_0x140288){return _0x38fe1c[_0xcd13(0x4bb)](_0x13aa99,_0x140288);},'SLVOh':function(_0x407a8e,_0x323aca){return _0x38fe1c[_0xcd13(0x4bc)](_0x407a8e,_0x323aca);},'ahNEl':_0x38fe1c[_0xcd13(0x4bd)],'nJOhm':function(_0x5a3197,_0x3126d4){return _0x5a3197(_0x3126d4);},'KXtHl':_0x38fe1c[_0xcd13(0x49e)],'ZnLVo':_0x38fe1c[_0xcd13(0x3bb)],'lSJIi':_0x38fe1c['Yftjd'],'yTJhH':function(_0x477d61,_0x4f8e65){return _0x38fe1c['RxWZU'](_0x477d61,_0x4f8e65);},'cmAPG':function(_0x49e73c){return _0x38fe1c[_0xcd13(0x2b2)](_0x49e73c);}};try{if(_0x38fe1c[_0xcd13(0x4be)]!==_0x38fe1c[_0xcd13(0x4bf)]){console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x4c0)]),_0x3bdd00(_0x38fe1c[_0xcd13(0x4c1)]);const _0x5d4f39=await _0x38fe1c[_0xcd13(0x4c2)](_0x1520cc);if(!_0x5d4f39)throw new Error(_0x38fe1c['nkWzW']);console['log'](_0x38fe1c[_0xcd13(0x4c3)],_0x5d4f39[_0xcd13(0x2b4)](0x0,0x14)+_0xcd13(0x278)),_0x38fe1c[_0xcd13(0x1a1)](_0x28917a,_0x5d4f39);if(!_0x36231e){var _0x4820f0;const _0x681509=await getOnairosUsername(),_0x54b997=_0x681509||(_0x38fe1c[_0xcd13(0x32b)](_0x554ecd,null)||_0x38fe1c[_0xcd13(0x319)](_0x554ecd,void 0x0)||(_0x4820f0=_0x554ecd[_0xcd13(0x206)])===null||_0x38fe1c[_0xcd13(0x4c4)](_0x4820f0,void 0x0)?void 0x0:_0x4820f0['split']('@')[0x0])||(_0x38fe1c[_0xcd13(0x4c5)](_0x554ecd,null)||_0x38fe1c[_0xcd13(0x4c6)](_0x554ecd,void 0x0)?void 0x0:_0x554ecd['name'])||_0x38fe1c[_0xcd13(0x377)],_0x4ac947={'username':_0x54b997,'email':(_0x554ecd===null||_0x554ecd===void 0x0?void 0x0:_0x554ecd['email'])||null,'id':null};_0xdddc3d(_0x4ac947),_0x38fe1c[_0xcd13(0x4c7)](_0x77311d,_0x54b997),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x4c8)],_0x4ac947);}console['log'](_0x38fe1c[_0xcd13(0x4c9)]),_0x3bdd00(_0xcd13(0x4ca));const _0xe798a7=_0x38fe1c[_0xcd13(0x4cb)](io,API_CONFIG[_0xcd13(0x2aa)],{'transports':[_0x38fe1c[_0xcd13(0x3e7)],_0x38fe1c[_0xcd13(0x4cc)]],'autoConnect':![],'timeout':0x3a98,'reconnection':!![],'reconnectionAttempts':0x3,'reconnectionDelay':0x3e8,'forceNew':!![]});_0xe798a7['on'](_0x38fe1c[_0xcd13(0x163)],async()=>{const _0x2430d9={'wantE':_0x3c879a['xHAfx'],'CdgWz':_0x3c879a[_0xcd13(0x4cd)],'ieSdJ':'🔐\x20[BACKGROUND]\x20PIN\x20validation\x20-\x20continuing\x20with\x20existing\x20training\x20session','RJSmS':_0x3c879a[_0xcd13(0x4ce)],'DWxjv':_0x3c879a['MqhXT'],'DCVEU':_0x3c879a[_0xcd13(0x4cf)],'tLzsz':_0xcd13(0xa1),'vZeyS':function(_0x219962,_0x3ea047){return _0x219962===_0x3ea047;},'ezgfy':_0x3c879a[_0xcd13(0x4d0)]};if(_0x3c879a[_0xcd13(0x4d1)](_0x3c879a[_0xcd13(0x4d2)],_0x3c879a[_0xcd13(0x4d2)])){console[_0xcd13(0x13e)](_0x3c879a[_0xcd13(0x4d3)]);const _0x3ed292=_0xe798a7['id'];_0xf67da(_0x3c879a[_0xcd13(0x4d4)](_0x3ed292,null)),_0x3c879a[_0xcd13(0x4d5)](_0x3bdd00,_0x3c879a[_0xcd13(0x4d6)]),_0x3ed292&&await _0x368209(_0x3ed292,_0x5d4f39);}else try{const _0x50e7d6=_0x2430d9[_0xcd13(0x4d7)][_0xcd13(0x1ab)]('|');let _0x58ad84=0x0;while(!![]){switch(_0x50e7d6[_0x58ad84++]){case'0':_0x3f4446['log'](_0x2430d9['CdgWz']);continue;case'1':_0x1e0c3b[_0xcd13(0x13e)](_0x2430d9[_0xcd13(0x4d8)]);continue;case'2':_0x5d2677[_0xcd13(0x13e)](_0x2430d9[_0xcd13(0x4d9)]);continue;case'3':if(!_0x22cba7)throw new _0x36df82(_0x2430d9[_0xcd13(0x4da)]);continue;case'4':_0x5670e2[_0xcd13(0x13e)](_0x2430d9['DCVEU'],_0x61c2ea);continue;case'5':_0x19731e[_0xcd13(0x13e)](_0x2430d9['tLzsz'],(_0x1e7991===null||_0x2430d9[_0xcd13(0x4db)](_0x257ee1,void 0x0)?void 0x0:_0x5ba130[_0xcd13(0x2b4)](0x0,0x14))+_0xcd13(0x278));continue;}break;}}catch(_0x49abdc){_0x1e6160['error'](_0x2430d9[_0xcd13(0x4dc)],_0x49abdc);throw _0x49abdc;}}),_0xe798a7['on']('trainingUpdate',_0x3b0154=>{_0x3b0154[_0xcd13(0x45d)]&&(_0x3c879a[_0xcd13(0x4dd)](_0x3bdd00,_0x3b0154[_0xcd13(0x28f)]||'Processing...'),console[_0xcd13(0x13e)](_0xcd13(0x4de),_0x3b0154[_0xcd13(0x45d)],'%'));}),_0xe798a7['on'](_0xcd13(0xec),()=>{console[_0xcd13(0x13e)](_0x3c879a[_0xcd13(0x4df)]);}),_0x1f4bf0[_0xcd13(0x186)]=_0xe798a7,_0xe798a7[_0xcd13(0x9)](),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x4e0)]);}else _0x323c85[_0xcd13(0x164)](_0x3c879a[_0xcd13(0x4e1)],_0x16209b),_0x3c879a[_0xcd13(0x4d5)](_0x552401,_0x3c879a['lSJIi']),_0x3c879a[_0xcd13(0x4e2)](_0x46db9c,!![]),_0x3c879a[_0xcd13(0x4e3)](_0x174d58);}catch(_0x73f2f9){if(_0x38fe1c[_0xcd13(0x2dd)](_0x38fe1c[_0xcd13(0x4e4)],_0xcd13(0x4e5))){console[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x4e6)],_0x73f2f9),_0x38fe1c[_0xcd13(0x1a2)](_0x3bdd00,'');throw _0x73f2f9;}else{const _0x1f9ba6={'Hqdqd':_0x38fe1c[_0xcd13(0x355)]};_0x208519&&(_0x38fe1c['vRyGR'](_0x1d079,_0xe16436[_0xcd13(0x235)]),_0xed3b1[_0xcd13(0x13e)](_0xcd13(0x111)),_0x38fe1c[_0xcd13(0x2b2)](_0x181907)[_0xcd13(0x2c5)](_0x5292d9=>{_0x59b878[_0xcd13(0x164)](_0x1f9ba6[_0xcd13(0x4e7)],_0x5292d9);}),_0x38fe1c[_0xcd13(0x4e8)](_0x5312ac,_0x38fe1c['zeoOx']));}}},[_0x36231e,_0x4b5df2,_0x554ecd]),_0x368209=async(_0x3a880e,_0x49a064)=>{const _0x152949={'IgYbC':_0x38fe1c['pyqZE'],'qARkE':function(_0x5f01b6,_0x5189f1){return _0x38fe1c[_0xcd13(0x4e9)](_0x5f01b6,_0x5189f1);},'KRtNZ':_0x38fe1c[_0xcd13(0x132)],'sLrri':function(_0xfa30d5,_0x490519){return _0x38fe1c[_0xcd13(0x492)](_0xfa30d5,_0x490519);},'mEljQ':_0x38fe1c['iHOag']};try{if(_0x38fe1c[_0xcd13(0x4ea)]!==_0x38fe1c[_0xcd13(0x4ea)]){_0x2f6162[_0xcd13(0x13e)](_0x152949[_0xcd13(0x4eb)]),_0x152949[_0xcd13(0x4ec)](_0x31b597,_0x152949[_0xcd13(0x4ed)]);return;}else{console[_0xcd13(0x13e)]('🚀\x20[BACKGROUND]\x20Starting\x20background\x20training\x20with\x20socketId:',_0x3a880e),console[_0xcd13(0x13e)](_0x38fe1c['upWCN'],_0x49a064[_0xcd13(0x2b4)](0x0,0x14)+_0xcd13(0x278));const _0x23911e={'socketId':_0x3a880e,'username':(_0x38fe1c[_0xcd13(0x4ee)](_0x36231e,null)||_0x38fe1c['avvlH'](_0x36231e,void 0x0)?void 0x0:_0x36231e[_0xcd13(0x264)])||(_0x38fe1c[_0xcd13(0x4ef)](_0x36231e,null)||_0x38fe1c[_0xcd13(0x4f0)](_0x36231e,void 0x0)?void 0x0:_0x36231e[_0xcd13(0x1ae)])||_0x4b5df2||_0x38fe1c[_0xcd13(0x377)],'email':(_0x38fe1c[_0xcd13(0x4f1)](_0x36231e,null)||_0x36231e===void 0x0?void 0x0:_0x36231e['email'])||null,'modelKey':null,'connectedPlatforms':[],'platformConnections':{}};console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x4f2)],_0x23911e);const _0x1e78ec=await _0x38fe1c[_0xcd13(0x2fb)](startEnochTrainingWithYouTubeCheck,_0x23911e);console[_0xcd13(0x13e)](_0x38fe1c['euJSz'],_0x1e78ec);if(_0x1e78ec[_0xcd13(0x37d)]||_0x38fe1c[_0xcd13(0x4f3)](_0x1e78ec[_0xcd13(0x7)],_0x38fe1c[_0xcd13(0x2d5)])){console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x4f4)]),_0x38fe1c[_0xcd13(0x4f5)](_0x9ddd5,_0x38fe1c['ccFSD']),_0x38fe1c[_0xcd13(0x4f6)](_0x5c6b2a,_0x1e78ec),_0x6f85a3(!![]),_0x38fe1c['flmRZ'](_0x2c54c4,_0x38fe1c[_0xcd13(0x2d7)]),_0x38fe1c[_0xcd13(0x1bb)](_0x75e131,!![]),_0x38fe1c[_0xcd13(0x4f7)](_0x1e105d);return;}if(_0x1e78ec[_0xcd13(0x24c)]){console[_0xcd13(0x13e)]('🚀\x20Background\x20training\x20started:',_0x1e78ec[_0xcd13(0x1ad)]),console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x47b)],_0x1e78ec[_0xcd13(0x1dc)]),_0x38fe1c['WLrhu'](_0x1846be,!![]);if(_0x1e78ec['features']){const _0x352bb0=_0x38fe1c[_0xcd13(0x4f8)][_0xcd13(0x1ab)]('|');let _0x162cd0=0x0;while(!![]){switch(_0x352bb0[_0x162cd0++]){case'0':console[_0xcd13(0x13e)](_0xcd13(0x1e),_0x1e78ec[_0xcd13(0x1dc)]['encryption']);continue;case'1':console['log'](_0xcd13(0x1d6),_0x1e78ec[_0xcd13(0x1dc)][_0xcd13(0x1e4)]);continue;case'2':console['log'](_0x38fe1c['gDhxY'],_0x1e78ec['features'][_0xcd13(0x1df)]);continue;case'3':console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x311)],_0x1e78ec[_0xcd13(0x1dc)][_0xcd13(0x2e8)]);continue;case'4':console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x312)],_0x1e78ec['features'][_0xcd13(0x33d)]);continue;case'5':console['log'](_0xcd13(0x4f9),_0x1e78ec[_0xcd13(0x1dc)][_0xcd13(0x1e5)]);continue;case'6':console[_0xcd13(0x13e)](_0xcd13(0x1d),_0x1e78ec[_0xcd13(0x1dc)]['type']);continue;}break;}}_0x2c54c4('Background\x20training\x20model...'),_0x38fe1c[_0xcd13(0x346)](_0x444384,0x19);}else _0x38fe1c[_0xcd13(0x4fa)](_0xcd13(0x4fb),_0x38fe1c['Jgbrh'])?(_0x152949[_0xcd13(0x4ec)](_0x5310b0,_0x3735ac['BUTTON_PRESS']),_0x152949['sLrri'](_0x4f5642,''),_0x152949[_0xcd13(0x4ec)](_0x3b1a7d,_0x152949[_0xcd13(0x4fc)])):(console[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x4fd)],_0x1e78ec[_0xcd13(0x164)]),_0x38fe1c['wLDHC'](_0x2c54c4,_0xcd13(0x337)+(_0x1e78ec[_0xcd13(0x164)]||_0xcd13(0x4fe))),_0x75e131(!![]),_0x1e105d());}}catch(_0x312dcc){console[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x4ff)],_0x312dcc),_0x38fe1c[_0xcd13(0x500)](_0x2c54c4,_0xcd13(0x337)+(_0x38fe1c[_0xcd13(0x38e)](_0x312dcc,Error)?_0x312dcc[_0xcd13(0x1ad)]:_0x38fe1c['hgNXf'])),_0x75e131(!![]),_0x1e105d();}};return React[_0xcd13(0x501)](Modal,{'transparent':!![],'visible':_0x177c2f,'animationType':_0x38fe1c[_0xcd13(0x502)],'onRequestClose':_0x582efe,'statusBarTranslucent':!![]},React[_0xcd13(0x501)](View,{'style':styles[_0xcd13(0x503)]},React['createElement'](TouchableWithoutFeedback,{'onPress':_0x582efe},React[_0xcd13(0x501)](Animated[_0xcd13(0x504)],{'style':[styles[_0xcd13(0x505)],{'opacity':_0x2343ab}]})),React[_0xcd13(0x501)](View,{'style':styles[_0xcd13(0x506)]},React[_0xcd13(0x501)](View,{'style':styles[_0xcd13(0x507)]},React['createElement'](View,{'style':styles[_0xcd13(0x508)]},React[_0xcd13(0x501)](TouchableOpacity,{'onPress':_0x582efe,'style':styles['handleButton']},React[_0xcd13(0x501)](View,{'style':styles['handle']}))),_0x27cd95&&_0x38fe1c[_0xcd13(0x4c6)](_0x1df82a,_0x38fe1c[_0xcd13(0x132)])&&React[_0xcd13(0x501)](View,{'style':styles[_0xcd13(0x509)]},React[_0xcd13(0x501)](Text,{'style':styles[_0xcd13(0x50a)]},_0x38fe1c[_0xcd13(0x50b)]),React['createElement'](View,{'style':styles['debugRow']},React[_0xcd13(0x501)](Text,{'style':styles[_0xcd13(0x50c)]},_0x38fe1c['frfuy'],_0xa9ffc1),React['createElement'](TouchableOpacity,{'onPress':()=>_0x985394(_0x50c81e=>Math[_0xcd13(0x50d)](0x0,_0x50c81e-0x2)),'style':styles[_0xcd13(0x50e)]},React[_0xcd13(0x501)](Text,null,'-')),React[_0xcd13(0x501)](TouchableOpacity,{'onPress':()=>_0x985394(_0x1639c8=>_0x1639c8+0x2),'style':styles[_0xcd13(0x50e)]},React['createElement'](Text,null,'+'))),React[_0xcd13(0x501)](View,{'style':styles[_0xcd13(0x50f)]},React[_0xcd13(0x501)](Text,{'style':styles[_0xcd13(0x50c)]},_0x38fe1c[_0xcd13(0x510)],_0xb9a59f),React['createElement'](TouchableOpacity,{'onPress':()=>_0x4243a4(_0x5b0871=>Math[_0xcd13(0x50d)](0x0,_0x5b0871-0x2)),'style':styles[_0xcd13(0x50e)]},React[_0xcd13(0x501)](Text,null,'-')),React[_0xcd13(0x501)](TouchableOpacity,{'onPress':()=>_0x4243a4(_0x3ed16c=>_0x3ed16c+0x2),'style':styles[_0xcd13(0x50e)]},React['createElement'](Text,null,'+'))),React['createElement'](View,{'style':styles[_0xcd13(0x50f)]},React[_0xcd13(0x501)](Text,{'style':styles[_0xcd13(0x50c)]},_0x38fe1c['KpDgD'],_0x5dab86),React[_0xcd13(0x501)](TouchableOpacity,{'onPress':()=>_0x341b75(_0x57be25=>Math[_0xcd13(0x50d)](0x0,_0x57be25-0x2)),'style':styles[_0xcd13(0x50e)]},React['createElement'](Text,null,'-')),React[_0xcd13(0x501)](TouchableOpacity,{'onPress':()=>_0x341b75(_0x1578a4=>_0x1578a4+0x2),'style':styles[_0xcd13(0x50e)]},React['createElement'](Text,null,'+'))),React[_0xcd13(0x501)](TouchableOpacity,{'onPress':()=>_0x96a904(![]),'style':styles[_0xcd13(0x511)]},React[_0xcd13(0x501)](Text,{'style':styles[_0xcd13(0x512)]},_0x38fe1c[_0xcd13(0x513)]))),_0x38fe1c['sKUkV'](_0x1df82a,_0x38fe1c[_0xcd13(0x133)])&&React[_0xcd13(0x501)](View,{'style':styles[_0xcd13(0x514)]},React[_0xcd13(0x501)](View,{'style':styles['brandMarkContainer']},React[_0xcd13(0x501)](_0x34d39e,null)),React[_0xcd13(0x501)](View,{'style':styles[_0xcd13(0x515)]},React['createElement'](_0x5fe3f9,null)),React['createElement'](View,{'style':styles['bodyContainer']},React['createElement'](_0x56eedb,null)),React[_0xcd13(0x501)](View,{'style':styles[_0xcd13(0x516)]}),React['createElement'](View,{'style':styles[_0xcd13(0x517)]},React[_0xcd13(0x501)](_0x2ab69d,{'label':_0xcd13(0x518),'onPress':_0x1191d8,'testID':_0x38fe1c[_0xcd13(0x519)]}))),_0x38fe1c[_0xcd13(0x51a)](_0x1df82a,_0x38fe1c[_0xcd13(0x145)])&&React['createElement'](_0x2dc3ce,{'onEmailSubmit':_0x19866d,'onGoogleSignIn':_0x1343b4,'onContinue':()=>_0x40952e(_0xcd13(0x23a)),'loading':_0x27f8d3,'error':_0x505be1,'initialEmail':_0xf2a8ab}),_0x1df82a===_0x38fe1c[_0xcd13(0x147)]&&React['createElement'](_0x26a6fe,{'email':_0xf2a8ab,'onCodeSubmit':_0x18023b,'onBack':_0x58c45a,'loading':_0x27f8d3,'error':_0x505be1,'onResendCode':_0x113a74}),_0x38fe1c[_0xcd13(0x51b)](_0x1df82a,_0xcd13(0x1ea))&&React['createElement'](_0x2417dd,{'onUpdate':_0x55a8e7,'onSkip':allowSkip?_0x142c2b:undefined,'onReviewerBypass':_0x5d48d7,'onLogout':_0x3b3154,'allowedPlatforms':_0x1d1474,'recommendedPlatforms':_0x3cd581,'initialConnectedPlatforms':_0x5a2b56}),_0x1df82a===_0xcd13(0x26)&&React[_0xcd13(0x501)](_0x248186,{'visible':!![],'loading':_0x3192f0,'onLogout':_0x3b3154,'onAccept':async()=>{const _0x1595ee={'USfDS':_0x38fe1c[_0xcd13(0x479)],'sDdNy':_0x38fe1c['ntytw'],'wXYEp':function(_0x1a7c37,_0x1ae4a9){return _0x38fe1c[_0xcd13(0x51c)](_0x1a7c37,_0x1ae4a9);},'FnmUI':function(_0x154fab){return _0x154fab();},'QRVGP':function(_0x172d0c,_0x524e14){return _0x38fe1c[_0xcd13(0x456)](_0x172d0c,_0x524e14);}};if(_0x38fe1c[_0xcd13(0x51d)]('ObWXy',_0x38fe1c[_0xcd13(0x51e)])){console['log'](_0x38fe1c[_0xcd13(0x51f)]),_0x25ae7d(!![]),await new Promise(_0xa699af=>setTimeout(_0xa699af,0x32));try{if(_0x38fe1c['mmEAa'](_0xcd13(0x120),_0x38fe1c[_0xcd13(0x520)])){const [_0x12693,_0x4d0988,_0x257893]=await Promise[_0xcd13(0x2af)]([_0x38fe1c[_0xcd13(0x4f7)](getAuthToken),AsyncStorage['getItem'](_0x38fe1c['MYDAS']),getOnairosUsername()]);console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x521)]),_0x42fac1['current']=!![],_0x38fe1c[_0xcd13(0x2b7)](_0x12693,_0x4d0988)?(console[_0xcd13(0x13e)](_0x38fe1c['NKcWv']),await(_0x38fe1c[_0xcd13(0x522)](_0x108330,null)||_0x38fe1c[_0xcd13(0x2c6)](_0x108330,void 0x0)?void 0x0:_0x38fe1c[_0xcd13(0x2c7)](_0x108330,API_CONFIG[_0xcd13(0x2aa)],_0x12693,{'email':_0x4d0988,'connectedPlatforms':_0x5a2b56,'username':_0x257893||_0x4d0988['split']('@')[0x0],'isReturningUser':!![]}))):_0x38fe1c[_0xcd13(0x523)](_0xcd13(0x524),_0x38fe1c[_0xcd13(0x525)])?(console[_0xcd13(0x2c0)](_0x38fe1c[_0xcd13(0x526)]),await(_0x38fe1c[_0xcd13(0x527)](_0x108330,null)||_0x108330===void 0x0?void 0x0:_0x38fe1c['GrkcG'](_0x108330,API_CONFIG[_0xcd13(0x2aa)],'',{'connectedPlatforms':_0x5a2b56,'isReturningUser':!![]}))):(_0x1783ae['error'](_0x1595ee[_0xcd13(0x528)],_0x398988),_0x12ba75(_0x1595ee[_0xcd13(0x529)]),_0x1595ee[_0xcd13(0x52a)](_0x3bf173,!![]),_0x1595ee[_0xcd13(0x52b)](_0x151ecc));}else _0x93a15d[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x420)],_0x125a19),_0x57f8da(_0x38fe1c[_0xcd13(0x52c)]),_0x42adca(0x3c);}catch(_0x47cd89){console[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x52d)],_0x47cd89),await(_0x38fe1c['YnTlq'](_0x108330,null)||_0x38fe1c[_0xcd13(0x319)](_0x108330,void 0x0)?void 0x0:_0x38fe1c[_0xcd13(0x52e)](_0x108330,API_CONFIG[_0xcd13(0x2aa)],'',{'connectedPlatforms':_0x5a2b56,'isReturningUser':!![]}));}console[_0xcd13(0x13e)](_0xcd13(0x52f));}else{var _0xc28f83;_0x17e6ef(![]),_0x1595ee['QRVGP'](_0xc28f83=_0x43d61f[_0xcd13(0x186)],null)||_0x1595ee[_0xcd13(0x530)](_0xc28f83,void 0x0)||_0xc28f83[_0xcd13(0x1d0)](_0x30a998);}},'onDecline':()=>{_0x38fe1c[_0xcd13(0x531)]==='doECv'?_0x50c959[_0xcd13(0x164)](_0x38fe1c[_0xcd13(0x532)],_0x6cb005):(console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x533)]),_0x38fe1c[_0xcd13(0x1a8)](_0x582efe));},'connectedPlatforms':_0x5a2b56,'onConnectMore':()=>{console[_0xcd13(0x13e)](_0x38fe1c[_0xcd13(0x2f7)]),_0x40952e(_0x38fe1c['tMHlY']);},'isReturningUser':_0x2a51ba,'appName':_0x20ed1d})))));};const LEGACY_REMOVED=!![],styles=StyleSheet[_0xcd13(0x534)]({'modalOverlay':{'flex':0x1,'justifyContent':_0xcd13(0x535)},'backdrop':{...StyleSheet[_0xcd13(0x536)],'backgroundColor':_0xcd13(0x537)},'bottomSheet':{'backgroundColor':'#FAFAFA','borderTopLeftRadius':0x18,'borderTopRightRadius':0x18,'paddingTop':0x0,'paddingBottom':0x0,'minHeight':height*0.86,'overflow':_0xcd13(0x538),'width':'100%'},'container':{'flex':0x1,'backgroundColor':_0xcd13(0x539)},'welcomeContainer':{'flex':0x1,'alignItems':_0xcd13(0x53a),'paddingTop':0x46,'paddingHorizontal':0x18},'brandMarkContainer':{'marginBottom':0x20},'headingContainer':{'marginBottom':0x18},'bodyContainer':{'marginBottom':0x20,'width':_0xcd13(0x53b)},'welcomeSpacer':{'flex':0x1,'minHeight':0x14},'welcomeButtonContainer':{'width':'100%','paddingBottom':0x14},'handleContainer':{'alignItems':_0xcd13(0x53a),'paddingTop':0xc,'paddingBottom':0x4,'backgroundColor':_0xcd13(0x53c)},'handleButton':{'padding':0x0,'width':0x78,'alignItems':_0xcd13(0x53a)},'handle':{'width':0x64,'height':0x6,'borderRadius':0x3,'backgroundColor':_0xcd13(0x53d)},'debugPanel':{'position':_0xcd13(0x53e),'top':0x3c,'right':0xa,'backgroundColor':_0xcd13(0x53f),'padding':0xc,'borderRadius':0x8,'zIndex':0x270f,'minWidth':0xc8},'debugTitle':{'color':_0xcd13(0x540),'fontSize':0xe,'fontWeight':_0xcd13(0x541),'marginBottom':0x8},'debugRow':{'flexDirection':_0xcd13(0x542),'alignItems':_0xcd13(0x53a),'marginBottom':0x6},'debugLabel':{'color':'#fff','fontSize':0xc,'flex':0x1},'debugBtn':{'backgroundColor':_0xcd13(0x543),'paddingHorizontal':0xc,'paddingVertical':0x4,'borderRadius':0x4,'marginLeft':0x4},'debugCloseBtn':{'backgroundColor':'#666','paddingVertical':0x6,'borderRadius':0x4,'marginTop':0x8,'alignItems':_0xcd13(0x53a)},'debugCloseBtnText':{'color':_0xcd13(0x540),'fontSize':0xc},'header':{'alignItems':_0xcd13(0x53a),'marginBottom':0x14,'paddingHorizontal':0x18},'headerContent':{'flexDirection':_0xcd13(0x542),'alignItems':_0xcd13(0x53a),'justifyContent':'center','marginBottom':0x18},'appIcon':{'width':0x30,'height':0x30,'borderRadius':0x18,'backgroundColor':'#F5F5F5','alignItems':'center','justifyContent':'center'},'appIconText':{'fontSize':0x18,'fontWeight':'bold','color':'#333'},'arrow':{'marginHorizontal':0x10,'fontSize':0x18,'color':'#666'},'onairosIcon':{'width':0x36,'height':0x36,'borderRadius':0x20,'backgroundColor':_0xcd13(0x53c),'alignItems':_0xcd13(0x53a),'justifyContent':_0xcd13(0x53a)},'onairosIconText':{'fontSize':0x18,'fontWeight':_0xcd13(0x544),'color':_0xcd13(0x540)},'onairosIconImage':{'width':0x36,'height':0x36},'titleContainer':{'alignItems':_0xcd13(0x53a)},'mainTitle':{'fontSize':0x18,'fontWeight':_0xcd13(0x545),'color':'#333','textAlign':_0xcd13(0x53a),'marginBottom':0xc},'privacyMessage':{'fontSize':0xe,'color':_0xcd13(0x546),'textAlign':_0xcd13(0x53a),'marginBottom':0x14},'privacyLink':{'color':_0xcd13(0x547),'fontWeight':'600','textDecorationLine':_0xcd13(0x548)},'boldText':{'fontWeight':_0xcd13(0x544)},'content':{'flex':0x1,'paddingHorizontal':0x18},'platformsScrollView':{'flex':0x1,'width':_0xcd13(0x53b)},'platformsScrollContent':{'paddingBottom':0x0,'paddingHorizontal':0x18},'platformsContainer':{'marginTop':0x10},'platformItem':{'flexDirection':_0xcd13(0x542),'alignItems':'center','justifyContent':'space-between','paddingVertical':0x10,'paddingHorizontal':0x8,'borderBottomWidth':0x1,'borderBottomColor':'#E5E5E5'},'platformInfo':{'flexDirection':_0xcd13(0x542),'alignItems':_0xcd13(0x53a)},'platformIcon':{'width':0x28,'height':0x28,'borderRadius':0x14,'backgroundColor':_0xcd13(0x549),'alignItems':_0xcd13(0x53a),'justifyContent':'center','marginRight':0x10},'platformIconText':{'fontSize':0x12,'fontWeight':_0xcd13(0x544),'color':_0xcd13(0x54a),'textAlign':_0xcd13(0x53a),'textAlignVertical':_0xcd13(0x53a)},'platformIconImage':{'width':0x18,'height':0x18},'youtubeIconImage':{'width':0x3a,'height':0x3a},'redditIconImage':{'width':0x22,'height':0x22},'pinterestIconImage':{'width':0x30,'height':0x30},'gmailIconImage':{'width':0x20,'height':0x20},'linkedinPlatformIcon':{'width':0x28,'height':0x28,'borderRadius':0x8,'backgroundColor':'#F5F5F5','alignItems':_0xcd13(0x53a),'justifyContent':_0xcd13(0x53a),'marginRight':0x10},'pinterestPlatformIcon':{'width':0x22,'height':0x22,'borderRadius':0x11,'backgroundColor':_0xcd13(0x549),'alignItems':_0xcd13(0x53a),'justifyContent':'center','marginRight':0x10},'platformName':{'fontSize':0x10,'color':'#333','textAlignVertical':'center'},'footer':{'flexDirection':_0xcd13(0x542),'alignItems':_0xcd13(0x53a),'justifyContent':'space-between','padding':0x18,'borderTopWidth':0x1,'borderTopColor':_0xcd13(0x54b)},'footerButtonCancel':{'paddingVertical':0xc,'paddingHorizontal':0x10},'footerButtonText':{'color':_0xcd13(0x546),'fontSize':0x10},'footerButtonConfirm':{'paddingVertical':0xc,'paddingHorizontal':0x18,'backgroundColor':_0xcd13(0x547),'borderRadius':0x8,'marginTop':0x14},'footerButtonConnected':{'paddingVertical':0xc,'paddingHorizontal':0x18,'backgroundColor':_0xcd13(0x54c),'borderRadius':0x8},'footerButtonDisabled':{'backgroundColor':_0xcd13(0x54b)},'footerButtonTextConfirm':{'color':_0xcd13(0x540),'fontSize':0x10,'fontWeight':'600'},'footerButtonTextConnected':{'color':_0xcd13(0x54d),'fontSize':0x10,'fontWeight':_0xcd13(0x545)},'connectContainer':{'flex':0x1},'modalContent':{'flex':0x1,'backgroundColor':_0xcd13(0x199),'borderTopLeftRadius':0x14,'borderTopRightRadius':0x14,'padding':0x18},'backButton':{'padding':0x8,'width':0x28},'backButtonText':{'fontSize':0x18,'color':_0xcd13(0x547)},'backButtonSpacer':{'width':0x28},'headerTitle':{'fontSize':0x12,'fontWeight':_0xcd13(0x545),'color':_0xcd13(0x54a),'textAlign':'center'},'privacyHeader':{'flexDirection':_0xcd13(0x542),'alignItems':'center','justifyContent':_0xcd13(0x54e),'paddingHorizontal':0x10,'paddingVertical':0x14,'backgroundColor':_0xcd13(0x199),'borderBottomWidth':0x1,'borderBottomColor':_0xcd13(0x54f)},'privacyDetailsContainer':{'paddingHorizontal':0x18,'paddingVertical':0x8,'flex':0x1,'marginTop':0x14},'privacyDetailsTitle':{'fontSize':0x14,'fontWeight':_0xcd13(0x545),'color':'#333','marginBottom':0x0},'privacyBulletPoint':{'flexDirection':_0xcd13(0x542),'marginBottom':0x10,'alignItems':_0xcd13(0x550)},'bulletPoint':{'fontSize':0x12,'marginRight':0x8,'color':_0xcd13(0x54a)},'privacyBulletText':{'fontSize':0x10,'color':_0xcd13(0x54a),'flex':0x1,'lineHeight':0x18},'connectionsCountText':{'fontSize':0x12,'fontWeight':'600','color':_0xcd13(0x54a),'marginBottom':0x18},'personaContainer':{'flex':0x1,'padding':0x10,'backgroundColor':_0xcd13(0x540),'justifyContent':_0xcd13(0x550)},'personaHeaderWithBack':{'flexDirection':'row','alignItems':_0xcd13(0x53a),'justifyContent':_0xcd13(0x54e),'marginBottom':0x10,'paddingVertical':0x8},'personaBackButton':{'padding':0x8},'personaHeader':{'alignItems':_0xcd13(0x53a),'marginBottom':0x20,'paddingHorizontal':0x18},'personaTitle':{'fontSize':0x14,'fontWeight':_0xcd13(0x545),'color':_0xcd13(0x54a),'textAlign':'center','flex':0x1,'marginBottom':0x8},'personaSubtitle':{'fontSize':0xe,'color':'#666','marginBottom':0x18,'textAlign':'center'},'personaProgressContainer':{'marginBottom':0x18,'paddingHorizontal':0x0},'personaProgressBar':{'height':0x8,'backgroundColor':_0xcd13(0x549),'borderRadius':0x4,'overflow':'hidden','marginBottom':0xc},'personaProgressFill':{'height':_0xcd13(0x53b),'backgroundColor':_0xcd13(0x551),'borderRadius':0x4},'personaProgressText':{'fontSize':0x10,'fontWeight':_0xcd13(0x545),'color':_0xcd13(0x54a),'textAlign':_0xcd13(0x53a),'marginBottom':0x8},'personaStatusText':{'fontSize':0xe,'color':'#666','textAlign':_0xcd13(0x53a)},'personaCompleteContainer':{'alignItems':_0xcd13(0x53a),'paddingHorizontal':0x0},'personaCompleteTitle':{'fontSize':0x14,'fontWeight':_0xcd13(0x545),'color':_0xcd13(0x54a),'marginBottom':0x8,'textAlign':_0xcd13(0x53a)},'personaCompleteSubtitle':{'fontSize':0xe,'color':'#666','textAlign':_0xcd13(0x53a),'marginBottom':0x28},'personaContinueButton':{'backgroundColor':_0xcd13(0x547),'paddingVertical':0x10,'paddingHorizontal':0x30,'borderRadius':0x10,'alignItems':_0xcd13(0x53a),'width':_0xcd13(0x53b),'marginTop':0x20,'shadowColor':'#000','shadowOffset':{'width':0x0,'height':0x2},'shadowOpacity':0.1,'shadowRadius':0x4,'elevation':0x3},'personaContinueButtonText':{'color':'#fff','fontSize':0x10,'fontWeight':_0xcd13(0x545)},'progressError':{'backgroundColor':_0xcd13(0x552)},'dataWarningContainer':{'padding':0x10,'borderRadius':0xc,'marginTop':0x10,'borderWidth':0x1,'shadowColor':_0xcd13(0x54d),'shadowOffset':{'width':0x0,'height':0x2},'shadowOpacity':0.1,'shadowRadius':0x4,'elevation':0x3},'dataWarningHeader':{'flexDirection':'row','alignItems':_0xcd13(0x53a),'marginBottom':0x8},'dataWarningIcon':{'fontSize':0x14,'marginRight':0x8},'dataWarningTitle':{'fontSize':0x10,'fontWeight':_0xcd13(0x545),'flex':0x1},'dataWarningMessage':{'fontSize':0xe,'marginBottom':0x0,'lineHeight':0x14},'dataWarningSuggestions':{'marginTop':0xc,'paddingTop':0xc,'borderTopWidth':0x1},'dataWarningSuggestionsTitle':{'fontSize':0xe,'fontWeight':_0xcd13(0x545),'marginBottom':0x6},'dataWarningSuggestionItem':{'fontSize':0xd,'marginBottom':0x4,'lineHeight':0x12},'dataWarningContinueNote':{'fontSize':0xd,'fontWeight':_0xcd13(0x553),'marginTop':0xc,'fontStyle':_0xcd13(0x554)},'dataWarningError':{'backgroundColor':_0xcd13(0x555),'borderColor':_0xcd13(0x556)},'dataInfoContainer':{'backgroundColor':'#F0F9FF','borderColor':'#BAE6FD'},'dataConnectionsRequired':{'backgroundColor':_0xcd13(0x549),'borderColor':_0xcd13(0x557),'shadowColor':_0xcd13(0x558),'shadowOffset':{'width':0x0,'height':0x0},'shadowOpacity':0.15,'shadowRadius':0x8},'highlightedBackButton':{'backgroundColor':_0xcd13(0x549),'borderRadius':0x14,'borderWidth':0x2,'borderColor':'#000000','shadowColor':'#000000','shadowOffset':{'width':0x0,'height':0x0},'shadowOpacity':0.3,'shadowRadius':0x8,'elevation':0x5},'highlightedBackArrow':{'color':'#000000','fontWeight':'bold'},'goBackButton':{'backgroundColor':_0xcd13(0x547),'paddingVertical':0xc,'paddingHorizontal':0x10,'borderRadius':0x8,'marginTop':0xc,'alignItems':_0xcd13(0x53a),'shadowColor':_0xcd13(0x547),'shadowOffset':{'width':0x0,'height':0x0},'shadowOpacity':0.3,'shadowRadius':0x6,'elevation':0x3},'goBackButtonText':{'color':_0xcd13(0x199),'fontSize':0xe,'fontWeight':'600'},'additionalPlatformsToggle':{'paddingVertical':0x10,'paddingHorizontal':0x8,'alignItems':_0xcd13(0x53a),'borderBottomWidth':0x1,'borderBottomColor':_0xcd13(0x54b)},'additionalPlatformsText':{'fontSize':0xe,'color':_0xcd13(0x546),'fontWeight':_0xcd13(0x553)},'asterisk':{'color':_0xcd13(0x559),'fontSize':0x10,'fontWeight':_0xcd13(0x544),'marginLeft':0x2},'linkedinRequirementContainer':{'backgroundColor':_0xcd13(0x55a),'borderWidth':0x1,'borderColor':_0xcd13(0x55b),'borderRadius':0x8,'paddingHorizontal':0xc,'paddingVertical':0x8,'marginTop':0x8,'marginHorizontal':0x4},'linkedinRequirementText':{'fontSize':0xc,'fontStyle':_0xcd13(0x554),'textAlign':_0xcd13(0x53a)},'linkedinRequirementAsterisk':{'color':_0xcd13(0x559),'fontWeight':_0xcd13(0x544)},'linkedinRequirementMessage':{'color':_0xcd13(0x558)},'existingUserBanner':{'backgroundColor':_0xcd13(0x55c),'borderWidth':0x1,'borderColor':_0xcd13(0x55d),'borderRadius':0xc,'paddingHorizontal':0x10,'paddingVertical':0xc,'marginTop':0xc},'existingUserText':{'fontSize':0xe,'fontWeight':'600','color':_0xcd13(0x55e),'marginBottom':0x4},'existingUserSubtext':{'fontSize':0xc,'color':_0xcd13(0x55f),'lineHeight':0x10}});
|
|
1
|
+
import React, { useCallback, useEffect, useState, useRef } from 'react';
|
|
2
|
+
import { View, Text, StyleSheet, Dimensions, TouchableOpacity, TouchableWithoutFeedback, Platform, Modal, Animated, Linking, Alert } from 'react-native';
|
|
3
|
+
// Removed navigation dependencies for SDK compatibility
|
|
4
|
+
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
5
|
+
// Import components and hooks
|
|
6
|
+
|
|
7
|
+
// Import Enoch-style UI components
|
|
8
|
+
import BrandMark from './BrandMark';
|
|
9
|
+
import HeadingGroup from './HeadingGroup';
|
|
10
|
+
import BodyText from './BodyText';
|
|
11
|
+
import PrimaryButton from './PrimaryButton';
|
|
12
|
+
import SignInStep from './SignInStep';
|
|
13
|
+
import VerificationStep from './VerificationStep';
|
|
14
|
+
import PlatformConnectorsStep from './PlatformConnectorsStep';
|
|
15
|
+
import PersonalizationConsentScreen from './PersonalizationConsentScreen';
|
|
16
|
+
// import { useConnections } from '../../hooks/useConnections'; // Commented out - file path issue
|
|
17
|
+
// import { useAuth } from '../../context/AuthContext'; // Commented out - file path issue
|
|
18
|
+
import { initiateOAuth, initiateNativeAuth, hasNativeSDK, isOAuthCallback } from '../services/platformAuthService';
|
|
19
|
+
import { getUniversalOnboardingIcon } from '../utils/assetRegistry';
|
|
20
|
+
import { signInWithGoogle } from '../services/googleAuthService';
|
|
21
|
+
import { triggerHaptic, HapticType } from '../utils/haptics';
|
|
22
|
+
import { getOnairosUsername, getAuthToken, sendEmailVerificationCode, confirmEmailVerificationCode } from '../services/authService';
|
|
23
|
+
import { io } from 'socket.io-client';
|
|
24
|
+
import { setTemporaryPin, clearTemporaryPin } from '../services/pinStorageUtils';
|
|
25
|
+
import { getEncryptedPinForAPI } from '../services/pinEncryptionService';
|
|
26
|
+
import { startEnochTrainingWithYouTubeCheck } from '../services/mobileTrainingService';
|
|
27
|
+
import { sendLLMDataToBackend } from '../services/llmDataStorage';
|
|
28
|
+
import { getConnectedAccountsSmart, getConnectedAccountsLookup } from '../services/connectedAccountsService';
|
|
29
|
+
import { API_CONFIG } from '../config/api';
|
|
30
|
+
// CRITICAL FIX: Use static imports to avoid Hermes transpilation issues with await import()
|
|
31
|
+
import { getJWT, storeJWT } from '../services/jwtStorageService';
|
|
32
|
+
import { refreshYouTubeTokens } from '../services/platformAuthService';
|
|
33
|
+
|
|
34
|
+
// Import types
|
|
35
|
+
// import type { ConnectionStatus } from '../../hooks/useConnections'; // Commented out - file path issue
|
|
36
|
+
// Removed App-specific navigation types
|
|
37
|
+
|
|
38
|
+
const {
|
|
39
|
+
height,
|
|
40
|
+
width
|
|
41
|
+
} = Dimensions.get('window');
|
|
42
|
+
// ConnectionStatus interface is now imported from hooks/useConnections
|
|
43
|
+
|
|
44
|
+
export const UniversalOnboarding = ({
|
|
45
|
+
visible,
|
|
46
|
+
onClose,
|
|
47
|
+
AppName,
|
|
48
|
+
requestData,
|
|
49
|
+
returnLink,
|
|
50
|
+
onComplete,
|
|
51
|
+
embedd = false,
|
|
52
|
+
debug = false,
|
|
53
|
+
test = false,
|
|
54
|
+
preferredPlatform,
|
|
55
|
+
primaryAuthOnly = false,
|
|
56
|
+
allowedPlatforms,
|
|
57
|
+
recommendedPlatforms,
|
|
58
|
+
allowSkip = true
|
|
59
|
+
}) => {
|
|
60
|
+
const [step, setStep] = useState(primaryAuthOnly ? 'platforms' : 'welcome');
|
|
61
|
+
const [connections, setConnections] = useState({});
|
|
62
|
+
const [pin, setPin] = useState('');
|
|
63
|
+
const [selectedTier, setSelectedTier] = useState('Medium');
|
|
64
|
+
// Training state is now handled by TrainingModal
|
|
65
|
+
const [slideAnim] = useState(new Animated.Value(height));
|
|
66
|
+
const [backdropOpacity] = useState(new Animated.Value(0));
|
|
67
|
+
const [platformToggles, setPlatformToggles] = useState({});
|
|
68
|
+
const [oauthUrl, setOauthUrl] = useState('');
|
|
69
|
+
const [currentPlatform, setCurrentPlatform] = useState('');
|
|
70
|
+
const [email, setEmail] = useState('');
|
|
71
|
+
const [userEmail, setUserEmail] = useState(''); // For verification flow
|
|
72
|
+
const [authLoading, setAuthLoading] = useState(false);
|
|
73
|
+
const [authError, setAuthError] = useState('');
|
|
74
|
+
|
|
75
|
+
// Returning user state
|
|
76
|
+
const [isReturningUser, setIsReturningUser] = useState(false);
|
|
77
|
+
const [returningUserConnections, setReturningUserConnections] = useState([]);
|
|
78
|
+
const [longPressTimer, setLongPressTimer] = useState(null);
|
|
79
|
+
// 🔧 FIX: Always initialize as false - let useEffect control visibility to prevent double animation glitch
|
|
80
|
+
const [modalVisible, setModalVisible] = useState(false);
|
|
81
|
+
|
|
82
|
+
// Consent screen loading state
|
|
83
|
+
const [isConsentLoading, setIsConsentLoading] = useState(false);
|
|
84
|
+
|
|
85
|
+
// DEBUG: Padding adjustment state (set to false to hide)
|
|
86
|
+
const [showDebugPanel, setShowDebugPanel] = useState(false);
|
|
87
|
+
const [debugPaddingTop, setDebugPaddingTop] = useState(0);
|
|
88
|
+
const [debugPaddingBottom, setDebugPaddingBottom] = useState(8);
|
|
89
|
+
const [debugHandlePaddingTop, setDebugHandlePaddingTop] = useState(6);
|
|
90
|
+
|
|
91
|
+
// Debug logging for modal visibility
|
|
92
|
+
useEffect(() => {
|
|
93
|
+
console.log('🔍 UniversalOnboarding: visible prop changed to:', visible);
|
|
94
|
+
console.log('🔍 UniversalOnboarding: modalVisible state is:', modalVisible);
|
|
95
|
+
console.log('🔍 UniversalOnboarding: current step is:', step);
|
|
96
|
+
console.log('🔍 UniversalOnboarding: primaryAuthOnly is:', primaryAuthOnly);
|
|
97
|
+
}, [visible, modalVisible, step, primaryAuthOnly]);
|
|
98
|
+
|
|
99
|
+
// 🔄 FIX: Reset step when modal re-opens (visible goes false → true)
|
|
100
|
+
// This prevents stale step state from a previous session (e.g., stuck on 'platforms' after sign-out)
|
|
101
|
+
const prevVisibleRef = useRef(visible);
|
|
102
|
+
useEffect(() => {
|
|
103
|
+
if (visible && !prevVisibleRef.current && !primaryAuthOnly) {
|
|
104
|
+
console.log('🔄 [RESET] Modal re-opened - resetting step to welcome');
|
|
105
|
+
setStep('welcome');
|
|
106
|
+
}
|
|
107
|
+
prevVisibleRef.current = visible;
|
|
108
|
+
}, [visible, primaryAuthOnly]);
|
|
109
|
+
|
|
110
|
+
// 🍎 FIX: Watch for primaryAuthOnly prop changes (Apple Sign-In flow)
|
|
111
|
+
// When primaryAuthOnly becomes true AFTER the component mounts, go to welcome step
|
|
112
|
+
// This handles the case where Apple sign-in completes and then opens the SDK modal
|
|
113
|
+
// User will see "Welcome to Onairos" then click "Get Started" to go to platforms (skipping signin)
|
|
114
|
+
useEffect(() => {
|
|
115
|
+
if (primaryAuthOnly && visible && (step === 'signin' || step === 'verification')) {
|
|
116
|
+
console.log('🍎 [APPLE FIX] primaryAuthOnly detected - resetting to welcome step');
|
|
117
|
+
console.log('🍎 [APPLE FIX] Current step was:', step, '-> Setting to: welcome');
|
|
118
|
+
setStep('welcome');
|
|
119
|
+
}
|
|
120
|
+
}, [primaryAuthOnly, visible]);
|
|
121
|
+
const isCompletingRef = useRef(false);
|
|
122
|
+
const [connectionsCount, setConnectionsCount] = useState(5); // Simulated connections count
|
|
123
|
+
|
|
124
|
+
// Add state for showing additional platforms
|
|
125
|
+
const [showAdditionalPlatforms, setShowAdditionalPlatforms] = useState(false);
|
|
126
|
+
const [additionalPlatformsOpacity] = useState(new Animated.Value(0));
|
|
127
|
+
|
|
128
|
+
// Add ref for ScrollView to control scroll position
|
|
129
|
+
const scrollViewRef = useRef(null);
|
|
130
|
+
// Get the authenticated user from auth context
|
|
131
|
+
// const { user } = useAuth(); // Hook not available
|
|
132
|
+
const user = null;
|
|
133
|
+
|
|
134
|
+
// State for storing the correct username
|
|
135
|
+
const [username, setUsername] = useState('');
|
|
136
|
+
|
|
137
|
+
// Real training state variables (replacing fake persona state)
|
|
138
|
+
const [personaProgress, setPersonaProgress] = useState(0);
|
|
139
|
+
const [personaStatus, setPersonaStatus] = useState('Initializing...');
|
|
140
|
+
const [isPersonaComplete, setIsPersonaComplete] = useState(false);
|
|
141
|
+
const [socketConnected, setSocketConnected] = useState(false);
|
|
142
|
+
const [hasError, setHasError] = useState(false);
|
|
143
|
+
const [userTraits, setUserTraits] = useState(null);
|
|
144
|
+
const [inferenceResults, setInferenceResults] = useState(null);
|
|
145
|
+
const [userToken, setUserToken] = useState(null);
|
|
146
|
+
const [userInfo, setUserInfo] = useState(null);
|
|
147
|
+
const [animatedDots, setAnimatedDots] = useState('');
|
|
148
|
+
const socketRef = useRef(null);
|
|
149
|
+
const dotsAnimationRef = useRef(null);
|
|
150
|
+
|
|
151
|
+
// Existing user state
|
|
152
|
+
const [isExistingUser, setIsExistingUser] = useState(false);
|
|
153
|
+
const [existingUserToken, setExistingUserToken] = useState(null);
|
|
154
|
+
const [existingUserInfo, setExistingUserInfo] = useState(null);
|
|
155
|
+
|
|
156
|
+
// Data scenario states
|
|
157
|
+
const [dataScenario, setDataScenario] = useState(null);
|
|
158
|
+
const [dataDetails, setDataDetails] = useState(null);
|
|
159
|
+
const [showDataWarning, setShowDataWarning] = useState(false);
|
|
160
|
+
|
|
161
|
+
// ✅ NEW: Background training state
|
|
162
|
+
const [isBackgroundTrainingStarted, setIsBackgroundTrainingStarted] = useState(false);
|
|
163
|
+
const [backgroundTrainingProgress, setBackgroundTrainingProgress] = useState('');
|
|
164
|
+
const [backgroundSocketId, setBackgroundSocketId] = useState(null);
|
|
165
|
+
|
|
166
|
+
// Function to store connected platforms (writes to BOTH keys for consistency)
|
|
167
|
+
const storeConnectedPlatform = async platformId => {
|
|
168
|
+
try {
|
|
169
|
+
const storedPlatforms = await AsyncStorage.getItem('connectedPlatforms');
|
|
170
|
+
let platforms = storedPlatforms ? JSON.parse(storedPlatforms) : [];
|
|
171
|
+
|
|
172
|
+
// Add platform if not already in the list
|
|
173
|
+
if (!platforms.includes(platformId)) {
|
|
174
|
+
platforms.push(platformId);
|
|
175
|
+
await AsyncStorage.setItem('connectedPlatforms', JSON.stringify(platforms));
|
|
176
|
+
await AsyncStorage.setItem('user_connected_platforms', JSON.stringify(platforms));
|
|
177
|
+
console.log('📱 Stored connected platform:', platformId, 'Total platforms:', platforms);
|
|
178
|
+
}
|
|
179
|
+
} catch (error) {
|
|
180
|
+
console.error('Error storing connected platform:', error);
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
// Function to remove connected platform from storage (removes from BOTH keys)
|
|
185
|
+
const removeConnectedPlatform = async platformId => {
|
|
186
|
+
try {
|
|
187
|
+
const storedPlatforms = await AsyncStorage.getItem('connectedPlatforms');
|
|
188
|
+
let platforms = storedPlatforms ? JSON.parse(storedPlatforms) : [];
|
|
189
|
+
|
|
190
|
+
// Remove platform from the list
|
|
191
|
+
platforms = platforms.filter(platform => platform !== platformId);
|
|
192
|
+
await AsyncStorage.setItem('connectedPlatforms', JSON.stringify(platforms));
|
|
193
|
+
await AsyncStorage.setItem('user_connected_platforms', JSON.stringify(platforms));
|
|
194
|
+
console.log('📱 Removed connected platform:', platformId, 'Remaining platforms:', platforms);
|
|
195
|
+
} catch (error) {
|
|
196
|
+
console.error('Error removing connected platform:', error);
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
// Function to handle disconnect confirmation
|
|
201
|
+
const handleDisconnectPlatform = (platformId, platformName) => {
|
|
202
|
+
Alert.alert('Disconnect Platform', `Are you sure you want to disconnect ${platformName}?`, [{
|
|
203
|
+
text: 'No',
|
|
204
|
+
style: 'cancel'
|
|
205
|
+
}, {
|
|
206
|
+
text: 'Yes',
|
|
207
|
+
style: 'destructive',
|
|
208
|
+
onPress: async () => {
|
|
209
|
+
try {
|
|
210
|
+
// Update local state to show disconnected
|
|
211
|
+
setConnectionStatuses(prev => ({
|
|
212
|
+
...prev,
|
|
213
|
+
[platformId]: 'disconnected'
|
|
214
|
+
}));
|
|
215
|
+
setConnections(prev => {
|
|
216
|
+
const newConnections = {
|
|
217
|
+
...prev
|
|
218
|
+
};
|
|
219
|
+
delete newConnections[platformId];
|
|
220
|
+
return newConnections;
|
|
221
|
+
});
|
|
222
|
+
setPlatformToggles(prev => ({
|
|
223
|
+
...prev,
|
|
224
|
+
[platformId]: false
|
|
225
|
+
}));
|
|
226
|
+
|
|
227
|
+
// Remove from storage
|
|
228
|
+
await removeConnectedPlatform(platformId);
|
|
229
|
+
|
|
230
|
+
// Call the disconnect function from the hook
|
|
231
|
+
await disconnectPlatform();
|
|
232
|
+
console.log('🔌 Disconnected platform:', platformId);
|
|
233
|
+
} catch (error) {
|
|
234
|
+
console.error('Error disconnecting platform:', error);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}]);
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
// Function to start animated dots
|
|
241
|
+
const startDotsAnimation = () => {
|
|
242
|
+
if (dotsAnimationRef.current) {
|
|
243
|
+
clearInterval(dotsAnimationRef.current);
|
|
244
|
+
}
|
|
245
|
+
let dotCount = 0;
|
|
246
|
+
dotsAnimationRef.current = setInterval(() => {
|
|
247
|
+
dotCount = (dotCount + 1) % 4; // 0, 1, 2, 3, then back to 0
|
|
248
|
+
if (dotCount === 0) {
|
|
249
|
+
setAnimatedDots('');
|
|
250
|
+
} else {
|
|
251
|
+
setAnimatedDots('.'.repeat(dotCount));
|
|
252
|
+
}
|
|
253
|
+
}, 500); // Change every 500ms
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
// Function to stop animated dots
|
|
257
|
+
const stopDotsAnimation = () => {
|
|
258
|
+
if (dotsAnimationRef.current) {
|
|
259
|
+
clearInterval(dotsAnimationRef.current);
|
|
260
|
+
dotsAnimationRef.current = null;
|
|
261
|
+
}
|
|
262
|
+
setAnimatedDots('');
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
// Split platforms into main and additional
|
|
266
|
+
const mainPlatforms = [{
|
|
267
|
+
id: 'pinterest',
|
|
268
|
+
name: 'Pinterest',
|
|
269
|
+
color: '#E60023'
|
|
270
|
+
}, {
|
|
271
|
+
id: 'youtube',
|
|
272
|
+
name: 'YouTube',
|
|
273
|
+
color: '#FFFFFF'
|
|
274
|
+
}, {
|
|
275
|
+
id: 'linkedin',
|
|
276
|
+
name: 'LinkedIn',
|
|
277
|
+
color: '#0077B5'
|
|
278
|
+
}];
|
|
279
|
+
const additionalPlatforms = [{
|
|
280
|
+
id: 'reddit',
|
|
281
|
+
name: 'Reddit',
|
|
282
|
+
color: '#FFFFFF'
|
|
283
|
+
}, {
|
|
284
|
+
id: 'gmail',
|
|
285
|
+
name: 'Gmail',
|
|
286
|
+
color: '#EA4335'
|
|
287
|
+
}, {
|
|
288
|
+
id: 'chatgpt',
|
|
289
|
+
name: 'ChatGPT',
|
|
290
|
+
color: '#10A37F'
|
|
291
|
+
}];
|
|
292
|
+
|
|
293
|
+
// Keep the original platforms array for compatibility
|
|
294
|
+
const platforms = [...mainPlatforms, ...additionalPlatforms];
|
|
295
|
+
|
|
296
|
+
// const {
|
|
297
|
+
// connectPlatform,
|
|
298
|
+
// disconnectPlatform,
|
|
299
|
+
// getConnectionStatus,
|
|
300
|
+
// isConnecting,
|
|
301
|
+
// } = useConnections(); // Hook not available
|
|
302
|
+
const connectPlatform = async () => {};
|
|
303
|
+
const disconnectPlatform = async () => {};
|
|
304
|
+
const getConnectionStatus = () => 'disconnected';
|
|
305
|
+
const isConnecting = false;
|
|
306
|
+
const isConnected = () => false;
|
|
307
|
+
|
|
308
|
+
// Track connection statuses and currently connecting platform
|
|
309
|
+
const [connectionStatuses, setConnectionStatuses] = useState({});
|
|
310
|
+
const [connectingPlatform, setConnectingPlatform] = useState(null);
|
|
311
|
+
|
|
312
|
+
// Function to get the platform icon based on platform ID
|
|
313
|
+
const getPlatformIcon = platformId => {
|
|
314
|
+
return getUniversalOnboardingIcon(platformId);
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
// Track if the modal has ever been visible to prevent initial onClose call
|
|
318
|
+
const hasBeenVisibleRef = useRef(false);
|
|
319
|
+
|
|
320
|
+
// Store onClose in a ref to avoid dependency issues in useEffect
|
|
321
|
+
const onCloseRef = useRef(onClose);
|
|
322
|
+
useEffect(() => {
|
|
323
|
+
onCloseRef.current = onClose;
|
|
324
|
+
}, [onClose]);
|
|
325
|
+
useEffect(() => {
|
|
326
|
+
if (visible) {
|
|
327
|
+
hasBeenVisibleRef.current = true; // Mark that modal has been visible
|
|
328
|
+
isCompletingRef.current = false; // Reset flag when becoming visible
|
|
329
|
+
|
|
330
|
+
// 🔧 FIX: Reset backdrop opacity before showing to prevent stale state
|
|
331
|
+
backdropOpacity.setValue(0);
|
|
332
|
+
setModalVisible(true);
|
|
333
|
+
loadInitialStatus();
|
|
334
|
+
// Fade in backdrop (slide is handled by Modal's animationType="slide")
|
|
335
|
+
// Small delay to ensure modal is mounted before animating backdrop
|
|
336
|
+
requestAnimationFrame(() => {
|
|
337
|
+
Animated.timing(backdropOpacity, {
|
|
338
|
+
toValue: 1,
|
|
339
|
+
duration: 300,
|
|
340
|
+
useNativeDriver: true
|
|
341
|
+
}).start();
|
|
342
|
+
});
|
|
343
|
+
const subscription = Linking.addEventListener('url', handleUrl);
|
|
344
|
+
return () => {
|
|
345
|
+
subscription.remove();
|
|
346
|
+
};
|
|
347
|
+
} else if (hasBeenVisibleRef.current && !isCompletingRef.current) {
|
|
348
|
+
// Only animate out if NOT completing - prevents flicker during successful completion
|
|
349
|
+
// Fade out backdrop (slide is handled by Modal's animationType="slide")
|
|
350
|
+
Animated.timing(backdropOpacity, {
|
|
351
|
+
toValue: 0,
|
|
352
|
+
duration: 250,
|
|
353
|
+
useNativeDriver: true
|
|
354
|
+
}).start(() => {
|
|
355
|
+
// Use a timeout to prevent animation state updates during unmount
|
|
356
|
+
setTimeout(() => {
|
|
357
|
+
var _onCloseRef$current;
|
|
358
|
+
setModalVisible(false);
|
|
359
|
+
(_onCloseRef$current = onCloseRef.current) === null || _onCloseRef$current === void 0 || _onCloseRef$current.call(onCloseRef); // Call onClose from ref to avoid stale closure
|
|
360
|
+
}, 16);
|
|
361
|
+
});
|
|
362
|
+
} else if (hasBeenVisibleRef.current && isCompletingRef.current) {
|
|
363
|
+
// If completing, hide modal immediately without any animation or delay
|
|
364
|
+
setModalVisible(false);
|
|
365
|
+
// Don't call onClose() when completing - let parent handle the navigation
|
|
366
|
+
isCompletingRef.current = false; // Reset for next time
|
|
367
|
+
}
|
|
368
|
+
}, [visible]); // Removed onClose from dependency array - using ref instead
|
|
369
|
+
|
|
370
|
+
// Cleanup socket connection and dots animation when component unmounts or becomes invisible
|
|
371
|
+
useEffect(() => {
|
|
372
|
+
return () => {
|
|
373
|
+
if (socketRef.current) {
|
|
374
|
+
console.log('🔌 Cleaning up socket connection...');
|
|
375
|
+
socketRef.current.disconnect();
|
|
376
|
+
socketRef.current = null;
|
|
377
|
+
}
|
|
378
|
+
stopDotsAnimation();
|
|
379
|
+
};
|
|
380
|
+
}, [visible]);
|
|
381
|
+
|
|
382
|
+
// Set up deep link listener for OAuth callbacks
|
|
383
|
+
const handleUrl = useCallback(({
|
|
384
|
+
url
|
|
385
|
+
}) => {
|
|
386
|
+
if (isOAuthCallback(url)) {
|
|
387
|
+
handleOAuthCallback(url);
|
|
388
|
+
}
|
|
389
|
+
}, []);
|
|
390
|
+
|
|
391
|
+
// Load user data and authentication token when modal becomes visible
|
|
392
|
+
// Also implements cached login - skip to consent for returning users with valid JWT
|
|
393
|
+
useEffect(() => {
|
|
394
|
+
const loadUserData = async () => {
|
|
395
|
+
try {
|
|
396
|
+
// Check for existing user info first
|
|
397
|
+
const existingToken = await AsyncStorage.getItem('existing_user_token');
|
|
398
|
+
const existingInfo = await AsyncStorage.getItem('existing_user_info');
|
|
399
|
+
if (existingToken && existingInfo) {
|
|
400
|
+
console.log('🔍 Found existing user info - user wants to add more data');
|
|
401
|
+
setIsExistingUser(true);
|
|
402
|
+
setExistingUserToken(existingToken);
|
|
403
|
+
setExistingUserInfo(JSON.parse(existingInfo));
|
|
404
|
+
|
|
405
|
+
// Clear the temporary storage
|
|
406
|
+
await AsyncStorage.removeItem('existing_user_token');
|
|
407
|
+
await AsyncStorage.removeItem('existing_user_info');
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
// Use simplified JWT storage
|
|
411
|
+
const token = await getJWT();
|
|
412
|
+
setUserToken(token);
|
|
413
|
+
if (token) {
|
|
414
|
+
var _user$email;
|
|
415
|
+
// Use provided username or get stored username
|
|
416
|
+
const storedUsername = await getOnairosUsername();
|
|
417
|
+
const storedEmail = await AsyncStorage.getItem('user_email');
|
|
418
|
+
const fallbackUsername = storedUsername || (user === null || user === void 0 || (_user$email = user.email) === null || _user$email === void 0 ? void 0 : _user$email.split('@')[0]) || (user === null || user === void 0 ? void 0 : user.name) || 'mobile_user';
|
|
419
|
+
console.log('🔍 Using username for training:', fallbackUsername);
|
|
420
|
+
setUserInfo({
|
|
421
|
+
username: fallbackUsername,
|
|
422
|
+
email: storedEmail || (user === null || user === void 0 ? void 0 : user.email) || null,
|
|
423
|
+
id: null // Will be filled by backend during training
|
|
424
|
+
});
|
|
425
|
+
setUsername(fallbackUsername);
|
|
426
|
+
|
|
427
|
+
// 🔑 CACHED LOGIN: Check if this is a returning user with a valid token
|
|
428
|
+
// Skip directly to consent screen like other normal logins
|
|
429
|
+
if (storedEmail && step === 'welcome' && !primaryAuthOnly) {
|
|
430
|
+
console.log('🔑 [CACHED LOGIN] Found valid token for user:', storedEmail);
|
|
431
|
+
|
|
432
|
+
// Check local storage AND server for connected platforms
|
|
433
|
+
const connectedPlatformsJson = await AsyncStorage.getItem('connectedPlatforms');
|
|
434
|
+
const cachedConnections = connectedPlatformsJson ? JSON.parse(connectedPlatformsJson) : [];
|
|
435
|
+
|
|
436
|
+
// Also fetch server-side connections for returning users
|
|
437
|
+
let serverConnections = [];
|
|
438
|
+
try {
|
|
439
|
+
const serverAccounts = await getConnectedAccountsLookup(storedEmail);
|
|
440
|
+
serverConnections = serverAccounts.map(a => a.platform.toLowerCase());
|
|
441
|
+
console.log('🔑 [CACHED LOGIN] Server connections:', serverConnections);
|
|
442
|
+
} catch (err) {
|
|
443
|
+
console.warn('🔑 [CACHED LOGIN] Server lookup failed, using local only:', err);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
// Merge local + server connections (deduplicated)
|
|
447
|
+
const allConnections = Array.from(new Set([...cachedConnections, ...serverConnections]));
|
|
448
|
+
|
|
449
|
+
// Sync merged connections back to local storage
|
|
450
|
+
if (allConnections.length > 0) {
|
|
451
|
+
await AsyncStorage.setItem('connectedPlatforms', JSON.stringify(allConnections));
|
|
452
|
+
await AsyncStorage.setItem('user_connected_platforms', JSON.stringify(allConnections));
|
|
453
|
+
}
|
|
454
|
+
if (allConnections.length > 0) {
|
|
455
|
+
// User has existing connections - skip to consent screen
|
|
456
|
+
console.log('🔑 [CACHED LOGIN] User has existing connections:', allConnections);
|
|
457
|
+
console.log('🔑 [CACHED LOGIN] Skipping to consent screen');
|
|
458
|
+
setUserEmail(storedEmail);
|
|
459
|
+
setIsReturningUser(true);
|
|
460
|
+
setReturningUserConnections(allConnections);
|
|
461
|
+
setStep('consent');
|
|
462
|
+
} else {
|
|
463
|
+
// User has token but no connections - skip to platforms
|
|
464
|
+
console.log('🔑 [CACHED LOGIN] User authenticated but no connections - skipping to platforms');
|
|
465
|
+
setUserEmail(storedEmail);
|
|
466
|
+
setStep('platforms');
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
} catch (error) {
|
|
471
|
+
var _user$email2;
|
|
472
|
+
console.error('Error loading user data:', error);
|
|
473
|
+
// Fallback user info
|
|
474
|
+
const fallbackUsername = (user === null || user === void 0 || (_user$email2 = user.email) === null || _user$email2 === void 0 ? void 0 : _user$email2.split('@')[0]) || (user === null || user === void 0 ? void 0 : user.name) || 'mobile_user';
|
|
475
|
+
setUserInfo({
|
|
476
|
+
username: fallbackUsername,
|
|
477
|
+
email: (user === null || user === void 0 ? void 0 : user.email) || null,
|
|
478
|
+
id: null
|
|
479
|
+
});
|
|
480
|
+
setUsername(fallbackUsername);
|
|
481
|
+
}
|
|
482
|
+
};
|
|
483
|
+
if (visible) {
|
|
484
|
+
loadUserData();
|
|
485
|
+
}
|
|
486
|
+
}, [visible, user, step, primaryAuthOnly]);
|
|
487
|
+
const loadInitialStatus = async () => {
|
|
488
|
+
try {
|
|
489
|
+
// Get the stored Onairos username first
|
|
490
|
+
const storedUsername = await getOnairosUsername();
|
|
491
|
+
const fallbackUsername = (user === null || user === void 0 ? void 0 : user.email) || (user === null || user === void 0 ? void 0 : user.name) || `user_${Math.floor(Math.random() * 10000)}`;
|
|
492
|
+
const finalUsername = storedUsername || fallbackUsername;
|
|
493
|
+
console.log('🔍 Loading username for data connections:', {
|
|
494
|
+
storedUsername,
|
|
495
|
+
fallbackUsername,
|
|
496
|
+
finalUsername
|
|
497
|
+
});
|
|
498
|
+
setUsername(finalUsername);
|
|
499
|
+
|
|
500
|
+
// Initialize connection statuses
|
|
501
|
+
const connectionStatus = await getConnectionStatus();
|
|
502
|
+
console.log('Initial connection status:', connectionStatus);
|
|
503
|
+
|
|
504
|
+
// Update the main connections state
|
|
505
|
+
setConnections(connectionStatus);
|
|
506
|
+
|
|
507
|
+
// Convert connections object to status strings
|
|
508
|
+
const statuses = {};
|
|
509
|
+
Object.keys(connectionStatus).forEach(platform => {
|
|
510
|
+
var _connectionStatus$pla;
|
|
511
|
+
statuses[platform] = (_connectionStatus$pla = connectionStatus[platform]) !== null && _connectionStatus$pla !== void 0 && _connectionStatus$pla.connected ? 'connected' : 'disconnected';
|
|
512
|
+
});
|
|
513
|
+
setConnectionStatuses(statuses);
|
|
514
|
+
|
|
515
|
+
// Initialize platform toggles based on connection statuses
|
|
516
|
+
const toggles = {};
|
|
517
|
+
Object.keys(connectionStatus).forEach(platform => {
|
|
518
|
+
var _connectionStatus$pla2;
|
|
519
|
+
toggles[platform] = ((_connectionStatus$pla2 = connectionStatus[platform]) === null || _connectionStatus$pla2 === void 0 ? void 0 : _connectionStatus$pla2.connected) || false;
|
|
520
|
+
});
|
|
521
|
+
setPlatformToggles(toggles);
|
|
522
|
+
console.log('Connection statuses set:', statuses);
|
|
523
|
+
console.log('Platform toggles set:', toggles);
|
|
524
|
+
} catch (error) {
|
|
525
|
+
console.error('Error loading initial connection status:', error);
|
|
526
|
+
// Set empty objects as fallback
|
|
527
|
+
setConnections({});
|
|
528
|
+
setConnectionStatuses({});
|
|
529
|
+
setPlatformToggles({});
|
|
530
|
+
|
|
531
|
+
// Still set a fallback username even if other loading fails
|
|
532
|
+
const fallbackUsername = (user === null || user === void 0 ? void 0 : user.email) || (user === null || user === void 0 ? void 0 : user.name) || `user_${Math.floor(Math.random() * 10000)}`;
|
|
533
|
+
setUsername(fallbackUsername);
|
|
534
|
+
}
|
|
535
|
+
};
|
|
536
|
+
const handleClose = () => {
|
|
537
|
+
const currentlyCompleting = isCompletingRef.current; // Capture ref's current value
|
|
538
|
+
|
|
539
|
+
// Fade out backdrop (slide out is handled by Modal's animationType="slide")
|
|
540
|
+
Animated.timing(backdropOpacity, {
|
|
541
|
+
toValue: 0,
|
|
542
|
+
duration: 250,
|
|
543
|
+
useNativeDriver: true
|
|
544
|
+
}).start(() => {
|
|
545
|
+
// Small delay before closing modal to ensure animation completes fully
|
|
546
|
+
setTimeout(() => {
|
|
547
|
+
setModalVisible(false);
|
|
548
|
+
if (!currentlyCompleting) {
|
|
549
|
+
// Use the captured value
|
|
550
|
+
onClose();
|
|
551
|
+
}
|
|
552
|
+
// Do NOT reset isCompletingRef.current here. The useEffect watching props.visible is responsible for that.
|
|
553
|
+
}, 100);
|
|
554
|
+
});
|
|
555
|
+
};
|
|
556
|
+
|
|
557
|
+
// ============================================
|
|
558
|
+
// ENOCH-STYLE FLOW HANDLERS
|
|
559
|
+
// ============================================
|
|
560
|
+
|
|
561
|
+
const handleGetStarted = () => {
|
|
562
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
563
|
+
|
|
564
|
+
// 🍎 Apple Sign-In flow: Skip signin step since user already authenticated
|
|
565
|
+
if (primaryAuthOnly) {
|
|
566
|
+
console.log('🍎 Get Started pressed (Apple user) - skipping signin, going to platforms');
|
|
567
|
+
setStep('platforms');
|
|
568
|
+
return;
|
|
569
|
+
}
|
|
570
|
+
console.log('🚀 Get Started pressed - moving to signin');
|
|
571
|
+
setStep('signin');
|
|
572
|
+
};
|
|
573
|
+
const handleEmailSubmit = async emailInput => {
|
|
574
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
575
|
+
setAuthLoading(true);
|
|
576
|
+
setAuthError('');
|
|
577
|
+
try {
|
|
578
|
+
// Check for reviewer bypass
|
|
579
|
+
if (emailInput === 'reviewer@bypass.com') {
|
|
580
|
+
console.log('🔍 Reviewer bypass detected');
|
|
581
|
+
await AsyncStorage.setItem('onairos_user', 'true');
|
|
582
|
+
// Note: Reviewer bypass uses a placeholder token
|
|
583
|
+
// Store a valid-looking placeholder JWT for reviewer bypass
|
|
584
|
+
await storeJWT('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyZXZpZXdlciI6dHJ1ZSwiaWF0IjoxNzA0MDY3MjAwfQ.reviewer-bypass-signature-placeholder');
|
|
585
|
+
setUserEmail(emailInput);
|
|
586
|
+
setStep('platforms');
|
|
587
|
+
setAuthLoading(false);
|
|
588
|
+
return;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
// Check for test bypass - skip to verification screen without sending email
|
|
592
|
+
if (emailInput === 'test@bypass.com') {
|
|
593
|
+
console.log('🧪 Test bypass detected - skipping to verification screen');
|
|
594
|
+
setUserEmail('test@example.com');
|
|
595
|
+
setStep('verification');
|
|
596
|
+
setAuthLoading(false);
|
|
597
|
+
return;
|
|
598
|
+
}
|
|
599
|
+
console.log('📧 Sending verification code to:', emailInput);
|
|
600
|
+
|
|
601
|
+
// Use the email verification API
|
|
602
|
+
const result = await sendEmailVerificationCode(emailInput);
|
|
603
|
+
if (result.success) {
|
|
604
|
+
console.log('✅ Verification code sent successfully');
|
|
605
|
+
setUserEmail(emailInput);
|
|
606
|
+
setStep('verification');
|
|
607
|
+
} else {
|
|
608
|
+
console.log('❌ Failed to send verification code:', result.message);
|
|
609
|
+
setAuthError(result.message || 'Failed to send verification code. Please try again.');
|
|
610
|
+
}
|
|
611
|
+
} catch (error) {
|
|
612
|
+
console.error('❌ Error sending verification code:', error);
|
|
613
|
+
setAuthError('Network error. Please check your connection and try again.');
|
|
614
|
+
} finally {
|
|
615
|
+
setAuthLoading(false);
|
|
616
|
+
}
|
|
617
|
+
};
|
|
618
|
+
const handleGoogleSignIn = async () => {
|
|
619
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
620
|
+
setAuthLoading(true);
|
|
621
|
+
setAuthError('');
|
|
622
|
+
try {
|
|
623
|
+
console.log('🔗 Initiating Google Sign-In');
|
|
624
|
+
|
|
625
|
+
// Use the Google Auth Service to trigger native Google Sign-In
|
|
626
|
+
const result = await signInWithGoogle();
|
|
627
|
+
if (result.success && result.user) {
|
|
628
|
+
console.log('✅ Google Sign-In successful:', result.user.email);
|
|
629
|
+
console.log('🔍 Is new user?', result.isNewUser);
|
|
630
|
+
|
|
631
|
+
// Store the user email for later use
|
|
632
|
+
setUserEmail(result.user.email);
|
|
633
|
+
|
|
634
|
+
// Store username in state
|
|
635
|
+
const derivedUsername = result.user.username || result.user.email.split('@')[0];
|
|
636
|
+
setUsername(derivedUsername);
|
|
637
|
+
|
|
638
|
+
// ✅ FIX: Check if user is returning (already has an account)
|
|
639
|
+
if (result.isNewUser === false) {
|
|
640
|
+
console.log('👤 Returning user detected via Google Sign-In - checking for existing connections');
|
|
641
|
+
try {
|
|
642
|
+
// Try to fetch existing connected accounts
|
|
643
|
+
const existingConnections = await getConnectedAccountsSmart(result.user.email, result.user.id, derivedUsername);
|
|
644
|
+
if (existingConnections && existingConnections.length > 0) {
|
|
645
|
+
console.log(`✅ Found ${existingConnections.length} existing connections - skipping to consent`);
|
|
646
|
+
// Store connections for the consent screen and mark as returning user
|
|
647
|
+
setIsReturningUser(true);
|
|
648
|
+
setReturningUserConnections(existingConnections.map(c => c.platform));
|
|
649
|
+
setStep('consent');
|
|
650
|
+
triggerHaptic(HapticType.SUCCESS);
|
|
651
|
+
return;
|
|
652
|
+
} else {
|
|
653
|
+
console.log('ℹ️ No existing connections found - proceeding to platforms step');
|
|
654
|
+
}
|
|
655
|
+
} catch (connError) {
|
|
656
|
+
console.log('⚠️ Could not fetch existing connections, proceeding to platforms:', connError);
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
// New user or no existing connections - proceed to platforms step
|
|
661
|
+
setStep('platforms');
|
|
662
|
+
triggerHaptic(HapticType.SUCCESS);
|
|
663
|
+
} else if (result.cancelled) {
|
|
664
|
+
// User cancelled - just return without error
|
|
665
|
+
console.log('ℹ️ Google Sign-In cancelled by user');
|
|
666
|
+
} else {
|
|
667
|
+
// Show error message
|
|
668
|
+
setAuthError(result.message || 'Google Sign-In failed. Please try again.');
|
|
669
|
+
triggerHaptic(HapticType.ERROR);
|
|
670
|
+
}
|
|
671
|
+
} catch (error) {
|
|
672
|
+
console.error('❌ Google Sign-In error:', error);
|
|
673
|
+
setAuthError(error.message || 'Google Sign-In failed. Please try again.');
|
|
674
|
+
triggerHaptic(HapticType.ERROR);
|
|
675
|
+
setAuthError('Google Sign-In failed. Please try again.');
|
|
676
|
+
} finally {
|
|
677
|
+
setAuthLoading(false);
|
|
678
|
+
}
|
|
679
|
+
};
|
|
680
|
+
const handleCodeSubmit = async code => {
|
|
681
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
682
|
+
setAuthLoading(true);
|
|
683
|
+
setAuthError('');
|
|
684
|
+
try {
|
|
685
|
+
// Test bypass - any code works for test@example.com
|
|
686
|
+
if (userEmail === 'test@example.com') {
|
|
687
|
+
console.log('🧪 Test bypass - skipping code verification, going to platforms');
|
|
688
|
+
setStep('platforms');
|
|
689
|
+
setAuthLoading(false);
|
|
690
|
+
return;
|
|
691
|
+
}
|
|
692
|
+
console.log('🔍 Verifying email code:', userEmail, code);
|
|
693
|
+
console.log('🔍 App name:', AppName);
|
|
694
|
+
const result = await confirmEmailVerificationCode(userEmail, code);
|
|
695
|
+
if (result.success) {
|
|
696
|
+
var _result$existingUserD, _result$existingUserD2, _result$existingUserD3, _result$enochInstruct;
|
|
697
|
+
console.log('✅ Email verification successful');
|
|
698
|
+
console.log('🔍 Checking for returning user data...', {
|
|
699
|
+
isNewUser: result.isNewUser,
|
|
700
|
+
flowType: result.flowType,
|
|
701
|
+
hasExistingData: (_result$existingUserD = result.existingUserData) === null || _result$existingUserD === void 0 ? void 0 : _result$existingUserD.hasExistingData,
|
|
702
|
+
connectionsCount: ((_result$existingUserD2 = result.existingUserData) === null || _result$existingUserD2 === void 0 || (_result$existingUserD2 = _result$existingUserD2.connections) === null || _result$existingUserD2 === void 0 ? void 0 : _result$existingUserD2.length) || 0
|
|
703
|
+
});
|
|
704
|
+
|
|
705
|
+
// Check if this is a returning user with existing connections
|
|
706
|
+
const isReturning = result.isNewUser === false || result.flowType === 'returning_user';
|
|
707
|
+
// 🔧 FIX: Ensure connections is always an array to prevent crash
|
|
708
|
+
const rawConnections = (_result$existingUserD3 = result.existingUserData) === null || _result$existingUserD3 === void 0 ? void 0 : _result$existingUserD3.connections;
|
|
709
|
+
const existingConnections = Array.isArray(rawConnections) ? rawConnections : [];
|
|
710
|
+
|
|
711
|
+
// Extract platform names from connections
|
|
712
|
+
// 🔧 FIX: Add null check for each connection item
|
|
713
|
+
const connectedPlatformNames = existingConnections.filter(conn => conn && (conn.hasData || conn.status === 'active')).map(conn => conn === null || conn === void 0 ? void 0 : conn.platform).filter(Boolean); // Remove any undefined platform names
|
|
714
|
+
|
|
715
|
+
console.log('🔍 Returning user check:', {
|
|
716
|
+
isReturning,
|
|
717
|
+
connectedPlatformNames,
|
|
718
|
+
showWelcomeBack: (_result$enochInstruct = result.enochInstructions) === null || _result$enochInstruct === void 0 ? void 0 : _result$enochInstruct.showWelcomeBack
|
|
719
|
+
});
|
|
720
|
+
if (isReturning && connectedPlatformNames.length > 0) {
|
|
721
|
+
// Returning user with connected platforms - skip to consent screen
|
|
722
|
+
console.log('👋 Welcome back! User has existing connections, skipping to consent screen');
|
|
723
|
+
setIsReturningUser(true);
|
|
724
|
+
setReturningUserConnections(connectedPlatformNames);
|
|
725
|
+
setStep('consent');
|
|
726
|
+
} else {
|
|
727
|
+
// New user or returning user without connections - show platform connection
|
|
728
|
+
console.log('🆕 New user or no existing connections, showing platform connection screen');
|
|
729
|
+
setIsReturningUser(false);
|
|
730
|
+
setReturningUserConnections([]);
|
|
731
|
+
setStep('platforms');
|
|
732
|
+
}
|
|
733
|
+
} else {
|
|
734
|
+
console.log('❌ Email verification failed:', result.message);
|
|
735
|
+
setAuthError(result.message || 'Invalid verification code. Please try again.');
|
|
736
|
+
}
|
|
737
|
+
} catch (error) {
|
|
738
|
+
console.error('❌ Error verifying email code:', error);
|
|
739
|
+
setAuthError('Verification failed. Please try again.');
|
|
740
|
+
} finally {
|
|
741
|
+
setAuthLoading(false);
|
|
742
|
+
}
|
|
743
|
+
};
|
|
744
|
+
const handleBackToSignIn = () => {
|
|
745
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
746
|
+
setAuthError('');
|
|
747
|
+
setStep('signin');
|
|
748
|
+
};
|
|
749
|
+
|
|
750
|
+
// Handle logout - clears token and navigates to login page (not close overlay)
|
|
751
|
+
const handleLogout = async () => {
|
|
752
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
753
|
+
console.log('👋 Logout requested - clearing tokens and navigating to login');
|
|
754
|
+
try {
|
|
755
|
+
// Clear all auth tokens AND SDK-specific storage keys
|
|
756
|
+
await AsyncStorage.multiRemove(['sdk_jwt_token', 'onairos_jwt_token', 'user_email', 'onairos_username', 'auth_method', 'onairos_user', 'connectedPlatforms', 'user_connected_platforms', 'platform_account_details']);
|
|
757
|
+
|
|
758
|
+
// Clear LLM and LinkedIn connection keys
|
|
759
|
+
const llmPlatforms = ['chatgpt', 'claude', 'gemini', 'grok'];
|
|
760
|
+
for (const llm of llmPlatforms) {
|
|
761
|
+
await AsyncStorage.removeItem(`@onairos:llm_connected:${llm}`);
|
|
762
|
+
}
|
|
763
|
+
await AsyncStorage.removeItem('@onairos:linkedin_connected');
|
|
764
|
+
|
|
765
|
+
// Clear state
|
|
766
|
+
setUserToken(null);
|
|
767
|
+
setUserInfo(null);
|
|
768
|
+
setUserEmail('');
|
|
769
|
+
setIsReturningUser(false);
|
|
770
|
+
setReturningUserConnections([]);
|
|
771
|
+
|
|
772
|
+
// Navigate to signin step (NOT close the overlay)
|
|
773
|
+
setAuthError('');
|
|
774
|
+
setStep('signin');
|
|
775
|
+
console.log('✅ Logout complete - user is now on login page');
|
|
776
|
+
} catch (error) {
|
|
777
|
+
console.error('❌ Error during logout:', error);
|
|
778
|
+
// Still navigate to signin even on error
|
|
779
|
+
setStep('signin');
|
|
780
|
+
}
|
|
781
|
+
};
|
|
782
|
+
const handleResendCode = async () => {
|
|
783
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
784
|
+
setAuthLoading(true);
|
|
785
|
+
setAuthError('');
|
|
786
|
+
try {
|
|
787
|
+
console.log('🔄 Resending verification code to:', userEmail);
|
|
788
|
+
const result = await sendEmailVerificationCode(userEmail);
|
|
789
|
+
if (result.success) {
|
|
790
|
+
console.log('✅ Verification code resent successfully');
|
|
791
|
+
} else {
|
|
792
|
+
setAuthError(result.message || 'Failed to resend verification code.');
|
|
793
|
+
}
|
|
794
|
+
} catch (error) {
|
|
795
|
+
console.error('❌ Error resending verification code:', error);
|
|
796
|
+
setAuthError('Network error. Please try again.');
|
|
797
|
+
} finally {
|
|
798
|
+
setAuthLoading(false);
|
|
799
|
+
}
|
|
800
|
+
};
|
|
801
|
+
const handlePlatformUpdate = async connectedPlatforms => {
|
|
802
|
+
triggerHaptic(HapticType.SUCCESS);
|
|
803
|
+
console.log('✅ Onboarding complete! Connected platforms:', connectedPlatforms);
|
|
804
|
+
|
|
805
|
+
// 🚀 OPTIMIZATION: Load auth data in parallel (fast!)
|
|
806
|
+
try {
|
|
807
|
+
const [token, email, storedUsername] = await Promise.all([getAuthToken(), AsyncStorage.getItem('user_email'), getOnairosUsername()]);
|
|
808
|
+
console.log('🔑 [SDK] Auth data retrieved in parallel');
|
|
809
|
+
console.log('🔑 [SDK] Token available:', token ? `${token.substring(0, 20)}...` : 'NO');
|
|
810
|
+
console.log('📧 [SDK] Email available:', email || 'NO');
|
|
811
|
+
|
|
812
|
+
// Set completing flag before closing
|
|
813
|
+
isCompletingRef.current = true;
|
|
814
|
+
|
|
815
|
+
// 🍎 FIX: Always include email if available (critical for Apple sign-in)
|
|
816
|
+
// Apple auth may not have SDK token, but app needs email for platform sync
|
|
817
|
+
const userData = {
|
|
818
|
+
connectedPlatforms
|
|
819
|
+
};
|
|
820
|
+
if (email) {
|
|
821
|
+
userData.email = email;
|
|
822
|
+
userData.username = storedUsername || email.split('@')[0];
|
|
823
|
+
}
|
|
824
|
+
if (token && email) {
|
|
825
|
+
// Full data available - include token
|
|
826
|
+
console.log('✅ [SDK] Calling onComplete with token and user data');
|
|
827
|
+
await (onComplete === null || onComplete === void 0 ? void 0 : onComplete(API_CONFIG.BASE_URL, token, userData));
|
|
828
|
+
} else if (email) {
|
|
829
|
+
// 🍎 Apple sign-in case: Email available but no SDK token
|
|
830
|
+
// App can still sync platforms using email
|
|
831
|
+
console.log('🍎 [SDK] Calling onComplete with email (no SDK token - Apple auth)');
|
|
832
|
+
await (onComplete === null || onComplete === void 0 ? void 0 : onComplete(API_CONFIG.BASE_URL, '', userData));
|
|
833
|
+
} else {
|
|
834
|
+
// Fallback: No email available
|
|
835
|
+
console.warn('⚠️ [SDK] No email found - calling onComplete with limited data');
|
|
836
|
+
await (onComplete === null || onComplete === void 0 ? void 0 : onComplete(API_CONFIG.BASE_URL, '', userData));
|
|
837
|
+
}
|
|
838
|
+
} catch (error) {
|
|
839
|
+
console.error('❌ [SDK] Error retrieving auth data for onComplete:', error);
|
|
840
|
+
// Still close the modal even on error - try to get email one more time
|
|
841
|
+
const fallbackEmail = await AsyncStorage.getItem('user_email').catch(() => null);
|
|
842
|
+
await (onComplete === null || onComplete === void 0 ? void 0 : onComplete(API_CONFIG.BASE_URL, '', {
|
|
843
|
+
connectedPlatforms,
|
|
844
|
+
...(fallbackEmail && {
|
|
845
|
+
email: fallbackEmail
|
|
846
|
+
})
|
|
847
|
+
}));
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
// NOTE: Modal closes when parent sets visible={false} after onComplete finishes
|
|
851
|
+
// Do NOT call handleClose() here - let the loading animation stay visible
|
|
852
|
+
console.log('✅ [SDK] onComplete finished - waiting for parent to close modal');
|
|
853
|
+
};
|
|
854
|
+
const handlePlatformSkip = async () => {
|
|
855
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
856
|
+
console.log('⏭️ Skipping platform connections');
|
|
857
|
+
|
|
858
|
+
// Even when skipping, pass back the token so the app can register the user
|
|
859
|
+
try {
|
|
860
|
+
// 🚀 OPTIMIZATION: Load data in parallel (fast!)
|
|
861
|
+
const [token, email, storedUsername] = await Promise.all([getAuthToken(), AsyncStorage.getItem('user_email'), getOnairosUsername()]);
|
|
862
|
+
|
|
863
|
+
// Set completing flag before closing
|
|
864
|
+
isCompletingRef.current = true;
|
|
865
|
+
if (token && email) {
|
|
866
|
+
console.log('✅ [SDK] User skipped platforms - still calling onComplete with auth data');
|
|
867
|
+
await (onComplete === null || onComplete === void 0 ? void 0 : onComplete(API_CONFIG.BASE_URL, token, {
|
|
868
|
+
email,
|
|
869
|
+
connectedPlatforms: [],
|
|
870
|
+
username: storedUsername || email.split('@')[0],
|
|
871
|
+
skipped: true
|
|
872
|
+
}));
|
|
873
|
+
} else {
|
|
874
|
+
console.warn('⚠️ [SDK] User skipped - no auth data available');
|
|
875
|
+
await (onComplete === null || onComplete === void 0 ? void 0 : onComplete(API_CONFIG.BASE_URL, '', {
|
|
876
|
+
connectedPlatforms: [],
|
|
877
|
+
skipped: true
|
|
878
|
+
}));
|
|
879
|
+
}
|
|
880
|
+
} catch (error) {
|
|
881
|
+
console.error('❌ [SDK] Error during skip:', error);
|
|
882
|
+
await (onComplete === null || onComplete === void 0 ? void 0 : onComplete(API_CONFIG.BASE_URL, '', {
|
|
883
|
+
connectedPlatforms: [],
|
|
884
|
+
skipped: true
|
|
885
|
+
}));
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
// NOTE: Modal closes when parent sets visible={false} after onComplete finishes
|
|
889
|
+
console.log('✅ [SDK] Skip complete - waiting for parent to close modal');
|
|
890
|
+
};
|
|
891
|
+
const handleReviewerBypass = async () => {
|
|
892
|
+
console.log('🔍 Reviewer bypass triggered from platforms');
|
|
893
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
894
|
+
try {
|
|
895
|
+
await AsyncStorage.setItem('onairos_user', 'true');
|
|
896
|
+
// Note: Reviewer bypass uses a placeholder token
|
|
897
|
+
await storeJWT('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyZXZpZXdlciI6dHJ1ZSwiaWF0IjoxNzA0MDY3MjAwfQ.reviewer-bypass-signature-placeholder');
|
|
898
|
+
console.log('✅ Stored reviewer bypass markers');
|
|
899
|
+
handleClose();
|
|
900
|
+
} catch (error) {
|
|
901
|
+
console.error('❌ Failed to store reviewer bypass:', error);
|
|
902
|
+
handleClose();
|
|
903
|
+
}
|
|
904
|
+
};
|
|
905
|
+
|
|
906
|
+
// ============================================
|
|
907
|
+
// END ENOCH-STYLE FLOW HANDLERS
|
|
908
|
+
// ============================================
|
|
909
|
+
|
|
910
|
+
const handleConnectPlatform = async platformId => {
|
|
911
|
+
// Trigger haptic feedback when connect button is pressed
|
|
912
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
913
|
+
setConnectingPlatform(platformId);
|
|
914
|
+
try {
|
|
915
|
+
// Check if the platform has a native SDK
|
|
916
|
+
if (hasNativeSDK(platformId)) {
|
|
917
|
+
// Use native SDK authentication
|
|
918
|
+
setCurrentPlatform(platformId);
|
|
919
|
+
const success = await initiateNativeAuth(platformId, username);
|
|
920
|
+
if (success) {
|
|
921
|
+
// Update connections state
|
|
922
|
+
setConnections(prev => ({
|
|
923
|
+
...prev,
|
|
924
|
+
[platformId]: {
|
|
925
|
+
userName: username,
|
|
926
|
+
connected: true
|
|
927
|
+
}
|
|
928
|
+
}));
|
|
929
|
+
|
|
930
|
+
// Update platform toggles
|
|
931
|
+
setPlatformToggles(prev => ({
|
|
932
|
+
...prev,
|
|
933
|
+
[platformId]: true
|
|
934
|
+
}));
|
|
935
|
+
|
|
936
|
+
// Update connection statuses
|
|
937
|
+
setConnectionStatuses(prev => ({
|
|
938
|
+
...prev,
|
|
939
|
+
[platformId]: 'connected'
|
|
940
|
+
}));
|
|
941
|
+
|
|
942
|
+
// Store the connected platform
|
|
943
|
+
await storeConnectedPlatform(platformId);
|
|
944
|
+
}
|
|
945
|
+
} else {
|
|
946
|
+
// For other platforms, use the web OAuth flow
|
|
947
|
+
setCurrentPlatform(platformId);
|
|
948
|
+
const oauthUrl = await initiateOAuth(platformId, username);
|
|
949
|
+
if (oauthUrl) {
|
|
950
|
+
setOauthUrl(oauthUrl);
|
|
951
|
+
setStep('oauth');
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
} catch (error) {
|
|
955
|
+
console.error(`Error connecting to ${platformId}:`, error);
|
|
956
|
+
} finally {
|
|
957
|
+
setConnectingPlatform(null);
|
|
958
|
+
}
|
|
959
|
+
};
|
|
960
|
+
const togglePlatform = useCallback(async platformId => {
|
|
961
|
+
// If toggling on, initiate the OAuth flow for the platform
|
|
962
|
+
if (!platformToggles[platformId]) {
|
|
963
|
+
try {
|
|
964
|
+
// Special case for Instagram which uses the existing flow
|
|
965
|
+
if (platformId === 'instagram') {
|
|
966
|
+
setPlatformToggles(prev => ({
|
|
967
|
+
...prev,
|
|
968
|
+
[platformId]: !prev[platformId]
|
|
969
|
+
}));
|
|
970
|
+
setConnections(prev => ({
|
|
971
|
+
...prev,
|
|
972
|
+
[platformId]: {
|
|
973
|
+
userName: `${platformId}_user`,
|
|
974
|
+
connected: true
|
|
975
|
+
}
|
|
976
|
+
}));
|
|
977
|
+
// Store the connected platform
|
|
978
|
+
await storeConnectedPlatform(platformId);
|
|
979
|
+
return;
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
// ChatGPT/LLM: Full backend implementation - send data directly to backend
|
|
983
|
+
if (platformId === 'chatgpt' || platformId === 'llm') {
|
|
984
|
+
console.log('🤖 Handling LLM/ChatGPT connection - sending to backend...');
|
|
985
|
+
|
|
986
|
+
// In production, this would trigger OAuth flow to get actual ChatGPT data
|
|
987
|
+
// For now, using mock data structure
|
|
988
|
+
const llmData = {
|
|
989
|
+
userId: email || username,
|
|
990
|
+
email: email || `${username}@temp.com`,
|
|
991
|
+
appName: AppName,
|
|
992
|
+
timestamp: Date.now(),
|
|
993
|
+
data: {
|
|
994
|
+
conversations: [],
|
|
995
|
+
chatHistory: [],
|
|
996
|
+
preferences: {},
|
|
997
|
+
customData: {}
|
|
998
|
+
},
|
|
999
|
+
// These would come from actual OAuth flow
|
|
1000
|
+
accessToken: undefined,
|
|
1001
|
+
refreshToken: undefined,
|
|
1002
|
+
tokenExpiry: undefined
|
|
1003
|
+
};
|
|
1004
|
+
|
|
1005
|
+
// Send LLM data directly to backend for processing and storage
|
|
1006
|
+
const result = await sendLLMDataToBackend(llmData);
|
|
1007
|
+
if (result.success) {
|
|
1008
|
+
console.log('✅ Backend received and stored LLM data');
|
|
1009
|
+
console.log('📝 Connection ID:', result.connectionId);
|
|
1010
|
+
|
|
1011
|
+
// Update platform toggle state
|
|
1012
|
+
setPlatformToggles(prev => ({
|
|
1013
|
+
...prev,
|
|
1014
|
+
[platformId]: true
|
|
1015
|
+
}));
|
|
1016
|
+
|
|
1017
|
+
// Update connections state
|
|
1018
|
+
setConnections(prev => ({
|
|
1019
|
+
...prev,
|
|
1020
|
+
[platformId]: {
|
|
1021
|
+
userName: username,
|
|
1022
|
+
connected: true,
|
|
1023
|
+
connectionId: result.connectionId,
|
|
1024
|
+
storedInBackend: true
|
|
1025
|
+
}
|
|
1026
|
+
}));
|
|
1027
|
+
|
|
1028
|
+
// Store the connected platform
|
|
1029
|
+
await storeConnectedPlatform(platformId);
|
|
1030
|
+
console.log(`✅ ${platformId} successfully connected and stored in backend`);
|
|
1031
|
+
} else {
|
|
1032
|
+
throw new Error(`Failed to send LLM data to backend: ${result.message}`);
|
|
1033
|
+
}
|
|
1034
|
+
return;
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
// Check if the platform has a native SDK
|
|
1038
|
+
if (hasNativeSDK(platformId)) {
|
|
1039
|
+
// Use native SDK authentication
|
|
1040
|
+
setCurrentPlatform(platformId);
|
|
1041
|
+
const success = await initiateNativeAuth(platformId, username);
|
|
1042
|
+
if (success) {
|
|
1043
|
+
// Update connections state
|
|
1044
|
+
setConnections(prev => ({
|
|
1045
|
+
...prev,
|
|
1046
|
+
[platformId]: {
|
|
1047
|
+
userName: username,
|
|
1048
|
+
connected: true
|
|
1049
|
+
}
|
|
1050
|
+
}));
|
|
1051
|
+
|
|
1052
|
+
// Update platform toggles
|
|
1053
|
+
setPlatformToggles(prev => ({
|
|
1054
|
+
...prev,
|
|
1055
|
+
[platformId]: true
|
|
1056
|
+
}));
|
|
1057
|
+
|
|
1058
|
+
// Store the connected platform
|
|
1059
|
+
await storeConnectedPlatform(platformId);
|
|
1060
|
+
}
|
|
1061
|
+
return;
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
// For other platforms, use the web OAuth flow
|
|
1065
|
+
setCurrentPlatform(platformId);
|
|
1066
|
+
const oauthUrl = await initiateOAuth(platformId, username);
|
|
1067
|
+
|
|
1068
|
+
// If oauthUrl is null, it means we should use native SDK (which should have been caught above)
|
|
1069
|
+
if (oauthUrl) {
|
|
1070
|
+
setOauthUrl(oauthUrl);
|
|
1071
|
+
setStep('oauth');
|
|
1072
|
+
}
|
|
1073
|
+
} catch (error) {
|
|
1074
|
+
console.error(`Error initiating OAuth for ${platformId}:`, error);
|
|
1075
|
+
// If there's an error, don't toggle the platform
|
|
1076
|
+
return;
|
|
1077
|
+
}
|
|
1078
|
+
} else {
|
|
1079
|
+
// If toggling off, just update the state
|
|
1080
|
+
setPlatformToggles(prev => ({
|
|
1081
|
+
...prev,
|
|
1082
|
+
[platformId]: !prev[platformId]
|
|
1083
|
+
}));
|
|
1084
|
+
|
|
1085
|
+
// Remove connection
|
|
1086
|
+
setConnections(prev => {
|
|
1087
|
+
const newConnections = {
|
|
1088
|
+
...prev
|
|
1089
|
+
};
|
|
1090
|
+
delete newConnections[platformId];
|
|
1091
|
+
return newConnections;
|
|
1092
|
+
});
|
|
1093
|
+
}
|
|
1094
|
+
}, [platformToggles, username]);
|
|
1095
|
+
|
|
1096
|
+
/**
|
|
1097
|
+
* Handles OAuth callback URLs
|
|
1098
|
+
*/
|
|
1099
|
+
const handleOAuthCallback = useCallback(url => {
|
|
1100
|
+
try {
|
|
1101
|
+
// Extract the authorization code from the URL
|
|
1102
|
+
const parsedUrl = new URL(url);
|
|
1103
|
+
const code = parsedUrl.searchParams.get('code');
|
|
1104
|
+
const platform = parsedUrl.searchParams.get('platform') || currentPlatform;
|
|
1105
|
+
if (code && platform) {
|
|
1106
|
+
// Update connections state
|
|
1107
|
+
setConnections(prev => ({
|
|
1108
|
+
...prev,
|
|
1109
|
+
[platform]: {
|
|
1110
|
+
userName: username,
|
|
1111
|
+
connected: true
|
|
1112
|
+
}
|
|
1113
|
+
}));
|
|
1114
|
+
|
|
1115
|
+
// Update platform toggles
|
|
1116
|
+
setPlatformToggles(prev => ({
|
|
1117
|
+
...prev,
|
|
1118
|
+
[platform]: true
|
|
1119
|
+
}));
|
|
1120
|
+
|
|
1121
|
+
// Return to the connect step
|
|
1122
|
+
setStep('connect');
|
|
1123
|
+
}
|
|
1124
|
+
} catch (error) {
|
|
1125
|
+
console.error('Error handling OAuth callback:', error);
|
|
1126
|
+
}
|
|
1127
|
+
}, [currentPlatform, username]);
|
|
1128
|
+
|
|
1129
|
+
/**
|
|
1130
|
+
* Handles successful OAuth authentication from the OAuthWebView
|
|
1131
|
+
*/
|
|
1132
|
+
const handleOAuthSuccess = useCallback(async code => {
|
|
1133
|
+
console.log(`🎉 OAuth success for ${currentPlatform} - backend callback completed`);
|
|
1134
|
+
console.log(`📝 Received result:`, code);
|
|
1135
|
+
if (currentPlatform) {
|
|
1136
|
+
console.log(`✅ Updating connection state for ${currentPlatform}`);
|
|
1137
|
+
|
|
1138
|
+
// Update connections state
|
|
1139
|
+
setConnections(prev => ({
|
|
1140
|
+
...prev,
|
|
1141
|
+
[currentPlatform]: {
|
|
1142
|
+
userName: username,
|
|
1143
|
+
connected: true
|
|
1144
|
+
}
|
|
1145
|
+
}));
|
|
1146
|
+
|
|
1147
|
+
// Update platform toggles
|
|
1148
|
+
setPlatformToggles(prev => ({
|
|
1149
|
+
...prev,
|
|
1150
|
+
[currentPlatform]: true
|
|
1151
|
+
}));
|
|
1152
|
+
|
|
1153
|
+
// Update connection statuses
|
|
1154
|
+
setConnectionStatuses(prev => ({
|
|
1155
|
+
...prev,
|
|
1156
|
+
[currentPlatform]: 'connected'
|
|
1157
|
+
}));
|
|
1158
|
+
|
|
1159
|
+
// Store the connected platform
|
|
1160
|
+
await storeConnectedPlatform(currentPlatform);
|
|
1161
|
+
console.log(`💾 ${currentPlatform} connection stored successfully`);
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
// Close the OAuth window by returning to the connect step
|
|
1165
|
+
console.log('🔄 Returning to connect step');
|
|
1166
|
+
setOauthUrl('');
|
|
1167
|
+
setStep('connect');
|
|
1168
|
+
}, [currentPlatform, username, storeConnectedPlatform]);
|
|
1169
|
+
const handlePinSubmit = useCallback(async userPin => {
|
|
1170
|
+
setPin(userPin);
|
|
1171
|
+
|
|
1172
|
+
// Store PIN temporarily for training component access
|
|
1173
|
+
setTemporaryPin(userPin);
|
|
1174
|
+
console.log('🔐 [PIN SUBMIT] PIN submitted, checking for background training...');
|
|
1175
|
+
|
|
1176
|
+
// ✅ NEW: Check if background training is already running
|
|
1177
|
+
if (isBackgroundTrainingStarted && backgroundSocketId) {
|
|
1178
|
+
console.log('✅ [PIN SUBMIT] Background training detected, continuing with PIN validation...');
|
|
1179
|
+
|
|
1180
|
+
// Continue with existing training by sending PIN validation
|
|
1181
|
+
try {
|
|
1182
|
+
await continueBackgroundTrainingWithPin(userPin);
|
|
1183
|
+
setStep('persona'); // Move to persona step to show training progress
|
|
1184
|
+
} catch (error) {
|
|
1185
|
+
console.error('❌ [PIN SUBMIT] Failed to continue background training:', error);
|
|
1186
|
+
// ❌ DISABLED: Don't start new training when PIN is submitted
|
|
1187
|
+
// Just show persona step with error state
|
|
1188
|
+
setStep('persona');
|
|
1189
|
+
setPersonaStatus('Error: Failed to continue training');
|
|
1190
|
+
setHasError(true);
|
|
1191
|
+
}
|
|
1192
|
+
} else {
|
|
1193
|
+
console.log('ℹ️ [PIN SUBMIT] No background training detected');
|
|
1194
|
+
// ❌ DISABLED: Don't start training when PIN is submitted
|
|
1195
|
+
// Training should only start during connector→PIN transition
|
|
1196
|
+
setStep('persona');
|
|
1197
|
+
setPersonaStatus('No training in progress. Please restart the flow.');
|
|
1198
|
+
setHasError(true);
|
|
1199
|
+
}
|
|
1200
|
+
console.log('🔐 [PIN SUBMIT] PIN stored securely, moved to persona step');
|
|
1201
|
+
}, [isBackgroundTrainingStarted, backgroundSocketId]);
|
|
1202
|
+
|
|
1203
|
+
// Start real Enoch training via API (restored for backwards compatibility)
|
|
1204
|
+
const startEnochTraining = async (socketId, authToken) => {
|
|
1205
|
+
try {
|
|
1206
|
+
setPersonaStatus('Starting training...');
|
|
1207
|
+
setPersonaProgress(15);
|
|
1208
|
+
|
|
1209
|
+
// Use provided token or get from simplified JWT storage
|
|
1210
|
+
const token = authToken || (await getJWT());
|
|
1211
|
+
if (!token) {
|
|
1212
|
+
console.error('❌ No authentication token available');
|
|
1213
|
+
throw new Error('No authentication token available');
|
|
1214
|
+
}
|
|
1215
|
+
console.log('🚀 Starting Enoch training with socketId:', socketId);
|
|
1216
|
+
console.log('🔑 Using auth token:', token ? `${token.substring(0, 20)}...` : 'None');
|
|
1217
|
+
|
|
1218
|
+
// Get stored Onairos username for API calls
|
|
1219
|
+
const storedUsername = await getOnairosUsername();
|
|
1220
|
+
const finalUsername = storedUsername || (userInfo === null || userInfo === void 0 ? void 0 : userInfo.username) || (userInfo === null || userInfo === void 0 ? void 0 : userInfo.name) || username || 'mobile_user';
|
|
1221
|
+
|
|
1222
|
+
// Get connected platforms information
|
|
1223
|
+
const connectedPlatforms = await AsyncStorage.getItem('connectedPlatforms');
|
|
1224
|
+
const platformsList = connectedPlatforms ? JSON.parse(connectedPlatforms) : [];
|
|
1225
|
+
console.log('📱 Connected platforms for training:', platformsList);
|
|
1226
|
+
|
|
1227
|
+
// Get encrypted PIN for training (if available)
|
|
1228
|
+
const encryptedPin = await getEncryptedPinForAPI().catch(error => {
|
|
1229
|
+
console.warn('⚠️ Could not get encrypted PIN for training:', error);
|
|
1230
|
+
return null;
|
|
1231
|
+
});
|
|
1232
|
+
|
|
1233
|
+
// Prepare user data for training - match backend expected format
|
|
1234
|
+
const trainingData = {
|
|
1235
|
+
socketId,
|
|
1236
|
+
username: finalUsername,
|
|
1237
|
+
email: (userInfo === null || userInfo === void 0 ? void 0 : userInfo.email) || null,
|
|
1238
|
+
modelKey: null,
|
|
1239
|
+
connectedPlatforms: platformsList,
|
|
1240
|
+
platformConnections: connections,
|
|
1241
|
+
...(encryptedPin && {
|
|
1242
|
+
encryptedPin: encryptedPin,
|
|
1243
|
+
hasPinData: true
|
|
1244
|
+
})
|
|
1245
|
+
};
|
|
1246
|
+
console.log('📤 Sending training data to /mobile-training/enoch:', trainingData);
|
|
1247
|
+
|
|
1248
|
+
// Use the new training function that includes YouTube migration check
|
|
1249
|
+
const result = await startEnochTrainingWithYouTubeCheck(trainingData);
|
|
1250
|
+
console.log('📡 Training API response:', result);
|
|
1251
|
+
|
|
1252
|
+
// Handle CONNECTIONS_REQUIRED scenario (pre-training validation)
|
|
1253
|
+
if (result.requiresConnections || result.code === 'CONNECTIONS_REQUIRED') {
|
|
1254
|
+
console.log('🔗 Connections required detected from HTTP response');
|
|
1255
|
+
setDataScenario('CONNECTIONS_REQUIRED');
|
|
1256
|
+
setDataDetails(result);
|
|
1257
|
+
setShowDataWarning(true);
|
|
1258
|
+
setPersonaStatus('Connections required');
|
|
1259
|
+
setHasError(true);
|
|
1260
|
+
stopDotsAnimation();
|
|
1261
|
+
return;
|
|
1262
|
+
}
|
|
1263
|
+
if (result.success) {
|
|
1264
|
+
console.log('🚀 Training Started:', result.message);
|
|
1265
|
+
console.log('🎯 Training Features:', result.features);
|
|
1266
|
+
|
|
1267
|
+
// Log the new features from the spec
|
|
1268
|
+
if (result.features) {
|
|
1269
|
+
console.log('✅ Inference enabled:', result.features.inference);
|
|
1270
|
+
console.log('💾 Storage method:', result.features.storage);
|
|
1271
|
+
console.log('🔒 Compression enabled:', result.features.compression);
|
|
1272
|
+
console.log('🔐 Encryption enabled:', result.features.encryption);
|
|
1273
|
+
console.log('📊 Training type:', result.features.type);
|
|
1274
|
+
console.log('🗄️ Databases:', result.features.databases);
|
|
1275
|
+
console.log('📈 Query scores enabled:', result.features.queryScores);
|
|
1276
|
+
}
|
|
1277
|
+
setPersonaStatus('Training model...');
|
|
1278
|
+
setPersonaProgress(25);
|
|
1279
|
+
} else {
|
|
1280
|
+
console.error('❌ Training start failed:', result.error);
|
|
1281
|
+
setPersonaStatus(`Error: ${result.error || 'Training failed to start'}`);
|
|
1282
|
+
setHasError(true);
|
|
1283
|
+
stopDotsAnimation();
|
|
1284
|
+
}
|
|
1285
|
+
} catch (error) {
|
|
1286
|
+
console.error('❌ Training start error:', error);
|
|
1287
|
+
setPersonaStatus(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
1288
|
+
setHasError(true);
|
|
1289
|
+
stopDotsAnimation();
|
|
1290
|
+
}
|
|
1291
|
+
};
|
|
1292
|
+
|
|
1293
|
+
// ✅ NEW: Continue background training with PIN validation
|
|
1294
|
+
const continueBackgroundTrainingWithPin = async userPin => {
|
|
1295
|
+
try {
|
|
1296
|
+
console.log('🔐 [BACKGROUND] Continuing existing background training with PIN validation');
|
|
1297
|
+
console.log('🔑 Using auth token:', `${userToken === null || userToken === void 0 ? void 0 : userToken.substring(0, 20)}...`);
|
|
1298
|
+
|
|
1299
|
+
// Check if we have a valid socket ID
|
|
1300
|
+
if (!backgroundSocketId) {
|
|
1301
|
+
throw new Error('No background socket ID available');
|
|
1302
|
+
}
|
|
1303
|
+
|
|
1304
|
+
// ❌ REMOVED: Don't send new training signal - training already started!
|
|
1305
|
+
// We should just validate the PIN with the existing training, not start new training
|
|
1306
|
+
|
|
1307
|
+
console.log('🔐 [BACKGROUND] PIN validation - continuing with existing training session');
|
|
1308
|
+
console.log('🔌 [BACKGROUND] Using existing socket ID:', backgroundSocketId);
|
|
1309
|
+
|
|
1310
|
+
// Just log that we're continuing - the existing training should handle PIN internally
|
|
1311
|
+
console.log('✅ [BACKGROUND] PIN submitted for existing training session');
|
|
1312
|
+
} catch (error) {
|
|
1313
|
+
console.error('❌ [BACKGROUND] Failed to continue background training:', error);
|
|
1314
|
+
throw error;
|
|
1315
|
+
}
|
|
1316
|
+
};
|
|
1317
|
+
|
|
1318
|
+
// Replace fake persona creation with real training setup
|
|
1319
|
+
const startPersonaCreation = async () => {
|
|
1320
|
+
setPersonaProgress(0);
|
|
1321
|
+
setPersonaStatus('Initializing');
|
|
1322
|
+
setIsPersonaComplete(false);
|
|
1323
|
+
setHasError(false);
|
|
1324
|
+
|
|
1325
|
+
// Start the dots animation
|
|
1326
|
+
startDotsAnimation();
|
|
1327
|
+
try {
|
|
1328
|
+
var _user$email4;
|
|
1329
|
+
console.log('🚀 Starting persona creation...');
|
|
1330
|
+
|
|
1331
|
+
// Ensure we have a valid authentication token before starting
|
|
1332
|
+
console.log('🔐 Step 1: Ensuring authentication token...');
|
|
1333
|
+
const authToken = await ensureAuthToken();
|
|
1334
|
+
if (!authToken) {
|
|
1335
|
+
throw new Error('Failed to create or retrieve authentication token');
|
|
1336
|
+
}
|
|
1337
|
+
|
|
1338
|
+
// Set the token in state
|
|
1339
|
+
setUserToken(authToken);
|
|
1340
|
+
console.log('✅ Authentication token set in state:', `${authToken.substring(0, 20)}...`);
|
|
1341
|
+
console.log('🔍 Token length:', authToken.length);
|
|
1342
|
+
|
|
1343
|
+
// Also verify it was stored properly using simplified JWT storage
|
|
1344
|
+
const storedToken = await getJWT();
|
|
1345
|
+
console.log('🔑 Token stored verification:', storedToken ? `${storedToken.substring(0, 20)}...` : 'Not stored');
|
|
1346
|
+
|
|
1347
|
+
// If userInfo is not set, try to reload it
|
|
1348
|
+
if (!userInfo) {
|
|
1349
|
+
var _user$email3;
|
|
1350
|
+
console.log('🔄 UserInfo not available, attempting to reload...');
|
|
1351
|
+
const storedUsername = await getOnairosUsername();
|
|
1352
|
+
const fallbackUsername = storedUsername || (user === null || user === void 0 || (_user$email3 = user.email) === null || _user$email3 === void 0 ? void 0 : _user$email3.split('@')[0]) || (user === null || user === void 0 ? void 0 : user.name) || 'mobile_user';
|
|
1353
|
+
const newUserInfo = {
|
|
1354
|
+
username: fallbackUsername,
|
|
1355
|
+
email: (user === null || user === void 0 ? void 0 : user.email) || null,
|
|
1356
|
+
id: null
|
|
1357
|
+
};
|
|
1358
|
+
setUserInfo(newUserInfo);
|
|
1359
|
+
setUsername(fallbackUsername);
|
|
1360
|
+
console.log('🧑💻 Set user info:', newUserInfo);
|
|
1361
|
+
|
|
1362
|
+
// Give a moment for state to update
|
|
1363
|
+
await new Promise(resolve => setTimeout(() => resolve(), 200));
|
|
1364
|
+
}
|
|
1365
|
+
|
|
1366
|
+
// Check again after potential reload
|
|
1367
|
+
const currentUserInfo = userInfo || {
|
|
1368
|
+
username: username || (user === null || user === void 0 || (_user$email4 = user.email) === null || _user$email4 === void 0 ? void 0 : _user$email4.split('@')[0]) || (user === null || user === void 0 ? void 0 : user.name) || 'mobile_user',
|
|
1369
|
+
email: (user === null || user === void 0 ? void 0 : user.email) || null,
|
|
1370
|
+
id: null
|
|
1371
|
+
};
|
|
1372
|
+
if (!authToken) {
|
|
1373
|
+
console.error('❌ No authentication token available after ensureAuthToken');
|
|
1374
|
+
throw new Error('No authentication token available');
|
|
1375
|
+
}
|
|
1376
|
+
console.log('🔧 Setting up socket connection for real training...');
|
|
1377
|
+
console.log('🧑💻 User info available:', currentUserInfo);
|
|
1378
|
+
console.log('🔑 Token available:', !!authToken);
|
|
1379
|
+
console.log('🌐 Attempting to connect to: ${API_CONFIG.BASE_URL}');
|
|
1380
|
+
console.log('📱 Device platform:', Platform.OS);
|
|
1381
|
+
console.log('🔗 Network connectivity check starting...');
|
|
1382
|
+
setPersonaStatus('Connecting');
|
|
1383
|
+
setPersonaProgress(5);
|
|
1384
|
+
|
|
1385
|
+
// Initialize socket connection with enhanced configuration
|
|
1386
|
+
socketRef.current = io(API_CONFIG.BASE_URL, {
|
|
1387
|
+
transports: ['websocket', 'polling'],
|
|
1388
|
+
// Add polling as fallback
|
|
1389
|
+
autoConnect: false,
|
|
1390
|
+
timeout: 15000,
|
|
1391
|
+
// Increase timeout to 15 seconds
|
|
1392
|
+
reconnection: true,
|
|
1393
|
+
// Enable reconnection with limits
|
|
1394
|
+
reconnectionAttempts: 3,
|
|
1395
|
+
reconnectionDelay: 1000,
|
|
1396
|
+
forceNew: true // Force a new connection
|
|
1397
|
+
});
|
|
1398
|
+
console.log('🔌 Socket instance created:', {
|
|
1399
|
+
connected: socketRef.current.connected,
|
|
1400
|
+
id: socketRef.current.id,
|
|
1401
|
+
disconnected: socketRef.current.disconnected
|
|
1402
|
+
});
|
|
1403
|
+
|
|
1404
|
+
// Socket event listeners with enhanced error handling
|
|
1405
|
+
socketRef.current.on('connect', () => {
|
|
1406
|
+
var _socketRef$current, _socketRef$current2, _socketRef$current3, _socketRef$current4;
|
|
1407
|
+
console.log('✅ Socket connected for training');
|
|
1408
|
+
console.log('🔌 Socket connection details:', {
|
|
1409
|
+
id: (_socketRef$current = socketRef.current) === null || _socketRef$current === void 0 ? void 0 : _socketRef$current.id,
|
|
1410
|
+
connected: (_socketRef$current2 = socketRef.current) === null || _socketRef$current2 === void 0 ? void 0 : _socketRef$current2.connected,
|
|
1411
|
+
transport: (_socketRef$current3 = socketRef.current) === null || _socketRef$current3 === void 0 || (_socketRef$current3 = _socketRef$current3.io) === null || _socketRef$current3 === void 0 || (_socketRef$current3 = _socketRef$current3.engine) === null || _socketRef$current3 === void 0 || (_socketRef$current3 = _socketRef$current3.transport) === null || _socketRef$current3 === void 0 ? void 0 : _socketRef$current3.name
|
|
1412
|
+
});
|
|
1413
|
+
setSocketConnected(true);
|
|
1414
|
+
setPersonaStatus('Starting training');
|
|
1415
|
+
setPersonaProgress(10);
|
|
1416
|
+
const socketId = (_socketRef$current4 = socketRef.current) === null || _socketRef$current4 === void 0 ? void 0 : _socketRef$current4.id;
|
|
1417
|
+
console.log('🔌 Socket ID for training:', socketId);
|
|
1418
|
+
if (socketId) {
|
|
1419
|
+
// Add a small delay to ensure socket is fully ready and registered on backend
|
|
1420
|
+
console.log('🔄 Socket ready for persona display with token:', authToken ? `${authToken.substring(0, 20)}...` : 'None');
|
|
1421
|
+
console.log('⏰ Socket registered but training will not start from persona screen...');
|
|
1422
|
+
// ❌ DISABLED: Don't start training from persona screen
|
|
1423
|
+
// Training should only start during connector→PIN transition
|
|
1424
|
+
// setTimeout(() => {
|
|
1425
|
+
// console.log('🚀 Now starting training with socket ID:', socketId);
|
|
1426
|
+
// startEnochTraining(socketId, authToken);
|
|
1427
|
+
// }, 2000);
|
|
1428
|
+
|
|
1429
|
+
// Just show the persona screen without starting training
|
|
1430
|
+
setPersonaStatus('Waiting for training to start from connector→PIN transition');
|
|
1431
|
+
} else {
|
|
1432
|
+
console.error('❌ No socket ID available after connection');
|
|
1433
|
+
setPersonaStatus('Connection error. Please try again.');
|
|
1434
|
+
setHasError(true);
|
|
1435
|
+
stopDotsAnimation();
|
|
1436
|
+
}
|
|
1437
|
+
});
|
|
1438
|
+
socketRef.current.on('disconnect', reason => {
|
|
1439
|
+
var _socketRef$current5;
|
|
1440
|
+
console.log('❌ Socket disconnected, reason:', reason);
|
|
1441
|
+
console.log('🔍 Disconnect details:', {
|
|
1442
|
+
reason: reason,
|
|
1443
|
+
wasConnected: socketConnected,
|
|
1444
|
+
socketId: (_socketRef$current5 = socketRef.current) === null || _socketRef$current5 === void 0 ? void 0 : _socketRef$current5.id
|
|
1445
|
+
});
|
|
1446
|
+
setSocketConnected(false);
|
|
1447
|
+
});
|
|
1448
|
+
socketRef.current.on('reconnect', attemptNumber => {
|
|
1449
|
+
console.log('🔄 Socket reconnected after', attemptNumber, 'attempts');
|
|
1450
|
+
setSocketConnected(true);
|
|
1451
|
+
});
|
|
1452
|
+
socketRef.current.on('reconnect_attempt', attemptNumber => {
|
|
1453
|
+
console.log('🔄 Socket reconnection attempt:', attemptNumber);
|
|
1454
|
+
setPersonaStatus(`Reconnecting... (${attemptNumber}/3)`);
|
|
1455
|
+
});
|
|
1456
|
+
socketRef.current.on('reconnect_error', error => {
|
|
1457
|
+
console.error('❌ Socket reconnection error:', error);
|
|
1458
|
+
});
|
|
1459
|
+
socketRef.current.on('reconnect_failed', () => {
|
|
1460
|
+
console.error('❌ Socket reconnection failed after all attempts');
|
|
1461
|
+
setPersonaStatus('Connection failed. Please try again.');
|
|
1462
|
+
setHasError(true);
|
|
1463
|
+
stopDotsAnimation();
|
|
1464
|
+
});
|
|
1465
|
+
socketRef.current.on('connect_error', error => {
|
|
1466
|
+
console.error('❌ Socket connection error:', error);
|
|
1467
|
+
console.error('❌ Socket error details:', {
|
|
1468
|
+
message: error.message,
|
|
1469
|
+
name: error.name,
|
|
1470
|
+
stack: error.stack,
|
|
1471
|
+
errorObject: error
|
|
1472
|
+
});
|
|
1473
|
+
setPersonaStatus('Connection error. Please try again.');
|
|
1474
|
+
setHasError(true);
|
|
1475
|
+
stopDotsAnimation();
|
|
1476
|
+
});
|
|
1477
|
+
socketRef.current.on('trainingCompleted', data => {
|
|
1478
|
+
console.log('✅ Training Complete:', data);
|
|
1479
|
+
setPersonaStatus('Running test inference');
|
|
1480
|
+
setPersonaProgress(60);
|
|
1481
|
+
});
|
|
1482
|
+
socketRef.current.on('inferenceCompleted', data => {
|
|
1483
|
+
console.log('🧠 Inference Complete:', data);
|
|
1484
|
+
setPersonaStatus('Uploading to S3');
|
|
1485
|
+
setPersonaProgress(80);
|
|
1486
|
+
setUserTraits(data.traits);
|
|
1487
|
+
setInferenceResults(data.inferenceResults);
|
|
1488
|
+
});
|
|
1489
|
+
socketRef.current.on('modelStandby', data => {
|
|
1490
|
+
console.log('🎉 All Complete:', data);
|
|
1491
|
+
|
|
1492
|
+
// Log completion details based on new spec
|
|
1493
|
+
if (data.completed) {
|
|
1494
|
+
console.log('✅ Training completed:', data.message);
|
|
1495
|
+
console.log('💾 Storage method:', data.storage);
|
|
1496
|
+
console.log('🔐 Encryption enabled:', data.encryption);
|
|
1497
|
+
console.log('🧠 Inference enabled:', data.inference);
|
|
1498
|
+
|
|
1499
|
+
// Log database info for Enoch mode
|
|
1500
|
+
if (data.databases && Array.isArray(data.databases)) {
|
|
1501
|
+
console.log('🗄️ Databases used:', data.databases.join(', '));
|
|
1502
|
+
}
|
|
1503
|
+
|
|
1504
|
+
// Log testing mode
|
|
1505
|
+
if (data.testing) {
|
|
1506
|
+
console.log('🧪 Testing mode enabled');
|
|
1507
|
+
}
|
|
1508
|
+
}
|
|
1509
|
+
setIsPersonaComplete(true);
|
|
1510
|
+
setPersonaStatus('Complete!');
|
|
1511
|
+
setPersonaProgress(100);
|
|
1512
|
+
stopDotsAnimation();
|
|
1513
|
+
});
|
|
1514
|
+
socketRef.current.on('trainingUpdate', data => {
|
|
1515
|
+
console.log('📊 Training update:', data);
|
|
1516
|
+
|
|
1517
|
+
// Handle YouTube token expiry
|
|
1518
|
+
if (data.error && data.error.includes('YouTube access token has expired')) {
|
|
1519
|
+
console.log('🔄 YouTube token expired, triggering reconnection...');
|
|
1520
|
+
setDataScenario(null);
|
|
1521
|
+
setShowDataWarning(false);
|
|
1522
|
+
setPersonaStatus('YouTube token expired - reconnecting...');
|
|
1523
|
+
|
|
1524
|
+
// Try to refresh tokens first before full reconnection
|
|
1525
|
+
setTimeout(async () => {
|
|
1526
|
+
try {
|
|
1527
|
+
console.log('🔄 Attempting to refresh YouTube tokens...');
|
|
1528
|
+
const refreshSuccess = await refreshYouTubeTokens();
|
|
1529
|
+
if (refreshSuccess) {
|
|
1530
|
+
console.log('✅ YouTube tokens refreshed, but training restart disabled');
|
|
1531
|
+
setPersonaStatus('YouTube tokens refreshed - but training only starts from connector→PIN');
|
|
1532
|
+
|
|
1533
|
+
// ❌ DISABLED: Don't restart training from persona screen
|
|
1534
|
+
// Training should only start during connector→PIN transition
|
|
1535
|
+
// if (socketRef.current?.id) {
|
|
1536
|
+
// startEnochTraining(socketRef.current.id, userToken ?? undefined);
|
|
1537
|
+
// }
|
|
1538
|
+
|
|
1539
|
+
setHasError(true); // Show error so user can restart flow properly
|
|
1540
|
+
} else {
|
|
1541
|
+
console.log('❌ Token refresh failed, attempting full reconnection...');
|
|
1542
|
+
setPersonaStatus('Token refresh failed - please restart from connector screen');
|
|
1543
|
+
|
|
1544
|
+
// ❌ DISABLED: Don't restart training from persona screen
|
|
1545
|
+
// Fall back to full reconnection
|
|
1546
|
+
try {
|
|
1547
|
+
await handleConnectPlatform('youtube');
|
|
1548
|
+
console.log('✅ YouTube reconnected, but training restart disabled');
|
|
1549
|
+
setPersonaStatus('YouTube reconnected - please restart from connector screen');
|
|
1550
|
+
|
|
1551
|
+
// ❌ DISABLED: Don't restart training from persona screen
|
|
1552
|
+
// Training should only start during connector→PIN transition
|
|
1553
|
+
// if (socketRef.current?.id) {
|
|
1554
|
+
// startEnochTraining(socketRef.current.id, userToken ?? undefined);
|
|
1555
|
+
// }
|
|
1556
|
+
|
|
1557
|
+
setHasError(true); // Show error so user can restart flow properly
|
|
1558
|
+
} catch (reconnectError) {
|
|
1559
|
+
console.error('❌ YouTube reconnection failed:', reconnectError);
|
|
1560
|
+
setPersonaStatus('YouTube reconnection failed. Please restart from connector screen.');
|
|
1561
|
+
setHasError(true);
|
|
1562
|
+
stopDotsAnimation();
|
|
1563
|
+
}
|
|
1564
|
+
}
|
|
1565
|
+
} catch (error) {
|
|
1566
|
+
console.error('❌ YouTube token refresh/reconnection error:', error);
|
|
1567
|
+
setPersonaStatus('YouTube connection failed. Please try again.');
|
|
1568
|
+
setHasError(true);
|
|
1569
|
+
stopDotsAnimation();
|
|
1570
|
+
}
|
|
1571
|
+
}, 1000);
|
|
1572
|
+
return;
|
|
1573
|
+
}
|
|
1574
|
+
|
|
1575
|
+
// Handle connections required scenario (pre-training validation)
|
|
1576
|
+
if (data.requiresConnections || data.code === 'CONNECTIONS_REQUIRED') {
|
|
1577
|
+
console.log('🔗 Connections required detected from socket');
|
|
1578
|
+
setDataScenario('CONNECTIONS_REQUIRED');
|
|
1579
|
+
setDataDetails(data);
|
|
1580
|
+
setShowDataWarning(true);
|
|
1581
|
+
setPersonaStatus('Connections required');
|
|
1582
|
+
setHasError(true);
|
|
1583
|
+
stopDotsAnimation();
|
|
1584
|
+
return;
|
|
1585
|
+
}
|
|
1586
|
+
|
|
1587
|
+
// Handle data scenario responses
|
|
1588
|
+
if (data.code === 'NO_DATA') {
|
|
1589
|
+
console.log('🚫 No data scenario detected');
|
|
1590
|
+
setDataScenario('NO_DATA');
|
|
1591
|
+
setDataDetails(data.details);
|
|
1592
|
+
setShowDataWarning(true);
|
|
1593
|
+
setPersonaStatus('No interaction data found');
|
|
1594
|
+
setHasError(true);
|
|
1595
|
+
stopDotsAnimation();
|
|
1596
|
+
return;
|
|
1597
|
+
}
|
|
1598
|
+
if (data.code === 'LIMITED_DATA') {
|
|
1599
|
+
console.log('ℹ️ Limited data scenario detected');
|
|
1600
|
+
setDataScenario('LIMITED_DATA');
|
|
1601
|
+
setDataDetails(data.details);
|
|
1602
|
+
setShowDataWarning(true);
|
|
1603
|
+
setPersonaStatus('Creating your persona with available data');
|
|
1604
|
+
// Don't set hasError - training continues
|
|
1605
|
+
return;
|
|
1606
|
+
}
|
|
1607
|
+
|
|
1608
|
+
// Handle regular training updates
|
|
1609
|
+
if (data.error) {
|
|
1610
|
+
console.error('❌ Training update error:', data.error);
|
|
1611
|
+
setPersonaStatus(`Error: ${data.error}`);
|
|
1612
|
+
setHasError(true);
|
|
1613
|
+
stopDotsAnimation();
|
|
1614
|
+
} else if (data.progress) {
|
|
1615
|
+
setPersonaProgress(data.progress);
|
|
1616
|
+
setPersonaStatus(data.status || 'Training in progress');
|
|
1617
|
+
// Clear data warning if training progresses normally
|
|
1618
|
+
if (showDataWarning && data.progress > 30) {
|
|
1619
|
+
setShowDataWarning(false);
|
|
1620
|
+
}
|
|
1621
|
+
}
|
|
1622
|
+
});
|
|
1623
|
+
|
|
1624
|
+
// Connect to socket with timeout
|
|
1625
|
+
console.log('🔌 Attempting to connect to socket...');
|
|
1626
|
+
console.log('🔌 Socket config:', {
|
|
1627
|
+
url: API_CONFIG.BASE_URL,
|
|
1628
|
+
transports: ['websocket'],
|
|
1629
|
+
autoConnect: false,
|
|
1630
|
+
timeout: 10000,
|
|
1631
|
+
reconnection: false
|
|
1632
|
+
});
|
|
1633
|
+
socketRef.current.connect();
|
|
1634
|
+
console.log('🔌 Socket connect() called - waiting for connection...');
|
|
1635
|
+
|
|
1636
|
+
// Add immediate state check
|
|
1637
|
+
setTimeout(() => {
|
|
1638
|
+
var _socketRef$current6, _socketRef$current7, _socketRef$current8, _socketRef$current9;
|
|
1639
|
+
console.log('🔍 Socket state after 1 second:', {
|
|
1640
|
+
connected: (_socketRef$current6 = socketRef.current) === null || _socketRef$current6 === void 0 ? void 0 : _socketRef$current6.connected,
|
|
1641
|
+
disconnected: (_socketRef$current7 = socketRef.current) === null || _socketRef$current7 === void 0 ? void 0 : _socketRef$current7.disconnected,
|
|
1642
|
+
id: (_socketRef$current8 = socketRef.current) === null || _socketRef$current8 === void 0 ? void 0 : _socketRef$current8.id,
|
|
1643
|
+
engineConnected: (_socketRef$current9 = socketRef.current) === null || _socketRef$current9 === void 0 || (_socketRef$current9 = _socketRef$current9.io) === null || _socketRef$current9 === void 0 || (_socketRef$current9 = _socketRef$current9.engine) === null || _socketRef$current9 === void 0 ? void 0 : _socketRef$current9.readyState
|
|
1644
|
+
});
|
|
1645
|
+
}, 1000);
|
|
1646
|
+
setTimeout(() => {
|
|
1647
|
+
var _socketRef$current0, _socketRef$current1, _socketRef$current10, _socketRef$current11;
|
|
1648
|
+
console.log('🔍 Socket state after 5 seconds:', {
|
|
1649
|
+
connected: (_socketRef$current0 = socketRef.current) === null || _socketRef$current0 === void 0 ? void 0 : _socketRef$current0.connected,
|
|
1650
|
+
disconnected: (_socketRef$current1 = socketRef.current) === null || _socketRef$current1 === void 0 ? void 0 : _socketRef$current1.disconnected,
|
|
1651
|
+
id: (_socketRef$current10 = socketRef.current) === null || _socketRef$current10 === void 0 ? void 0 : _socketRef$current10.id,
|
|
1652
|
+
engineConnected: (_socketRef$current11 = socketRef.current) === null || _socketRef$current11 === void 0 || (_socketRef$current11 = _socketRef$current11.io) === null || _socketRef$current11 === void 0 || (_socketRef$current11 = _socketRef$current11.engine) === null || _socketRef$current11 === void 0 ? void 0 : _socketRef$current11.readyState
|
|
1653
|
+
});
|
|
1654
|
+
}, 5000);
|
|
1655
|
+
|
|
1656
|
+
// Set a timeout for socket connection with enhanced fallback
|
|
1657
|
+
setTimeout(() => {
|
|
1658
|
+
if (!socketConnected && socketRef.current && !socketRef.current.connected) {
|
|
1659
|
+
console.error('❌ Socket connection timeout after 20 seconds');
|
|
1660
|
+
console.error('🔍 Socket state:', {
|
|
1661
|
+
connected: socketRef.current.connected,
|
|
1662
|
+
disconnected: socketRef.current.disconnected,
|
|
1663
|
+
id: socketRef.current.id
|
|
1664
|
+
});
|
|
1665
|
+
setPersonaStatus('Connection timeout. Please check your internet and try again.');
|
|
1666
|
+
setHasError(true);
|
|
1667
|
+
stopDotsAnimation();
|
|
1668
|
+
|
|
1669
|
+
// Cleanup socket
|
|
1670
|
+
if (socketRef.current) {
|
|
1671
|
+
socketRef.current.disconnect();
|
|
1672
|
+
socketRef.current = null;
|
|
1673
|
+
}
|
|
1674
|
+
}
|
|
1675
|
+
}, 20000); // Increased timeout to 20 seconds
|
|
1676
|
+
} catch (error) {
|
|
1677
|
+
console.error('❌ Error in startPersonaCreation:', error);
|
|
1678
|
+
setPersonaStatus('Failed to initialize training. Please try again.');
|
|
1679
|
+
setHasError(true);
|
|
1680
|
+
stopDotsAnimation();
|
|
1681
|
+
}
|
|
1682
|
+
};
|
|
1683
|
+
|
|
1684
|
+
// Get user-friendly status message based on progress (updated for real training)
|
|
1685
|
+
const getPersonaStatusMessage = progress => {
|
|
1686
|
+
if (hasError) return 'Something went wrong. Please try again.';
|
|
1687
|
+
if (isPersonaComplete) return 'Your persona is ready! 🎉';
|
|
1688
|
+
let baseMessage = '';
|
|
1689
|
+
if (progress < 20) {
|
|
1690
|
+
baseMessage = 'Keeping your data private';
|
|
1691
|
+
} else if (progress < 40) {
|
|
1692
|
+
baseMessage = 'Trying to understand your mind';
|
|
1693
|
+
} else if (progress < 60) {
|
|
1694
|
+
baseMessage = 'You\'re more interesting than I expected';
|
|
1695
|
+
} else if (progress < 80) {
|
|
1696
|
+
baseMessage = 'Finalizing your unique persona';
|
|
1697
|
+
} else if (progress < 95) {
|
|
1698
|
+
baseMessage = 'Almost done';
|
|
1699
|
+
} else {
|
|
1700
|
+
baseMessage = 'Just a few more seconds';
|
|
1701
|
+
}
|
|
1702
|
+
return baseMessage + animatedDots;
|
|
1703
|
+
};
|
|
1704
|
+
|
|
1705
|
+
// Handle persona completion - now continues the onboarding flow instead of going to separate training
|
|
1706
|
+
const handlePersonaComplete = async () => {
|
|
1707
|
+
console.log('🎉 Real persona creation completed successfully');
|
|
1708
|
+
// Cleanup socket connection
|
|
1709
|
+
if (socketRef.current) {
|
|
1710
|
+
console.log('🔌 Disconnecting training socket...');
|
|
1711
|
+
socketRef.current.disconnect();
|
|
1712
|
+
socketRef.current = null;
|
|
1713
|
+
}
|
|
1714
|
+
// Clear temporary PIN since training is complete
|
|
1715
|
+
clearTemporaryPin();
|
|
1716
|
+
// Set the completion flag BEFORE calling onComplete
|
|
1717
|
+
isCompletingRef.current = true;
|
|
1718
|
+
|
|
1719
|
+
// Get the real authentication token using simplified JWT storage
|
|
1720
|
+
try {
|
|
1721
|
+
const realToken = await getJWT();
|
|
1722
|
+
if (realToken) {
|
|
1723
|
+
console.log('✅ Using real authentication token for onComplete:', `${realToken.substring(0, 30)}...`);
|
|
1724
|
+
// Call onComplete with the REAL token that was created during ensureAuthToken
|
|
1725
|
+
onComplete === null || onComplete === void 0 || onComplete(API_CONFIG.BASE_URL, realToken, {
|
|
1726
|
+
email: (userInfo === null || userInfo === void 0 ? void 0 : userInfo.email) || '',
|
|
1727
|
+
...userInfo
|
|
1728
|
+
});
|
|
1729
|
+
} else {
|
|
1730
|
+
console.error('❌ No real authentication token found after training completion');
|
|
1731
|
+
// Fallback to placeholder token if no real token exists
|
|
1732
|
+
onComplete === null || onComplete === void 0 || onComplete(API_CONFIG.BASE_URL, 'training-complete-token', {
|
|
1733
|
+
email: (userInfo === null || userInfo === void 0 ? void 0 : userInfo.email) || '',
|
|
1734
|
+
...userInfo
|
|
1735
|
+
});
|
|
1736
|
+
}
|
|
1737
|
+
} catch (error) {
|
|
1738
|
+
console.error('❌ Error retrieving real token for onComplete:', error);
|
|
1739
|
+
// Fallback to placeholder token on error
|
|
1740
|
+
onComplete === null || onComplete === void 0 || onComplete(API_CONFIG.BASE_URL, 'training-complete-token', {
|
|
1741
|
+
email: (userInfo === null || userInfo === void 0 ? void 0 : userInfo.email) || '',
|
|
1742
|
+
...userInfo
|
|
1743
|
+
});
|
|
1744
|
+
}
|
|
1745
|
+
};
|
|
1746
|
+
|
|
1747
|
+
// Ensure authentication token exists before training
|
|
1748
|
+
// NOTE: SDK no longer creates users - user should be authenticated first via Google/Apple/Email
|
|
1749
|
+
const ensureAuthToken = async () => {
|
|
1750
|
+
try {
|
|
1751
|
+
// Use simplified JWT storage to check for existing token
|
|
1752
|
+
const existingToken = await getJWT();
|
|
1753
|
+
if (existingToken && existingToken.trim().length > 20) {
|
|
1754
|
+
console.log('✅ Authentication token already exists:', `${existingToken.substring(0, 20)}...`);
|
|
1755
|
+
console.log('🔍 Token length:', existingToken.length);
|
|
1756
|
+
return existingToken;
|
|
1757
|
+
}
|
|
1758
|
+
|
|
1759
|
+
// NOTE: SDK no longer creates users during onboarding
|
|
1760
|
+
// User should be authenticated first via Google/Apple/Email
|
|
1761
|
+
console.warn('⚠️ No authentication token found');
|
|
1762
|
+
console.warn('ℹ️ SDK does not create users during onboarding');
|
|
1763
|
+
console.warn('ℹ️ User should authenticate first via Google/Apple/Email');
|
|
1764
|
+
|
|
1765
|
+
// Return null - consuming app is responsible for ensuring user is authenticated
|
|
1766
|
+
return null;
|
|
1767
|
+
} catch (error) {
|
|
1768
|
+
console.error('❌ Error checking authentication token:', error);
|
|
1769
|
+
throw error;
|
|
1770
|
+
}
|
|
1771
|
+
};
|
|
1772
|
+
const canProceed = Object.values(platformToggles).some(value => value);
|
|
1773
|
+
const handleProceed = () => {
|
|
1774
|
+
if (canProceed) {
|
|
1775
|
+
// Trigger haptic feedback when continue button is pressed
|
|
1776
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
1777
|
+
|
|
1778
|
+
// ✅ NEW: Start background training when transitioning from connectors to PIN screen
|
|
1779
|
+
console.log('🚀 [TRANSITION] Starting background training during connect → pin transition');
|
|
1780
|
+
startBackgroundTraining().catch(error => {
|
|
1781
|
+
console.error('❌ [TRANSITION] Background training failed during transition:', error);
|
|
1782
|
+
// Continue to PIN screen even if training fails
|
|
1783
|
+
});
|
|
1784
|
+
setStep('pin');
|
|
1785
|
+
}
|
|
1786
|
+
};
|
|
1787
|
+
|
|
1788
|
+
// Removed navigation dependency for SDK compatibility
|
|
1789
|
+
|
|
1790
|
+
// Training is now handled by the TrainingModal component
|
|
1791
|
+
|
|
1792
|
+
// ✅ NEW: Background training function - starts when PIN screen appears
|
|
1793
|
+
const startBackgroundTraining = useCallback(async () => {
|
|
1794
|
+
try {
|
|
1795
|
+
console.log('🚀 [BACKGROUND] Starting background training optimization...');
|
|
1796
|
+
setBackgroundTrainingProgress('Connecting...');
|
|
1797
|
+
|
|
1798
|
+
// Step 1: Ensure authentication token exists
|
|
1799
|
+
const authToken = await ensureAuthToken();
|
|
1800
|
+
if (!authToken) {
|
|
1801
|
+
throw new Error('Failed to create authentication token for background training');
|
|
1802
|
+
}
|
|
1803
|
+
console.log('✅ [BACKGROUND] Auth token ready:', `${authToken.substring(0, 20)}...`);
|
|
1804
|
+
setUserToken(authToken);
|
|
1805
|
+
|
|
1806
|
+
// Step 2: Set up user info if not available
|
|
1807
|
+
if (!userInfo) {
|
|
1808
|
+
var _user$email5;
|
|
1809
|
+
const storedUsername = await getOnairosUsername();
|
|
1810
|
+
const fallbackUsername = storedUsername || (user === null || user === void 0 || (_user$email5 = user.email) === null || _user$email5 === void 0 ? void 0 : _user$email5.split('@')[0]) || (user === null || user === void 0 ? void 0 : user.name) || 'mobile_user';
|
|
1811
|
+
const newUserInfo = {
|
|
1812
|
+
username: fallbackUsername,
|
|
1813
|
+
email: (user === null || user === void 0 ? void 0 : user.email) || null,
|
|
1814
|
+
id: null
|
|
1815
|
+
};
|
|
1816
|
+
setUserInfo(newUserInfo);
|
|
1817
|
+
setUsername(fallbackUsername);
|
|
1818
|
+
console.log('🧑💻 [BACKGROUND] User info set:', newUserInfo);
|
|
1819
|
+
}
|
|
1820
|
+
|
|
1821
|
+
// Step 3: Initialize socket connection for background training
|
|
1822
|
+
console.log('🔌 [BACKGROUND] Setting up socket for background training...');
|
|
1823
|
+
setBackgroundTrainingProgress('Initializing data collection...');
|
|
1824
|
+
const backgroundSocket = io(API_CONFIG.BASE_URL, {
|
|
1825
|
+
transports: ['websocket', 'polling'],
|
|
1826
|
+
autoConnect: false,
|
|
1827
|
+
timeout: 15000,
|
|
1828
|
+
reconnection: true,
|
|
1829
|
+
reconnectionAttempts: 3,
|
|
1830
|
+
reconnectionDelay: 1000,
|
|
1831
|
+
forceNew: true
|
|
1832
|
+
});
|
|
1833
|
+
|
|
1834
|
+
// Set up socket event listeners for background training
|
|
1835
|
+
backgroundSocket.on('connect', async () => {
|
|
1836
|
+
console.log('✅ [BACKGROUND] Socket connected, starting background data collection...');
|
|
1837
|
+
const socketId = backgroundSocket.id;
|
|
1838
|
+
setBackgroundSocketId(socketId || null);
|
|
1839
|
+
setBackgroundTrainingProgress('Collecting your data...');
|
|
1840
|
+
if (socketId) {
|
|
1841
|
+
// Step 4: Start background training WITHOUT PIN (per backend instructions)
|
|
1842
|
+
await startBackgroundEnochTraining(socketId, authToken);
|
|
1843
|
+
}
|
|
1844
|
+
});
|
|
1845
|
+
backgroundSocket.on('trainingUpdate', data => {
|
|
1846
|
+
if (data.progress) {
|
|
1847
|
+
setBackgroundTrainingProgress(data.status || 'Processing...');
|
|
1848
|
+
console.log('📊 [BACKGROUND] Training progress:', data.progress, '%');
|
|
1849
|
+
}
|
|
1850
|
+
});
|
|
1851
|
+
backgroundSocket.on('disconnect', () => {
|
|
1852
|
+
console.log('❌ [BACKGROUND] Socket disconnected');
|
|
1853
|
+
});
|
|
1854
|
+
|
|
1855
|
+
// Store socket reference for later use
|
|
1856
|
+
socketRef.current = backgroundSocket;
|
|
1857
|
+
|
|
1858
|
+
// Connect the socket to start background training
|
|
1859
|
+
backgroundSocket.connect();
|
|
1860
|
+
console.log('✅ [BACKGROUND] Background training initiated successfully');
|
|
1861
|
+
} catch (error) {
|
|
1862
|
+
console.error('❌ [BACKGROUND] Background training failed:', error);
|
|
1863
|
+
setBackgroundTrainingProgress('');
|
|
1864
|
+
throw error;
|
|
1865
|
+
}
|
|
1866
|
+
}, [userInfo, username, user]);
|
|
1867
|
+
|
|
1868
|
+
// ✅ NEW: Background training API call - starts data collection without PIN
|
|
1869
|
+
const startBackgroundEnochTraining = async (socketId, authToken) => {
|
|
1870
|
+
try {
|
|
1871
|
+
console.log('🚀 [BACKGROUND] Starting background training with socketId:', socketId);
|
|
1872
|
+
console.log('🔑 Using auth token:', `${authToken.substring(0, 20)}...`);
|
|
1873
|
+
|
|
1874
|
+
// Prepare background training data
|
|
1875
|
+
const backgroundData = {
|
|
1876
|
+
socketId,
|
|
1877
|
+
username: (userInfo === null || userInfo === void 0 ? void 0 : userInfo.username) || (userInfo === null || userInfo === void 0 ? void 0 : userInfo.name) || username || 'mobile_user',
|
|
1878
|
+
email: (userInfo === null || userInfo === void 0 ? void 0 : userInfo.email) || null,
|
|
1879
|
+
modelKey: null,
|
|
1880
|
+
connectedPlatforms: [],
|
|
1881
|
+
// No connected platforms for background training
|
|
1882
|
+
platformConnections: {} // No platform connections for background training
|
|
1883
|
+
// No encrypted PIN for background training
|
|
1884
|
+
};
|
|
1885
|
+
console.log('📤 Sending background training data to /mobile-training/enoch:', backgroundData);
|
|
1886
|
+
|
|
1887
|
+
// Use the new training function that includes YouTube migration check
|
|
1888
|
+
const backgroundResult = await startEnochTrainingWithYouTubeCheck(backgroundData);
|
|
1889
|
+
console.log('📡 Background training API response:', backgroundResult);
|
|
1890
|
+
|
|
1891
|
+
// Handle CONNECTIONS_REQUIRED scenario (pre-training validation)
|
|
1892
|
+
if (backgroundResult.requiresConnections || backgroundResult.code === 'CONNECTIONS_REQUIRED') {
|
|
1893
|
+
console.log('🔗 Connections required detected from background training');
|
|
1894
|
+
setDataScenario('CONNECTIONS_REQUIRED');
|
|
1895
|
+
setDataDetails(backgroundResult);
|
|
1896
|
+
setShowDataWarning(true);
|
|
1897
|
+
setPersonaStatus('Connections required');
|
|
1898
|
+
setHasError(true);
|
|
1899
|
+
stopDotsAnimation();
|
|
1900
|
+
return;
|
|
1901
|
+
}
|
|
1902
|
+
if (backgroundResult.success) {
|
|
1903
|
+
console.log('🚀 Background training started:', backgroundResult.message);
|
|
1904
|
+
console.log('🎯 Background training Features:', backgroundResult.features);
|
|
1905
|
+
|
|
1906
|
+
// ✅ CRITICAL: Set background training started flag
|
|
1907
|
+
setIsBackgroundTrainingStarted(true);
|
|
1908
|
+
|
|
1909
|
+
// Log the new features from the spec
|
|
1910
|
+
if (backgroundResult.features) {
|
|
1911
|
+
console.log('✅ Inference enabled:', backgroundResult.features.inference);
|
|
1912
|
+
console.log('💾 Storage method:', backgroundResult.features.storage);
|
|
1913
|
+
console.log('🔒 Compression enabled:', backgroundResult.features.compression);
|
|
1914
|
+
console.log('🔐 Encryption enabled:', backgroundResult.features.encryption);
|
|
1915
|
+
console.log('📊 Training type:', backgroundResult.features.type);
|
|
1916
|
+
console.log('🗄️ Databases:', backgroundResult.features.databases);
|
|
1917
|
+
console.log('📈 Query scores enabled:', backgroundResult.features.queryScores);
|
|
1918
|
+
}
|
|
1919
|
+
setPersonaStatus('Background training model...');
|
|
1920
|
+
setPersonaProgress(25);
|
|
1921
|
+
} else {
|
|
1922
|
+
console.error('❌ Background training start failed:', backgroundResult.error);
|
|
1923
|
+
setPersonaStatus(`Error: ${backgroundResult.error || 'Background training failed to start'}`);
|
|
1924
|
+
setHasError(true);
|
|
1925
|
+
stopDotsAnimation();
|
|
1926
|
+
}
|
|
1927
|
+
} catch (error) {
|
|
1928
|
+
console.error('❌ Background training start error:', error);
|
|
1929
|
+
setPersonaStatus(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
1930
|
+
setHasError(true);
|
|
1931
|
+
stopDotsAnimation();
|
|
1932
|
+
}
|
|
1933
|
+
};
|
|
1934
|
+
return /*#__PURE__*/React.createElement(Modal, {
|
|
1935
|
+
transparent: true,
|
|
1936
|
+
visible: modalVisible,
|
|
1937
|
+
animationType: "slide",
|
|
1938
|
+
onRequestClose: handleClose,
|
|
1939
|
+
statusBarTranslucent: true
|
|
1940
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
1941
|
+
style: styles.modalOverlay
|
|
1942
|
+
}, /*#__PURE__*/React.createElement(TouchableWithoutFeedback, {
|
|
1943
|
+
onPress: handleClose
|
|
1944
|
+
}, /*#__PURE__*/React.createElement(Animated.View, {
|
|
1945
|
+
style: [styles.backdrop, {
|
|
1946
|
+
opacity: backdropOpacity
|
|
1947
|
+
}]
|
|
1948
|
+
})), /*#__PURE__*/React.createElement(View, {
|
|
1949
|
+
style: styles.bottomSheet
|
|
1950
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
1951
|
+
style: styles.container
|
|
1952
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
1953
|
+
style: styles.handleContainer
|
|
1954
|
+
}, /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
1955
|
+
onPress: handleClose,
|
|
1956
|
+
style: styles.handleButton
|
|
1957
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
1958
|
+
style: styles.handle
|
|
1959
|
+
}))), showDebugPanel && step === 'platforms' && /*#__PURE__*/React.createElement(View, {
|
|
1960
|
+
style: styles.debugPanel
|
|
1961
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
1962
|
+
style: styles.debugTitle
|
|
1963
|
+
}, "Debug Padding"), /*#__PURE__*/React.createElement(View, {
|
|
1964
|
+
style: styles.debugRow
|
|
1965
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
1966
|
+
style: styles.debugLabel
|
|
1967
|
+
}, "Container Top: ", debugPaddingTop), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
1968
|
+
onPress: () => setDebugPaddingTop(p => Math.max(0, p - 2)),
|
|
1969
|
+
style: styles.debugBtn
|
|
1970
|
+
}, /*#__PURE__*/React.createElement(Text, null, "-")), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
1971
|
+
onPress: () => setDebugPaddingTop(p => p + 2),
|
|
1972
|
+
style: styles.debugBtn
|
|
1973
|
+
}, /*#__PURE__*/React.createElement(Text, null, "+"))), /*#__PURE__*/React.createElement(View, {
|
|
1974
|
+
style: styles.debugRow
|
|
1975
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
1976
|
+
style: styles.debugLabel
|
|
1977
|
+
}, "Container Bottom: ", debugPaddingBottom), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
1978
|
+
onPress: () => setDebugPaddingBottom(p => Math.max(0, p - 2)),
|
|
1979
|
+
style: styles.debugBtn
|
|
1980
|
+
}, /*#__PURE__*/React.createElement(Text, null, "-")), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
1981
|
+
onPress: () => setDebugPaddingBottom(p => p + 2),
|
|
1982
|
+
style: styles.debugBtn
|
|
1983
|
+
}, /*#__PURE__*/React.createElement(Text, null, "+"))), /*#__PURE__*/React.createElement(View, {
|
|
1984
|
+
style: styles.debugRow
|
|
1985
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
1986
|
+
style: styles.debugLabel
|
|
1987
|
+
}, "Handle Top: ", debugHandlePaddingTop), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
1988
|
+
onPress: () => setDebugHandlePaddingTop(p => Math.max(0, p - 2)),
|
|
1989
|
+
style: styles.debugBtn
|
|
1990
|
+
}, /*#__PURE__*/React.createElement(Text, null, "-")), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
1991
|
+
onPress: () => setDebugHandlePaddingTop(p => p + 2),
|
|
1992
|
+
style: styles.debugBtn
|
|
1993
|
+
}, /*#__PURE__*/React.createElement(Text, null, "+"))), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
1994
|
+
onPress: () => setShowDebugPanel(false),
|
|
1995
|
+
style: styles.debugCloseBtn
|
|
1996
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
1997
|
+
style: styles.debugCloseBtnText
|
|
1998
|
+
}, "Hide Debug"))), step === 'welcome' && /*#__PURE__*/React.createElement(View, {
|
|
1999
|
+
style: styles.welcomeContainer
|
|
2000
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
2001
|
+
style: styles.brandMarkContainer
|
|
2002
|
+
}, /*#__PURE__*/React.createElement(BrandMark, null)), /*#__PURE__*/React.createElement(View, {
|
|
2003
|
+
style: styles.headingContainer
|
|
2004
|
+
}, /*#__PURE__*/React.createElement(HeadingGroup, null)), /*#__PURE__*/React.createElement(View, {
|
|
2005
|
+
style: styles.bodyContainer
|
|
2006
|
+
}, /*#__PURE__*/React.createElement(BodyText, null)), /*#__PURE__*/React.createElement(View, {
|
|
2007
|
+
style: styles.welcomeSpacer
|
|
2008
|
+
}), /*#__PURE__*/React.createElement(View, {
|
|
2009
|
+
style: styles.welcomeButtonContainer
|
|
2010
|
+
}, /*#__PURE__*/React.createElement(PrimaryButton, {
|
|
2011
|
+
label: "Get Started",
|
|
2012
|
+
onPress: handleGetStarted,
|
|
2013
|
+
testID: "welcome-get-started-button"
|
|
2014
|
+
}))), step === 'signin' && /*#__PURE__*/React.createElement(SignInStep, {
|
|
2015
|
+
onEmailSubmit: handleEmailSubmit,
|
|
2016
|
+
onGoogleSignIn: handleGoogleSignIn,
|
|
2017
|
+
onContinue: () => setStep('verification'),
|
|
2018
|
+
loading: authLoading,
|
|
2019
|
+
error: authError,
|
|
2020
|
+
initialEmail: userEmail
|
|
2021
|
+
}), step === 'verification' && /*#__PURE__*/React.createElement(VerificationStep, {
|
|
2022
|
+
email: userEmail,
|
|
2023
|
+
onCodeSubmit: handleCodeSubmit,
|
|
2024
|
+
onBack: handleBackToSignIn,
|
|
2025
|
+
loading: authLoading,
|
|
2026
|
+
error: authError,
|
|
2027
|
+
onResendCode: handleResendCode
|
|
2028
|
+
}), step === 'platforms' && /*#__PURE__*/React.createElement(PlatformConnectorsStep, {
|
|
2029
|
+
onUpdate: handlePlatformUpdate,
|
|
2030
|
+
onSkip: allowSkip ? handlePlatformSkip : undefined,
|
|
2031
|
+
onReviewerBypass: handleReviewerBypass,
|
|
2032
|
+
onLogout: handleLogout,
|
|
2033
|
+
allowedPlatforms: allowedPlatforms,
|
|
2034
|
+
recommendedPlatforms: recommendedPlatforms,
|
|
2035
|
+
initialConnectedPlatforms: returningUserConnections,
|
|
2036
|
+
userEmail: userEmail
|
|
2037
|
+
}), step === 'consent' && /*#__PURE__*/React.createElement(PersonalizationConsentScreen, {
|
|
2038
|
+
visible: true,
|
|
2039
|
+
loading: isConsentLoading,
|
|
2040
|
+
onLogout: handleLogout,
|
|
2041
|
+
onAccept: async () => {
|
|
2042
|
+
console.log('✅ Returning user accepted consent');
|
|
2043
|
+
|
|
2044
|
+
// 🚀 Show loading on button immediately
|
|
2045
|
+
setIsConsentLoading(true);
|
|
2046
|
+
|
|
2047
|
+
// Small delay to ensure React renders the loading state
|
|
2048
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
2049
|
+
|
|
2050
|
+
// Call onComplete with the returning user's data
|
|
2051
|
+
try {
|
|
2052
|
+
// 🚀 OPTIMIZATION: Load data in parallel (fast!)
|
|
2053
|
+
const [token, email, storedUsername] = await Promise.all([getAuthToken(), AsyncStorage.getItem('user_email'), getOnairosUsername()]);
|
|
2054
|
+
console.log('🔑 [SDK] Auth data retrieved in parallel for returning user');
|
|
2055
|
+
|
|
2056
|
+
// Set completing flag before calling onComplete
|
|
2057
|
+
isCompletingRef.current = true;
|
|
2058
|
+
if (token && email) {
|
|
2059
|
+
console.log('✅ [SDK] Calling onComplete for returning user');
|
|
2060
|
+
await (onComplete === null || onComplete === void 0 ? void 0 : onComplete(API_CONFIG.BASE_URL, token, {
|
|
2061
|
+
email,
|
|
2062
|
+
connectedPlatforms: returningUserConnections,
|
|
2063
|
+
username: storedUsername || email.split('@')[0],
|
|
2064
|
+
isReturningUser: true
|
|
2065
|
+
}));
|
|
2066
|
+
} else {
|
|
2067
|
+
console.warn('⚠️ [SDK] No token/email found for returning user');
|
|
2068
|
+
await (onComplete === null || onComplete === void 0 ? void 0 : onComplete(API_CONFIG.BASE_URL, '', {
|
|
2069
|
+
connectedPlatforms: returningUserConnections,
|
|
2070
|
+
isReturningUser: true
|
|
2071
|
+
}));
|
|
2072
|
+
}
|
|
2073
|
+
} catch (error) {
|
|
2074
|
+
console.error('❌ [SDK] Error during returning user consent:', error);
|
|
2075
|
+
await (onComplete === null || onComplete === void 0 ? void 0 : onComplete(API_CONFIG.BASE_URL, '', {
|
|
2076
|
+
connectedPlatforms: returningUserConnections,
|
|
2077
|
+
isReturningUser: true
|
|
2078
|
+
}));
|
|
2079
|
+
}
|
|
2080
|
+
// NOTE: Keep loading=true - modal stays open until parent sets visible={false}
|
|
2081
|
+
console.log('✅ [SDK] Returning user onComplete finished - waiting for parent to close modal');
|
|
2082
|
+
},
|
|
2083
|
+
onDecline: () => {
|
|
2084
|
+
console.log('❌ Returning user declined consent');
|
|
2085
|
+
handleClose();
|
|
2086
|
+
},
|
|
2087
|
+
connectedPlatforms: returningUserConnections,
|
|
2088
|
+
onConnectMore: () => {
|
|
2089
|
+
// Allow returning users to connect more platforms
|
|
2090
|
+
console.log('➕ Returning user wants to connect more platforms');
|
|
2091
|
+
setStep('platforms');
|
|
2092
|
+
},
|
|
2093
|
+
isReturningUser: isReturningUser,
|
|
2094
|
+
appName: AppName
|
|
2095
|
+
})))));
|
|
2096
|
+
};
|
|
2097
|
+
|
|
2098
|
+
// ============================================
|
|
2099
|
+
// LEGACY CODE REMOVED - The following step handlers were removed:
|
|
2100
|
+
// - step === 'connect' (old platform connection UI)
|
|
2101
|
+
// - step === 'pin' (old PIN input)
|
|
2102
|
+
// - step === 'persona' (old persona screen)
|
|
2103
|
+
// - step === 'oauth' (moved to PlatformConnectorsStep)
|
|
2104
|
+
// - step === 'privacy' (old privacy screen)
|
|
2105
|
+
// - step === 'connections' (old connections screen)
|
|
2106
|
+
// ============================================
|
|
2107
|
+
|
|
2108
|
+
const LEGACY_REMOVED = true; // Marker for removed legacy code
|
|
2109
|
+
|
|
2110
|
+
const styles = StyleSheet.create({
|
|
2111
|
+
modalOverlay: {
|
|
2112
|
+
flex: 1,
|
|
2113
|
+
justifyContent: 'flex-end'
|
|
2114
|
+
},
|
|
2115
|
+
backdrop: {
|
|
2116
|
+
...StyleSheet.absoluteFillObject,
|
|
2117
|
+
backgroundColor: 'rgba(0, 0, 0, 0.5)'
|
|
2118
|
+
},
|
|
2119
|
+
bottomSheet: {
|
|
2120
|
+
backgroundColor: '#FAFAFA',
|
|
2121
|
+
borderTopLeftRadius: 24,
|
|
2122
|
+
borderTopRightRadius: 24,
|
|
2123
|
+
paddingTop: 0,
|
|
2124
|
+
paddingBottom: 0,
|
|
2125
|
+
minHeight: height * .86,
|
|
2126
|
+
overflow: 'hidden',
|
|
2127
|
+
width: '100%'
|
|
2128
|
+
},
|
|
2129
|
+
container: {
|
|
2130
|
+
flex: 1,
|
|
2131
|
+
backgroundColor: '#FAFAFA'
|
|
2132
|
+
},
|
|
2133
|
+
// ============================================
|
|
2134
|
+
// ENOCH-STYLE WELCOME FLOW STYLES
|
|
2135
|
+
// ============================================
|
|
2136
|
+
welcomeContainer: {
|
|
2137
|
+
flex: 1,
|
|
2138
|
+
alignItems: 'center',
|
|
2139
|
+
paddingTop: 70,
|
|
2140
|
+
paddingHorizontal: 24
|
|
2141
|
+
},
|
|
2142
|
+
brandMarkContainer: {
|
|
2143
|
+
marginBottom: 32
|
|
2144
|
+
},
|
|
2145
|
+
headingContainer: {
|
|
2146
|
+
marginBottom: 24
|
|
2147
|
+
},
|
|
2148
|
+
bodyContainer: {
|
|
2149
|
+
marginBottom: 32,
|
|
2150
|
+
width: '100%'
|
|
2151
|
+
},
|
|
2152
|
+
welcomeSpacer: {
|
|
2153
|
+
flex: 1,
|
|
2154
|
+
minHeight: 20
|
|
2155
|
+
},
|
|
2156
|
+
welcomeButtonContainer: {
|
|
2157
|
+
width: '100%',
|
|
2158
|
+
paddingBottom: 20
|
|
2159
|
+
},
|
|
2160
|
+
// ============================================
|
|
2161
|
+
handleContainer: {
|
|
2162
|
+
alignItems: 'center',
|
|
2163
|
+
paddingTop: 12,
|
|
2164
|
+
paddingBottom: 4,
|
|
2165
|
+
backgroundColor: 'transparent'
|
|
2166
|
+
},
|
|
2167
|
+
handleButton: {
|
|
2168
|
+
padding: 0,
|
|
2169
|
+
width: 120,
|
|
2170
|
+
alignItems: 'center'
|
|
2171
|
+
},
|
|
2172
|
+
handle: {
|
|
2173
|
+
width: 100,
|
|
2174
|
+
height: 6,
|
|
2175
|
+
borderRadius: 3,
|
|
2176
|
+
backgroundColor: '#D0D0D0'
|
|
2177
|
+
},
|
|
2178
|
+
debugPanel: {
|
|
2179
|
+
position: 'absolute',
|
|
2180
|
+
top: 60,
|
|
2181
|
+
right: 10,
|
|
2182
|
+
backgroundColor: 'rgba(0,0,0,0.85)',
|
|
2183
|
+
padding: 12,
|
|
2184
|
+
borderRadius: 8,
|
|
2185
|
+
zIndex: 9999,
|
|
2186
|
+
minWidth: 200
|
|
2187
|
+
},
|
|
2188
|
+
debugTitle: {
|
|
2189
|
+
color: '#fff',
|
|
2190
|
+
fontSize: 14,
|
|
2191
|
+
fontWeight: '700',
|
|
2192
|
+
marginBottom: 8
|
|
2193
|
+
},
|
|
2194
|
+
debugRow: {
|
|
2195
|
+
flexDirection: 'row',
|
|
2196
|
+
alignItems: 'center',
|
|
2197
|
+
marginBottom: 6
|
|
2198
|
+
},
|
|
2199
|
+
debugLabel: {
|
|
2200
|
+
color: '#fff',
|
|
2201
|
+
fontSize: 12,
|
|
2202
|
+
flex: 1
|
|
2203
|
+
},
|
|
2204
|
+
debugBtn: {
|
|
2205
|
+
backgroundColor: '#444',
|
|
2206
|
+
paddingHorizontal: 12,
|
|
2207
|
+
paddingVertical: 4,
|
|
2208
|
+
borderRadius: 4,
|
|
2209
|
+
marginLeft: 4
|
|
2210
|
+
},
|
|
2211
|
+
debugCloseBtn: {
|
|
2212
|
+
backgroundColor: '#666',
|
|
2213
|
+
paddingVertical: 6,
|
|
2214
|
+
borderRadius: 4,
|
|
2215
|
+
marginTop: 8,
|
|
2216
|
+
alignItems: 'center'
|
|
2217
|
+
},
|
|
2218
|
+
debugCloseBtnText: {
|
|
2219
|
+
color: '#fff',
|
|
2220
|
+
fontSize: 12
|
|
2221
|
+
},
|
|
2222
|
+
header: {
|
|
2223
|
+
alignItems: 'center',
|
|
2224
|
+
marginBottom: 20,
|
|
2225
|
+
paddingHorizontal: 24
|
|
2226
|
+
},
|
|
2227
|
+
headerContent: {
|
|
2228
|
+
flexDirection: 'row',
|
|
2229
|
+
alignItems: 'center',
|
|
2230
|
+
justifyContent: 'center',
|
|
2231
|
+
marginBottom: 24
|
|
2232
|
+
},
|
|
2233
|
+
appIcon: {
|
|
2234
|
+
width: 48,
|
|
2235
|
+
height: 48,
|
|
2236
|
+
borderRadius: 24,
|
|
2237
|
+
backgroundColor: '#F5F5F5',
|
|
2238
|
+
alignItems: 'center',
|
|
2239
|
+
justifyContent: 'center'
|
|
2240
|
+
},
|
|
2241
|
+
appIconText: {
|
|
2242
|
+
fontSize: 24,
|
|
2243
|
+
fontWeight: 'bold',
|
|
2244
|
+
color: '#333'
|
|
2245
|
+
},
|
|
2246
|
+
arrow: {
|
|
2247
|
+
marginHorizontal: 16,
|
|
2248
|
+
fontSize: 24,
|
|
2249
|
+
color: '#666'
|
|
2250
|
+
},
|
|
2251
|
+
onairosIcon: {
|
|
2252
|
+
width: 54,
|
|
2253
|
+
height: 54,
|
|
2254
|
+
borderRadius: 32,
|
|
2255
|
+
backgroundColor: 'transparent',
|
|
2256
|
+
alignItems: 'center',
|
|
2257
|
+
justifyContent: 'center'
|
|
2258
|
+
},
|
|
2259
|
+
onairosIconText: {
|
|
2260
|
+
fontSize: 24,
|
|
2261
|
+
fontWeight: 'bold',
|
|
2262
|
+
color: '#fff'
|
|
2263
|
+
},
|
|
2264
|
+
onairosIconImage: {
|
|
2265
|
+
width: 54,
|
|
2266
|
+
height: 54
|
|
2267
|
+
},
|
|
2268
|
+
titleContainer: {
|
|
2269
|
+
alignItems: 'center'
|
|
2270
|
+
},
|
|
2271
|
+
mainTitle: {
|
|
2272
|
+
fontSize: 24,
|
|
2273
|
+
fontWeight: '600',
|
|
2274
|
+
color: '#333',
|
|
2275
|
+
textAlign: 'center',
|
|
2276
|
+
marginBottom: 12
|
|
2277
|
+
},
|
|
2278
|
+
privacyMessage: {
|
|
2279
|
+
fontSize: 14,
|
|
2280
|
+
color: '#666',
|
|
2281
|
+
textAlign: 'center',
|
|
2282
|
+
marginBottom: 20
|
|
2283
|
+
},
|
|
2284
|
+
privacyLink: {
|
|
2285
|
+
color: '#000000',
|
|
2286
|
+
fontWeight: '600',
|
|
2287
|
+
textDecorationLine: 'underline'
|
|
2288
|
+
},
|
|
2289
|
+
boldText: {
|
|
2290
|
+
fontWeight: 'bold'
|
|
2291
|
+
},
|
|
2292
|
+
content: {
|
|
2293
|
+
flex: 1,
|
|
2294
|
+
paddingHorizontal: 24
|
|
2295
|
+
},
|
|
2296
|
+
platformsScrollView: {
|
|
2297
|
+
flex: 1,
|
|
2298
|
+
width: '100%'
|
|
2299
|
+
},
|
|
2300
|
+
platformsScrollContent: {
|
|
2301
|
+
paddingBottom: 0,
|
|
2302
|
+
paddingHorizontal: 24
|
|
2303
|
+
},
|
|
2304
|
+
platformsContainer: {
|
|
2305
|
+
marginTop: 16
|
|
2306
|
+
},
|
|
2307
|
+
platformItem: {
|
|
2308
|
+
flexDirection: 'row',
|
|
2309
|
+
alignItems: 'center',
|
|
2310
|
+
justifyContent: 'space-between',
|
|
2311
|
+
paddingVertical: 16,
|
|
2312
|
+
paddingHorizontal: 8,
|
|
2313
|
+
borderBottomWidth: 1,
|
|
2314
|
+
borderBottomColor: '#E5E5E5'
|
|
2315
|
+
},
|
|
2316
|
+
platformInfo: {
|
|
2317
|
+
flexDirection: 'row',
|
|
2318
|
+
alignItems: 'center'
|
|
2319
|
+
},
|
|
2320
|
+
platformIcon: {
|
|
2321
|
+
width: 40,
|
|
2322
|
+
height: 40,
|
|
2323
|
+
borderRadius: 20,
|
|
2324
|
+
backgroundColor: '#F5F5F5',
|
|
2325
|
+
alignItems: 'center',
|
|
2326
|
+
justifyContent: 'center',
|
|
2327
|
+
marginRight: 16
|
|
2328
|
+
},
|
|
2329
|
+
platformIconText: {
|
|
2330
|
+
fontSize: 18,
|
|
2331
|
+
fontWeight: 'bold',
|
|
2332
|
+
color: '#333',
|
|
2333
|
+
textAlign: 'center',
|
|
2334
|
+
textAlignVertical: 'center'
|
|
2335
|
+
},
|
|
2336
|
+
platformIconImage: {
|
|
2337
|
+
width: 24,
|
|
2338
|
+
height: 24
|
|
2339
|
+
},
|
|
2340
|
+
youtubeIconImage: {
|
|
2341
|
+
width: 58,
|
|
2342
|
+
height: 58
|
|
2343
|
+
},
|
|
2344
|
+
redditIconImage: {
|
|
2345
|
+
width: 34,
|
|
2346
|
+
height: 34
|
|
2347
|
+
},
|
|
2348
|
+
pinterestIconImage: {
|
|
2349
|
+
width: 48,
|
|
2350
|
+
height: 48
|
|
2351
|
+
},
|
|
2352
|
+
gmailIconImage: {
|
|
2353
|
+
width: 32,
|
|
2354
|
+
height: 32
|
|
2355
|
+
},
|
|
2356
|
+
linkedinPlatformIcon: {
|
|
2357
|
+
width: 40,
|
|
2358
|
+
height: 40,
|
|
2359
|
+
borderRadius: 8,
|
|
2360
|
+
backgroundColor: '#F5F5F5',
|
|
2361
|
+
alignItems: 'center',
|
|
2362
|
+
justifyContent: 'center',
|
|
2363
|
+
marginRight: 16
|
|
2364
|
+
},
|
|
2365
|
+
pinterestPlatformIcon: {
|
|
2366
|
+
width: 34,
|
|
2367
|
+
height: 34,
|
|
2368
|
+
borderRadius: 17,
|
|
2369
|
+
backgroundColor: '#F5F5F5',
|
|
2370
|
+
alignItems: 'center',
|
|
2371
|
+
justifyContent: 'center',
|
|
2372
|
+
marginRight: 16
|
|
2373
|
+
},
|
|
2374
|
+
platformName: {
|
|
2375
|
+
fontSize: 16,
|
|
2376
|
+
color: '#333',
|
|
2377
|
+
textAlignVertical: 'center'
|
|
2378
|
+
},
|
|
2379
|
+
footer: {
|
|
2380
|
+
flexDirection: 'row',
|
|
2381
|
+
alignItems: 'center',
|
|
2382
|
+
justifyContent: 'space-between',
|
|
2383
|
+
padding: 24,
|
|
2384
|
+
borderTopWidth: 1,
|
|
2385
|
+
borderTopColor: '#E5E5E5'
|
|
2386
|
+
},
|
|
2387
|
+
footerButtonCancel: {
|
|
2388
|
+
paddingVertical: 12,
|
|
2389
|
+
paddingHorizontal: 16
|
|
2390
|
+
},
|
|
2391
|
+
footerButtonText: {
|
|
2392
|
+
color: '#666',
|
|
2393
|
+
fontSize: 16
|
|
2394
|
+
},
|
|
2395
|
+
footerButtonConfirm: {
|
|
2396
|
+
paddingVertical: 12,
|
|
2397
|
+
paddingHorizontal: 24,
|
|
2398
|
+
backgroundColor: '#000000',
|
|
2399
|
+
borderRadius: 8,
|
|
2400
|
+
marginTop: 20
|
|
2401
|
+
},
|
|
2402
|
+
footerButtonConnected: {
|
|
2403
|
+
paddingVertical: 12,
|
|
2404
|
+
paddingHorizontal: 24,
|
|
2405
|
+
backgroundColor: '#E9C46A',
|
|
2406
|
+
borderRadius: 8
|
|
2407
|
+
},
|
|
2408
|
+
footerButtonDisabled: {
|
|
2409
|
+
backgroundColor: '#E5E5E5'
|
|
2410
|
+
},
|
|
2411
|
+
footerButtonTextConfirm: {
|
|
2412
|
+
color: '#fff',
|
|
2413
|
+
fontSize: 16,
|
|
2414
|
+
fontWeight: '600'
|
|
2415
|
+
},
|
|
2416
|
+
footerButtonTextConnected: {
|
|
2417
|
+
color: '#000',
|
|
2418
|
+
fontSize: 16,
|
|
2419
|
+
fontWeight: '600'
|
|
2420
|
+
},
|
|
2421
|
+
connectContainer: {
|
|
2422
|
+
flex: 1
|
|
2423
|
+
},
|
|
2424
|
+
modalContent: {
|
|
2425
|
+
flex: 1,
|
|
2426
|
+
backgroundColor: '#FFFFFF',
|
|
2427
|
+
borderTopLeftRadius: 20,
|
|
2428
|
+
borderTopRightRadius: 20,
|
|
2429
|
+
padding: 24
|
|
2430
|
+
},
|
|
2431
|
+
backButton: {
|
|
2432
|
+
padding: 8,
|
|
2433
|
+
width: 40
|
|
2434
|
+
},
|
|
2435
|
+
backButtonText: {
|
|
2436
|
+
fontSize: 24,
|
|
2437
|
+
color: '#000000'
|
|
2438
|
+
},
|
|
2439
|
+
backButtonSpacer: {
|
|
2440
|
+
width: 40
|
|
2441
|
+
},
|
|
2442
|
+
headerTitle: {
|
|
2443
|
+
fontSize: 18,
|
|
2444
|
+
fontWeight: '600',
|
|
2445
|
+
color: '#333',
|
|
2446
|
+
textAlign: 'center'
|
|
2447
|
+
},
|
|
2448
|
+
privacyHeader: {
|
|
2449
|
+
flexDirection: 'row',
|
|
2450
|
+
alignItems: 'center',
|
|
2451
|
+
justifyContent: 'space-between',
|
|
2452
|
+
paddingHorizontal: 16,
|
|
2453
|
+
paddingVertical: 20,
|
|
2454
|
+
backgroundColor: '#FFFFFF',
|
|
2455
|
+
borderBottomWidth: 1,
|
|
2456
|
+
borderBottomColor: '#F0F0F0'
|
|
2457
|
+
},
|
|
2458
|
+
privacyDetailsContainer: {
|
|
2459
|
+
paddingHorizontal: 24,
|
|
2460
|
+
paddingVertical: 8,
|
|
2461
|
+
flex: 1,
|
|
2462
|
+
marginTop: 20
|
|
2463
|
+
},
|
|
2464
|
+
privacyDetailsTitle: {
|
|
2465
|
+
fontSize: 20,
|
|
2466
|
+
fontWeight: '600',
|
|
2467
|
+
color: '#333',
|
|
2468
|
+
marginBottom: 0
|
|
2469
|
+
},
|
|
2470
|
+
privacyBulletPoint: {
|
|
2471
|
+
flexDirection: 'row',
|
|
2472
|
+
marginBottom: 16,
|
|
2473
|
+
alignItems: 'flex-start'
|
|
2474
|
+
},
|
|
2475
|
+
bulletPoint: {
|
|
2476
|
+
fontSize: 18,
|
|
2477
|
+
marginRight: 8,
|
|
2478
|
+
color: '#333'
|
|
2479
|
+
},
|
|
2480
|
+
privacyBulletText: {
|
|
2481
|
+
fontSize: 16,
|
|
2482
|
+
color: '#333',
|
|
2483
|
+
flex: 1,
|
|
2484
|
+
lineHeight: 24
|
|
2485
|
+
},
|
|
2486
|
+
connectionsCountText: {
|
|
2487
|
+
fontSize: 18,
|
|
2488
|
+
fontWeight: '600',
|
|
2489
|
+
color: '#333',
|
|
2490
|
+
marginBottom: 24
|
|
2491
|
+
},
|
|
2492
|
+
personaContainer: {
|
|
2493
|
+
flex: 1,
|
|
2494
|
+
padding: 16,
|
|
2495
|
+
backgroundColor: '#fff',
|
|
2496
|
+
justifyContent: 'flex-start'
|
|
2497
|
+
},
|
|
2498
|
+
personaHeaderWithBack: {
|
|
2499
|
+
flexDirection: 'row',
|
|
2500
|
+
alignItems: 'center',
|
|
2501
|
+
justifyContent: 'space-between',
|
|
2502
|
+
marginBottom: 16,
|
|
2503
|
+
paddingVertical: 8
|
|
2504
|
+
},
|
|
2505
|
+
personaBackButton: {
|
|
2506
|
+
padding: 8
|
|
2507
|
+
},
|
|
2508
|
+
personaHeader: {
|
|
2509
|
+
alignItems: 'center',
|
|
2510
|
+
marginBottom: 32,
|
|
2511
|
+
paddingHorizontal: 24
|
|
2512
|
+
},
|
|
2513
|
+
personaTitle: {
|
|
2514
|
+
fontSize: 20,
|
|
2515
|
+
fontWeight: '600',
|
|
2516
|
+
color: '#333',
|
|
2517
|
+
textAlign: 'center',
|
|
2518
|
+
flex: 1,
|
|
2519
|
+
marginBottom: 8
|
|
2520
|
+
},
|
|
2521
|
+
personaSubtitle: {
|
|
2522
|
+
fontSize: 14,
|
|
2523
|
+
color: '#666',
|
|
2524
|
+
marginBottom: 24,
|
|
2525
|
+
textAlign: 'center'
|
|
2526
|
+
},
|
|
2527
|
+
personaProgressContainer: {
|
|
2528
|
+
marginBottom: 24,
|
|
2529
|
+
paddingHorizontal: 0
|
|
2530
|
+
},
|
|
2531
|
+
personaProgressBar: {
|
|
2532
|
+
height: 8,
|
|
2533
|
+
backgroundColor: '#F5F5F5',
|
|
2534
|
+
borderRadius: 4,
|
|
2535
|
+
overflow: 'hidden',
|
|
2536
|
+
marginBottom: 12
|
|
2537
|
+
},
|
|
2538
|
+
personaProgressFill: {
|
|
2539
|
+
height: '100%',
|
|
2540
|
+
backgroundColor: '#1BA9D4',
|
|
2541
|
+
borderRadius: 4
|
|
2542
|
+
},
|
|
2543
|
+
personaProgressText: {
|
|
2544
|
+
fontSize: 16,
|
|
2545
|
+
fontWeight: '600',
|
|
2546
|
+
color: '#333',
|
|
2547
|
+
textAlign: 'center',
|
|
2548
|
+
marginBottom: 8
|
|
2549
|
+
},
|
|
2550
|
+
personaStatusText: {
|
|
2551
|
+
fontSize: 14,
|
|
2552
|
+
color: '#666',
|
|
2553
|
+
textAlign: 'center'
|
|
2554
|
+
},
|
|
2555
|
+
personaCompleteContainer: {
|
|
2556
|
+
alignItems: 'center',
|
|
2557
|
+
paddingHorizontal: 0
|
|
2558
|
+
},
|
|
2559
|
+
personaCompleteTitle: {
|
|
2560
|
+
fontSize: 20,
|
|
2561
|
+
fontWeight: '600',
|
|
2562
|
+
color: '#333',
|
|
2563
|
+
marginBottom: 8,
|
|
2564
|
+
textAlign: 'center'
|
|
2565
|
+
},
|
|
2566
|
+
personaCompleteSubtitle: {
|
|
2567
|
+
fontSize: 14,
|
|
2568
|
+
color: '#666',
|
|
2569
|
+
textAlign: 'center',
|
|
2570
|
+
marginBottom: 40
|
|
2571
|
+
},
|
|
2572
|
+
personaContinueButton: {
|
|
2573
|
+
backgroundColor: '#000000',
|
|
2574
|
+
paddingVertical: 16,
|
|
2575
|
+
paddingHorizontal: 48,
|
|
2576
|
+
borderRadius: 16,
|
|
2577
|
+
alignItems: 'center',
|
|
2578
|
+
width: '100%',
|
|
2579
|
+
marginTop: 32,
|
|
2580
|
+
shadowColor: '#000',
|
|
2581
|
+
shadowOffset: {
|
|
2582
|
+
width: 0,
|
|
2583
|
+
height: 2
|
|
2584
|
+
},
|
|
2585
|
+
shadowOpacity: 0.1,
|
|
2586
|
+
shadowRadius: 4,
|
|
2587
|
+
elevation: 3
|
|
2588
|
+
},
|
|
2589
|
+
personaContinueButtonText: {
|
|
2590
|
+
color: '#fff',
|
|
2591
|
+
fontSize: 16,
|
|
2592
|
+
fontWeight: '600'
|
|
2593
|
+
},
|
|
2594
|
+
progressError: {
|
|
2595
|
+
backgroundColor: '#FF3B30'
|
|
2596
|
+
},
|
|
2597
|
+
dataWarningContainer: {
|
|
2598
|
+
padding: 16,
|
|
2599
|
+
borderRadius: 12,
|
|
2600
|
+
marginTop: 16,
|
|
2601
|
+
borderWidth: 1,
|
|
2602
|
+
shadowColor: '#000',
|
|
2603
|
+
shadowOffset: {
|
|
2604
|
+
width: 0,
|
|
2605
|
+
height: 2
|
|
2606
|
+
},
|
|
2607
|
+
shadowOpacity: 0.1,
|
|
2608
|
+
shadowRadius: 4,
|
|
2609
|
+
elevation: 3
|
|
2610
|
+
},
|
|
2611
|
+
dataWarningHeader: {
|
|
2612
|
+
flexDirection: 'row',
|
|
2613
|
+
alignItems: 'center',
|
|
2614
|
+
marginBottom: 8
|
|
2615
|
+
},
|
|
2616
|
+
dataWarningIcon: {
|
|
2617
|
+
fontSize: 20,
|
|
2618
|
+
marginRight: 8
|
|
2619
|
+
},
|
|
2620
|
+
dataWarningTitle: {
|
|
2621
|
+
fontSize: 16,
|
|
2622
|
+
fontWeight: '600',
|
|
2623
|
+
flex: 1
|
|
2624
|
+
},
|
|
2625
|
+
dataWarningMessage: {
|
|
2626
|
+
fontSize: 14,
|
|
2627
|
+
marginBottom: 0,
|
|
2628
|
+
lineHeight: 20
|
|
2629
|
+
},
|
|
2630
|
+
dataWarningSuggestions: {
|
|
2631
|
+
marginTop: 12,
|
|
2632
|
+
paddingTop: 12,
|
|
2633
|
+
borderTopWidth: 1
|
|
2634
|
+
},
|
|
2635
|
+
dataWarningSuggestionsTitle: {
|
|
2636
|
+
fontSize: 14,
|
|
2637
|
+
fontWeight: '600',
|
|
2638
|
+
marginBottom: 6
|
|
2639
|
+
},
|
|
2640
|
+
dataWarningSuggestionItem: {
|
|
2641
|
+
fontSize: 13,
|
|
2642
|
+
marginBottom: 4,
|
|
2643
|
+
lineHeight: 18
|
|
2644
|
+
},
|
|
2645
|
+
dataWarningContinueNote: {
|
|
2646
|
+
fontSize: 13,
|
|
2647
|
+
fontWeight: '500',
|
|
2648
|
+
marginTop: 12,
|
|
2649
|
+
fontStyle: 'italic'
|
|
2650
|
+
},
|
|
2651
|
+
dataWarningError: {
|
|
2652
|
+
backgroundColor: '#FFF5F5',
|
|
2653
|
+
borderColor: '#FEB2B2'
|
|
2654
|
+
},
|
|
2655
|
+
dataInfoContainer: {
|
|
2656
|
+
backgroundColor: '#F0F9FF',
|
|
2657
|
+
borderColor: '#BAE6FD'
|
|
2658
|
+
},
|
|
2659
|
+
dataConnectionsRequired: {
|
|
2660
|
+
backgroundColor: '#F5F5F5',
|
|
2661
|
+
borderColor: '#D1D5DB',
|
|
2662
|
+
shadowColor: '#6B7280',
|
|
2663
|
+
shadowOffset: {
|
|
2664
|
+
width: 0,
|
|
2665
|
+
height: 0
|
|
2666
|
+
},
|
|
2667
|
+
shadowOpacity: 0.15,
|
|
2668
|
+
shadowRadius: 8
|
|
2669
|
+
},
|
|
2670
|
+
highlightedBackButton: {
|
|
2671
|
+
backgroundColor: '#F5F5F5',
|
|
2672
|
+
borderRadius: 20,
|
|
2673
|
+
borderWidth: 2,
|
|
2674
|
+
borderColor: '#000000',
|
|
2675
|
+
shadowColor: '#000000',
|
|
2676
|
+
shadowOffset: {
|
|
2677
|
+
width: 0,
|
|
2678
|
+
height: 0
|
|
2679
|
+
},
|
|
2680
|
+
shadowOpacity: 0.3,
|
|
2681
|
+
shadowRadius: 8,
|
|
2682
|
+
elevation: 5
|
|
2683
|
+
},
|
|
2684
|
+
highlightedBackArrow: {
|
|
2685
|
+
color: '#000000',
|
|
2686
|
+
fontWeight: 'bold'
|
|
2687
|
+
},
|
|
2688
|
+
goBackButton: {
|
|
2689
|
+
backgroundColor: '#000000',
|
|
2690
|
+
paddingVertical: 12,
|
|
2691
|
+
paddingHorizontal: 16,
|
|
2692
|
+
borderRadius: 8,
|
|
2693
|
+
marginTop: 12,
|
|
2694
|
+
alignItems: 'center',
|
|
2695
|
+
shadowColor: '#000000',
|
|
2696
|
+
shadowOffset: {
|
|
2697
|
+
width: 0,
|
|
2698
|
+
height: 0
|
|
2699
|
+
},
|
|
2700
|
+
shadowOpacity: 0.3,
|
|
2701
|
+
shadowRadius: 6,
|
|
2702
|
+
elevation: 3
|
|
2703
|
+
},
|
|
2704
|
+
goBackButtonText: {
|
|
2705
|
+
color: '#FFFFFF',
|
|
2706
|
+
fontSize: 14,
|
|
2707
|
+
fontWeight: '600'
|
|
2708
|
+
},
|
|
2709
|
+
additionalPlatformsToggle: {
|
|
2710
|
+
paddingVertical: 16,
|
|
2711
|
+
paddingHorizontal: 8,
|
|
2712
|
+
alignItems: 'center',
|
|
2713
|
+
borderBottomWidth: 1,
|
|
2714
|
+
borderBottomColor: '#E5E5E5'
|
|
2715
|
+
},
|
|
2716
|
+
additionalPlatformsText: {
|
|
2717
|
+
fontSize: 14,
|
|
2718
|
+
color: '#666',
|
|
2719
|
+
fontWeight: '500'
|
|
2720
|
+
},
|
|
2721
|
+
asterisk: {
|
|
2722
|
+
color: '#FF6B6B',
|
|
2723
|
+
fontSize: 16,
|
|
2724
|
+
fontWeight: 'bold',
|
|
2725
|
+
marginLeft: 2
|
|
2726
|
+
},
|
|
2727
|
+
linkedinRequirementContainer: {
|
|
2728
|
+
backgroundColor: '#F8F9FA',
|
|
2729
|
+
borderWidth: 1,
|
|
2730
|
+
borderColor: '#E5E7EB',
|
|
2731
|
+
borderRadius: 8,
|
|
2732
|
+
paddingHorizontal: 12,
|
|
2733
|
+
paddingVertical: 8,
|
|
2734
|
+
marginTop: 8,
|
|
2735
|
+
marginHorizontal: 4
|
|
2736
|
+
},
|
|
2737
|
+
linkedinRequirementText: {
|
|
2738
|
+
fontSize: 12,
|
|
2739
|
+
fontStyle: 'italic',
|
|
2740
|
+
textAlign: 'center'
|
|
2741
|
+
},
|
|
2742
|
+
linkedinRequirementAsterisk: {
|
|
2743
|
+
color: '#FF6B6B',
|
|
2744
|
+
fontWeight: 'bold'
|
|
2745
|
+
},
|
|
2746
|
+
linkedinRequirementMessage: {
|
|
2747
|
+
color: '#6B7280'
|
|
2748
|
+
},
|
|
2749
|
+
existingUserBanner: {
|
|
2750
|
+
backgroundColor: '#F0F9FF',
|
|
2751
|
+
borderWidth: 1,
|
|
2752
|
+
borderColor: '#0EA5E9',
|
|
2753
|
+
borderRadius: 12,
|
|
2754
|
+
paddingHorizontal: 16,
|
|
2755
|
+
paddingVertical: 12,
|
|
2756
|
+
marginTop: 12
|
|
2757
|
+
},
|
|
2758
|
+
existingUserText: {
|
|
2759
|
+
fontSize: 14,
|
|
2760
|
+
fontWeight: '600',
|
|
2761
|
+
color: '#0369A1',
|
|
2762
|
+
marginBottom: 4
|
|
2763
|
+
},
|
|
2764
|
+
existingUserSubtext: {
|
|
2765
|
+
fontSize: 12,
|
|
2766
|
+
color: '#0C4A6E',
|
|
2767
|
+
lineHeight: 16
|
|
2768
|
+
}
|
|
2769
|
+
});
|
|
2770
|
+
//# sourceMappingURL=UniversalOnboarding.js.map
|