diff --git a/.env b/.env new file mode 100644 index 0000000..2139451 --- /dev/null +++ b/.env @@ -0,0 +1,117 @@ +basicAuthCredentials=wqnmqqsjyvwjv:nqrYJP@1737XrXlBl +basicCompareFaces=zjujluqfpj:nqrYjp@1737XrXlBl +basicCompareFacesURL='https://face-detect-f6924392c4c7.herokuapp.com/compare_faces' +accountSIDTwillo=QFx0qy456juj383n9xuy2194q629q1fj0y7XrXlBl +serverAPI=QQQQobSrrFi:QVQ87xU7zwCvmZzZdaxuS2f23Y4mz7MzyOzr8od2br6KYyeFaTVLG3K3hx5ZaUyx7eYvAYpAVdKk-286NTRi3zs9iSOnXtXRIxswg3KecBmsl3VxJ9wO-vIpwu4Pv7dkHkXniuxMSDgWXrXlBl +mapAPIKEY=AIzaSyCFsWBqvkXzk1Gb-bCGxwqTwJQKIeHjH64 +email=@intaleqapp.com +mapAPIKEYIOS=AIzaSyDzGO9a-1IDMLD2FxhmOO9ONL1gMssFa9g +twilloRecoveryCode=CAU79DHPH1BjE9PUH4ETXTSXZXrXlBl +apiKeyHere=g_WNUb5L-tripz7-F8omHpUmgIzH7ETeH9xZ8RwGG9_G8zX9A +authTokenTwillo=70u98ju0214oxx4q0u74028u021u4qu65XrXlBl +chatGPTkey=zg-4C26q4SYgBKQeHZDqkWowC9XrxgUEfUy9JRw2rm6Q2adb3kjwXrXlBl +transactionCloude=Qhcwuilomqcoib:QVO_JNYED2XWA26YXKC2TP:YK1DVH6SJB31N3PE1UXrXlBl +visionApi=3pALsqSSYTvzp69Q5FMIgbzjG6Z1zktJXrXlBl +chatGPTkeySefer=zg-IiR3i4ooza3Yvhvb9rZk1C9XrxgUE0l8jRRZrHj3Qe5QXPlqVXrXlBl +chatGPTkeySeferNew=zg-Z4oAJcAROgNXjgrEIU8fKC9XrxgUE4Qtrrlq1yiux0jL3dITSXrXlBl +secretKey=zg_ropj_57Iiv6pMFCBFq3C2n6IXlmjykpxDmW93SW3vvXh68UA9T5FORTWgWsT37StKsOPdwDdsy8qR9srMUluahs3nPHvgBa33tGk90vV5XrXlBl +stripe_publishableKe=vg_propj_57Iiv6MFCBFq3C2n6kNJnZByV6nuDtXe9IjEPOfhmpDtWmt3MLR0gQpiHcQmAFMUPrZc3QiCDjxBZLbxDC3efxWxz33bWH1ZgrsXrXlBl +llamaKey=RR-EuyoFDUvfRDBoj46fZKAtKJ3voM8Mt768cPeJV7GNdAkPTKdY8Odm9n4ggGqI5GyoXrXlBl +serverPHP=https://api.sefer.live/sefer +seferAlexandriaServer=https://seferalexandria.site/sefer +seferPaymentServer=https://seferpw.shop/sefer +# seferCairoServer=https://sefer.click/sefer +seferCairoServer=https://server.sefer.live/sefer.click/sefer +seferGizaServer=https://gizasefer.online/sefer +whatappID=3699397362811879 +whatsapp=EAAOtbZBSUK74BOzW9yb74EgApQYtI88nYtE9jQi9QnLGpw3FQpc5dxIlDgVJzcMywEBqNYf3s8pkk6cZB5Q0tkKuSOZBsOvMZA3Tcth0IlBHSaMVtcRZCsaTKNSUpfLRGRb0rhLezNFllpYBgmnfbhUazSZBYXdr40nmN4QEgweK2eqYQnTTNuryTOyBkKZB1MXMw6U7QnTRQDxHbUVlqgIRTrhaooZD +cohere=Aulwd8y5SPWos0hJhlG0toUf8gOhUUrpf5Q2TPmVGXrXlBl +claudeAiAPI=zg-qbc-qvo39l-xWOxIGwWTOzCFBnIYSKKhfyz_KVAvrH-6_4ZEJL68G_QBH26oeTOMMoQug9KuOjjKSP_A4S3SUDlbxR9duVzoQ-MkX_UQQQXrXlBl +payPalClientId=QALymlfNI5Tzt4s-ysoz6vD4_nqX0SUtkC_qYV-Ugk5gaM_8Z-kg4L53k8Uux_4jEWXDkNpXGSWPpIzDFXrXlBl +payPalClientIdLive=QZFkjAoZfGtngNserll6r3cC56Xl1sVLQkn5dMbyebhzJY59EQ3hz7YxaEqEDYPTUFcQWqvePaQ5UJJVRXrXlBl +payPalSecret=JBAAvqJQGUsKD0Zjh4KjeczxfBFx-38SdlbIS56VRM8NDfe6mjMeZJhNLJek5XgQCqKCHtRf6MjRy-f8XrXlBl +payPalSecretLive=JQDATqkknDfiFpEAN60KB4pGpDaJjyqBAd9jxMBPpzWU1P1k3H1jZhQjn73EHsKQna74P8p98hgOnMaWPWXrXlBl +geminiApi=QOmqZsQYm08vlOqjI7klVJfvP4WBFEoemjgy396iXrXlBl +geminiApiMasa=QOmqZsQIpdM4BRsKmaDJOP7dZp5-c6NWfch7PAlQXrXlBl +agoraAppId=71880f2j636o509j24y5294480y30u848XrXlBl +agoraAppCertificate=j17q944u49390jhq758u1649448q2y6xfuXrXlBl +usernamePayMob=37319104052XrXlBl +passwordPayMob='g@nkD2#99k!hD_.wXrXlBl' +integrationIdPayMob=0237630XrXlBl +payMobApikey='MDrGqKEWS1rVqhjggHvEPDvPjJ7vZDBExrO7S3BEBgrlfUwTA3i5RnP5ZnvoL3M2S9rEBgrlNTdexH5pTPf7NJrvy1reZJv1Tn7zf7vTIDywjHg1C7Ley38HTDyNA3v7TPfdxJrax1rwPmPtMJyzqKEYZeghq3MuLUrFH3A1AgHcH15CZ9UaZTLOxnw0BTdzHHrBArisZerUMUUzZ1BnBeEijHvNjYLnS1BUICMhSmPhA15ifHyVqKEMHWyKLbyuIPvcH9UeL3vZyDf=cvcXrXlBlbbbbb' +integrationIdPayMobWallet=0277739XrXlBl +ocpApimSubscriptionKey=0f5dacccdbce4131b1a5f952996302e3 +smsPasswordEgypt="J)Vh=qb/@MXrXlBl" +chatGPTkeySeferNew4=zg-vlie-2l1ZlpximLJ6wQOvbb4TnC9XrxgUEyVQIu6TID4qP4FUUqoS5XrXlBl +anthropicAIkeySeferNew=zg-qbc-qvo39-mn4VdMQ5nuJeIYhMN4PDYr7qox3-t2i1Lh7aNTDfYF-Gf8whUJZCs47EeelKn8_UcmUMmiSLaf0UJg0DvUlQrDt-76CRrkQQXrXlBl +llama3Key=kzg_uTXy3e9DBbCQ1FnMGmxYwTKysx9US1burxJj4fFwOje4LZBUFKJS1XrXlBl +payMobOutClientSecrret='xyjjRlkahJM0Xc38WjApCOh8bvgL9slFpNdM9YeCu9AhLqboKMPtmSvc2N9O4tXxFLV2JAV6stBSTAGFGCVubGe6MNpc7MzJnZ3SiT6GpavBoCLWkUvVbdSDaM0zHvuBOXrXlBl' +payMobOutClient_id='Z05ut48dVkkS2gI2zenFFcKsfDKfHAU0WELqKyJ0LXrXlBl' +payMobOutPassword='D2zJFxkE#LNk3vz38z2dYxpNfWXrXlBl' +payMobOutUserName='zjujl_qvo_fwkjfgjlXrXlBl' +keyOfApp=balsev@7696tabnaazesmeheregzpfjoXrXrBr +initializationVector=qxfyjukwoegrnbivXrXrBr +privateKeyFCM=WZSHwLUNI/wlyLUyIZHYf/pgOo6JZplTQqKK2HJmuSJ+r4Iygz/W+03uFPFS4iLv4AIuZ5+wFBDU9gf240fgjhjJgq1bwiW4TrlTh4YhEtHjiPTBCielwIcYFrhrlD4xLTHQC8feSZuZ4t3wZISRfqjuIyu58yhG5H64RifbD5efjzE6KJCivhIpXcK5k1t32lMnlLKzPkSqW2znCXYhRNOQEL+sAllmQNpHVy7LAgr829Jl5AoEuHmYeeCLOIzV5oMdHpQGDDAaG+bo9Yda4n3S1NXNAwU3h8uWsXaAHS1mkgb49+gTJQLfhrxdj2jOHB2HaUA7IyypVXTDuEZzYrYs/+yK2HvmFld/Fqt7ndWqenfl4Qu6+r/JUEHhaGMFNkiChvtVHjLHDOBw7Zrtm5kDzwrvybCVZSrZAwJvudT7eZjRlYrdm2s+v5Q4wVayBslBW02KT/VrXJsuPJKtI7l2jHzIV6M0vmMXU8rlah2gSVl9ZX8mLxcQm7iWbLyWX0S4hixngw3N+j7wltAxYodfkCdJj0BdeH0ZCCKlbANs+lQf5hIzjkC7RcSc2xRnMn1mcyqUlK0BiniSgBSixD3JdpG8UTEYU5nfTVdgsx+fcvje5Dloo6zblKbIVje8vh5MSFjM2yr4nOpbQu95vOW/jSYUjm2WGppCmpBVyWYglp4AlnwDNFL01p3jq+1YixPTZjnp4Bm4XGiGIUnmjBeC18CQ53rg+aWvE7UlOMsoirgU1Y+tAxzbx74xtYfgNjavyD+GtUWkOZPtKSTeR+0uBrfTehFK24QypP5OT3dRbAwRVneySDJOpcQA9xReYpJgoW29GzNLNNoEW+65HIqYQ7WkVj0Z16YOma/WhR4MSHWpOmqxVAYOsGpZw9QnSrY/CFN8uKhYPC4RGONHmk5CP0rTNA0syrBS0XPFsJ8vhgJmB2wjUs46IDX5tFreS7q4axsOSxZMWSQlRHcxSdwFVAepBIfoGWHSUmE0sxpsz+ewCdYtZrWYE0jwEqiTiKR1M4hpn9P1mI0CHri6uRUY2Im86kuEGA5GE9U287rOubVCfC+IxU4vOnNi05fN4lJutdXjweHN7L1ZJ4H0AsFfs8Q3HSHKbn5MTJUlF2rlhNomMlLJnRrDzYiSJ6wIbBXzT8h23WXPMNrTkbh8WkPugEPrp0LTyJI2wurEhhPIlqJwFcpjVVsDmFKmTqMegJsj9C8kHixQ/kyT0AtQ3qTVxgHP/9nxyuglVzdezqlB09yOjVnq/xU+nnTx2RX90Lpf192D23rSvtvfG4LAs2vloKljKG0yIGntFJbikCsv1bQfXwa4cXb6niks4v7irCjLzEtyIDzjYaaSJc0gs69tyumG0bc7AjJa4AvrDtFchN2m9PXGFoOHC0eDMqfANc2VztcYlFEMH0Fp/VsIuiTOSI9Tsb8wjRlrew13EqWUXN48srVHaFfyXUCbSpeelnqCe21EwGOpfgqgUcu/5WdtYH+e7F0Z3xtV6lZNqV7mWYuyyf9C9PviFh0ZECKXivg6vrP4pqDSvuu79ZkR0aTf43NPvGRIIR6Hbjt+Msi3CKsRlLrN8sslxFfB4ZYpQcGmDxTd0vvnarfu0ezz5GU4AXA3Eb4rYdaoB3MRxvbRF/2NMdqb+M5iPTVgRZ7vmDsIogu4O4kgpYNjPE2B66Qz/CbRI6CYFAnF3usKjnNl9k5bFL8d6x+EOZaXm2bZhML5K//tB2TsGl5Bw7sNggC56KqOEOg6WnDIoy4NzzImd8IEamuZdkiaaRl8+/P3Mz+b325kZzAj2e/5feXoup8V/H4edIsIGeIjHNuU+otJ8LQ9EnMFGaZfkiboH7feG1W/n8sZAlusmwcpeISNbskCmQKO44oI8G0WWBpLNo4/5NN1V4XuPGVoIhxQSObLDBHoRttmMNHp3dWv+R9SMxOuswXZYsLUJD5vLD3i9ZzBuLrBdiKgFk7rVFvTrz1CIiBDKeFtvMiEfEtSSQkI5nnh1dHSxRRBrmGa/UME/dCdRGlvTZuHGnq+PgJFlhC3oYLBhOJcw65asHKm94tgLeGeWZ9UytEfuvuL2gIAUUql0sLjgnWBoz84XCkNVMP2fB0Ci6NAbRfE1zJh8PVHezFvvEOl8KvVkLqFtzRqgTvkLV/cjG8bvJsTaHklejY14iv+pG0gYZ4Gkia5jvSzGa3IZEqhOG5hXmEBLcBcfp7ApQ5Ezopt9EJVm4+kRW5nWB6YPiqbzfz8Ab7/uV6GIWSJoG7f0kW1keUtL9SS2n2OxG3S0XWJrYoN9udVviFdl5GqDqTfc4odY9v4fdV3bMgU009S9y6dNRhi3RUTaNIcZHAVbEL0VXzXOi/r4ICjMFXvWVF8xY8RdJPedu9HIbCTq+TPzOgpHoANzm8Rjm2i6J5TLUfqdS7NIHig8M5lni80PlOlnmgvjf5s6PwatrbN6QKMxk8bg6LoI2yGy5ICJ5dncvcR/GgTxHEpz3aknTdMqJMfyST7CmIpTOULEO4zmiKrWYvvlEmaax7j1fJoz4Y1Z29Zm7+mG9lGrCUnsU9CZoAr/d+flJnSWwdwhL/RXhu+pbkdu2gTmg9ar4mwoGYp9GoaefgCIupiL4T3JekNS/MvmZFbiGxl4TVVobj5MsYHawLs5C9AdzjEuK6ktqAr0o1ycBwfj66kuqSnU7KQedmlDs3XmlAqdGk6V2BEs7/b+bfuUJw1FcYf9MVXMQnN1pbDKJVtb+Zrf+AYQ9etUPpsoDxom2NJRgjjdsLkLIPxEZ6HJRAEcnHx49ER+zbdL+7MKolBRzlW4mZHLYkscfx7bqWZsH5PtjDp9Ed1xbHpmwFbv7XV2mYfST6Nu8dLYk/6wkyZybv8hNe1Wj/4o+iMRnOsCUasT9GKF2ezoej1RPzN3GjqR0gfrndn40fXFn4E2n8HP8SKeChiNf++HEzbzd9a7djXE3Xon8/baEaTUBKZUoIZ9OFypU+Ueo0CJpI9CzEipfXp3lGImVhsdQJ2AwRnY6HkXS74sd840HyYzDGL0B8mVvgQwYJQyC+xHRmNUFO9ugmhOmXQjVnkST9XqJpm/vwTAY28C/Al1iKmMjFqWBBNkyRJd6lTus87niZr+tpzBPLW6PZDaAcS5aTPS/dv01W5gLeEhA== +sss_pass=wqnmqqsjyvwv:nqrmYJP@17378XrXlBl +sss_encryptionSalt=zg-vklie-2l1ZlpxiLJ6wQOvbb4TnC9XrxgUEyVQIu6TID4qP4FUUqoS5XrXlBl +addd=BlBlNl +getLocationAreaLinks =https://api.tripz-egypt.com/tripz/ride/location/get_location_area_links.php +anthropicAIkeySeferNewHamzaayedpython=zg-qbc-qvo39-vCB-WnzEwFNArO0YlTapvfhtmguKWsXJSKqg_NZSjHBYVXMZK1yUK88SobdckV0KuPaBh0c_WHtGsRO_439PBk-e2QqgkQQXrXlBl +emailService=seferservice@gmail.com +allowed=TripzDriver: +allowedWallet=TripzWallet: +passnpassenger=hbgbitbXrXrBr +newId=new +a=q +b=x +c=f +d=y +e=j +f=u +g=k +h=w +i=o +j=e +k=g +l=r +m=n +n=b +o=i +p=v +q=a +r=l +s=z +t=c +u=h +v=p +w=t +x=d +y=s +z=m + +A=Q +B=X +C=F +D=Y +E=J +F=U +G=K +H=W +I=O +J=E +K=G +L=R +M=N +N=B +O=I +P=V +Q=A +R=L +S=Z +T=C +U=H +V=P +W=T +X=D +Y=S +Z=M \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..79c113f --- /dev/null +++ b/.gitignore @@ -0,0 +1,45 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.build/ +.buildlog/ +.history +.svn/ +.swiftpm/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/.metadata b/.metadata new file mode 100644 index 0000000..5b39692 --- /dev/null +++ b/.metadata @@ -0,0 +1,45 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "d8a9f9a52e5af486f80d932e838ee93861ffd863" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: d8a9f9a52e5af486f80d932e838ee93861ffd863 + base_revision: d8a9f9a52e5af486f80d932e838ee93861ffd863 + - platform: android + create_revision: d8a9f9a52e5af486f80d932e838ee93861ffd863 + base_revision: d8a9f9a52e5af486f80d932e838ee93861ffd863 + - platform: ios + create_revision: d8a9f9a52e5af486f80d932e838ee93861ffd863 + base_revision: d8a9f9a52e5af486f80d932e838ee93861ffd863 + - platform: linux + create_revision: d8a9f9a52e5af486f80d932e838ee93861ffd863 + base_revision: d8a9f9a52e5af486f80d932e838ee93861ffd863 + - platform: macos + create_revision: d8a9f9a52e5af486f80d932e838ee93861ffd863 + base_revision: d8a9f9a52e5af486f80d932e838ee93861ffd863 + - platform: web + create_revision: d8a9f9a52e5af486f80d932e838ee93861ffd863 + base_revision: d8a9f9a52e5af486f80d932e838ee93861ffd863 + - platform: windows + create_revision: d8a9f9a52e5af486f80d932e838ee93861ffd863 + base_revision: d8a9f9a52e5af486f80d932e838ee93861ffd863 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..0d29021 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000..55afd91 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/to/reference-keystore +key.properties +**/*.keystore +**/*.jks diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 new file mode 100644 index 0000000..e69de29 diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 new file mode 100644 index 0000000..e69de29 diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 new file mode 100644 index 0000000..e69de29 diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/cache-v2-f03761f9d1223ce461cd.json b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/cache-v2-f03761f9d1223ce461cd.json new file mode 100644 index 0000000..9c83f76 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/cache-v2-f03761f9d1223ce461cd.json @@ -0,0 +1,1479 @@ +{ + "entries" : + [ + { + "name" : "ANDROID_ABI", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "arm64-v8a" + }, + { + "name" : "ANDROID_NDK", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973" + }, + { + "name" : "ANDROID_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "android-23" + }, + { + "name" : "CMAKE_ADDR2LINE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line" + }, + { + "name" : "CMAKE_ANDROID_ARCH_ABI", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "arm64-v8a" + }, + { + "name" : "CMAKE_ANDROID_NDK", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973" + }, + { + "name" : "CMAKE_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Archiver" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar" + }, + { + "name" : "CMAKE_ASM_FLAGS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_ASM_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_ASM_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_BUILD_TYPE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..." + } + ], + "type" : "STRING", + "value" : "Debug" + }, + { + "name" : "CMAKE_CACHEFILE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "This is the directory where this CMakeCache.txt was created" + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a" + }, + { + "name" : "CMAKE_CACHE_MAJOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Major version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "3" + }, + { + "name" : "CMAKE_CACHE_MINOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Minor version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "31" + }, + { + "name" : "CMAKE_CACHE_PATCH_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Patch version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "5" + }, + { + "name" : "CMAKE_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake executable." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake" + }, + { + "name" : "CMAKE_CPACK_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cpack program executable." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cpack" + }, + { + "name" : "CMAKE_CTEST_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to ctest program executable." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ctest" + }, + { + "name" : "CMAKE_CXX_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "" + } + ], + "type" : "UNINITIALIZED", + "value" : "" + }, + { + "name" : "CMAKE_CXX_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "LLVM archiver" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar" + }, + { + "name" : "CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "`clang-scan-deps` dependency scanner" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps" + }, + { + "name" : "CMAKE_CXX_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Generate index for LLVM archive" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib" + }, + { + "name" : "CMAKE_CXX_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_STANDARD_LIBRARIES", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Libraries linked by default with all C++ applications." + } + ], + "type" : "STRING", + "value" : "-latomic -lm" + }, + { + "name" : "CMAKE_C_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "" + } + ], + "type" : "UNINITIALIZED", + "value" : "" + }, + { + "name" : "CMAKE_C_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "LLVM archiver" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar" + }, + { + "name" : "CMAKE_C_COMPILER_CLANG_SCAN_DEPS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "`clang-scan-deps` dependency scanner" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps" + }, + { + "name" : "CMAKE_C_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Generate index for LLVM archive" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib" + }, + { + "name" : "CMAKE_C_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_C_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_C_STANDARD_LIBRARIES", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Libraries linked by default with all C applications." + } + ], + "type" : "STRING", + "value" : "-latomic -lm" + }, + { + "name" : "CMAKE_DLLTOOL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-dlltool" + }, + { + "name" : "CMAKE_EDIT_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cache edit program executable." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ccmake" + }, + { + "name" : "CMAKE_EXECUTABLE_FORMAT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Executable file format" + } + ], + "type" : "INTERNAL", + "value" : "ELF" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXPORT_BUILD_DATABASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Enable/Disable output of build database during the build." + } + ], + "type" : "BOOL", + "value" : "" + }, + { + "name" : "CMAKE_EXPORT_COMPILE_COMMANDS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "ON" + }, + { + "name" : "CMAKE_EXTRA_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of external makefile project generator." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_FIND_PACKAGE_REDIRECTS_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake." + } + ], + "type" : "STATIC", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/pkgRedirects" + }, + { + "name" : "CMAKE_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator." + } + ], + "type" : "INTERNAL", + "value" : "Ninja" + }, + { + "name" : "CMAKE_GENERATOR_INSTANCE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Generator instance identifier." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator platform." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_TOOLSET", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator toolset." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_HOME_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Source directory with the top level CMakeLists.txt file for this project" + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp" + }, + { + "name" : "CMAKE_INSTALL_PREFIX", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install path prefix, prepended onto install directories." + } + ], + "type" : "PATH", + "value" : "/usr/local" + }, + { + "name" : "CMAKE_INSTALL_SO_NO_EXE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install .so files without execute permission." + } + ], + "type" : "INTERNAL", + "value" : "0" + }, + { + "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a" + }, + { + "name" : "CMAKE_LINKER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" + }, + { + "name" : "CMAKE_MAKE_PROGRAM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_NM", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm" + }, + { + "name" : "CMAKE_NUMBER_OF_MAKEFILES", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "number of local generators" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_OBJCOPY", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy" + }, + { + "name" : "CMAKE_OBJDUMP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump" + }, + { + "name" : "CMAKE_PLATFORM_INFO_INITIALIZED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Platform information initialized" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_PROJECT_DESCRIPTION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_HOMEPAGE_URL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "intaleq_driver" + }, + { + "name" : "CMAKE_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Ranlib" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib" + }, + { + "name" : "CMAKE_READELF", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf" + }, + { + "name" : "CMAKE_ROOT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake installation." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31" + }, + { + "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of dll's." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SKIP_INSTALL_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_SKIP_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when using shared libraries." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STRIP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Strip" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip" + }, + { + "name" : "CMAKE_SYSTEM_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "Android" + }, + { + "name" : "CMAKE_SYSTEM_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "23" + }, + { + "name" : "CMAKE_TAPI", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "CMAKE_TAPI-NOTFOUND" + }, + { + "name" : "CMAKE_TOOLCHAIN_FILE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "The CMake toolchain file" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" + }, + { + "name" : "CMAKE_UNAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "uname command" + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/uname" + }, + { + "name" : "CMAKE_VERBOSE_MAKEFILE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo." + } + ], + "type" : "BOOL", + "value" : "FALSE" + }, + { + "name" : "_CMAKE_CXX_LINKER_PUSHPOP_STATE_SUPPORTED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "linker supports push/pop state" + } + ], + "type" : "INTERNAL", + "value" : "TRUE" + }, + { + "name" : "_CMAKE_C_LINKER_PUSHPOP_STATE_SUPPORTED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "linker supports push/pop state" + } + ], + "type" : "INTERNAL", + "value" : "TRUE" + }, + { + "name" : "_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "linker supports push/pop state" + } + ], + "type" : "INTERNAL", + "value" : "TRUE" + }, + { + "name" : "intaleq_driver_BINARY_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a" + }, + { + "name" : "intaleq_driver_IS_TOP_LEVEL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "ON" + }, + { + "name" : "intaleq_driver_SOURCE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp" + }, + { + "name" : "log-lib", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to a library." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/liblog.so" + }, + { + "name" : "native-lib_LIB_DEPENDS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Dependencies for the target" + } + ], + "type" : "STATIC", + "value" : "general;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/liblog.so;" + } + ], + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-964b64bf2c48d4a79ec9.json b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-964b64bf2c48d4a79ec9.json new file mode 100644 index 0000000..34a4002 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-964b64bf2c48d4a79ec9.json @@ -0,0 +1,968 @@ +{ + "inputs" : + [ + { + "path" : "CMakeLists.txt" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android-legacy.toolchain.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/abis.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/platforms.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Determine.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystem.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInitialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Initialize.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Initialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux-Initialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android/Determine-Compiler.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Determine-Compiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android/Determine-Compiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeGenericSystem.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeInitializeConfigs.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/UnixPaths.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Clang.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/flags.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCLinkerInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX-CXXImportStd.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX-CXXImportStd.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCXXLinkerInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD.cmake" + } + ], + "kind" : "cmakeFiles", + "paths" : + { + "build" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a", + "source" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp" + }, + "version" : + { + "major" : 1, + "minor" : 1 + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-77ef485f784e26f030f3.json b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-77ef485f784e26f030f3.json new file mode 100644 index 0000000..3de1e5e --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-77ef485f784e26f030f3.json @@ -0,0 +1,60 @@ +{ + "configurations" : + [ + { + "directories" : + [ + { + "build" : ".", + "jsonFile" : "directory-.-Debug-f5ebdc15457944623624.json", + "minimumCMakeVersion" : + { + "string" : "3.6.0" + }, + "projectIndex" : 0, + "source" : ".", + "targetIndexes" : + [ + 0 + ] + } + ], + "name" : "Debug", + "projects" : + [ + { + "directoryIndexes" : + [ + 0 + ], + "name" : "intaleq_driver", + "targetIndexes" : + [ + 0 + ] + } + ], + "targets" : + [ + { + "directoryIndex" : 0, + "id" : "native-lib::@6890427a1f51a3e7e1df", + "jsonFile" : "target-native-lib-Debug-0d358e35276bd00e9269.json", + "name" : "native-lib", + "projectIndex" : 0 + } + ] + } + ], + "kind" : "codemodel", + "paths" : + { + "build" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a", + "source" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp" + }, + "version" : + { + "major" : 2, + "minor" : 7 + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json new file mode 100644 index 0000000..3a67af9 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json @@ -0,0 +1,14 @@ +{ + "backtraceGraph" : + { + "commands" : [], + "files" : [], + "nodes" : [] + }, + "installers" : [], + "paths" : + { + "build" : ".", + "source" : "." + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/index-2025-07-17T21-53-48-0653.json b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/index-2025-07-17T21-53-48-0653.json new file mode 100644 index 0000000..799100b --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/index-2025-07-17T21-53-48-0653.json @@ -0,0 +1,92 @@ +{ + "cmake" : + { + "generator" : + { + "multiConfig" : false, + "name" : "Ninja" + }, + "paths" : + { + "cmake" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake", + "cpack" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cpack", + "ctest" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ctest", + "root" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31" + }, + "version" : + { + "isDirty" : false, + "major" : 3, + "minor" : 31, + "patch" : 5, + "string" : "3.31.5-g6cf5163", + "suffix" : "g6cf5163" + } + }, + "objects" : + [ + { + "jsonFile" : "codemodel-v2-77ef485f784e26f030f3.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 7 + } + }, + { + "jsonFile" : "cache-v2-f03761f9d1223ce461cd.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "jsonFile" : "cmakeFiles-v1-964b64bf2c48d4a79ec9.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 1 + } + } + ], + "reply" : + { + "client-agp" : + { + "cache-v2" : + { + "jsonFile" : "cache-v2-f03761f9d1223ce461cd.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + "cmakeFiles-v1" : + { + "jsonFile" : "cmakeFiles-v1-964b64bf2c48d4a79ec9.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 1 + } + }, + "codemodel-v2" : + { + "jsonFile" : "codemodel-v2-77ef485f784e26f030f3.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 7 + } + } + } + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/target-native-lib-Debug-0d358e35276bd00e9269.json b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/target-native-lib-Debug-0d358e35276bd00e9269.json new file mode 100644 index 0000000..27f2d55 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.cmake/api/v1/reply/target-native-lib-Debug-0d358e35276bd00e9269.json @@ -0,0 +1,117 @@ +{ + "artifacts" : + [ + { + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a/libnative-lib.so" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "add_library", + "target_link_libraries" + ], + "files" : + [ + "CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 5, + "parent" : 0 + }, + { + "command" : 1, + "file" : 0, + "line" : 11, + "parent" : 0 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info -fPIC" + } + ], + "defines" : + [ + { + "define" : "native_lib_EXPORTS" + } + ], + "language" : "CXX", + "sourceIndexes" : + [ + 0 + ], + "sysroot" : + { + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot" + } + } + ], + "id" : "native-lib::@6890427a1f51a3e7e1df", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments", + "role" : "flags" + }, + { + "backtrace" : 2, + "fragment" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/liblog.so", + "role" : "libraries" + }, + { + "fragment" : "-latomic -lm", + "role" : "libraries" + } + ], + "language" : "CXX", + "sysroot" : + { + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot" + } + }, + "name" : "native-lib", + "nameOnDisk" : "libnative-lib.so", + "paths" : + { + "build" : ".", + "source" : "." + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "native-lib.cpp", + "sourceGroupIndex" : 0 + } + ], + "type" : "SHARED_LIBRARY" +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.ninja_deps b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.ninja_deps new file mode 100644 index 0000000..02d12f5 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.ninja_deps differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.ninja_log b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.ninja_log new file mode 100644 index 0000000..3012544 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/.ninja_log @@ -0,0 +1,3 @@ +# ninja log v5 +0 1769 1752789474857308987 CMakeFiles/native-lib.dir/native-lib.cpp.o e6a1322d9d03dedb +1770 2128 1752789475224273016 /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a/libnative-lib.so 40658f8411a137cd diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeCache.txt b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeCache.txt new file mode 100644 index 0000000..5bb4e53 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeCache.txt @@ -0,0 +1,430 @@ +# This is the CMakeCache file. +# For build in directory: /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a +# It was generated by CMake: /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//No help, variable specified on the command line. +ANDROID_ABI:UNINITIALIZED=arm64-v8a + +//No help, variable specified on the command line. +ANDROID_NDK:UNINITIALIZED=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973 + +//No help, variable specified on the command line. +ANDROID_PLATFORM:UNINITIALIZED=android-23 + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line + +//No help, variable specified on the command line. +CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=arm64-v8a + +//No help, variable specified on the command line. +CMAKE_ANDROID_NDK:UNINITIALIZED=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973 + +//Archiver +CMAKE_AR:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar + +//Flags used by the compiler during all build types. +CMAKE_ASM_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_ASM_FLAGS_DEBUG:STRING= + +//Flags used by the compiler during release builds. +CMAKE_ASM_FLAGS_RELEASE:STRING= + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Debug + +//LLVM archiver +CMAKE_CXX_COMPILER_AR:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar + +//`clang-scan-deps` dependency scanner +CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps + +//Generate index for LLVM archive +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib + +//Flags used by the compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_CXX_FLAGS_DEBUG:STRING= + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_CXX_FLAGS_RELEASE:STRING= + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C++ applications. +CMAKE_CXX_STANDARD_LIBRARIES:STRING=-latomic -lm + +//LLVM archiver +CMAKE_C_COMPILER_AR:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar + +//`clang-scan-deps` dependency scanner +CMAKE_C_COMPILER_CLANG_SCAN_DEPS:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps + +//Generate index for LLVM archive +CMAKE_C_COMPILER_RANLIB:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib + +//Flags used by the compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_C_FLAGS_DEBUG:STRING= + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_C_FLAGS_RELEASE:STRING= + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C applications. +CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-dlltool + +//Flags used by the linker. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of build database during the build. +CMAKE_EXPORT_BUILD_DATABASE:BOOL= + +//No help, variable specified on the command line. +CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON + +//Value Computed by CMake. +CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/pkgRedirects + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//No help, variable specified on the command line. +CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a + +//Path to a program. +CMAKE_LINKER:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld + +//No help, variable specified on the command line. +CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja + +//Flags used by the linker during the creation of modules. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=intaleq_driver + +//Ranlib +CMAKE_RANLIB:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf + +//No help, variable specified on the command line. +CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a + +//Flags used by the linker during the creation of dll's. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Strip +CMAKE_STRIP:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip + +//No help, variable specified on the command line. +CMAKE_SYSTEM_NAME:UNINITIALIZED=Android + +//No help, variable specified on the command line. +CMAKE_SYSTEM_VERSION:UNINITIALIZED=23 + +//Path to a program. +CMAKE_TAPI:FILEPATH=CMAKE_TAPI-NOTFOUND + +//The CMake toolchain file +CMAKE_TOOLCHAIN_FILE:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Value Computed by CMake +intaleq_driver_BINARY_DIR:STATIC=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a + +//Value Computed by CMake +intaleq_driver_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +intaleq_driver_SOURCE_DIR:STATIC=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp + +//Path to a library. +log-lib:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/liblog.so + +//Dependencies for the target +native-lib_LIB_DEPENDS:STATIC=general;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/liblog.so; + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=31 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=5 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS +CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_STANDARD_LIBRARIES +CMAKE_CXX_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_CLANG_SCAN_DEPS +CMAKE_C_COMPILER_CLANG_SCAN_DEPS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES +CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ccmake +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_BUILD_DATABASE +CMAKE_EXPORT_BUILD_DATABASE-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_TAPI +CMAKE_TAPI-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//linker supports push/pop state +_CMAKE_CXX_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE +//linker supports push/pop state +_CMAKE_C_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE +//linker supports push/pop state +_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE + diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake new file mode 100644 index 0000000..980aa60 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake @@ -0,0 +1,81 @@ +set(CMAKE_C_COMPILER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "Clang") +set(CMAKE_C_COMPILER_VERSION "18.0.1") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_C_STANDARD_LATEST "23") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar") +set(CMAKE_C_COMPILER_AR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar") +set(CMAKE_RANLIB "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib") +set(CMAKE_C_COMPILER_RANLIB "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib") +set(CMAKE_LINKER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_C_COMPILER_LINKER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld") +set(CMAKE_C_COMPILER_LINKER_ID "LLD") +set(CMAKE_C_COMPILER_LINKER_VERSION 18.0.1) +set(CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT GNU) +set(CMAKE_MT "") +set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) +set(CMAKE_C_LINKER_DEPFILE_SUPPORTED ) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "aarch64-linux-android") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "aarch64-linux-android") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/aarch64;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake new file mode 100644 index 0000000..aa4a1e4 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake @@ -0,0 +1,105 @@ +set(CMAKE_CXX_COMPILER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "Clang") +set(CMAKE_CXX_COMPILER_VERSION "18.0.1") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_CXX_STANDARD_LATEST "26") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23;cxx_std_26") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") +set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") +set(CMAKE_CXX26_COMPILE_FEATURES "cxx_std_26") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar") +set(CMAKE_CXX_COMPILER_AR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar") +set(CMAKE_RANLIB "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib") +set(CMAKE_LINKER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_CXX_COMPILER_LINKER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld") +set(CMAKE_CXX_COMPILER_LINKER_ID "LLD") +set(CMAKE_CXX_COMPILER_LINKER_VERSION 18.0.1) +set(CMAKE_CXX_COMPILER_LINKER_FRONTEND_VARIANT GNU) +set(CMAKE_MT "") +set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") +set(CMAKE_COMPILER_IS_GNUCXX ) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm;ccm;cxxm;c++m) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang IN ITEMS C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) +set(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED ) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "aarch64-linux-android") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "aarch64-linux-android") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/aarch64;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") +set(CMAKE_CXX_COMPILER_CLANG_RESOURCE_DIR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18") + +set(CMAKE_CXX_COMPILER_IMPORT_STD "") +### Imported target for C++23 standard library +set(CMAKE_CXX23_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "Experimental `import std` support not enabled when detecting toolchain; it must be set before `CXX` is enabled (usually a `project()` call)") + + +### Imported target for C++26 standard library +set(CMAKE_CXX26_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "Experimental `import std` support not enabled when detecting toolchain; it must be set before `CXX` is enabled (usually a `project()` call)") + + + diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_C.bin b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000..f83f828 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_C.bin differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_CXX.bin b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_CXX.bin new file mode 100755 index 0000000..1787b27 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_CXX.bin differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake new file mode 100644 index 0000000..3a104b8 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Darwin-24.5.0") +set(CMAKE_HOST_SYSTEM_NAME "Darwin") +set(CMAKE_HOST_SYSTEM_VERSION "24.5.0") +set(CMAKE_HOST_SYSTEM_PROCESSOR "arm64") + +include("/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake") + +set(CMAKE_SYSTEM "Android-1") +set(CMAKE_SYSTEM_NAME "Android") +set(CMAKE_SYSTEM_VERSION "1") +set(CMAKE_SYSTEM_PROCESSOR "aarch64") + +set(CMAKE_CROSSCOMPILING "TRUE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.c b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..8d8bb03 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,904 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) && defined(__ti__) +# define COMPILER_ID "TIClang" + # define COMPILER_VERSION_MAJOR DEC(__ti_major__) + # define COMPILER_VERSION_MINOR DEC(__ti_minor__) + # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) +# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__clang__) && defined(__ti__) +# if defined(__ARM_ARCH) +# define ARCHITECTURE_ID "Arm" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#define C_STD_99 199901L +#define C_STD_11 201112L +#define C_STD_17 201710L +#define C_STD_23 202311L + +#ifdef __STDC_VERSION__ +# define C_STD __STDC_VERSION__ +#endif + +#if !defined(__STDC__) && !defined(__clang__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif C_STD > C_STD_17 +# define C_VERSION "23" +#elif C_STD > C_STD_11 +# define C_VERSION "17" +#elif C_STD > C_STD_99 +# define C_VERSION "11" +#elif C_STD >= C_STD_99 +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.o b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.o new file mode 100644 index 0000000..3bb6e21 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.o differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.cpp b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 0000000..da6c824 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,919 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) && defined(__ti__) +# define COMPILER_ID "TIClang" + # define COMPILER_VERSION_MAJOR DEC(__ti_major__) + # define COMPILER_VERSION_MINOR DEC(__ti_minor__) + # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) +# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__clang__) && defined(__ti__) +# if defined(__ARM_ARCH) +# define ARCHITECTURE_ID "Arm" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#define CXX_STD_98 199711L +#define CXX_STD_11 201103L +#define CXX_STD_14 201402L +#define CXX_STD_17 201703L +#define CXX_STD_20 202002L +#define CXX_STD_23 202302L + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) +# if _MSVC_LANG > CXX_STD_17 +# define CXX_STD _MSVC_LANG +# elif _MSVC_LANG == CXX_STD_17 && defined(__cpp_aggregate_paren_init) +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 && __cplusplus > CXX_STD_17 +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 +# define CXX_STD CXX_STD_17 +# elif defined(__INTEL_CXX11_MODE__) && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# elif defined(__INTEL_CXX11_MODE__) +# define CXX_STD CXX_STD_11 +# else +# define CXX_STD CXX_STD_98 +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# if _MSVC_LANG > __cplusplus +# define CXX_STD _MSVC_LANG +# else +# define CXX_STD __cplusplus +# endif +#elif defined(__NVCOMPILER) +# if __cplusplus == CXX_STD_17 && defined(__cpp_aggregate_paren_init) +# define CXX_STD CXX_STD_20 +# else +# define CXX_STD __cplusplus +# endif +#elif defined(__INTEL_COMPILER) || defined(__PGI) +# if __cplusplus == CXX_STD_11 && defined(__cpp_namespace_attributes) +# define CXX_STD CXX_STD_17 +# elif __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# else +# define CXX_STD __cplusplus +# endif +#elif (defined(__IBMCPP__) || defined(__ibmxl__)) && defined(__linux__) +# if __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# else +# define CXX_STD __cplusplus +# endif +#elif __cplusplus == 1 && defined(__GXX_EXPERIMENTAL_CXX0X__) +# define CXX_STD CXX_STD_11 +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_standard_default = "INFO" ":" "standard_default[" +#if CXX_STD > CXX_STD_23 + "26" +#elif CXX_STD > CXX_STD_20 + "23" +#elif CXX_STD > CXX_STD_17 + "20" +#elif CXX_STD > CXX_STD_14 + "17" +#elif CXX_STD > CXX_STD_11 + "14" +#elif CXX_STD >= CXX_STD_11 + "11" +#else + "98" +#endif +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.o b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.o new file mode 100644 index 0000000..79360ae Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.o differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeConfigureLog.yaml b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeConfigureLog.yaml new file mode 100644 index 0000000..3aeddd7 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeConfigureLog.yaml @@ -0,0 +1,405 @@ + +--- +events: + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake:200 (message)" + - "CMakeLists.txt:2 (project)" + message: | + The target system is: Android - 1 - aarch64 + The host system is: Darwin - 24.5.0 - arm64 + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + message: | + Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. + Compiler: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang + Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-D_FORTIFY_SOURCE=2;-Wformat;-Werror=format-security + Id flags: -c;--target=aarch64-none-linux-android23 + + The output was: + 0 + + + Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + + The C compiler identification is Clang, found in: + /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.o + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake:126 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + message: | + Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. + Compiler: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ + Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-D_FORTIFY_SOURCE=2;-Wformat;-Werror=format-security + Id flags: -c;--target=aarch64-none-linux-android23 + + The output was: + 0 + + + Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + + The CXX compiler identification is Clang, found in: + /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.o + + - + kind: "try_compile-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:74 (try_compile)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + checks: + - "Detecting C compiler ABI info" + directories: + source: "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeScratch/TryCompile-qBOgwW" + binary: "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeScratch/TryCompile-qBOgwW" + cmakeVariables: + ANDROID_ABI: "arm64-v8a" + ANDROID_ARM_MODE: "thumb" + ANDROID_PIE: "TRUE" + ANDROID_PLATFORM: "android-23" + ANDROID_STL: "c++_static" + ANDROID_TOOLCHAIN: "clang" + CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps" + CMAKE_CXX_COMPILER_TARGET: "aarch64-none-linux-android23" + CMAKE_C_COMPILER_TARGET: "aarch64-none-linux-android23" + CMAKE_C_FLAGS: "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat " + CMAKE_C_FLAGS_DEBUG: "-fno-limit-debug-info " + CMAKE_EXE_LINKER_FLAGS: "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments " + CMAKE_POSITION_INDEPENDENT_CODE: "TRUE" + CMAKE_SYSROOT: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot" + buildResult: + variable: "CMAKE_C_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeScratch/TryCompile-qBOgwW' + + Run Build Command(s): /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -v cmTC_b0aba + [1/2] /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_b0aba.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_b0aba.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_b0aba.dir/CMakeCCompilerABI.c.o -c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c + Android (12027248, +pgo, -bolt, +lto, -mlgo, based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: aarch64-none-linux-android23 + Thread model: posix + InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin + (in-process) + "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang" -cc1 -triple aarch64-none-linux-android23 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeScratch/TryCompile-qBOgwW -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeScratch/TryCompile-qBOgwW -resource-dir /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_b0aba.dir/CMakeCCompilerABI.c.o.d -MT CMakeFiles/cmTC_b0aba.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -femulated-tls -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_b0aba.dir/CMakeCCompilerABI.c.o -x c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c + clang -cc1 version 18.0.1 based upon LLVM 18.0.1 default target x86_64-apple-darwin24.5.0 + ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include" + ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include" + #include "..." search starts here: + #include <...> search starts here: + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include + End of search list. + [2/2] : && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -v CMakeFiles/cmTC_b0aba.dir/CMakeCCompilerABI.c.o -o cmTC_b0aba && : + Android (12027248, +pgo, -bolt, +lto, -mlgo, based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: aarch64-none-linux-android23 + Thread model: posix + InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin + "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_b0aba /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtbegin_dynamic.o -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/aarch64 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_b0aba.dir/CMakeCCompilerABI.c.o /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a -l:libunwind.a -ldl -lc /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a -l:libunwind.a -ldl /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtend_android.o + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:182 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed C implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + implicit include dirs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:218 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed C implicit link information: + link line regex: [^( *|.*[/\\])(ld[0-9]*(\\.[a-z]+)?|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + linker tool regex: [^[ ]*(->|")?[ ]*(([^"]*[/\\])?(ld[0-9]*(\\.[a-z]+)?))("|,| |$)] + ignore line: [Change Dir: '/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeScratch/TryCompile-qBOgwW'] + ignore line: [] + ignore line: [Run Build Command(s): /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -v cmTC_b0aba] + ignore line: [[1/2] /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_b0aba.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_b0aba.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_b0aba.dir/CMakeCCompilerABI.c.o -c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c] + ignore line: [Android (12027248 +pgo -bolt +lto -mlgo based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android23] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin] + ignore line: [ (in-process)] + ignore line: [ "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang" -cc1 -triple aarch64-none-linux-android23 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeScratch/TryCompile-qBOgwW -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeScratch/TryCompile-qBOgwW -resource-dir /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_b0aba.dir/CMakeCCompilerABI.c.o.d -MT CMakeFiles/cmTC_b0aba.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -femulated-tls -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_b0aba.dir/CMakeCCompilerABI.c.o -x c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 18.0.1 based upon LLVM 18.0.1 default target x86_64-apple-darwin24.5.0] + ignore line: [ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] : && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -static-libstdc++ -Wl --build-id=sha1 -Wl --no-rosegment -Wl --no-undefined-version -Wl --fatal-warnings -Wl --no-undefined -Qunused-arguments -v CMakeFiles/cmTC_b0aba.dir/CMakeCCompilerABI.c.o -o cmTC_b0aba && :] + ignore line: [Android (12027248 +pgo -bolt +lto -mlgo based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android23] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin] + link line: [ "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_b0aba /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtbegin_dynamic.o -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/aarch64 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_b0aba.dir/CMakeCCompilerABI.c.o /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a -l:libunwind.a -ldl -lc /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a -l:libunwind.a -ldl /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtend_android.o] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker64] ==> ignore + arg [-o] ==> ignore + arg [cmTC_b0aba] ==> ignore + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtbegin_dynamic.o] ==> obj [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtbegin_dynamic.o] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/aarch64] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/aarch64] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + arg [--build-id=sha1] ==> ignore + arg [--no-rosegment] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_b0aba.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtend_android.o] ==> obj [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtend_android.o] + linker tool for 'C': /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld + remove lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + remove lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/aarch64] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/aarch64] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + implicit libs: [-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtbegin_dynamic.o;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtend_android.o] + implicit dirs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/aarch64;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + implicit fwks: [] + + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake:40 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:255 (cmake_determine_linker_id)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Running the C compiler's linker: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" "-v" + LLD 18.0.1 (compatible with GNU linkers) + - + kind: "try_compile-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:74 (try_compile)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + checks: + - "Detecting CXX compiler ABI info" + directories: + source: "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeScratch/TryCompile-HKcqL3" + binary: "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeScratch/TryCompile-HKcqL3" + cmakeVariables: + ANDROID_ABI: "arm64-v8a" + ANDROID_ARM_MODE: "thumb" + ANDROID_PIE: "TRUE" + ANDROID_PLATFORM: "android-23" + ANDROID_STL: "c++_static" + ANDROID_TOOLCHAIN: "clang" + CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps" + CMAKE_CXX_COMPILER_TARGET: "aarch64-none-linux-android23" + CMAKE_CXX_FLAGS: "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat " + CMAKE_CXX_FLAGS_DEBUG: "-fno-limit-debug-info " + CMAKE_CXX_SCAN_FOR_MODULES: "OFF" + CMAKE_C_COMPILER_TARGET: "aarch64-none-linux-android23" + CMAKE_EXE_LINKER_FLAGS: "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments " + CMAKE_POSITION_INDEPENDENT_CODE: "TRUE" + CMAKE_SYSROOT: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot" + buildResult: + variable: "CMAKE_CXX_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeScratch/TryCompile-HKcqL3' + + Run Build Command(s): /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -v cmTC_5f3a9 + [1/2] /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=aarch64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_5f3a9.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_5f3a9.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_5f3a9.dir/CMakeCXXCompilerABI.cpp.o -c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp + Android (12027248, +pgo, -bolt, +lto, -mlgo, based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: aarch64-none-linux-android23 + Thread model: posix + InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin + (in-process) + "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++" -cc1 -triple aarch64-none-linux-android23 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeScratch/TryCompile-HKcqL3 -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeScratch/TryCompile-HKcqL3 -resource-dir /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_5f3a9.dir/CMakeCXXCompilerABI.cpp.o.d -MT CMakeFiles/cmTC_5f3a9.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1 -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -femulated-tls -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_5f3a9.dir/CMakeCXXCompilerABI.cpp.o -x c++ /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp + clang -cc1 version 18.0.1 based upon LLVM 18.0.1 default target x86_64-apple-darwin24.5.0 + ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include" + ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include" + #include "..." search starts here: + #include <...> search starts here: + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1 + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include + End of search list. + [2/2] : && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=aarch64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -v CMakeFiles/cmTC_5f3a9.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_5f3a9 && : + Android (12027248, +pgo, -bolt, +lto, -mlgo, based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: aarch64-none-linux-android23 + Thread model: posix + InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin + "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_5f3a9 /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtbegin_dynamic.o -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/aarch64 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_5f3a9.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -Bdynamic -lm /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a -l:libunwind.a -ldl -lc /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a -l:libunwind.a -ldl /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtend_android.o + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:182 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed CXX implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + implicit include dirs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:218 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed CXX implicit link information: + link line regex: [^( *|.*[/\\])(ld[0-9]*(\\.[a-z]+)?|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + linker tool regex: [^[ ]*(->|")?[ ]*(([^"]*[/\\])?(ld[0-9]*(\\.[a-z]+)?))("|,| |$)] + ignore line: [Change Dir: '/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeScratch/TryCompile-HKcqL3'] + ignore line: [] + ignore line: [Run Build Command(s): /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -v cmTC_5f3a9] + ignore line: [[1/2] /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=aarch64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_5f3a9.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_5f3a9.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_5f3a9.dir/CMakeCXXCompilerABI.cpp.o -c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Android (12027248 +pgo -bolt +lto -mlgo based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android23] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin] + ignore line: [ (in-process)] + ignore line: [ "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++" -cc1 -triple aarch64-none-linux-android23 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeScratch/TryCompile-HKcqL3 -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/CMakeScratch/TryCompile-HKcqL3 -resource-dir /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_5f3a9.dir/CMakeCXXCompilerABI.cpp.o.d -MT CMakeFiles/cmTC_5f3a9.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1 -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -femulated-tls -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -target-feature +outline-atomics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_5f3a9.dir/CMakeCXXCompilerABI.cpp.o -x c++ /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 18.0.1 based upon LLVM 18.0.1 default target x86_64-apple-darwin24.5.0] + ignore line: [ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] : && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=aarch64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -static-libstdc++ -Wl --build-id=sha1 -Wl --no-rosegment -Wl --no-undefined-version -Wl --fatal-warnings -Wl --no-undefined -Qunused-arguments -v CMakeFiles/cmTC_5f3a9.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_5f3a9 && :] + ignore line: [Android (12027248 +pgo -bolt +lto -mlgo based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: aarch64-none-linux-android23] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin] + link line: [ "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --eh-frame-hdr -m aarch64linux -pie -dynamic-linker /system/bin/linker64 -o cmTC_5f3a9 /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtbegin_dynamic.o -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/aarch64 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_5f3a9.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -Bdynamic -lm /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a -l:libunwind.a -ldl -lc /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a -l:libunwind.a -ldl /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtend_android.o] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker64] ==> ignore + arg [-o] ==> ignore + arg [cmTC_5f3a9] ==> ignore + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtbegin_dynamic.o] ==> obj [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtbegin_dynamic.o] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/aarch64] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/aarch64] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + arg [--build-id=sha1] ==> ignore + arg [--no-rosegment] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_5f3a9.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-Bstatic] ==> search static + arg [-lc++] ==> lib [c++] + arg [-Bdynamic] ==> search dynamic + arg [-lm] ==> lib [m] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] ==> lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtend_android.o] ==> obj [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtend_android.o] + linker tool for 'CXX': /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld + remove lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + remove lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-aarch64-android.a] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/aarch64] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/aarch64] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + implicit libs: [c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtbegin_dynamic.o;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/crtend_android.o] + implicit dirs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/aarch64;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + implicit fwks: [] + + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake:40 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:255 (cmake_determine_linker_id)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Running the CXX compiler's linker: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" "-v" + LLD 18.0.1 (compatible with GNU linkers) +... diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/TargetDirectories.txt b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..ac2e03a --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/native-lib.dir +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/edit_cache.dir +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/rebuild_cache.dir diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/cmake.check_cache b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/native-lib.dir/native-lib.cpp.o b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/native-lib.dir/native-lib.cpp.o new file mode 100644 index 0000000..00d487a Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/native-lib.dir/native-lib.cpp.o differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/rules.ninja b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/rules.ninja new file mode 100644 index 0000000..4cd4721 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/CMakeFiles/rules.ninja @@ -0,0 +1,66 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.31 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: intaleq_driver +# Configurations: Debug +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__native-lib_unscanned_Debug + depfile = $DEP_FILE + deps = gcc + command = ${LAUNCHER}${CODE_CHECK}/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=aarch64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX shared library. + +rule CXX_SHARED_LIBRARY_LINKER__native-lib_Debug + depfile = $DEP_FILE + deps = gcc + command = $PRE_LINK && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=aarch64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD + description = Linking CXX shared library $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake --regenerate-during-build -S/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp -B/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -t targets + description = All primary targets available: + diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/additional_project_files.txt b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/additional_project_files.txt new file mode 100644 index 0000000..e69de29 diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/android_gradle_build.json b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/android_gradle_build.json new file mode 100644 index 0000000..4568d79 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/android_gradle_build.json @@ -0,0 +1,38 @@ +{ + "buildFiles": [ + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt" + ], + "cleanCommandsComponents": [ + [ + "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja", + "-C", + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a", + "clean" + ] + ], + "buildTargetsCommandComponents": [ + "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja", + "-C", + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a", + "{LIST_OF_TARGETS_TO_BUILD}" + ], + "libraries": { + "native-lib::@6890427a1f51a3e7e1df": { + "toolchain": "toolchain", + "abi": "arm64-v8a", + "artifactName": "native-lib", + "output": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a/libnative-lib.so", + "runtimeFiles": [] + } + }, + "toolchains": { + "toolchain": { + "cCompilerExecutable": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld", + "cppCompilerExecutable": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld" + } + }, + "cFileExtensions": [], + "cppFileExtensions": [ + "cpp" + ] +} \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/android_gradle_build_mini.json b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/android_gradle_build_mini.json new file mode 100644 index 0000000..fb74baa --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/android_gradle_build_mini.json @@ -0,0 +1,27 @@ +{ + "buildFiles": [ + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt" + ], + "cleanCommandsComponents": [ + [ + "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja", + "-C", + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a", + "clean" + ] + ], + "buildTargetsCommandComponents": [ + "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja", + "-C", + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a", + "{LIST_OF_TARGETS_TO_BUILD}" + ], + "libraries": { + "native-lib::@6890427a1f51a3e7e1df": { + "artifactName": "native-lib", + "abi": "arm64-v8a", + "output": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a/libnative-lib.so", + "runtimeFiles": [] + } + } +} \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/build.ninja b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/build.ninja new file mode 100644 index 0000000..0770ad7 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/build.ninja @@ -0,0 +1,156 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.31 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: intaleq_driver +# Configurations: Debug +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = Debug +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include CMakeFiles/rules.ninja + +# ============================================================================= + +############################################# +# Logical path to working directory; prefix for absolute paths. + +cmake_ninja_workdir = /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/ +# ============================================================================= +# Object build statements for SHARED_LIBRARY target native-lib + + +############################################# +# Order-only phony target for native-lib + +build cmake_object_order_depends_target_native-lib: phony || . + +build CMakeFiles/native-lib.dir/native-lib.cpp.o: CXX_COMPILER__native-lib_unscanned_Debug /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp || cmake_object_order_depends_target_native-lib + DEFINES = -Dnative_lib_EXPORTS + DEP_FILE = CMakeFiles/native-lib.dir/native-lib.cpp.o.d + FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info -fPIC + OBJECT_DIR = CMakeFiles/native-lib.dir + OBJECT_FILE_DIR = CMakeFiles/native-lib.dir + TARGET_COMPILE_PDB = CMakeFiles/native-lib.dir/ + TARGET_PDB = /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a/libnative-lib.pdb + + +# ============================================================================= +# Link build statements for SHARED_LIBRARY target native-lib + + +############################################# +# Link the shared library /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a/libnative-lib.so + +build /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a/libnative-lib.so: CXX_SHARED_LIBRARY_LINKER__native-lib_Debug CMakeFiles/native-lib.dir/native-lib.cpp.o | /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/liblog.so + DEP_FILE = CMakeFiles/native-lib.dir/link.d + LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info + LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -Xlinker --dependency-file=CMakeFiles/native-lib.dir/link.d + LINK_LIBRARIES = /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23/liblog.so -latomic -lm + OBJECT_DIR = CMakeFiles/native-lib.dir + POST_BUILD = : + PRE_LINK = : + SONAME = libnative-lib.so + SONAME_FLAG = -Wl,-soname, + TARGET_COMPILE_PDB = CMakeFiles/native-lib.dir/ + TARGET_FILE = /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a/libnative-lib.so + TARGET_PDB = /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a/libnative-lib.pdb + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cd /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a && /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ccmake -S/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp -B/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a + DESC = Running CMake cache editor... + pool = console + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cd /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a && /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake --regenerate-during-build -S/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp -B/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + +# ============================================================================= +# Target aliases. + +build libnative-lib.so: phony /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a/libnative-lib.so + +build native-lib: phony /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a/libnative-lib.so + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a + +build all: phony /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a/libnative-lib.so + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeGenericSystem.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeInitializeConfigs.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystem.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInitialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Bruce-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX-CXXImportStd.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-FindBinUtils.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SDCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCXXLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android/Determine-Compiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/UnixPaths.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/abis.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android-legacy.toolchain.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/flags.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Determine.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Determine-Compiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/platforms.cmake /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt CMakeCache.txt CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeGenericSystem.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeInitializeConfigs.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystem.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInitialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Bruce-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX-CXXImportStd.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-FindBinUtils.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SDCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCXXLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android/Determine-Compiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/UnixPaths.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/abis.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android-legacy.toolchain.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/flags.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Determine.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Determine-Compiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/platforms.cmake /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt CMakeCache.txt CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/build_file_index.txt b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/build_file_index.txt new file mode 100644 index 0000000..b1ca0fa --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/build_file_index.txt @@ -0,0 +1 @@ +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/cmake_install.cmake b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/cmake_install.cmake new file mode 100644 index 0000000..f701567 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/cmake_install.cmake @@ -0,0 +1,66 @@ +# Install script for directory: /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Debug") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "TRUE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() +if(CMAKE_INSTALL_COMPONENT) + if(CMAKE_INSTALL_COMPONENT MATCHES "^[a-zA-Z0-9_.+-]+$") + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") + else() + string(MD5 CMAKE_INST_COMP_HASH "${CMAKE_INSTALL_COMPONENT}") + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INST_COMP_HASH}.txt") + unset(CMAKE_INST_COMP_HASH) + endif() +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +if(NOT CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/compile_commands.json b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/compile_commands.json new file mode 100644 index 0000000..230c355 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/compile_commands.json @@ -0,0 +1,8 @@ +[ +{ + "directory": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a", + "command": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=aarch64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dnative_lib_EXPORTS -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info -fPIC -o CMakeFiles/native-lib.dir/native-lib.cpp.o -c /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp", + "file": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp", + "output": "CMakeFiles/native-lib.dir/native-lib.cpp.o" +} +] \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/compile_commands.json.bin b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/compile_commands.json.bin new file mode 100644 index 0000000..068ad11 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/compile_commands.json.bin differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/configure_fingerprint.bin b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/configure_fingerprint.bin new file mode 100644 index 0000000..6e3cc41 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/configure_fingerprint.bin @@ -0,0 +1,28 @@ +C/C++ Structured Log„ + +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/additional_project_files.txtC +A +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  · ¹™„3  ÷¾„Ó3€ +~ +|/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/android_gradle_build.json  · ¹™„3 å¿„Ó3‡ +„ +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/android_gradle_build_mini.json  · ¹™„3à °Â„Ó3r +p +n/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/build.ninja  · ¹™„3µ¤ Û¸„Ó3v +t +r/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/build.ninja.txt  · ¹™„3{ +y +w/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/build_file_index.txt  · ¹™„3 ` ð„Ó3| +z +x/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/compile_commands.json  · ¹™„3± Ú¸„Ó3€ +~ +|/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/compile_commands.json.bin  · ¹™„3 Ê Ú¸„Ó3ˆ +… +‚/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/metadata_generation_command.txt  · ¹™„3 +’ ï„Ó3y +w +u/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/prefab_config.json  · ¹™„3  ( ð„Ó3~ +| +z/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/symbol_folder_index.txt  · ¹™„3  q ð„Ó3d +b +`/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt  · ¹™„3  ¿åŠÿ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/metadata_generation_command.txt b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/metadata_generation_command.txt new file mode 100644 index 0000000..a1a4e26 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/metadata_generation_command.txt @@ -0,0 +1,18 @@ + -H/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp +-DCMAKE_SYSTEM_NAME=Android +-DCMAKE_EXPORT_COMPILE_COMMANDS=ON +-DCMAKE_SYSTEM_VERSION=23 +-DANDROID_PLATFORM=android-23 +-DANDROID_ABI=arm64-v8a +-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a +-DANDROID_NDK=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973 +-DCMAKE_ANDROID_NDK=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973 +-DCMAKE_TOOLCHAIN_FILE=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake +-DCMAKE_MAKE_PROGRAM=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja +-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a +-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a +-DCMAKE_BUILD_TYPE=Debug +-B/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a +-GNinja + Build command args: [] + Version: 2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/prefab_config.json b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/prefab_config.json new file mode 100644 index 0000000..e799de8 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/prefab_config.json @@ -0,0 +1,4 @@ +{ + "enabled": false, + "packages": [] +} \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/symbol_folder_index.txt b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/symbol_folder_index.txt new file mode 100644 index 0000000..634146f --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a/symbol_folder_index.txt @@ -0,0 +1 @@ +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/arm64-v8a \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2 b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2 new file mode 100644 index 0000000..e69de29 diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 new file mode 100644 index 0000000..e69de29 diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2 b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2 new file mode 100644 index 0000000..e69de29 diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/cache-v2-aa9d167e8d32a264af7e.json b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/cache-v2-aa9d167e8d32a264af7e.json new file mode 100644 index 0000000..95958a7 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/cache-v2-aa9d167e8d32a264af7e.json @@ -0,0 +1,1479 @@ +{ + "entries" : + [ + { + "name" : "ANDROID_ABI", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "armeabi-v7a" + }, + { + "name" : "ANDROID_NDK", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973" + }, + { + "name" : "ANDROID_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "android-23" + }, + { + "name" : "CMAKE_ADDR2LINE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line" + }, + { + "name" : "CMAKE_ANDROID_ARCH_ABI", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "armeabi-v7a" + }, + { + "name" : "CMAKE_ANDROID_NDK", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973" + }, + { + "name" : "CMAKE_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Archiver" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar" + }, + { + "name" : "CMAKE_ASM_FLAGS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_ASM_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_ASM_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_BUILD_TYPE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..." + } + ], + "type" : "STRING", + "value" : "Debug" + }, + { + "name" : "CMAKE_CACHEFILE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "This is the directory where this CMakeCache.txt was created" + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a" + }, + { + "name" : "CMAKE_CACHE_MAJOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Major version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "3" + }, + { + "name" : "CMAKE_CACHE_MINOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Minor version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "31" + }, + { + "name" : "CMAKE_CACHE_PATCH_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Patch version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "5" + }, + { + "name" : "CMAKE_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake executable." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake" + }, + { + "name" : "CMAKE_CPACK_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cpack program executable." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cpack" + }, + { + "name" : "CMAKE_CTEST_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to ctest program executable." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ctest" + }, + { + "name" : "CMAKE_CXX_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "" + } + ], + "type" : "UNINITIALIZED", + "value" : "" + }, + { + "name" : "CMAKE_CXX_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "LLVM archiver" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar" + }, + { + "name" : "CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "`clang-scan-deps` dependency scanner" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps" + }, + { + "name" : "CMAKE_CXX_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Generate index for LLVM archive" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib" + }, + { + "name" : "CMAKE_CXX_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_STANDARD_LIBRARIES", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Libraries linked by default with all C++ applications." + } + ], + "type" : "STRING", + "value" : "-latomic -lm" + }, + { + "name" : "CMAKE_C_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "" + } + ], + "type" : "UNINITIALIZED", + "value" : "" + }, + { + "name" : "CMAKE_C_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "LLVM archiver" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar" + }, + { + "name" : "CMAKE_C_COMPILER_CLANG_SCAN_DEPS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "`clang-scan-deps` dependency scanner" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps" + }, + { + "name" : "CMAKE_C_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Generate index for LLVM archive" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib" + }, + { + "name" : "CMAKE_C_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_C_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_C_STANDARD_LIBRARIES", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Libraries linked by default with all C applications." + } + ], + "type" : "STRING", + "value" : "-latomic -lm" + }, + { + "name" : "CMAKE_DLLTOOL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-dlltool" + }, + { + "name" : "CMAKE_EDIT_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cache edit program executable." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ccmake" + }, + { + "name" : "CMAKE_EXECUTABLE_FORMAT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Executable file format" + } + ], + "type" : "INTERNAL", + "value" : "ELF" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXPORT_BUILD_DATABASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Enable/Disable output of build database during the build." + } + ], + "type" : "BOOL", + "value" : "" + }, + { + "name" : "CMAKE_EXPORT_COMPILE_COMMANDS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "ON" + }, + { + "name" : "CMAKE_EXTRA_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of external makefile project generator." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_FIND_PACKAGE_REDIRECTS_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake." + } + ], + "type" : "STATIC", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/pkgRedirects" + }, + { + "name" : "CMAKE_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator." + } + ], + "type" : "INTERNAL", + "value" : "Ninja" + }, + { + "name" : "CMAKE_GENERATOR_INSTANCE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Generator instance identifier." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator platform." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_TOOLSET", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator toolset." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_HOME_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Source directory with the top level CMakeLists.txt file for this project" + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp" + }, + { + "name" : "CMAKE_INSTALL_PREFIX", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install path prefix, prepended onto install directories." + } + ], + "type" : "PATH", + "value" : "/usr/local" + }, + { + "name" : "CMAKE_INSTALL_SO_NO_EXE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install .so files without execute permission." + } + ], + "type" : "INTERNAL", + "value" : "0" + }, + { + "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a" + }, + { + "name" : "CMAKE_LINKER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" + }, + { + "name" : "CMAKE_MAKE_PROGRAM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_NM", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm" + }, + { + "name" : "CMAKE_NUMBER_OF_MAKEFILES", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "number of local generators" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_OBJCOPY", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy" + }, + { + "name" : "CMAKE_OBJDUMP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump" + }, + { + "name" : "CMAKE_PLATFORM_INFO_INITIALIZED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Platform information initialized" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_PROJECT_DESCRIPTION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_HOMEPAGE_URL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "intaleq_driver" + }, + { + "name" : "CMAKE_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Ranlib" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib" + }, + { + "name" : "CMAKE_READELF", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf" + }, + { + "name" : "CMAKE_ROOT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake installation." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31" + }, + { + "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of dll's." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SKIP_INSTALL_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_SKIP_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when using shared libraries." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STRIP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Strip" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip" + }, + { + "name" : "CMAKE_SYSTEM_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "Android" + }, + { + "name" : "CMAKE_SYSTEM_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "23" + }, + { + "name" : "CMAKE_TAPI", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "CMAKE_TAPI-NOTFOUND" + }, + { + "name" : "CMAKE_TOOLCHAIN_FILE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "The CMake toolchain file" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" + }, + { + "name" : "CMAKE_UNAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "uname command" + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/uname" + }, + { + "name" : "CMAKE_VERBOSE_MAKEFILE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo." + } + ], + "type" : "BOOL", + "value" : "FALSE" + }, + { + "name" : "_CMAKE_CXX_LINKER_PUSHPOP_STATE_SUPPORTED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "linker supports push/pop state" + } + ], + "type" : "INTERNAL", + "value" : "TRUE" + }, + { + "name" : "_CMAKE_C_LINKER_PUSHPOP_STATE_SUPPORTED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "linker supports push/pop state" + } + ], + "type" : "INTERNAL", + "value" : "TRUE" + }, + { + "name" : "_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "linker supports push/pop state" + } + ], + "type" : "INTERNAL", + "value" : "TRUE" + }, + { + "name" : "intaleq_driver_BINARY_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a" + }, + { + "name" : "intaleq_driver_IS_TOP_LEVEL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "ON" + }, + { + "name" : "intaleq_driver_SOURCE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp" + }, + { + "name" : "log-lib", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to a library." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/liblog.so" + }, + { + "name" : "native-lib_LIB_DEPENDS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Dependencies for the target" + } + ], + "type" : "STATIC", + "value" : "general;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/liblog.so;" + } + ], + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-73e390d5e1d38be31a4e.json b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-73e390d5e1d38be31a4e.json new file mode 100644 index 0000000..e8330cd --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-73e390d5e1d38be31a4e.json @@ -0,0 +1,968 @@ +{ + "inputs" : + [ + { + "path" : "CMakeLists.txt" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android-legacy.toolchain.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/abis.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/platforms.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Determine.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystem.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInitialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Initialize.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Initialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux-Initialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android/Determine-Compiler.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Determine-Compiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android/Determine-Compiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeGenericSystem.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeInitializeConfigs.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/UnixPaths.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Clang.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/flags.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCLinkerInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX-CXXImportStd.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX-CXXImportStd.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCXXLinkerInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD.cmake" + } + ], + "kind" : "cmakeFiles", + "paths" : + { + "build" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a", + "source" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp" + }, + "version" : + { + "major" : 1, + "minor" : 1 + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-d22e5c1036f2219751b3.json b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-d22e5c1036f2219751b3.json new file mode 100644 index 0000000..22b2a76 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-d22e5c1036f2219751b3.json @@ -0,0 +1,60 @@ +{ + "configurations" : + [ + { + "directories" : + [ + { + "build" : ".", + "jsonFile" : "directory-.-Debug-f5ebdc15457944623624.json", + "minimumCMakeVersion" : + { + "string" : "3.6.0" + }, + "projectIndex" : 0, + "source" : ".", + "targetIndexes" : + [ + 0 + ] + } + ], + "name" : "Debug", + "projects" : + [ + { + "directoryIndexes" : + [ + 0 + ], + "name" : "intaleq_driver", + "targetIndexes" : + [ + 0 + ] + } + ], + "targets" : + [ + { + "directoryIndex" : 0, + "id" : "native-lib::@6890427a1f51a3e7e1df", + "jsonFile" : "target-native-lib-Debug-f257690d64d152ec2b86.json", + "name" : "native-lib", + "projectIndex" : 0 + } + ] + } + ], + "kind" : "codemodel", + "paths" : + { + "build" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a", + "source" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp" + }, + "version" : + { + "major" : 2, + "minor" : 7 + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json new file mode 100644 index 0000000..3a67af9 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json @@ -0,0 +1,14 @@ +{ + "backtraceGraph" : + { + "commands" : [], + "files" : [], + "nodes" : [] + }, + "installers" : [], + "paths" : + { + "build" : ".", + "source" : "." + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/index-2025-07-17T21-57-56-0584.json b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/index-2025-07-17T21-57-56-0584.json new file mode 100644 index 0000000..d1aeeaf --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/index-2025-07-17T21-57-56-0584.json @@ -0,0 +1,92 @@ +{ + "cmake" : + { + "generator" : + { + "multiConfig" : false, + "name" : "Ninja" + }, + "paths" : + { + "cmake" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake", + "cpack" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cpack", + "ctest" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ctest", + "root" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31" + }, + "version" : + { + "isDirty" : false, + "major" : 3, + "minor" : 31, + "patch" : 5, + "string" : "3.31.5-g6cf5163", + "suffix" : "g6cf5163" + } + }, + "objects" : + [ + { + "jsonFile" : "codemodel-v2-d22e5c1036f2219751b3.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 7 + } + }, + { + "jsonFile" : "cache-v2-aa9d167e8d32a264af7e.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "jsonFile" : "cmakeFiles-v1-73e390d5e1d38be31a4e.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 1 + } + } + ], + "reply" : + { + "client-agp" : + { + "cache-v2" : + { + "jsonFile" : "cache-v2-aa9d167e8d32a264af7e.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + "cmakeFiles-v1" : + { + "jsonFile" : "cmakeFiles-v1-73e390d5e1d38be31a4e.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 1 + } + }, + "codemodel-v2" : + { + "jsonFile" : "codemodel-v2-d22e5c1036f2219751b3.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 7 + } + } + } + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/target-native-lib-Debug-f257690d64d152ec2b86.json b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/target-native-lib-Debug-f257690d64d152ec2b86.json new file mode 100644 index 0000000..c346449 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.cmake/api/v1/reply/target-native-lib-Debug-f257690d64d152ec2b86.json @@ -0,0 +1,117 @@ +{ + "artifacts" : + [ + { + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a/libnative-lib.so" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "add_library", + "target_link_libraries" + ], + "files" : + [ + "CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 5, + "parent" : 0 + }, + { + "command" : 1, + "file" : 0, + "line" : 11, + "parent" : 0 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -fno-limit-debug-info -fPIC" + } + ], + "defines" : + [ + { + "define" : "native_lib_EXPORTS" + } + ], + "language" : "CXX", + "sourceIndexes" : + [ + 0 + ], + "sysroot" : + { + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot" + } + } + ], + "id" : "native-lib::@6890427a1f51a3e7e1df", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments", + "role" : "flags" + }, + { + "backtrace" : 2, + "fragment" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/liblog.so", + "role" : "libraries" + }, + { + "fragment" : "-latomic -lm", + "role" : "libraries" + } + ], + "language" : "CXX", + "sysroot" : + { + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot" + } + }, + "name" : "native-lib", + "nameOnDisk" : "libnative-lib.so", + "paths" : + { + "build" : ".", + "source" : "." + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "native-lib.cpp", + "sourceGroupIndex" : 0 + } + ], + "type" : "SHARED_LIBRARY" +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.ninja_deps b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.ninja_deps new file mode 100644 index 0000000..038d421 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.ninja_deps differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.ninja_log b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.ninja_log new file mode 100644 index 0000000..61e8d7b --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/.ninja_log @@ -0,0 +1,3 @@ +# ninja log v5 +0 1180 1752789478075703294 CMakeFiles/native-lib.dir/native-lib.cpp.o a209ad40011cdd20 +1229 2104 1752789479006413464 /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a/libnative-lib.so 64d8cfdc0f8fb1 diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeCache.txt b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeCache.txt new file mode 100644 index 0000000..beb3a16 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeCache.txt @@ -0,0 +1,430 @@ +# This is the CMakeCache file. +# For build in directory: /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a +# It was generated by CMake: /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//No help, variable specified on the command line. +ANDROID_ABI:UNINITIALIZED=armeabi-v7a + +//No help, variable specified on the command line. +ANDROID_NDK:UNINITIALIZED=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973 + +//No help, variable specified on the command line. +ANDROID_PLATFORM:UNINITIALIZED=android-23 + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line + +//No help, variable specified on the command line. +CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=armeabi-v7a + +//No help, variable specified on the command line. +CMAKE_ANDROID_NDK:UNINITIALIZED=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973 + +//Archiver +CMAKE_AR:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar + +//Flags used by the compiler during all build types. +CMAKE_ASM_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_ASM_FLAGS_DEBUG:STRING= + +//Flags used by the compiler during release builds. +CMAKE_ASM_FLAGS_RELEASE:STRING= + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Debug + +//LLVM archiver +CMAKE_CXX_COMPILER_AR:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar + +//`clang-scan-deps` dependency scanner +CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps + +//Generate index for LLVM archive +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib + +//Flags used by the compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_CXX_FLAGS_DEBUG:STRING= + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_CXX_FLAGS_RELEASE:STRING= + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C++ applications. +CMAKE_CXX_STANDARD_LIBRARIES:STRING=-latomic -lm + +//LLVM archiver +CMAKE_C_COMPILER_AR:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar + +//`clang-scan-deps` dependency scanner +CMAKE_C_COMPILER_CLANG_SCAN_DEPS:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps + +//Generate index for LLVM archive +CMAKE_C_COMPILER_RANLIB:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib + +//Flags used by the compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_C_FLAGS_DEBUG:STRING= + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_C_FLAGS_RELEASE:STRING= + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C applications. +CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-dlltool + +//Flags used by the linker. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of build database during the build. +CMAKE_EXPORT_BUILD_DATABASE:BOOL= + +//No help, variable specified on the command line. +CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON + +//Value Computed by CMake. +CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/pkgRedirects + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//No help, variable specified on the command line. +CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a + +//Path to a program. +CMAKE_LINKER:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld + +//No help, variable specified on the command line. +CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja + +//Flags used by the linker during the creation of modules. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=intaleq_driver + +//Ranlib +CMAKE_RANLIB:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf + +//No help, variable specified on the command line. +CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a + +//Flags used by the linker during the creation of dll's. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Strip +CMAKE_STRIP:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip + +//No help, variable specified on the command line. +CMAKE_SYSTEM_NAME:UNINITIALIZED=Android + +//No help, variable specified on the command line. +CMAKE_SYSTEM_VERSION:UNINITIALIZED=23 + +//Path to a program. +CMAKE_TAPI:FILEPATH=CMAKE_TAPI-NOTFOUND + +//The CMake toolchain file +CMAKE_TOOLCHAIN_FILE:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Value Computed by CMake +intaleq_driver_BINARY_DIR:STATIC=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a + +//Value Computed by CMake +intaleq_driver_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +intaleq_driver_SOURCE_DIR:STATIC=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp + +//Path to a library. +log-lib:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/liblog.so + +//Dependencies for the target +native-lib_LIB_DEPENDS:STATIC=general;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/liblog.so; + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=31 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=5 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS +CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_STANDARD_LIBRARIES +CMAKE_CXX_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_CLANG_SCAN_DEPS +CMAKE_C_COMPILER_CLANG_SCAN_DEPS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES +CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ccmake +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_BUILD_DATABASE +CMAKE_EXPORT_BUILD_DATABASE-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_TAPI +CMAKE_TAPI-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//linker supports push/pop state +_CMAKE_CXX_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE +//linker supports push/pop state +_CMAKE_C_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE +//linker supports push/pop state +_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE + diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake new file mode 100644 index 0000000..48d6a82 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake @@ -0,0 +1,81 @@ +set(CMAKE_C_COMPILER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "Clang") +set(CMAKE_C_COMPILER_VERSION "18.0.1") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_C_STANDARD_LATEST "23") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar") +set(CMAKE_C_COMPILER_AR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar") +set(CMAKE_RANLIB "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib") +set(CMAKE_C_COMPILER_RANLIB "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib") +set(CMAKE_LINKER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_C_COMPILER_LINKER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld") +set(CMAKE_C_COMPILER_LINKER_ID "LLD") +set(CMAKE_C_COMPILER_LINKER_VERSION 18.0.1) +set(CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT GNU) +set(CMAKE_MT "") +set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) +set(CMAKE_C_LINKER_DEPFILE_SUPPORTED ) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "4") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "arm-linux-androideabi") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "arm-linux-androideabi") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/arm;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake new file mode 100644 index 0000000..36605bb --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake @@ -0,0 +1,105 @@ +set(CMAKE_CXX_COMPILER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "Clang") +set(CMAKE_CXX_COMPILER_VERSION "18.0.1") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_CXX_STANDARD_LATEST "26") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23;cxx_std_26") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") +set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") +set(CMAKE_CXX26_COMPILE_FEATURES "cxx_std_26") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar") +set(CMAKE_CXX_COMPILER_AR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar") +set(CMAKE_RANLIB "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib") +set(CMAKE_LINKER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_CXX_COMPILER_LINKER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld") +set(CMAKE_CXX_COMPILER_LINKER_ID "LLD") +set(CMAKE_CXX_COMPILER_LINKER_VERSION 18.0.1) +set(CMAKE_CXX_COMPILER_LINKER_FRONTEND_VARIANT GNU) +set(CMAKE_MT "") +set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") +set(CMAKE_COMPILER_IS_GNUCXX ) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm;ccm;cxxm;c++m) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang IN ITEMS C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) +set(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED ) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "4") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "arm-linux-androideabi") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "arm-linux-androideabi") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/arm;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") +set(CMAKE_CXX_COMPILER_CLANG_RESOURCE_DIR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18") + +set(CMAKE_CXX_COMPILER_IMPORT_STD "") +### Imported target for C++23 standard library +set(CMAKE_CXX23_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "Experimental `import std` support not enabled when detecting toolchain; it must be set before `CXX` is enabled (usually a `project()` call)") + + +### Imported target for C++26 standard library +set(CMAKE_CXX26_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "Experimental `import std` support not enabled when detecting toolchain; it must be set before `CXX` is enabled (usually a `project()` call)") + + + diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_C.bin b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000..164d518 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_C.bin differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_CXX.bin b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_CXX.bin new file mode 100755 index 0000000..874b117 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_CXX.bin differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake new file mode 100644 index 0000000..dada03e --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Darwin-24.5.0") +set(CMAKE_HOST_SYSTEM_NAME "Darwin") +set(CMAKE_HOST_SYSTEM_VERSION "24.5.0") +set(CMAKE_HOST_SYSTEM_PROCESSOR "arm64") + +include("/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake") + +set(CMAKE_SYSTEM "Android-1") +set(CMAKE_SYSTEM_NAME "Android") +set(CMAKE_SYSTEM_VERSION "1") +set(CMAKE_SYSTEM_PROCESSOR "armv7-a") + +set(CMAKE_CROSSCOMPILING "TRUE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.c b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..8d8bb03 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,904 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) && defined(__ti__) +# define COMPILER_ID "TIClang" + # define COMPILER_VERSION_MAJOR DEC(__ti_major__) + # define COMPILER_VERSION_MINOR DEC(__ti_minor__) + # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) +# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__clang__) && defined(__ti__) +# if defined(__ARM_ARCH) +# define ARCHITECTURE_ID "Arm" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#define C_STD_99 199901L +#define C_STD_11 201112L +#define C_STD_17 201710L +#define C_STD_23 202311L + +#ifdef __STDC_VERSION__ +# define C_STD __STDC_VERSION__ +#endif + +#if !defined(__STDC__) && !defined(__clang__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif C_STD > C_STD_17 +# define C_VERSION "23" +#elif C_STD > C_STD_11 +# define C_VERSION "17" +#elif C_STD > C_STD_99 +# define C_VERSION "11" +#elif C_STD >= C_STD_99 +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.o b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.o new file mode 100644 index 0000000..789424a Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.o differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.cpp b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 0000000..da6c824 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,919 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) && defined(__ti__) +# define COMPILER_ID "TIClang" + # define COMPILER_VERSION_MAJOR DEC(__ti_major__) + # define COMPILER_VERSION_MINOR DEC(__ti_minor__) + # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) +# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__clang__) && defined(__ti__) +# if defined(__ARM_ARCH) +# define ARCHITECTURE_ID "Arm" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#define CXX_STD_98 199711L +#define CXX_STD_11 201103L +#define CXX_STD_14 201402L +#define CXX_STD_17 201703L +#define CXX_STD_20 202002L +#define CXX_STD_23 202302L + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) +# if _MSVC_LANG > CXX_STD_17 +# define CXX_STD _MSVC_LANG +# elif _MSVC_LANG == CXX_STD_17 && defined(__cpp_aggregate_paren_init) +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 && __cplusplus > CXX_STD_17 +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 +# define CXX_STD CXX_STD_17 +# elif defined(__INTEL_CXX11_MODE__) && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# elif defined(__INTEL_CXX11_MODE__) +# define CXX_STD CXX_STD_11 +# else +# define CXX_STD CXX_STD_98 +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# if _MSVC_LANG > __cplusplus +# define CXX_STD _MSVC_LANG +# else +# define CXX_STD __cplusplus +# endif +#elif defined(__NVCOMPILER) +# if __cplusplus == CXX_STD_17 && defined(__cpp_aggregate_paren_init) +# define CXX_STD CXX_STD_20 +# else +# define CXX_STD __cplusplus +# endif +#elif defined(__INTEL_COMPILER) || defined(__PGI) +# if __cplusplus == CXX_STD_11 && defined(__cpp_namespace_attributes) +# define CXX_STD CXX_STD_17 +# elif __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# else +# define CXX_STD __cplusplus +# endif +#elif (defined(__IBMCPP__) || defined(__ibmxl__)) && defined(__linux__) +# if __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# else +# define CXX_STD __cplusplus +# endif +#elif __cplusplus == 1 && defined(__GXX_EXPERIMENTAL_CXX0X__) +# define CXX_STD CXX_STD_11 +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_standard_default = "INFO" ":" "standard_default[" +#if CXX_STD > CXX_STD_23 + "26" +#elif CXX_STD > CXX_STD_20 + "23" +#elif CXX_STD > CXX_STD_17 + "20" +#elif CXX_STD > CXX_STD_14 + "17" +#elif CXX_STD > CXX_STD_11 + "14" +#elif CXX_STD >= CXX_STD_11 + "11" +#else + "98" +#endif +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.o b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.o new file mode 100644 index 0000000..39146d5 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.o differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeConfigureLog.yaml b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeConfigureLog.yaml new file mode 100644 index 0000000..419c210 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeConfigureLog.yaml @@ -0,0 +1,411 @@ + +--- +events: + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake:200 (message)" + - "CMakeLists.txt:2 (project)" + message: | + The target system is: Android - 1 - armv7-a + The host system is: Darwin - 24.5.0 - arm64 + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + message: | + Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. + Compiler: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang + Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-D_FORTIFY_SOURCE=2;-march=armv7-a;-mthumb;-Wformat;-Werror=format-security + Id flags: -c;--target=armv7-none-linux-androideabi23 + + The output was: + 0 + + + Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + + The C compiler identification is Clang, found in: + /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.o + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake:126 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + message: | + Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. + Compiler: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ + Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-D_FORTIFY_SOURCE=2;-march=armv7-a;-mthumb;-Wformat;-Werror=format-security + Id flags: -c;--target=armv7-none-linux-androideabi23 + + The output was: + 0 + + + Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + + The CXX compiler identification is Clang, found in: + /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.o + + - + kind: "try_compile-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:74 (try_compile)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + checks: + - "Detecting C compiler ABI info" + directories: + source: "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeScratch/TryCompile-jLJOfM" + binary: "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeScratch/TryCompile-jLJOfM" + cmakeVariables: + ANDROID_ABI: "armeabi-v7a" + ANDROID_ARM_MODE: "thumb" + ANDROID_ARM_NEON: "TRUE" + ANDROID_PIE: "TRUE" + ANDROID_PLATFORM: "android-23" + ANDROID_STL: "c++_static" + ANDROID_TOOLCHAIN: "clang" + CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps" + CMAKE_CXX_COMPILER_TARGET: "armv7-none-linux-androideabi23" + CMAKE_C_COMPILER_TARGET: "armv7-none-linux-androideabi23" + CMAKE_C_FLAGS: "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat " + CMAKE_C_FLAGS_DEBUG: "-fno-limit-debug-info " + CMAKE_EXE_LINKER_FLAGS: "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments " + CMAKE_POSITION_INDEPENDENT_CODE: "TRUE" + CMAKE_SYSROOT: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot" + buildResult: + variable: "CMAKE_C_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeScratch/TryCompile-jLJOfM' + + Run Build Command(s): /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -v cmTC_40586 + [1/2] /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_40586.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_40586.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_40586.dir/CMakeCCompilerABI.c.o -c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c + Android (12027248, +pgo, -bolt, +lto, -mlgo, based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: armv7-none-linux-android23 + Thread model: posix + InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin + (in-process) + "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang" -cc1 -triple thumbv7-none-linux-android23 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float-abi -target-feature +vfp2 -target-feature +vfp2sp -target-feature +vfp3 -target-feature +vfp3d16 -target-feature +vfp3d16sp -target-feature +vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature +fp64 -target-feature +d32 -target-feature +neon -target-feature -sha2 -target-feature -aes -target-feature -fp16fml -target-abi aapcs-linux -mfloat-abi soft -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeScratch/TryCompile-jLJOfM -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeScratch/TryCompile-jLJOfM -resource-dir /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_40586.dir/CMakeCCompilerABI.c.o.d -MT CMakeFiles/cmTC_40586.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -femulated-tls -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_40586.dir/CMakeCCompilerABI.c.o -x c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c + clang -cc1 version 18.0.1 based upon LLVM 18.0.1 default target x86_64-apple-darwin24.5.0 + ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include" + ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include" + #include "..." search starts here: + #include <...> search starts here: + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include + End of search list. + [2/2] : && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -v CMakeFiles/cmTC_40586.dir/CMakeCCompilerABI.c.o -o cmTC_40586 && : + Android (12027248, +pgo, -bolt, +lto, -mlgo, based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: armv7-none-linux-android23 + Thread model: posix + InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin + "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -EL -z now -z relro -z max-page-size=4096 -X --hash-style=gnu --eh-frame-hdr -m armelf_linux_eabi -pie -dynamic-linker /system/bin/linker -o cmTC_40586 /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtbegin_dynamic.o -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/arm -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/../lib -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_40586.dir/CMakeCCompilerABI.c.o /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a -l:libunwind.a -ldl -lc /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a -l:libunwind.a -ldl /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtend_android.o + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:182 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed C implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + implicit include dirs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:218 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed C implicit link information: + link line regex: [^( *|.*[/\\])(ld[0-9]*(\\.[a-z]+)?|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + linker tool regex: [^[ ]*(->|")?[ ]*(([^"]*[/\\])?(ld[0-9]*(\\.[a-z]+)?))("|,| |$)] + ignore line: [Change Dir: '/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeScratch/TryCompile-jLJOfM'] + ignore line: [] + ignore line: [Run Build Command(s): /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -v cmTC_40586] + ignore line: [[1/2] /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_40586.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_40586.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_40586.dir/CMakeCCompilerABI.c.o -c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c] + ignore line: [Android (12027248 +pgo -bolt +lto -mlgo based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: armv7-none-linux-android23] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin] + ignore line: [ (in-process)] + ignore line: [ "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang" -cc1 -triple thumbv7-none-linux-android23 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float-abi -target-feature +vfp2 -target-feature +vfp2sp -target-feature +vfp3 -target-feature +vfp3d16 -target-feature +vfp3d16sp -target-feature +vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature +fp64 -target-feature +d32 -target-feature +neon -target-feature -sha2 -target-feature -aes -target-feature -fp16fml -target-abi aapcs-linux -mfloat-abi soft -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeScratch/TryCompile-jLJOfM -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeScratch/TryCompile-jLJOfM -resource-dir /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_40586.dir/CMakeCCompilerABI.c.o.d -MT CMakeFiles/cmTC_40586.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -femulated-tls -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_40586.dir/CMakeCCompilerABI.c.o -x c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 18.0.1 based upon LLVM 18.0.1 default target x86_64-apple-darwin24.5.0] + ignore line: [ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] : && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -static-libstdc++ -Wl --build-id=sha1 -Wl --no-rosegment -Wl --no-undefined-version -Wl --fatal-warnings -Wl --no-undefined -Qunused-arguments -v CMakeFiles/cmTC_40586.dir/CMakeCCompilerABI.c.o -o cmTC_40586 && :] + ignore line: [Android (12027248 +pgo -bolt +lto -mlgo based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: armv7-none-linux-android23] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin] + link line: [ "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -EL -z now -z relro -z max-page-size=4096 -X --hash-style=gnu --eh-frame-hdr -m armelf_linux_eabi -pie -dynamic-linker /system/bin/linker -o cmTC_40586 /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtbegin_dynamic.o -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/arm -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/../lib -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_40586.dir/CMakeCCompilerABI.c.o /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a -l:libunwind.a -ldl -lc /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a -l:libunwind.a -ldl /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtend_android.o] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot] ==> ignore + arg [-EL] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [-X] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [armelf_linux_eabi] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker] ==> ignore + arg [-o] ==> ignore + arg [cmTC_40586] ==> ignore + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtbegin_dynamic.o] ==> obj [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtbegin_dynamic.o] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/arm] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/arm] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/../lib] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/../lib] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + arg [--build-id=sha1] ==> ignore + arg [--no-rosegment] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_40586.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a] ==> lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a] ==> lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtend_android.o] ==> obj [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtend_android.o] + linker tool for 'C': /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld + remove lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a] + remove lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/arm] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/arm] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/../lib] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + implicit libs: [-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtbegin_dynamic.o;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtend_android.o] + implicit dirs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/arm;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + implicit fwks: [] + + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake:40 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:255 (cmake_determine_linker_id)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Running the C compiler's linker: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" "-v" + LLD 18.0.1 (compatible with GNU linkers) + - + kind: "try_compile-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:74 (try_compile)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + checks: + - "Detecting CXX compiler ABI info" + directories: + source: "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeScratch/TryCompile-nqgHNr" + binary: "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeScratch/TryCompile-nqgHNr" + cmakeVariables: + ANDROID_ABI: "armeabi-v7a" + ANDROID_ARM_MODE: "thumb" + ANDROID_ARM_NEON: "TRUE" + ANDROID_PIE: "TRUE" + ANDROID_PLATFORM: "android-23" + ANDROID_STL: "c++_static" + ANDROID_TOOLCHAIN: "clang" + CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps" + CMAKE_CXX_COMPILER_TARGET: "armv7-none-linux-androideabi23" + CMAKE_CXX_FLAGS: "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat " + CMAKE_CXX_FLAGS_DEBUG: "-fno-limit-debug-info " + CMAKE_CXX_SCAN_FOR_MODULES: "OFF" + CMAKE_C_COMPILER_TARGET: "armv7-none-linux-androideabi23" + CMAKE_EXE_LINKER_FLAGS: "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments " + CMAKE_POSITION_INDEPENDENT_CODE: "TRUE" + CMAKE_SYSROOT: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot" + buildResult: + variable: "CMAKE_CXX_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeScratch/TryCompile-nqgHNr' + + Run Build Command(s): /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -v cmTC_0d346 + [1/2] /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=armv7-none-linux-androideabi23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_0d346.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_0d346.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_0d346.dir/CMakeCXXCompilerABI.cpp.o -c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp + Android (12027248, +pgo, -bolt, +lto, -mlgo, based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: armv7-none-linux-android23 + Thread model: posix + InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin + (in-process) + "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++" -cc1 -triple thumbv7-none-linux-android23 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float-abi -target-feature +vfp2 -target-feature +vfp2sp -target-feature +vfp3 -target-feature +vfp3d16 -target-feature +vfp3d16sp -target-feature +vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature +fp64 -target-feature +d32 -target-feature +neon -target-feature -sha2 -target-feature -aes -target-feature -fp16fml -target-abi aapcs-linux -mfloat-abi soft -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeScratch/TryCompile-nqgHNr -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeScratch/TryCompile-nqgHNr -resource-dir /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_0d346.dir/CMakeCXXCompilerABI.cpp.o.d -MT CMakeFiles/cmTC_0d346.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1 -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -femulated-tls -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_0d346.dir/CMakeCXXCompilerABI.cpp.o -x c++ /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp + clang -cc1 version 18.0.1 based upon LLVM 18.0.1 default target x86_64-apple-darwin24.5.0 + ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include" + ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include" + #include "..." search starts here: + #include <...> search starts here: + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1 + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include + End of search list. + [2/2] : && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=armv7-none-linux-androideabi23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -v CMakeFiles/cmTC_0d346.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_0d346 && : + Android (12027248, +pgo, -bolt, +lto, -mlgo, based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: armv7-none-linux-android23 + Thread model: posix + InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin + "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -EL -z now -z relro -z max-page-size=4096 -X --hash-style=gnu --eh-frame-hdr -m armelf_linux_eabi -pie -dynamic-linker /system/bin/linker -o cmTC_0d346 /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtbegin_dynamic.o -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/arm -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/../lib -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_0d346.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -Bdynamic -lm /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a -l:libunwind.a -ldl -lc /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a -l:libunwind.a -ldl /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtend_android.o + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:182 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed CXX implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + implicit include dirs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:218 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed CXX implicit link information: + link line regex: [^( *|.*[/\\])(ld[0-9]*(\\.[a-z]+)?|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + linker tool regex: [^[ ]*(->|")?[ ]*(([^"]*[/\\])?(ld[0-9]*(\\.[a-z]+)?))("|,| |$)] + ignore line: [Change Dir: '/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeScratch/TryCompile-nqgHNr'] + ignore line: [] + ignore line: [Run Build Command(s): /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -v cmTC_0d346] + ignore line: [[1/2] /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=armv7-none-linux-androideabi23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_0d346.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_0d346.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_0d346.dir/CMakeCXXCompilerABI.cpp.o -c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Android (12027248 +pgo -bolt +lto -mlgo based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: armv7-none-linux-android23] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin] + ignore line: [ (in-process)] + ignore line: [ "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++" -cc1 -triple thumbv7-none-linux-android23 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float-abi -target-feature +vfp2 -target-feature +vfp2sp -target-feature +vfp3 -target-feature +vfp3d16 -target-feature +vfp3d16sp -target-feature +vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature +fp64 -target-feature +d32 -target-feature +neon -target-feature -sha2 -target-feature -aes -target-feature -fp16fml -target-abi aapcs-linux -mfloat-abi soft -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeScratch/TryCompile-nqgHNr -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/CMakeScratch/TryCompile-nqgHNr -resource-dir /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_0d346.dir/CMakeCXXCompilerABI.cpp.o.d -MT CMakeFiles/cmTC_0d346.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1 -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -femulated-tls -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_0d346.dir/CMakeCXXCompilerABI.cpp.o -x c++ /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 18.0.1 based upon LLVM 18.0.1 default target x86_64-apple-darwin24.5.0] + ignore line: [ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] : && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=armv7-none-linux-androideabi23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -static-libstdc++ -Wl --build-id=sha1 -Wl --no-rosegment -Wl --no-undefined-version -Wl --fatal-warnings -Wl --no-undefined -Qunused-arguments -v CMakeFiles/cmTC_0d346.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_0d346 && :] + ignore line: [Android (12027248 +pgo -bolt +lto -mlgo based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: armv7-none-linux-android23] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin] + link line: [ "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -EL -z now -z relro -z max-page-size=4096 -X --hash-style=gnu --eh-frame-hdr -m armelf_linux_eabi -pie -dynamic-linker /system/bin/linker -o cmTC_0d346 /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtbegin_dynamic.o -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/arm -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/../lib -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_0d346.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -Bdynamic -lm /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a -l:libunwind.a -ldl -lc /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a -l:libunwind.a -ldl /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtend_android.o] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot] ==> ignore + arg [-EL] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [-X] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [armelf_linux_eabi] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker] ==> ignore + arg [-o] ==> ignore + arg [cmTC_0d346] ==> ignore + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtbegin_dynamic.o] ==> obj [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtbegin_dynamic.o] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/arm] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/arm] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/../lib] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/../lib] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + arg [--build-id=sha1] ==> ignore + arg [--no-rosegment] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_0d346.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-Bstatic] ==> search static + arg [-lc++] ==> lib [c++] + arg [-Bdynamic] ==> search dynamic + arg [-lm] ==> lib [m] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a] ==> lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a] ==> lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtend_android.o] ==> obj [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtend_android.o] + linker tool for 'CXX': /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld + remove lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a] + remove lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-arm-android.a] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/arm] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/arm] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/../lib] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + implicit libs: [c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtbegin_dynamic.o;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/crtend_android.o] + implicit dirs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/arm;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + implicit fwks: [] + + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake:40 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:255 (cmake_determine_linker_id)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Running the CXX compiler's linker: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" "-v" + LLD 18.0.1 (compatible with GNU linkers) +... diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/TargetDirectories.txt b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..b5ac1ed --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/native-lib.dir +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/edit_cache.dir +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/rebuild_cache.dir diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/cmake.check_cache b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/native-lib.dir/native-lib.cpp.o b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/native-lib.dir/native-lib.cpp.o new file mode 100644 index 0000000..873a00d Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/native-lib.dir/native-lib.cpp.o differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/rules.ninja b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/rules.ninja new file mode 100644 index 0000000..a110c01 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/CMakeFiles/rules.ninja @@ -0,0 +1,66 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.31 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: intaleq_driver +# Configurations: Debug +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__native-lib_unscanned_Debug + depfile = $DEP_FILE + deps = gcc + command = ${LAUNCHER}${CODE_CHECK}/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=armv7-none-linux-androideabi23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX shared library. + +rule CXX_SHARED_LIBRARY_LINKER__native-lib_Debug + depfile = $DEP_FILE + deps = gcc + command = $PRE_LINK && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=armv7-none-linux-androideabi23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD + description = Linking CXX shared library $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake --regenerate-during-build -S/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp -B/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -t targets + description = All primary targets available: + diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/additional_project_files.txt b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/additional_project_files.txt new file mode 100644 index 0000000..e69de29 diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/android_gradle_build.json b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/android_gradle_build.json new file mode 100644 index 0000000..547e7a3 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/android_gradle_build.json @@ -0,0 +1,38 @@ +{ + "buildFiles": [ + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt" + ], + "cleanCommandsComponents": [ + [ + "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja", + "-C", + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a", + "clean" + ] + ], + "buildTargetsCommandComponents": [ + "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja", + "-C", + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a", + "{LIST_OF_TARGETS_TO_BUILD}" + ], + "libraries": { + "native-lib::@6890427a1f51a3e7e1df": { + "toolchain": "toolchain", + "abi": "armeabi-v7a", + "artifactName": "native-lib", + "output": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a/libnative-lib.so", + "runtimeFiles": [] + } + }, + "toolchains": { + "toolchain": { + "cCompilerExecutable": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld", + "cppCompilerExecutable": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld" + } + }, + "cFileExtensions": [], + "cppFileExtensions": [ + "cpp" + ] +} \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/android_gradle_build_mini.json b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/android_gradle_build_mini.json new file mode 100644 index 0000000..9f6c1e8 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/android_gradle_build_mini.json @@ -0,0 +1,27 @@ +{ + "buildFiles": [ + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt" + ], + "cleanCommandsComponents": [ + [ + "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja", + "-C", + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a", + "clean" + ] + ], + "buildTargetsCommandComponents": [ + "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja", + "-C", + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a", + "{LIST_OF_TARGETS_TO_BUILD}" + ], + "libraries": { + "native-lib::@6890427a1f51a3e7e1df": { + "artifactName": "native-lib", + "abi": "armeabi-v7a", + "output": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a/libnative-lib.so", + "runtimeFiles": [] + } + } +} \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/build.ninja b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/build.ninja new file mode 100644 index 0000000..b86f41e --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/build.ninja @@ -0,0 +1,156 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.31 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: intaleq_driver +# Configurations: Debug +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = Debug +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include CMakeFiles/rules.ninja + +# ============================================================================= + +############################################# +# Logical path to working directory; prefix for absolute paths. + +cmake_ninja_workdir = /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/ +# ============================================================================= +# Object build statements for SHARED_LIBRARY target native-lib + + +############################################# +# Order-only phony target for native-lib + +build cmake_object_order_depends_target_native-lib: phony || . + +build CMakeFiles/native-lib.dir/native-lib.cpp.o: CXX_COMPILER__native-lib_unscanned_Debug /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp || cmake_object_order_depends_target_native-lib + DEFINES = -Dnative_lib_EXPORTS + DEP_FILE = CMakeFiles/native-lib.dir/native-lib.cpp.o.d + FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -fno-limit-debug-info -fPIC + OBJECT_DIR = CMakeFiles/native-lib.dir + OBJECT_FILE_DIR = CMakeFiles/native-lib.dir + TARGET_COMPILE_PDB = CMakeFiles/native-lib.dir/ + TARGET_PDB = /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a/libnative-lib.pdb + + +# ============================================================================= +# Link build statements for SHARED_LIBRARY target native-lib + + +############################################# +# Link the shared library /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a/libnative-lib.so + +build /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a/libnative-lib.so: CXX_SHARED_LIBRARY_LINKER__native-lib_Debug CMakeFiles/native-lib.dir/native-lib.cpp.o | /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/liblog.so + DEP_FILE = CMakeFiles/native-lib.dir/link.d + LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -fno-limit-debug-info + LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -Xlinker --dependency-file=CMakeFiles/native-lib.dir/link.d + LINK_LIBRARIES = /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/liblog.so -latomic -lm + OBJECT_DIR = CMakeFiles/native-lib.dir + POST_BUILD = : + PRE_LINK = : + SONAME = libnative-lib.so + SONAME_FLAG = -Wl,-soname, + TARGET_COMPILE_PDB = CMakeFiles/native-lib.dir/ + TARGET_FILE = /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a/libnative-lib.so + TARGET_PDB = /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a/libnative-lib.pdb + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cd /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a && /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ccmake -S/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp -B/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a + DESC = Running CMake cache editor... + pool = console + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cd /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a && /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake --regenerate-during-build -S/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp -B/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + +# ============================================================================= +# Target aliases. + +build libnative-lib.so: phony /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a/libnative-lib.so + +build native-lib: phony /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a/libnative-lib.so + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a + +build all: phony /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a/libnative-lib.so + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeGenericSystem.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeInitializeConfigs.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystem.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInitialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Bruce-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX-CXXImportStd.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-FindBinUtils.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SDCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCXXLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android/Determine-Compiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/UnixPaths.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/abis.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android-legacy.toolchain.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/flags.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Determine.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Determine-Compiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/platforms.cmake /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt CMakeCache.txt CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeGenericSystem.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeInitializeConfigs.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystem.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInitialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Bruce-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX-CXXImportStd.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-FindBinUtils.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SDCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCXXLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android/Determine-Compiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/UnixPaths.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/abis.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android-legacy.toolchain.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/flags.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Determine.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Determine-Compiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/platforms.cmake /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt CMakeCache.txt CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/build_file_index.txt b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/build_file_index.txt new file mode 100644 index 0000000..b1ca0fa --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/build_file_index.txt @@ -0,0 +1 @@ +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/cmake_install.cmake b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/cmake_install.cmake new file mode 100644 index 0000000..d4bacf2 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/cmake_install.cmake @@ -0,0 +1,66 @@ +# Install script for directory: /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Debug") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "TRUE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() +if(CMAKE_INSTALL_COMPONENT) + if(CMAKE_INSTALL_COMPONENT MATCHES "^[a-zA-Z0-9_.+-]+$") + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") + else() + string(MD5 CMAKE_INST_COMP_HASH "${CMAKE_INSTALL_COMPONENT}") + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INST_COMP_HASH}.txt") + unset(CMAKE_INST_COMP_HASH) + endif() +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +if(NOT CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/compile_commands.json b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/compile_commands.json new file mode 100644 index 0000000..ebf94e0 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/compile_commands.json @@ -0,0 +1,8 @@ +[ +{ + "directory": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a", + "command": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=armv7-none-linux-androideabi23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dnative_lib_EXPORTS -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -fno-limit-debug-info -fPIC -o CMakeFiles/native-lib.dir/native-lib.cpp.o -c /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp", + "file": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp", + "output": "CMakeFiles/native-lib.dir/native-lib.cpp.o" +} +] \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/compile_commands.json.bin b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/compile_commands.json.bin new file mode 100644 index 0000000..18becd6 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/compile_commands.json.bin differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/configure_fingerprint.bin b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/configure_fingerprint.bin new file mode 100644 index 0000000..54757c6 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/configure_fingerprint.bin @@ -0,0 +1,28 @@ +C/C++ Structured Log‡ +„ +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/additional_project_files.txtC +A +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ‘¡¹™„3  ÎÊ“Ó3ƒ +€ +~/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/android_gradle_build.json  ‘¡¹™„3‰ ßÊ“Ó3‰ +† +ƒ/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/android_gradle_build_mini.json  ‘¡¹™„3Ë ìÊ“Ó3t +r +p/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/build.ninja  ‘¡¹™„3ÿ¤ ÓÉ“Ó3x +v +t/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/build.ninja.txt  ‘¡¹™„3} +{ +y/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/build_file_index.txt  ‘¡¹™„3 ` ïÊ“Ó3~ +| +z/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/compile_commands.json  ‘¡¹™„3Ì ÓÉ“Ó3ƒ +€ +~/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/compile_commands.json.bin  ‘¡¹™„3 ó ÓÉ“Ó3Š +‡ +„/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/metadata_generation_command.txt  ‘¡¹™„3 +œ îÊ“Ó3{ +y +w/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/prefab_config.json  ‘¡¹™„3  ( îÊ“Ó3€ +~ +|/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/symbol_folder_index.txt  ‘¡¹™„3  s îÊ“Ó3d +b +`/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt  ‘¡¹™„3  ¿åŠÿ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/metadata_generation_command.txt b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/metadata_generation_command.txt new file mode 100644 index 0000000..00d505e --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/metadata_generation_command.txt @@ -0,0 +1,18 @@ + -H/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp +-DCMAKE_SYSTEM_NAME=Android +-DCMAKE_EXPORT_COMPILE_COMMANDS=ON +-DCMAKE_SYSTEM_VERSION=23 +-DANDROID_PLATFORM=android-23 +-DANDROID_ABI=armeabi-v7a +-DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a +-DANDROID_NDK=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973 +-DCMAKE_ANDROID_NDK=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973 +-DCMAKE_TOOLCHAIN_FILE=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake +-DCMAKE_MAKE_PROGRAM=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja +-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a +-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a +-DCMAKE_BUILD_TYPE=Debug +-B/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a +-GNinja + Build command args: [] + Version: 2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/prefab_config.json b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/prefab_config.json new file mode 100644 index 0000000..e799de8 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/prefab_config.json @@ -0,0 +1,4 @@ +{ + "enabled": false, + "packages": [] +} \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/symbol_folder_index.txt b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/symbol_folder_index.txt new file mode 100644 index 0000000..4723ee3 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a/symbol_folder_index.txt @@ -0,0 +1 @@ +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/armeabi-v7a \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/hash_key.txt b/android/app/.cxx/Debug/2j1f5m6a/hash_key.txt new file mode 100644 index 0000000..43fb0df --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/hash_key.txt @@ -0,0 +1,25 @@ +# Values used to calculate the hash in this folder name. +# Should not depend on the absolute path of the project itself. +# - AGP: 8.11.0. +# - $NDK is the path to NDK 27.0.12077973. +# - $PROJECT is the path to the parent folder of the root Gradle build file. +# - $ABI is the ABI to be built with. The specific value doesn't contribute to the value of the hash. +# - $HASH is the hash value computed from this text. +# - $CMAKE is the path to CMake 3.31.5. +# - $NINJA is the path to Ninja. +-H$PROJECT/app/src/main/cpp +-DCMAKE_SYSTEM_NAME=Android +-DCMAKE_EXPORT_COMPILE_COMMANDS=ON +-DCMAKE_SYSTEM_VERSION=23 +-DANDROID_PLATFORM=android-23 +-DANDROID_ABI=$ABI +-DCMAKE_ANDROID_ARCH_ABI=$ABI +-DANDROID_NDK=$NDK +-DCMAKE_ANDROID_NDK=$NDK +-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake +-DCMAKE_MAKE_PROGRAM=$NINJA +-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/$HASH/obj/$ABI +-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/$HASH/obj/$ABI +-DCMAKE_BUILD_TYPE=Debug +-B$PROJECT/app/.cxx/Debug/$HASH/$ABI +-GNinja \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/query/client-agp/cache-v2 b/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/query/client-agp/cache-v2 new file mode 100644 index 0000000..e69de29 diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/query/client-agp/cmakeFiles-v1 new file mode 100644 index 0000000..e69de29 diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/query/client-agp/codemodel-v2 b/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/query/client-agp/codemodel-v2 new file mode 100644 index 0000000..e69de29 diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/cache-v2-0def829273509cde3a7e.json b/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/cache-v2-0def829273509cde3a7e.json new file mode 100644 index 0000000..f11d2af --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/cache-v2-0def829273509cde3a7e.json @@ -0,0 +1,1479 @@ +{ + "entries" : + [ + { + "name" : "ANDROID_ABI", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "x86" + }, + { + "name" : "ANDROID_NDK", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973" + }, + { + "name" : "ANDROID_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "android-23" + }, + { + "name" : "CMAKE_ADDR2LINE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line" + }, + { + "name" : "CMAKE_ANDROID_ARCH_ABI", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "x86" + }, + { + "name" : "CMAKE_ANDROID_NDK", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973" + }, + { + "name" : "CMAKE_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Archiver" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar" + }, + { + "name" : "CMAKE_ASM_FLAGS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_ASM_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_ASM_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_BUILD_TYPE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..." + } + ], + "type" : "STRING", + "value" : "Debug" + }, + { + "name" : "CMAKE_CACHEFILE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "This is the directory where this CMakeCache.txt was created" + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86" + }, + { + "name" : "CMAKE_CACHE_MAJOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Major version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "3" + }, + { + "name" : "CMAKE_CACHE_MINOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Minor version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "31" + }, + { + "name" : "CMAKE_CACHE_PATCH_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Patch version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "5" + }, + { + "name" : "CMAKE_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake executable." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake" + }, + { + "name" : "CMAKE_CPACK_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cpack program executable." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cpack" + }, + { + "name" : "CMAKE_CTEST_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to ctest program executable." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ctest" + }, + { + "name" : "CMAKE_CXX_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "" + } + ], + "type" : "UNINITIALIZED", + "value" : "" + }, + { + "name" : "CMAKE_CXX_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "LLVM archiver" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar" + }, + { + "name" : "CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "`clang-scan-deps` dependency scanner" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps" + }, + { + "name" : "CMAKE_CXX_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Generate index for LLVM archive" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib" + }, + { + "name" : "CMAKE_CXX_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_STANDARD_LIBRARIES", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Libraries linked by default with all C++ applications." + } + ], + "type" : "STRING", + "value" : "-latomic -lm" + }, + { + "name" : "CMAKE_C_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "" + } + ], + "type" : "UNINITIALIZED", + "value" : "" + }, + { + "name" : "CMAKE_C_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "LLVM archiver" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar" + }, + { + "name" : "CMAKE_C_COMPILER_CLANG_SCAN_DEPS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "`clang-scan-deps` dependency scanner" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps" + }, + { + "name" : "CMAKE_C_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Generate index for LLVM archive" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib" + }, + { + "name" : "CMAKE_C_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_C_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_C_STANDARD_LIBRARIES", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Libraries linked by default with all C applications." + } + ], + "type" : "STRING", + "value" : "-latomic -lm" + }, + { + "name" : "CMAKE_DLLTOOL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-dlltool" + }, + { + "name" : "CMAKE_EDIT_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cache edit program executable." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ccmake" + }, + { + "name" : "CMAKE_EXECUTABLE_FORMAT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Executable file format" + } + ], + "type" : "INTERNAL", + "value" : "ELF" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXPORT_BUILD_DATABASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Enable/Disable output of build database during the build." + } + ], + "type" : "BOOL", + "value" : "" + }, + { + "name" : "CMAKE_EXPORT_COMPILE_COMMANDS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "ON" + }, + { + "name" : "CMAKE_EXTRA_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of external makefile project generator." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_FIND_PACKAGE_REDIRECTS_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake." + } + ], + "type" : "STATIC", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/pkgRedirects" + }, + { + "name" : "CMAKE_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator." + } + ], + "type" : "INTERNAL", + "value" : "Ninja" + }, + { + "name" : "CMAKE_GENERATOR_INSTANCE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Generator instance identifier." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator platform." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_TOOLSET", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator toolset." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_HOME_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Source directory with the top level CMakeLists.txt file for this project" + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp" + }, + { + "name" : "CMAKE_INSTALL_PREFIX", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install path prefix, prepended onto install directories." + } + ], + "type" : "PATH", + "value" : "/usr/local" + }, + { + "name" : "CMAKE_INSTALL_SO_NO_EXE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install .so files without execute permission." + } + ], + "type" : "INTERNAL", + "value" : "0" + }, + { + "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86" + }, + { + "name" : "CMAKE_LINKER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" + }, + { + "name" : "CMAKE_MAKE_PROGRAM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_NM", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm" + }, + { + "name" : "CMAKE_NUMBER_OF_MAKEFILES", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "number of local generators" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_OBJCOPY", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy" + }, + { + "name" : "CMAKE_OBJDUMP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump" + }, + { + "name" : "CMAKE_PLATFORM_INFO_INITIALIZED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Platform information initialized" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_PROJECT_DESCRIPTION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_HOMEPAGE_URL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "intaleq_driver" + }, + { + "name" : "CMAKE_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Ranlib" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib" + }, + { + "name" : "CMAKE_READELF", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf" + }, + { + "name" : "CMAKE_ROOT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake installation." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31" + }, + { + "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of dll's." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SKIP_INSTALL_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_SKIP_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when using shared libraries." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STRIP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Strip" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip" + }, + { + "name" : "CMAKE_SYSTEM_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "Android" + }, + { + "name" : "CMAKE_SYSTEM_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "23" + }, + { + "name" : "CMAKE_TAPI", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "CMAKE_TAPI-NOTFOUND" + }, + { + "name" : "CMAKE_TOOLCHAIN_FILE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "The CMake toolchain file" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" + }, + { + "name" : "CMAKE_UNAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "uname command" + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/uname" + }, + { + "name" : "CMAKE_VERBOSE_MAKEFILE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo." + } + ], + "type" : "BOOL", + "value" : "FALSE" + }, + { + "name" : "_CMAKE_CXX_LINKER_PUSHPOP_STATE_SUPPORTED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "linker supports push/pop state" + } + ], + "type" : "INTERNAL", + "value" : "TRUE" + }, + { + "name" : "_CMAKE_C_LINKER_PUSHPOP_STATE_SUPPORTED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "linker supports push/pop state" + } + ], + "type" : "INTERNAL", + "value" : "TRUE" + }, + { + "name" : "_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "linker supports push/pop state" + } + ], + "type" : "INTERNAL", + "value" : "TRUE" + }, + { + "name" : "intaleq_driver_BINARY_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86" + }, + { + "name" : "intaleq_driver_IS_TOP_LEVEL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "ON" + }, + { + "name" : "intaleq_driver_SOURCE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp" + }, + { + "name" : "log-lib", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to a library." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/liblog.so" + }, + { + "name" : "native-lib_LIB_DEPENDS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Dependencies for the target" + } + ], + "type" : "STATIC", + "value" : "general;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/liblog.so;" + } + ], + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/cmakeFiles-v1-c684d75b7cc460903c07.json b/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/cmakeFiles-v1-c684d75b7cc460903c07.json new file mode 100644 index 0000000..e554919 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/cmakeFiles-v1-c684d75b7cc460903c07.json @@ -0,0 +1,968 @@ +{ + "inputs" : + [ + { + "path" : "CMakeLists.txt" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android-legacy.toolchain.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/abis.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/platforms.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Determine.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystem.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInitialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Initialize.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Initialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux-Initialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android/Determine-Compiler.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Determine-Compiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android/Determine-Compiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeGenericSystem.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeInitializeConfigs.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/UnixPaths.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Clang.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/flags.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCLinkerInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX-CXXImportStd.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX-CXXImportStd.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCXXLinkerInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD.cmake" + } + ], + "kind" : "cmakeFiles", + "paths" : + { + "build" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86", + "source" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp" + }, + "version" : + { + "major" : 1, + "minor" : 1 + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/codemodel-v2-7cd6c1da16c8c6ab93ff.json b/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/codemodel-v2-7cd6c1da16c8c6ab93ff.json new file mode 100644 index 0000000..9e9081f --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/codemodel-v2-7cd6c1da16c8c6ab93ff.json @@ -0,0 +1,60 @@ +{ + "configurations" : + [ + { + "directories" : + [ + { + "build" : ".", + "jsonFile" : "directory-.-Debug-f5ebdc15457944623624.json", + "minimumCMakeVersion" : + { + "string" : "3.6.0" + }, + "projectIndex" : 0, + "source" : ".", + "targetIndexes" : + [ + 0 + ] + } + ], + "name" : "Debug", + "projects" : + [ + { + "directoryIndexes" : + [ + 0 + ], + "name" : "intaleq_driver", + "targetIndexes" : + [ + 0 + ] + } + ], + "targets" : + [ + { + "directoryIndex" : 0, + "id" : "native-lib::@6890427a1f51a3e7e1df", + "jsonFile" : "target-native-lib-Debug-dd8e94c6a37ef0d8683a.json", + "name" : "native-lib", + "projectIndex" : 0 + } + ] + } + ], + "kind" : "codemodel", + "paths" : + { + "build" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86", + "source" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp" + }, + "version" : + { + "major" : 2, + "minor" : 7 + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json b/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json new file mode 100644 index 0000000..3a67af9 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json @@ -0,0 +1,14 @@ +{ + "backtraceGraph" : + { + "commands" : [], + "files" : [], + "nodes" : [] + }, + "installers" : [], + "paths" : + { + "build" : ".", + "source" : "." + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/index-2025-07-17T21-58-00-0015.json b/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/index-2025-07-17T21-58-00-0015.json new file mode 100644 index 0000000..3ef0a6c --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/index-2025-07-17T21-58-00-0015.json @@ -0,0 +1,92 @@ +{ + "cmake" : + { + "generator" : + { + "multiConfig" : false, + "name" : "Ninja" + }, + "paths" : + { + "cmake" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake", + "cpack" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cpack", + "ctest" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ctest", + "root" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31" + }, + "version" : + { + "isDirty" : false, + "major" : 3, + "minor" : 31, + "patch" : 5, + "string" : "3.31.5-g6cf5163", + "suffix" : "g6cf5163" + } + }, + "objects" : + [ + { + "jsonFile" : "codemodel-v2-7cd6c1da16c8c6ab93ff.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 7 + } + }, + { + "jsonFile" : "cache-v2-0def829273509cde3a7e.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "jsonFile" : "cmakeFiles-v1-c684d75b7cc460903c07.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 1 + } + } + ], + "reply" : + { + "client-agp" : + { + "cache-v2" : + { + "jsonFile" : "cache-v2-0def829273509cde3a7e.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + "cmakeFiles-v1" : + { + "jsonFile" : "cmakeFiles-v1-c684d75b7cc460903c07.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 1 + } + }, + "codemodel-v2" : + { + "jsonFile" : "codemodel-v2-7cd6c1da16c8c6ab93ff.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 7 + } + } + } + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/target-native-lib-Debug-dd8e94c6a37ef0d8683a.json b/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/target-native-lib-Debug-dd8e94c6a37ef0d8683a.json new file mode 100644 index 0000000..d886432 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/.cmake/api/v1/reply/target-native-lib-Debug-dd8e94c6a37ef0d8683a.json @@ -0,0 +1,117 @@ +{ + "artifacts" : + [ + { + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86/libnative-lib.so" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "add_library", + "target_link_libraries" + ], + "files" : + [ + "CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 5, + "parent" : 0 + }, + { + "command" : 1, + "file" : 0, + "line" : 11, + "parent" : 0 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info -fPIC" + } + ], + "defines" : + [ + { + "define" : "native_lib_EXPORTS" + } + ], + "language" : "CXX", + "sourceIndexes" : + [ + 0 + ], + "sysroot" : + { + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot" + } + } + ], + "id" : "native-lib::@6890427a1f51a3e7e1df", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments", + "role" : "flags" + }, + { + "backtrace" : 2, + "fragment" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/liblog.so", + "role" : "libraries" + }, + { + "fragment" : "-latomic -lm", + "role" : "libraries" + } + ], + "language" : "CXX", + "sysroot" : + { + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot" + } + }, + "name" : "native-lib", + "nameOnDisk" : "libnative-lib.so", + "paths" : + { + "build" : ".", + "source" : "." + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "native-lib.cpp", + "sourceGroupIndex" : 0 + } + ], + "type" : "SHARED_LIBRARY" +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/.ninja_deps b/android/app/.cxx/Debug/2j1f5m6a/x86/.ninja_deps new file mode 100644 index 0000000..94f892f Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/x86/.ninja_deps differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/.ninja_log b/android/app/.cxx/Debug/2j1f5m6a/x86/.ninja_log new file mode 100644 index 0000000..261aa5e --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/.ninja_log @@ -0,0 +1,3 @@ +# ninja log v5 +0 1408 1752789481557342243 CMakeFiles/native-lib.dir/native-lib.cpp.o b21ff4109f376dc1 +1410 1474 1752789481623374603 /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86/libnative-lib.so e06ca0c5ac3ab83 diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeCache.txt b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeCache.txt new file mode 100644 index 0000000..b8b1595 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeCache.txt @@ -0,0 +1,430 @@ +# This is the CMakeCache file. +# For build in directory: /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86 +# It was generated by CMake: /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//No help, variable specified on the command line. +ANDROID_ABI:UNINITIALIZED=x86 + +//No help, variable specified on the command line. +ANDROID_NDK:UNINITIALIZED=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973 + +//No help, variable specified on the command line. +ANDROID_PLATFORM:UNINITIALIZED=android-23 + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line + +//No help, variable specified on the command line. +CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=x86 + +//No help, variable specified on the command line. +CMAKE_ANDROID_NDK:UNINITIALIZED=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973 + +//Archiver +CMAKE_AR:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar + +//Flags used by the compiler during all build types. +CMAKE_ASM_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_ASM_FLAGS_DEBUG:STRING= + +//Flags used by the compiler during release builds. +CMAKE_ASM_FLAGS_RELEASE:STRING= + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Debug + +//LLVM archiver +CMAKE_CXX_COMPILER_AR:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar + +//`clang-scan-deps` dependency scanner +CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps + +//Generate index for LLVM archive +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib + +//Flags used by the compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_CXX_FLAGS_DEBUG:STRING= + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_CXX_FLAGS_RELEASE:STRING= + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C++ applications. +CMAKE_CXX_STANDARD_LIBRARIES:STRING=-latomic -lm + +//LLVM archiver +CMAKE_C_COMPILER_AR:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar + +//`clang-scan-deps` dependency scanner +CMAKE_C_COMPILER_CLANG_SCAN_DEPS:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps + +//Generate index for LLVM archive +CMAKE_C_COMPILER_RANLIB:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib + +//Flags used by the compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_C_FLAGS_DEBUG:STRING= + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_C_FLAGS_RELEASE:STRING= + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C applications. +CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-dlltool + +//Flags used by the linker. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of build database during the build. +CMAKE_EXPORT_BUILD_DATABASE:BOOL= + +//No help, variable specified on the command line. +CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON + +//Value Computed by CMake. +CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/pkgRedirects + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//No help, variable specified on the command line. +CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86 + +//Path to a program. +CMAKE_LINKER:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld + +//No help, variable specified on the command line. +CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja + +//Flags used by the linker during the creation of modules. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=intaleq_driver + +//Ranlib +CMAKE_RANLIB:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf + +//No help, variable specified on the command line. +CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86 + +//Flags used by the linker during the creation of dll's. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Strip +CMAKE_STRIP:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip + +//No help, variable specified on the command line. +CMAKE_SYSTEM_NAME:UNINITIALIZED=Android + +//No help, variable specified on the command line. +CMAKE_SYSTEM_VERSION:UNINITIALIZED=23 + +//Path to a program. +CMAKE_TAPI:FILEPATH=CMAKE_TAPI-NOTFOUND + +//The CMake toolchain file +CMAKE_TOOLCHAIN_FILE:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Value Computed by CMake +intaleq_driver_BINARY_DIR:STATIC=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86 + +//Value Computed by CMake +intaleq_driver_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +intaleq_driver_SOURCE_DIR:STATIC=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp + +//Path to a library. +log-lib:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/liblog.so + +//Dependencies for the target +native-lib_LIB_DEPENDS:STATIC=general;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/liblog.so; + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86 +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=31 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=5 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS +CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_STANDARD_LIBRARIES +CMAKE_CXX_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_CLANG_SCAN_DEPS +CMAKE_C_COMPILER_CLANG_SCAN_DEPS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES +CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ccmake +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_BUILD_DATABASE +CMAKE_EXPORT_BUILD_DATABASE-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_TAPI +CMAKE_TAPI-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//linker supports push/pop state +_CMAKE_CXX_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE +//linker supports push/pop state +_CMAKE_C_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE +//linker supports push/pop state +_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE + diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake new file mode 100644 index 0000000..6f7fec1 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake @@ -0,0 +1,81 @@ +set(CMAKE_C_COMPILER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "Clang") +set(CMAKE_C_COMPILER_VERSION "18.0.1") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_C_STANDARD_LATEST "23") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar") +set(CMAKE_C_COMPILER_AR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar") +set(CMAKE_RANLIB "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib") +set(CMAKE_C_COMPILER_RANLIB "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib") +set(CMAKE_LINKER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_C_COMPILER_LINKER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld") +set(CMAKE_C_COMPILER_LINKER_ID "LLD") +set(CMAKE_C_COMPILER_LINKER_VERSION 18.0.1) +set(CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT GNU) +set(CMAKE_MT "") +set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) +set(CMAKE_C_LINKER_DEPFILE_SUPPORTED ) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "4") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "i686-linux-android") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "i686-linux-android") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/i386;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake new file mode 100644 index 0000000..3536164 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake @@ -0,0 +1,105 @@ +set(CMAKE_CXX_COMPILER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "Clang") +set(CMAKE_CXX_COMPILER_VERSION "18.0.1") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_CXX_STANDARD_LATEST "26") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23;cxx_std_26") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") +set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") +set(CMAKE_CXX26_COMPILE_FEATURES "cxx_std_26") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar") +set(CMAKE_CXX_COMPILER_AR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar") +set(CMAKE_RANLIB "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib") +set(CMAKE_LINKER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_CXX_COMPILER_LINKER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld") +set(CMAKE_CXX_COMPILER_LINKER_ID "LLD") +set(CMAKE_CXX_COMPILER_LINKER_VERSION 18.0.1) +set(CMAKE_CXX_COMPILER_LINKER_FRONTEND_VARIANT GNU) +set(CMAKE_MT "") +set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") +set(CMAKE_COMPILER_IS_GNUCXX ) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm;ccm;cxxm;c++m) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang IN ITEMS C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) +set(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED ) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "4") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "i686-linux-android") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "i686-linux-android") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/i386;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") +set(CMAKE_CXX_COMPILER_CLANG_RESOURCE_DIR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18") + +set(CMAKE_CXX_COMPILER_IMPORT_STD "") +### Imported target for C++23 standard library +set(CMAKE_CXX23_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "Experimental `import std` support not enabled when detecting toolchain; it must be set before `CXX` is enabled (usually a `project()` call)") + + +### Imported target for C++26 standard library +set(CMAKE_CXX26_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "Experimental `import std` support not enabled when detecting toolchain; it must be set before `CXX` is enabled (usually a `project()` call)") + + + diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_C.bin b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000..2e5859d Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_C.bin differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_CXX.bin b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_CXX.bin new file mode 100755 index 0000000..ef0fae1 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_CXX.bin differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake new file mode 100644 index 0000000..4828e9f --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Darwin-24.5.0") +set(CMAKE_HOST_SYSTEM_NAME "Darwin") +set(CMAKE_HOST_SYSTEM_VERSION "24.5.0") +set(CMAKE_HOST_SYSTEM_PROCESSOR "arm64") + +include("/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake") + +set(CMAKE_SYSTEM "Android-1") +set(CMAKE_SYSTEM_NAME "Android") +set(CMAKE_SYSTEM_VERSION "1") +set(CMAKE_SYSTEM_PROCESSOR "i686") + +set(CMAKE_CROSSCOMPILING "TRUE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.c b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..8d8bb03 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,904 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) && defined(__ti__) +# define COMPILER_ID "TIClang" + # define COMPILER_VERSION_MAJOR DEC(__ti_major__) + # define COMPILER_VERSION_MINOR DEC(__ti_minor__) + # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) +# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__clang__) && defined(__ti__) +# if defined(__ARM_ARCH) +# define ARCHITECTURE_ID "Arm" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#define C_STD_99 199901L +#define C_STD_11 201112L +#define C_STD_17 201710L +#define C_STD_23 202311L + +#ifdef __STDC_VERSION__ +# define C_STD __STDC_VERSION__ +#endif + +#if !defined(__STDC__) && !defined(__clang__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif C_STD > C_STD_17 +# define C_VERSION "23" +#elif C_STD > C_STD_11 +# define C_VERSION "17" +#elif C_STD > C_STD_99 +# define C_VERSION "11" +#elif C_STD >= C_STD_99 +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.o b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.o new file mode 100644 index 0000000..5ee2b7b Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.o differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.cpp b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 0000000..da6c824 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,919 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) && defined(__ti__) +# define COMPILER_ID "TIClang" + # define COMPILER_VERSION_MAJOR DEC(__ti_major__) + # define COMPILER_VERSION_MINOR DEC(__ti_minor__) + # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) +# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__clang__) && defined(__ti__) +# if defined(__ARM_ARCH) +# define ARCHITECTURE_ID "Arm" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#define CXX_STD_98 199711L +#define CXX_STD_11 201103L +#define CXX_STD_14 201402L +#define CXX_STD_17 201703L +#define CXX_STD_20 202002L +#define CXX_STD_23 202302L + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) +# if _MSVC_LANG > CXX_STD_17 +# define CXX_STD _MSVC_LANG +# elif _MSVC_LANG == CXX_STD_17 && defined(__cpp_aggregate_paren_init) +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 && __cplusplus > CXX_STD_17 +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 +# define CXX_STD CXX_STD_17 +# elif defined(__INTEL_CXX11_MODE__) && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# elif defined(__INTEL_CXX11_MODE__) +# define CXX_STD CXX_STD_11 +# else +# define CXX_STD CXX_STD_98 +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# if _MSVC_LANG > __cplusplus +# define CXX_STD _MSVC_LANG +# else +# define CXX_STD __cplusplus +# endif +#elif defined(__NVCOMPILER) +# if __cplusplus == CXX_STD_17 && defined(__cpp_aggregate_paren_init) +# define CXX_STD CXX_STD_20 +# else +# define CXX_STD __cplusplus +# endif +#elif defined(__INTEL_COMPILER) || defined(__PGI) +# if __cplusplus == CXX_STD_11 && defined(__cpp_namespace_attributes) +# define CXX_STD CXX_STD_17 +# elif __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# else +# define CXX_STD __cplusplus +# endif +#elif (defined(__IBMCPP__) || defined(__ibmxl__)) && defined(__linux__) +# if __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# else +# define CXX_STD __cplusplus +# endif +#elif __cplusplus == 1 && defined(__GXX_EXPERIMENTAL_CXX0X__) +# define CXX_STD CXX_STD_11 +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_standard_default = "INFO" ":" "standard_default[" +#if CXX_STD > CXX_STD_23 + "26" +#elif CXX_STD > CXX_STD_20 + "23" +#elif CXX_STD > CXX_STD_17 + "20" +#elif CXX_STD > CXX_STD_14 + "17" +#elif CXX_STD > CXX_STD_11 + "14" +#elif CXX_STD >= CXX_STD_11 + "11" +#else + "98" +#endif +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.o b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.o new file mode 100644 index 0000000..8cfce58 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.o differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeConfigureLog.yaml b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeConfigureLog.yaml new file mode 100644 index 0000000..ab47680 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeConfigureLog.yaml @@ -0,0 +1,399 @@ + +--- +events: + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake:200 (message)" + - "CMakeLists.txt:2 (project)" + message: | + The target system is: Android - 1 - i686 + The host system is: Darwin - 24.5.0 - arm64 + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + message: | + Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. + Compiler: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang + Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-mstackrealign;-D_FORTIFY_SOURCE=2;-Wformat;-Werror=format-security + Id flags: -c;--target=i686-none-linux-android23 + + The output was: + 0 + + + Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + + The C compiler identification is Clang, found in: + /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.o + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake:126 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + message: | + Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. + Compiler: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ + Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-mstackrealign;-D_FORTIFY_SOURCE=2;-Wformat;-Werror=format-security + Id flags: -c;--target=i686-none-linux-android23 + + The output was: + 0 + + + Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + + The CXX compiler identification is Clang, found in: + /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.o + + - + kind: "try_compile-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:74 (try_compile)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + checks: + - "Detecting C compiler ABI info" + directories: + source: "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeScratch/TryCompile-8cXSRH" + binary: "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeScratch/TryCompile-8cXSRH" + cmakeVariables: + ANDROID_ABI: "x86" + ANDROID_ARM_MODE: "thumb" + ANDROID_PIE: "TRUE" + ANDROID_PLATFORM: "android-23" + ANDROID_STL: "c++_static" + ANDROID_TOOLCHAIN: "clang" + CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps" + CMAKE_CXX_COMPILER_TARGET: "i686-none-linux-android23" + CMAKE_C_COMPILER_TARGET: "i686-none-linux-android23" + CMAKE_C_FLAGS: "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat " + CMAKE_C_FLAGS_DEBUG: "-fno-limit-debug-info " + CMAKE_EXE_LINKER_FLAGS: "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments " + CMAKE_POSITION_INDEPENDENT_CODE: "TRUE" + CMAKE_SYSROOT: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot" + buildResult: + variable: "CMAKE_C_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeScratch/TryCompile-8cXSRH' + + Run Build Command(s): /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -v cmTC_572de + [1/2] /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=i686-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_572de.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_572de.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_572de.dir/CMakeCCompilerABI.c.o -c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c + Android (12027248, +pgo, -bolt, +lto, -mlgo, based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: i686-none-linux-android23 + Thread model: posix + InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin + (in-process) + "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang" -cc1 -triple i686-none-linux-android23 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu i686 -target-feature +ssse3 -tune-cpu generic -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeScratch/TryCompile-8cXSRH -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeScratch/TryCompile-8cXSRH -resource-dir /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_572de.dir/CMakeCCompilerABI.c.o.d -MT CMakeFiles/cmTC_572de.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -femulated-tls -stack-protector 2 -mstackrealign -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_572de.dir/CMakeCCompilerABI.c.o -x c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c + clang -cc1 version 18.0.1 based upon LLVM 18.0.1 default target x86_64-apple-darwin24.5.0 + ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include" + ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include" + #include "..." search starts here: + #include <...> search starts here: + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include + End of search list. + [2/2] : && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=i686-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -v CMakeFiles/cmTC_572de.dir/CMakeCCompilerABI.c.o -o cmTC_572de && : + Android (12027248, +pgo, -bolt, +lto, -mlgo, based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: i686-none-linux-android23 + Thread model: posix + InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin + "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -z now -z relro --hash-style=gnu --eh-frame-hdr -m elf_i386 -pie -dynamic-linker /system/bin/linker -o cmTC_572de /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtbegin_dynamic.o -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/i386 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_572de.dir/CMakeCCompilerABI.c.o /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a -l:libunwind.a -ldl -lc /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a -l:libunwind.a -ldl /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtend_android.o + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:182 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed C implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + implicit include dirs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:218 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed C implicit link information: + link line regex: [^( *|.*[/\\])(ld[0-9]*(\\.[a-z]+)?|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + linker tool regex: [^[ ]*(->|")?[ ]*(([^"]*[/\\])?(ld[0-9]*(\\.[a-z]+)?))("|,| |$)] + ignore line: [Change Dir: '/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeScratch/TryCompile-8cXSRH'] + ignore line: [] + ignore line: [Run Build Command(s): /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -v cmTC_572de] + ignore line: [[1/2] /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=i686-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_572de.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_572de.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_572de.dir/CMakeCCompilerABI.c.o -c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c] + ignore line: [Android (12027248 +pgo -bolt +lto -mlgo based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: i686-none-linux-android23] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin] + ignore line: [ (in-process)] + ignore line: [ "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang" -cc1 -triple i686-none-linux-android23 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu i686 -target-feature +ssse3 -tune-cpu generic -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeScratch/TryCompile-8cXSRH -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeScratch/TryCompile-8cXSRH -resource-dir /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_572de.dir/CMakeCCompilerABI.c.o.d -MT CMakeFiles/cmTC_572de.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -femulated-tls -stack-protector 2 -mstackrealign -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_572de.dir/CMakeCCompilerABI.c.o -x c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 18.0.1 based upon LLVM 18.0.1 default target x86_64-apple-darwin24.5.0] + ignore line: [ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] : && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=i686-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -static-libstdc++ -Wl --build-id=sha1 -Wl --no-rosegment -Wl --no-undefined-version -Wl --fatal-warnings -Wl --no-undefined -Qunused-arguments -v CMakeFiles/cmTC_572de.dir/CMakeCCompilerABI.c.o -o cmTC_572de && :] + ignore line: [Android (12027248 +pgo -bolt +lto -mlgo based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: i686-none-linux-android23] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin] + link line: [ "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -z now -z relro --hash-style=gnu --eh-frame-hdr -m elf_i386 -pie -dynamic-linker /system/bin/linker -o cmTC_572de /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtbegin_dynamic.o -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/i386 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_572de.dir/CMakeCCompilerABI.c.o /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a -l:libunwind.a -ldl -lc /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a -l:libunwind.a -ldl /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtend_android.o] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_i386] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker] ==> ignore + arg [-o] ==> ignore + arg [cmTC_572de] ==> ignore + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtbegin_dynamic.o] ==> obj [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtbegin_dynamic.o] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/i386] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/i386] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + arg [--build-id=sha1] ==> ignore + arg [--no-rosegment] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_572de.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a] ==> lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a] ==> lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtend_android.o] ==> obj [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtend_android.o] + linker tool for 'C': /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld + remove lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a] + remove lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/i386] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/i386] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + implicit libs: [-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtbegin_dynamic.o;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtend_android.o] + implicit dirs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/i386;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + implicit fwks: [] + + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake:40 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:255 (cmake_determine_linker_id)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Running the C compiler's linker: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" "-v" + LLD 18.0.1 (compatible with GNU linkers) + - + kind: "try_compile-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:74 (try_compile)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + checks: + - "Detecting CXX compiler ABI info" + directories: + source: "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeScratch/TryCompile-uZz6TR" + binary: "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeScratch/TryCompile-uZz6TR" + cmakeVariables: + ANDROID_ABI: "x86" + ANDROID_ARM_MODE: "thumb" + ANDROID_PIE: "TRUE" + ANDROID_PLATFORM: "android-23" + ANDROID_STL: "c++_static" + ANDROID_TOOLCHAIN: "clang" + CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps" + CMAKE_CXX_COMPILER_TARGET: "i686-none-linux-android23" + CMAKE_CXX_FLAGS: "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat " + CMAKE_CXX_FLAGS_DEBUG: "-fno-limit-debug-info " + CMAKE_CXX_SCAN_FOR_MODULES: "OFF" + CMAKE_C_COMPILER_TARGET: "i686-none-linux-android23" + CMAKE_EXE_LINKER_FLAGS: "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments " + CMAKE_POSITION_INDEPENDENT_CODE: "TRUE" + CMAKE_SYSROOT: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot" + buildResult: + variable: "CMAKE_CXX_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeScratch/TryCompile-uZz6TR' + + Run Build Command(s): /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -v cmTC_43f99 + [1/2] /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=i686-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_43f99.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_43f99.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_43f99.dir/CMakeCXXCompilerABI.cpp.o -c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp + Android (12027248, +pgo, -bolt, +lto, -mlgo, based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: i686-none-linux-android23 + Thread model: posix + InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin + (in-process) + "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++" -cc1 -triple i686-none-linux-android23 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu i686 -target-feature +ssse3 -tune-cpu generic -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeScratch/TryCompile-uZz6TR -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeScratch/TryCompile-uZz6TR -resource-dir /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_43f99.dir/CMakeCXXCompilerABI.cpp.o.d -MT CMakeFiles/cmTC_43f99.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1 -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -femulated-tls -stack-protector 2 -mstackrealign -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_43f99.dir/CMakeCXXCompilerABI.cpp.o -x c++ /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp + clang -cc1 version 18.0.1 based upon LLVM 18.0.1 default target x86_64-apple-darwin24.5.0 + ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include" + ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include" + #include "..." search starts here: + #include <...> search starts here: + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1 + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include + End of search list. + [2/2] : && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=i686-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -v CMakeFiles/cmTC_43f99.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_43f99 && : + Android (12027248, +pgo, -bolt, +lto, -mlgo, based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: i686-none-linux-android23 + Thread model: posix + InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin + "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -z now -z relro --hash-style=gnu --eh-frame-hdr -m elf_i386 -pie -dynamic-linker /system/bin/linker -o cmTC_43f99 /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtbegin_dynamic.o -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/i386 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_43f99.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -Bdynamic -lm /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a -l:libunwind.a -ldl -lc /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a -l:libunwind.a -ldl /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtend_android.o + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:182 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed CXX implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + implicit include dirs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:218 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed CXX implicit link information: + link line regex: [^( *|.*[/\\])(ld[0-9]*(\\.[a-z]+)?|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + linker tool regex: [^[ ]*(->|")?[ ]*(([^"]*[/\\])?(ld[0-9]*(\\.[a-z]+)?))("|,| |$)] + ignore line: [Change Dir: '/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeScratch/TryCompile-uZz6TR'] + ignore line: [] + ignore line: [Run Build Command(s): /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -v cmTC_43f99] + ignore line: [[1/2] /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=i686-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_43f99.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_43f99.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_43f99.dir/CMakeCXXCompilerABI.cpp.o -c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Android (12027248 +pgo -bolt +lto -mlgo based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: i686-none-linux-android23] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin] + ignore line: [ (in-process)] + ignore line: [ "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++" -cc1 -triple i686-none-linux-android23 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu i686 -target-feature +ssse3 -tune-cpu generic -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeScratch/TryCompile-uZz6TR -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/CMakeScratch/TryCompile-uZz6TR -resource-dir /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_43f99.dir/CMakeCXXCompilerABI.cpp.o.d -MT CMakeFiles/cmTC_43f99.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1 -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -femulated-tls -stack-protector 2 -mstackrealign -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_43f99.dir/CMakeCXXCompilerABI.cpp.o -x c++ /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 18.0.1 based upon LLVM 18.0.1 default target x86_64-apple-darwin24.5.0] + ignore line: [ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] : && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=i686-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -static-libstdc++ -Wl --build-id=sha1 -Wl --no-rosegment -Wl --no-undefined-version -Wl --fatal-warnings -Wl --no-undefined -Qunused-arguments -v CMakeFiles/cmTC_43f99.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_43f99 && :] + ignore line: [Android (12027248 +pgo -bolt +lto -mlgo based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: i686-none-linux-android23] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin] + link line: [ "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -z now -z relro --hash-style=gnu --eh-frame-hdr -m elf_i386 -pie -dynamic-linker /system/bin/linker -o cmTC_43f99 /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtbegin_dynamic.o -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/i386 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_43f99.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -Bdynamic -lm /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a -l:libunwind.a -ldl -lc /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a -l:libunwind.a -ldl /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtend_android.o] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_i386] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker] ==> ignore + arg [-o] ==> ignore + arg [cmTC_43f99] ==> ignore + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtbegin_dynamic.o] ==> obj [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtbegin_dynamic.o] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/i386] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/i386] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + arg [--build-id=sha1] ==> ignore + arg [--no-rosegment] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_43f99.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-Bstatic] ==> search static + arg [-lc++] ==> lib [c++] + arg [-Bdynamic] ==> search dynamic + arg [-lm] ==> lib [m] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a] ==> lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a] ==> lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtend_android.o] ==> obj [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtend_android.o] + linker tool for 'CXX': /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld + remove lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a] + remove lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-i686-android.a] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/i386] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/i386] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + implicit libs: [c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtbegin_dynamic.o;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/crtend_android.o] + implicit dirs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/i386;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + implicit fwks: [] + + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake:40 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:255 (cmake_determine_linker_id)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Running the CXX compiler's linker: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" "-v" + LLD 18.0.1 (compatible with GNU linkers) +... diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/TargetDirectories.txt b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..96fb34e --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/native-lib.dir +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/edit_cache.dir +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/rebuild_cache.dir diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/cmake.check_cache b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/native-lib.dir/native-lib.cpp.o b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/native-lib.dir/native-lib.cpp.o new file mode 100644 index 0000000..9522425 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/native-lib.dir/native-lib.cpp.o differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/rules.ninja b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/rules.ninja new file mode 100644 index 0000000..e1a9855 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/CMakeFiles/rules.ninja @@ -0,0 +1,66 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.31 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: intaleq_driver +# Configurations: Debug +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__native-lib_unscanned_Debug + depfile = $DEP_FILE + deps = gcc + command = ${LAUNCHER}${CODE_CHECK}/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=i686-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX shared library. + +rule CXX_SHARED_LIBRARY_LINKER__native-lib_Debug + depfile = $DEP_FILE + deps = gcc + command = $PRE_LINK && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=i686-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD + description = Linking CXX shared library $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake --regenerate-during-build -S/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp -B/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86 + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -t targets + description = All primary targets available: + diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/additional_project_files.txt b/android/app/.cxx/Debug/2j1f5m6a/x86/additional_project_files.txt new file mode 100644 index 0000000..e69de29 diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/android_gradle_build.json b/android/app/.cxx/Debug/2j1f5m6a/x86/android_gradle_build.json new file mode 100644 index 0000000..a2a7fa7 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/android_gradle_build.json @@ -0,0 +1,38 @@ +{ + "buildFiles": [ + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt" + ], + "cleanCommandsComponents": [ + [ + "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja", + "-C", + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86", + "clean" + ] + ], + "buildTargetsCommandComponents": [ + "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja", + "-C", + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86", + "{LIST_OF_TARGETS_TO_BUILD}" + ], + "libraries": { + "native-lib::@6890427a1f51a3e7e1df": { + "toolchain": "toolchain", + "abi": "x86", + "artifactName": "native-lib", + "output": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86/libnative-lib.so", + "runtimeFiles": [] + } + }, + "toolchains": { + "toolchain": { + "cCompilerExecutable": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld", + "cppCompilerExecutable": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld" + } + }, + "cFileExtensions": [], + "cppFileExtensions": [ + "cpp" + ] +} \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/android_gradle_build_mini.json b/android/app/.cxx/Debug/2j1f5m6a/x86/android_gradle_build_mini.json new file mode 100644 index 0000000..565cb25 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/android_gradle_build_mini.json @@ -0,0 +1,27 @@ +{ + "buildFiles": [ + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt" + ], + "cleanCommandsComponents": [ + [ + "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja", + "-C", + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86", + "clean" + ] + ], + "buildTargetsCommandComponents": [ + "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja", + "-C", + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86", + "{LIST_OF_TARGETS_TO_BUILD}" + ], + "libraries": { + "native-lib::@6890427a1f51a3e7e1df": { + "artifactName": "native-lib", + "abi": "x86", + "output": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86/libnative-lib.so", + "runtimeFiles": [] + } + } +} \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/build.ninja b/android/app/.cxx/Debug/2j1f5m6a/x86/build.ninja new file mode 100644 index 0000000..eb82922 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/build.ninja @@ -0,0 +1,156 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.31 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: intaleq_driver +# Configurations: Debug +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = Debug +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include CMakeFiles/rules.ninja + +# ============================================================================= + +############################################# +# Logical path to working directory; prefix for absolute paths. + +cmake_ninja_workdir = /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/ +# ============================================================================= +# Object build statements for SHARED_LIBRARY target native-lib + + +############################################# +# Order-only phony target for native-lib + +build cmake_object_order_depends_target_native-lib: phony || . + +build CMakeFiles/native-lib.dir/native-lib.cpp.o: CXX_COMPILER__native-lib_unscanned_Debug /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp || cmake_object_order_depends_target_native-lib + DEFINES = -Dnative_lib_EXPORTS + DEP_FILE = CMakeFiles/native-lib.dir/native-lib.cpp.o.d + FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info -fPIC + OBJECT_DIR = CMakeFiles/native-lib.dir + OBJECT_FILE_DIR = CMakeFiles/native-lib.dir + TARGET_COMPILE_PDB = CMakeFiles/native-lib.dir/ + TARGET_PDB = /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86/libnative-lib.pdb + + +# ============================================================================= +# Link build statements for SHARED_LIBRARY target native-lib + + +############################################# +# Link the shared library /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86/libnative-lib.so + +build /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86/libnative-lib.so: CXX_SHARED_LIBRARY_LINKER__native-lib_Debug CMakeFiles/native-lib.dir/native-lib.cpp.o | /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/liblog.so + DEP_FILE = CMakeFiles/native-lib.dir/link.d + LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info + LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -Xlinker --dependency-file=CMakeFiles/native-lib.dir/link.d + LINK_LIBRARIES = /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/23/liblog.so -latomic -lm + OBJECT_DIR = CMakeFiles/native-lib.dir + POST_BUILD = : + PRE_LINK = : + SONAME = libnative-lib.so + SONAME_FLAG = -Wl,-soname, + TARGET_COMPILE_PDB = CMakeFiles/native-lib.dir/ + TARGET_FILE = /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86/libnative-lib.so + TARGET_PDB = /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86/libnative-lib.pdb + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cd /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86 && /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ccmake -S/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp -B/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86 + DESC = Running CMake cache editor... + pool = console + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cd /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86 && /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake --regenerate-during-build -S/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp -B/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86 + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + +# ============================================================================= +# Target aliases. + +build libnative-lib.so: phony /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86/libnative-lib.so + +build native-lib: phony /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86/libnative-lib.so + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86 + +build all: phony /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86/libnative-lib.so + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeGenericSystem.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeInitializeConfigs.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystem.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInitialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Bruce-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX-CXXImportStd.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-FindBinUtils.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SDCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCXXLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android/Determine-Compiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/UnixPaths.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/abis.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android-legacy.toolchain.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/flags.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Determine.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Determine-Compiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/platforms.cmake /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt CMakeCache.txt CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeGenericSystem.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeInitializeConfigs.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystem.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInitialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Bruce-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX-CXXImportStd.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-FindBinUtils.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SDCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCXXLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android/Determine-Compiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/UnixPaths.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/abis.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android-legacy.toolchain.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/flags.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Determine.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Determine-Compiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/platforms.cmake /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt CMakeCache.txt CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/build_file_index.txt b/android/app/.cxx/Debug/2j1f5m6a/x86/build_file_index.txt new file mode 100644 index 0000000..b1ca0fa --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/build_file_index.txt @@ -0,0 +1 @@ +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/cmake_install.cmake b/android/app/.cxx/Debug/2j1f5m6a/x86/cmake_install.cmake new file mode 100644 index 0000000..e68de95 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/cmake_install.cmake @@ -0,0 +1,66 @@ +# Install script for directory: /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Debug") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "TRUE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() +if(CMAKE_INSTALL_COMPONENT) + if(CMAKE_INSTALL_COMPONENT MATCHES "^[a-zA-Z0-9_.+-]+$") + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") + else() + string(MD5 CMAKE_INST_COMP_HASH "${CMAKE_INSTALL_COMPONENT}") + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INST_COMP_HASH}.txt") + unset(CMAKE_INST_COMP_HASH) + endif() +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +if(NOT CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/compile_commands.json b/android/app/.cxx/Debug/2j1f5m6a/x86/compile_commands.json new file mode 100644 index 0000000..a59621a --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/compile_commands.json @@ -0,0 +1,8 @@ +[ +{ + "directory": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86", + "command": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=i686-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dnative_lib_EXPORTS -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info -fPIC -o CMakeFiles/native-lib.dir/native-lib.cpp.o -c /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp", + "file": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp", + "output": "CMakeFiles/native-lib.dir/native-lib.cpp.o" +} +] \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/compile_commands.json.bin b/android/app/.cxx/Debug/2j1f5m6a/x86/compile_commands.json.bin new file mode 100644 index 0000000..dff1ed7 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/x86/compile_commands.json.bin differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/configure_fingerprint.bin b/android/app/.cxx/Debug/2j1f5m6a/x86/configure_fingerprint.bin new file mode 100644 index 0000000..a6e015e --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/configure_fingerprint.bin @@ -0,0 +1,29 @@ +C/C++ Structured Log} +{ +y/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/additional_project_files.txtC +A +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¢¡¹™„3  êä“Ó3z +x +v/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/android_gradle_build.json  ¢¡¹™„3é + ”å“Ó3 +} +{/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/android_gradle_build_mini.json  ¢¡¹™„3« å“Ó3l +j +h/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/build.ninja  ¢¡¹™„3ù£ Éä“Ó3p +n +l/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/build.ninja.txt  ¢¡¹™„3u +s +q/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/build_file_index.txt  ¢¡¹™„3 ` ¨å“Ó3v +t +r/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/compile_commands.json  ¢¡¹™„3· Éä“Ó3z +x +v/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/compile_commands.json.bin  ¢¡¹™„3 × Éä“Ó3€ +~ +|/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/metadata_generation_command.txt  ¢¡¹™„3 +ô ¨å“Ó3s +q +o/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/prefab_config.json  ¢¡¹™„3  ( ¨å“Ó3x +v +t/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86/symbol_folder_index.txt  ¢¡¹™„3  k ¨å“Ó3d +b +`/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt  ¢¡¹™„3  ¿åŠÿ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/metadata_generation_command.txt b/android/app/.cxx/Debug/2j1f5m6a/x86/metadata_generation_command.txt new file mode 100644 index 0000000..bbe55e2 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/metadata_generation_command.txt @@ -0,0 +1,18 @@ + -H/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp +-DCMAKE_SYSTEM_NAME=Android +-DCMAKE_EXPORT_COMPILE_COMMANDS=ON +-DCMAKE_SYSTEM_VERSION=23 +-DANDROID_PLATFORM=android-23 +-DANDROID_ABI=x86 +-DCMAKE_ANDROID_ARCH_ABI=x86 +-DANDROID_NDK=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973 +-DCMAKE_ANDROID_NDK=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973 +-DCMAKE_TOOLCHAIN_FILE=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake +-DCMAKE_MAKE_PROGRAM=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja +-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86 +-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86 +-DCMAKE_BUILD_TYPE=Debug +-B/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86 +-GNinja + Build command args: [] + Version: 2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/prefab_config.json b/android/app/.cxx/Debug/2j1f5m6a/x86/prefab_config.json new file mode 100644 index 0000000..e799de8 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/prefab_config.json @@ -0,0 +1,4 @@ +{ + "enabled": false, + "packages": [] +} \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86/symbol_folder_index.txt b/android/app/.cxx/Debug/2j1f5m6a/x86/symbol_folder_index.txt new file mode 100644 index 0000000..d421041 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86/symbol_folder_index.txt @@ -0,0 +1 @@ +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86 \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/query/client-agp/cache-v2 b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/query/client-agp/cache-v2 new file mode 100644 index 0000000..e69de29 diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/query/client-agp/cmakeFiles-v1 new file mode 100644 index 0000000..e69de29 diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/query/client-agp/codemodel-v2 b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/query/client-agp/codemodel-v2 new file mode 100644 index 0000000..e69de29 diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/cache-v2-771f0baf8c720e50ed5a.json b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/cache-v2-771f0baf8c720e50ed5a.json new file mode 100644 index 0000000..f5413f0 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/cache-v2-771f0baf8c720e50ed5a.json @@ -0,0 +1,1479 @@ +{ + "entries" : + [ + { + "name" : "ANDROID_ABI", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "x86_64" + }, + { + "name" : "ANDROID_NDK", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973" + }, + { + "name" : "ANDROID_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "android-23" + }, + { + "name" : "CMAKE_ADDR2LINE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line" + }, + { + "name" : "CMAKE_ANDROID_ARCH_ABI", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "x86_64" + }, + { + "name" : "CMAKE_ANDROID_NDK", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973" + }, + { + "name" : "CMAKE_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Archiver" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar" + }, + { + "name" : "CMAKE_ASM_FLAGS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_ASM_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_ASM_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_BUILD_TYPE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..." + } + ], + "type" : "STRING", + "value" : "Debug" + }, + { + "name" : "CMAKE_CACHEFILE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "This is the directory where this CMakeCache.txt was created" + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64" + }, + { + "name" : "CMAKE_CACHE_MAJOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Major version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "3" + }, + { + "name" : "CMAKE_CACHE_MINOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Minor version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "31" + }, + { + "name" : "CMAKE_CACHE_PATCH_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Patch version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "5" + }, + { + "name" : "CMAKE_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake executable." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake" + }, + { + "name" : "CMAKE_CPACK_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cpack program executable." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cpack" + }, + { + "name" : "CMAKE_CTEST_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to ctest program executable." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ctest" + }, + { + "name" : "CMAKE_CXX_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "" + } + ], + "type" : "UNINITIALIZED", + "value" : "" + }, + { + "name" : "CMAKE_CXX_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "LLVM archiver" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar" + }, + { + "name" : "CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "`clang-scan-deps` dependency scanner" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps" + }, + { + "name" : "CMAKE_CXX_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Generate index for LLVM archive" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib" + }, + { + "name" : "CMAKE_CXX_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_STANDARD_LIBRARIES", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Libraries linked by default with all C++ applications." + } + ], + "type" : "STRING", + "value" : "-latomic -lm" + }, + { + "name" : "CMAKE_C_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "" + } + ], + "type" : "UNINITIALIZED", + "value" : "" + }, + { + "name" : "CMAKE_C_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "LLVM archiver" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar" + }, + { + "name" : "CMAKE_C_COMPILER_CLANG_SCAN_DEPS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "`clang-scan-deps` dependency scanner" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps" + }, + { + "name" : "CMAKE_C_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Generate index for LLVM archive" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib" + }, + { + "name" : "CMAKE_C_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during debug builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_C_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the compiler during release builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_C_STANDARD_LIBRARIES", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Libraries linked by default with all C applications." + } + ], + "type" : "STRING", + "value" : "-latomic -lm" + }, + { + "name" : "CMAKE_DLLTOOL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-dlltool" + }, + { + "name" : "CMAKE_EDIT_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cache edit program executable." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ccmake" + }, + { + "name" : "CMAKE_EXECUTABLE_FORMAT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Executable file format" + } + ], + "type" : "INTERNAL", + "value" : "ELF" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXPORT_BUILD_DATABASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Enable/Disable output of build database during the build." + } + ], + "type" : "BOOL", + "value" : "" + }, + { + "name" : "CMAKE_EXPORT_COMPILE_COMMANDS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "ON" + }, + { + "name" : "CMAKE_EXTRA_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of external makefile project generator." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_FIND_PACKAGE_REDIRECTS_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake." + } + ], + "type" : "STATIC", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/pkgRedirects" + }, + { + "name" : "CMAKE_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator." + } + ], + "type" : "INTERNAL", + "value" : "Ninja" + }, + { + "name" : "CMAKE_GENERATOR_INSTANCE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Generator instance identifier." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator platform." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_TOOLSET", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator toolset." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_HOME_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Source directory with the top level CMakeLists.txt file for this project" + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp" + }, + { + "name" : "CMAKE_INSTALL_PREFIX", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install path prefix, prepended onto install directories." + } + ], + "type" : "PATH", + "value" : "/usr/local" + }, + { + "name" : "CMAKE_INSTALL_SO_NO_EXE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install .so files without execute permission." + } + ], + "type" : "INTERNAL", + "value" : "0" + }, + { + "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64" + }, + { + "name" : "CMAKE_LINKER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" + }, + { + "name" : "CMAKE_MAKE_PROGRAM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_NM", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm" + }, + { + "name" : "CMAKE_NUMBER_OF_MAKEFILES", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "number of local generators" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_OBJCOPY", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy" + }, + { + "name" : "CMAKE_OBJDUMP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump" + }, + { + "name" : "CMAKE_PLATFORM_INFO_INITIALIZED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Platform information initialized" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_PROJECT_DESCRIPTION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_HOMEPAGE_URL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "intaleq_driver" + }, + { + "name" : "CMAKE_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Ranlib" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib" + }, + { + "name" : "CMAKE_READELF", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf" + }, + { + "name" : "CMAKE_ROOT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake installation." + } + ], + "type" : "INTERNAL", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31" + }, + { + "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of dll's." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SKIP_INSTALL_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_SKIP_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when using shared libraries." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STRIP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Strip" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip" + }, + { + "name" : "CMAKE_SYSTEM_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "Android" + }, + { + "name" : "CMAKE_SYSTEM_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "23" + }, + { + "name" : "CMAKE_TAPI", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "CMAKE_TAPI-NOTFOUND" + }, + { + "name" : "CMAKE_TOOLCHAIN_FILE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "The CMake toolchain file" + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" + }, + { + "name" : "CMAKE_UNAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "uname command" + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/uname" + }, + { + "name" : "CMAKE_VERBOSE_MAKEFILE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo." + } + ], + "type" : "BOOL", + "value" : "FALSE" + }, + { + "name" : "_CMAKE_CXX_LINKER_PUSHPOP_STATE_SUPPORTED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "linker supports push/pop state" + } + ], + "type" : "INTERNAL", + "value" : "TRUE" + }, + { + "name" : "_CMAKE_C_LINKER_PUSHPOP_STATE_SUPPORTED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "linker supports push/pop state" + } + ], + "type" : "INTERNAL", + "value" : "TRUE" + }, + { + "name" : "_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "linker supports push/pop state" + } + ], + "type" : "INTERNAL", + "value" : "TRUE" + }, + { + "name" : "intaleq_driver_BINARY_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64" + }, + { + "name" : "intaleq_driver_IS_TOP_LEVEL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "ON" + }, + { + "name" : "intaleq_driver_SOURCE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp" + }, + { + "name" : "log-lib", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to a library." + } + ], + "type" : "FILEPATH", + "value" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/liblog.so" + }, + { + "name" : "native-lib_LIB_DEPENDS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Dependencies for the target" + } + ], + "type" : "STATIC", + "value" : "general;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/liblog.so;" + } + ], + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/cmakeFiles-v1-39d23928757c5570536f.json b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/cmakeFiles-v1-39d23928757c5570536f.json new file mode 100644 index 0000000..d4cb0f4 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/cmakeFiles-v1-39d23928757c5570536f.json @@ -0,0 +1,968 @@ +{ + "inputs" : + [ + { + "path" : "CMakeLists.txt" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android-legacy.toolchain.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/abis.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/platforms.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Determine.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystem.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInitialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Initialize.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Initialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux-Initialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android/Determine-Compiler.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Determine-Compiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android/Determine-Compiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeGenericSystem.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeInitializeConfigs.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/UnixPaths.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Clang.cmake" + }, + { + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/flags.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCLinkerInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX-CXXImportStd.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX-CXXImportStd.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCXXLinkerInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD.cmake" + } + ], + "kind" : "cmakeFiles", + "paths" : + { + "build" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64", + "source" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp" + }, + "version" : + { + "major" : 1, + "minor" : 1 + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/codemodel-v2-06be0ac352f74f4237d3.json b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/codemodel-v2-06be0ac352f74f4237d3.json new file mode 100644 index 0000000..dcb7096 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/codemodel-v2-06be0ac352f74f4237d3.json @@ -0,0 +1,60 @@ +{ + "configurations" : + [ + { + "directories" : + [ + { + "build" : ".", + "jsonFile" : "directory-.-Debug-f5ebdc15457944623624.json", + "minimumCMakeVersion" : + { + "string" : "3.6.0" + }, + "projectIndex" : 0, + "source" : ".", + "targetIndexes" : + [ + 0 + ] + } + ], + "name" : "Debug", + "projects" : + [ + { + "directoryIndexes" : + [ + 0 + ], + "name" : "intaleq_driver", + "targetIndexes" : + [ + 0 + ] + } + ], + "targets" : + [ + { + "directoryIndex" : 0, + "id" : "native-lib::@6890427a1f51a3e7e1df", + "jsonFile" : "target-native-lib-Debug-e2206948ef59b6eac031.json", + "name" : "native-lib", + "projectIndex" : 0 + } + ] + } + ], + "kind" : "codemodel", + "paths" : + { + "build" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64", + "source" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp" + }, + "version" : + { + "major" : 2, + "minor" : 7 + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json new file mode 100644 index 0000000..3a67af9 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json @@ -0,0 +1,14 @@ +{ + "backtraceGraph" : + { + "commands" : [], + "files" : [], + "nodes" : [] + }, + "installers" : [], + "paths" : + { + "build" : ".", + "source" : "." + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/index-2025-07-17T21-58-02-0463.json b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/index-2025-07-17T21-58-02-0463.json new file mode 100644 index 0000000..23a9e59 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/index-2025-07-17T21-58-02-0463.json @@ -0,0 +1,92 @@ +{ + "cmake" : + { + "generator" : + { + "multiConfig" : false, + "name" : "Ninja" + }, + "paths" : + { + "cmake" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake", + "cpack" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cpack", + "ctest" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ctest", + "root" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31" + }, + "version" : + { + "isDirty" : false, + "major" : 3, + "minor" : 31, + "patch" : 5, + "string" : "3.31.5-g6cf5163", + "suffix" : "g6cf5163" + } + }, + "objects" : + [ + { + "jsonFile" : "codemodel-v2-06be0ac352f74f4237d3.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 7 + } + }, + { + "jsonFile" : "cache-v2-771f0baf8c720e50ed5a.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "jsonFile" : "cmakeFiles-v1-39d23928757c5570536f.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 1 + } + } + ], + "reply" : + { + "client-agp" : + { + "cache-v2" : + { + "jsonFile" : "cache-v2-771f0baf8c720e50ed5a.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + "cmakeFiles-v1" : + { + "jsonFile" : "cmakeFiles-v1-39d23928757c5570536f.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 1 + } + }, + "codemodel-v2" : + { + "jsonFile" : "codemodel-v2-06be0ac352f74f4237d3.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 7 + } + } + } + } +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/target-native-lib-Debug-e2206948ef59b6eac031.json b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/target-native-lib-Debug-e2206948ef59b6eac031.json new file mode 100644 index 0000000..06d73eb --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.cmake/api/v1/reply/target-native-lib-Debug-e2206948ef59b6eac031.json @@ -0,0 +1,117 @@ +{ + "artifacts" : + [ + { + "path" : "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64/libnative-lib.so" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "add_library", + "target_link_libraries" + ], + "files" : + [ + "CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 5, + "parent" : 0 + }, + { + "command" : 1, + "file" : 0, + "line" : 11, + "parent" : 0 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info -fPIC" + } + ], + "defines" : + [ + { + "define" : "native_lib_EXPORTS" + } + ], + "language" : "CXX", + "sourceIndexes" : + [ + 0 + ], + "sysroot" : + { + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot" + } + } + ], + "id" : "native-lib::@6890427a1f51a3e7e1df", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments", + "role" : "flags" + }, + { + "backtrace" : 2, + "fragment" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/liblog.so", + "role" : "libraries" + }, + { + "fragment" : "-latomic -lm", + "role" : "libraries" + } + ], + "language" : "CXX", + "sysroot" : + { + "path" : "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot" + } + }, + "name" : "native-lib", + "nameOnDisk" : "libnative-lib.so", + "paths" : + { + "build" : ".", + "source" : "." + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "native-lib.cpp", + "sourceGroupIndex" : 0 + } + ], + "type" : "SHARED_LIBRARY" +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/.ninja_deps b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.ninja_deps new file mode 100644 index 0000000..a60afb1 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.ninja_deps differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/.ninja_log b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.ninja_log new file mode 100644 index 0000000..edd0959 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/.ninja_log @@ -0,0 +1,3 @@ +# ninja log v5 +0 550 1752789483238049006 CMakeFiles/native-lib.dir/native-lib.cpp.o 75a6d4f17b7a4c7a +551 602 1752789483289322466 /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64/libnative-lib.so 5eebecc4be8fe296 diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeCache.txt b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeCache.txt new file mode 100644 index 0000000..066fcfd --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeCache.txt @@ -0,0 +1,430 @@ +# This is the CMakeCache file. +# For build in directory: /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64 +# It was generated by CMake: /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//No help, variable specified on the command line. +ANDROID_ABI:UNINITIALIZED=x86_64 + +//No help, variable specified on the command line. +ANDROID_NDK:UNINITIALIZED=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973 + +//No help, variable specified on the command line. +ANDROID_PLATFORM:UNINITIALIZED=android-23 + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line + +//No help, variable specified on the command line. +CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=x86_64 + +//No help, variable specified on the command line. +CMAKE_ANDROID_NDK:UNINITIALIZED=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973 + +//Archiver +CMAKE_AR:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar + +//Flags used by the compiler during all build types. +CMAKE_ASM_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_ASM_FLAGS_DEBUG:STRING= + +//Flags used by the compiler during release builds. +CMAKE_ASM_FLAGS_RELEASE:STRING= + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Debug + +//LLVM archiver +CMAKE_CXX_COMPILER_AR:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar + +//`clang-scan-deps` dependency scanner +CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps + +//Generate index for LLVM archive +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib + +//Flags used by the compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_CXX_FLAGS_DEBUG:STRING= + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_CXX_FLAGS_RELEASE:STRING= + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C++ applications. +CMAKE_CXX_STANDARD_LIBRARIES:STRING=-latomic -lm + +//LLVM archiver +CMAKE_C_COMPILER_AR:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar + +//`clang-scan-deps` dependency scanner +CMAKE_C_COMPILER_CLANG_SCAN_DEPS:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps + +//Generate index for LLVM archive +CMAKE_C_COMPILER_RANLIB:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib + +//Flags used by the compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_C_FLAGS_DEBUG:STRING= + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_C_FLAGS_RELEASE:STRING= + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C applications. +CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-dlltool + +//Flags used by the linker. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of build database during the build. +CMAKE_EXPORT_BUILD_DATABASE:BOOL= + +//No help, variable specified on the command line. +CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON + +//Value Computed by CMake. +CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/pkgRedirects + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//No help, variable specified on the command line. +CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64 + +//Path to a program. +CMAKE_LINKER:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld + +//No help, variable specified on the command line. +CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja + +//Flags used by the linker during the creation of modules. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=intaleq_driver + +//Ranlib +CMAKE_RANLIB:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf + +//No help, variable specified on the command line. +CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64 + +//Flags used by the linker during the creation of dll's. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Strip +CMAKE_STRIP:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip + +//No help, variable specified on the command line. +CMAKE_SYSTEM_NAME:UNINITIALIZED=Android + +//No help, variable specified on the command line. +CMAKE_SYSTEM_VERSION:UNINITIALIZED=23 + +//Path to a program. +CMAKE_TAPI:FILEPATH=CMAKE_TAPI-NOTFOUND + +//The CMake toolchain file +CMAKE_TOOLCHAIN_FILE:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Value Computed by CMake +intaleq_driver_BINARY_DIR:STATIC=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64 + +//Value Computed by CMake +intaleq_driver_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +intaleq_driver_SOURCE_DIR:STATIC=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp + +//Path to a library. +log-lib:FILEPATH=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/liblog.so + +//Dependencies for the target +native-lib_LIB_DEPENDS:STATIC=general;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/liblog.so; + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64 +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=31 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=5 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS +CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_STANDARD_LIBRARIES +CMAKE_CXX_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_CLANG_SCAN_DEPS +CMAKE_C_COMPILER_CLANG_SCAN_DEPS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES +CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ccmake +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_BUILD_DATABASE +CMAKE_EXPORT_BUILD_DATABASE-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_TAPI +CMAKE_TAPI-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//linker supports push/pop state +_CMAKE_CXX_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE +//linker supports push/pop state +_CMAKE_C_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE +//linker supports push/pop state +_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE + diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake new file mode 100644 index 0000000..a598563 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake @@ -0,0 +1,81 @@ +set(CMAKE_C_COMPILER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "Clang") +set(CMAKE_C_COMPILER_VERSION "18.0.1") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_C_STANDARD_LATEST "23") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar") +set(CMAKE_C_COMPILER_AR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar") +set(CMAKE_RANLIB "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib") +set(CMAKE_C_COMPILER_RANLIB "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib") +set(CMAKE_LINKER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_C_COMPILER_LINKER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld") +set(CMAKE_C_COMPILER_LINKER_ID "LLD") +set(CMAKE_C_COMPILER_LINKER_VERSION 18.0.1) +set(CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT GNU) +set(CMAKE_MT "") +set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) +set(CMAKE_C_LINKER_DEPFILE_SUPPORTED ) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "x86_64-linux-android") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-android") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/x86_64;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake new file mode 100644 index 0000000..84c10ac --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake @@ -0,0 +1,105 @@ +set(CMAKE_CXX_COMPILER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "Clang") +set(CMAKE_CXX_COMPILER_VERSION "18.0.1") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_CXX_STANDARD_LATEST "26") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23;cxx_std_26") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") +set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") +set(CMAKE_CXX26_COMPILE_FEATURES "cxx_std_26") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar") +set(CMAKE_CXX_COMPILER_AR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar") +set(CMAKE_RANLIB "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib") +set(CMAKE_LINKER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_CXX_COMPILER_LINKER "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld") +set(CMAKE_CXX_COMPILER_LINKER_ID "LLD") +set(CMAKE_CXX_COMPILER_LINKER_VERSION 18.0.1) +set(CMAKE_CXX_COMPILER_LINKER_FRONTEND_VARIANT GNU) +set(CMAKE_MT "") +set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") +set(CMAKE_COMPILER_IS_GNUCXX ) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm;ccm;cxxm;c++m) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang IN ITEMS C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) +set(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED ) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-android") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-android") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/x86_64;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") +set(CMAKE_CXX_COMPILER_CLANG_RESOURCE_DIR "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18") + +set(CMAKE_CXX_COMPILER_IMPORT_STD "") +### Imported target for C++23 standard library +set(CMAKE_CXX23_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "Experimental `import std` support not enabled when detecting toolchain; it must be set before `CXX` is enabled (usually a `project()` call)") + + +### Imported target for C++26 standard library +set(CMAKE_CXX26_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "Experimental `import std` support not enabled when detecting toolchain; it must be set before `CXX` is enabled (usually a `project()` call)") + + + diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_C.bin b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000..25c7540 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_C.bin differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_CXX.bin b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_CXX.bin new file mode 100755 index 0000000..931569c Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeDetermineCompilerABI_CXX.bin differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake new file mode 100644 index 0000000..1f3c05c --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Darwin-24.5.0") +set(CMAKE_HOST_SYSTEM_NAME "Darwin") +set(CMAKE_HOST_SYSTEM_VERSION "24.5.0") +set(CMAKE_HOST_SYSTEM_PROCESSOR "arm64") + +include("/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake") + +set(CMAKE_SYSTEM "Android-1") +set(CMAKE_SYSTEM_NAME "Android") +set(CMAKE_SYSTEM_VERSION "1") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "TRUE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.c b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..8d8bb03 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,904 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) && defined(__ti__) +# define COMPILER_ID "TIClang" + # define COMPILER_VERSION_MAJOR DEC(__ti_major__) + # define COMPILER_VERSION_MINOR DEC(__ti_minor__) + # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) +# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__clang__) && defined(__ti__) +# if defined(__ARM_ARCH) +# define ARCHITECTURE_ID "Arm" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#define C_STD_99 199901L +#define C_STD_11 201112L +#define C_STD_17 201710L +#define C_STD_23 202311L + +#ifdef __STDC_VERSION__ +# define C_STD __STDC_VERSION__ +#endif + +#if !defined(__STDC__) && !defined(__clang__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif C_STD > C_STD_17 +# define C_VERSION "23" +#elif C_STD > C_STD_11 +# define C_VERSION "17" +#elif C_STD > C_STD_99 +# define C_VERSION "11" +#elif C_STD >= C_STD_99 +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.o b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.o new file mode 100644 index 0000000..d39c089 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.o differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.cpp b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 0000000..da6c824 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,919 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) && defined(__ti__) +# define COMPILER_ID "TIClang" + # define COMPILER_VERSION_MAJOR DEC(__ti_major__) + # define COMPILER_VERSION_MINOR DEC(__ti_minor__) + # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) +# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__clang__) && defined(__ti__) +# if defined(__ARM_ARCH) +# define ARCHITECTURE_ID "Arm" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#define CXX_STD_98 199711L +#define CXX_STD_11 201103L +#define CXX_STD_14 201402L +#define CXX_STD_17 201703L +#define CXX_STD_20 202002L +#define CXX_STD_23 202302L + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) +# if _MSVC_LANG > CXX_STD_17 +# define CXX_STD _MSVC_LANG +# elif _MSVC_LANG == CXX_STD_17 && defined(__cpp_aggregate_paren_init) +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 && __cplusplus > CXX_STD_17 +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 +# define CXX_STD CXX_STD_17 +# elif defined(__INTEL_CXX11_MODE__) && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# elif defined(__INTEL_CXX11_MODE__) +# define CXX_STD CXX_STD_11 +# else +# define CXX_STD CXX_STD_98 +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# if _MSVC_LANG > __cplusplus +# define CXX_STD _MSVC_LANG +# else +# define CXX_STD __cplusplus +# endif +#elif defined(__NVCOMPILER) +# if __cplusplus == CXX_STD_17 && defined(__cpp_aggregate_paren_init) +# define CXX_STD CXX_STD_20 +# else +# define CXX_STD __cplusplus +# endif +#elif defined(__INTEL_COMPILER) || defined(__PGI) +# if __cplusplus == CXX_STD_11 && defined(__cpp_namespace_attributes) +# define CXX_STD CXX_STD_17 +# elif __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# else +# define CXX_STD __cplusplus +# endif +#elif (defined(__IBMCPP__) || defined(__ibmxl__)) && defined(__linux__) +# if __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# else +# define CXX_STD __cplusplus +# endif +#elif __cplusplus == 1 && defined(__GXX_EXPERIMENTAL_CXX0X__) +# define CXX_STD CXX_STD_11 +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_standard_default = "INFO" ":" "standard_default[" +#if CXX_STD > CXX_STD_23 + "26" +#elif CXX_STD > CXX_STD_20 + "23" +#elif CXX_STD > CXX_STD_17 + "20" +#elif CXX_STD > CXX_STD_14 + "17" +#elif CXX_STD > CXX_STD_11 + "14" +#elif CXX_STD >= CXX_STD_11 + "11" +#else + "98" +#endif +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.o b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.o new file mode 100644 index 0000000..3cd2bbe Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.o differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeConfigureLog.yaml b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeConfigureLog.yaml new file mode 100644 index 0000000..e230e03 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeConfigureLog.yaml @@ -0,0 +1,399 @@ + +--- +events: + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake:200 (message)" + - "CMakeLists.txt:2 (project)" + message: | + The target system is: Android - 1 - x86_64 + The host system is: Darwin - 24.5.0 - arm64 + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + message: | + Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. + Compiler: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang + Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-D_FORTIFY_SOURCE=2;-Wformat;-Werror=format-security + Id flags: -c;--target=x86_64-none-linux-android23 + + The output was: + 0 + + + Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + + The C compiler identification is Clang, found in: + /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CompilerIdC/CMakeCCompilerId.o + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake:126 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + message: | + Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. + Compiler: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ + Build flags: -g;-DANDROID;-fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-D_FORTIFY_SOURCE=2;-Wformat;-Werror=format-security + Id flags: -c;--target=x86_64-none-linux-android23 + + The output was: + 0 + + + Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + + The CXX compiler identification is Clang, found in: + /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/3.31.5-g6cf5163/CompilerIdCXX/CMakeCXXCompilerId.o + + - + kind: "try_compile-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:74 (try_compile)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + checks: + - "Detecting C compiler ABI info" + directories: + source: "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeScratch/TryCompile-cpoM8o" + binary: "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeScratch/TryCompile-cpoM8o" + cmakeVariables: + ANDROID_ABI: "x86_64" + ANDROID_ARM_MODE: "thumb" + ANDROID_PIE: "TRUE" + ANDROID_PLATFORM: "android-23" + ANDROID_STL: "c++_static" + ANDROID_TOOLCHAIN: "clang" + CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps" + CMAKE_CXX_COMPILER_TARGET: "x86_64-none-linux-android23" + CMAKE_C_COMPILER_TARGET: "x86_64-none-linux-android23" + CMAKE_C_FLAGS: "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat " + CMAKE_C_FLAGS_DEBUG: "-fno-limit-debug-info " + CMAKE_EXE_LINKER_FLAGS: "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments " + CMAKE_POSITION_INDEPENDENT_CODE: "TRUE" + CMAKE_SYSROOT: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot" + buildResult: + variable: "CMAKE_C_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeScratch/TryCompile-cpoM8o' + + Run Build Command(s): /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -v cmTC_2ca30 + [1/2] /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=x86_64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_2ca30.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_2ca30.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_2ca30.dir/CMakeCCompilerABI.c.o -c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c + Android (12027248, +pgo, -bolt, +lto, -mlgo, based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: x86_64-none-linux-android23 + Thread model: posix + InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin + (in-process) + "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang" -cc1 -triple x86_64-none-linux-android23 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -target-feature +sse4.2 -target-feature +popcnt -target-feature +cx16 -tune-cpu generic -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeScratch/TryCompile-cpoM8o -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeScratch/TryCompile-cpoM8o -resource-dir /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_2ca30.dir/CMakeCCompilerABI.c.o.d -MT CMakeFiles/cmTC_2ca30.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -femulated-tls -stack-protector 2 -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_2ca30.dir/CMakeCCompilerABI.c.o -x c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c + clang -cc1 version 18.0.1 based upon LLVM 18.0.1 default target x86_64-apple-darwin24.5.0 + ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include" + ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include" + #include "..." search starts here: + #include <...> search starts here: + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include + End of search list. + [2/2] : && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=x86_64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -v CMakeFiles/cmTC_2ca30.dir/CMakeCCompilerABI.c.o -o cmTC_2ca30 && : + Android (12027248, +pgo, -bolt, +lto, -mlgo, based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: x86_64-none-linux-android23 + Thread model: posix + InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin + "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -z now -z relro --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -pie -dynamic-linker /system/bin/linker64 -o cmTC_2ca30 /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtbegin_dynamic.o -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/x86_64 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_2ca30.dir/CMakeCCompilerABI.c.o /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a -l:libunwind.a -ldl -lc /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a -l:libunwind.a -ldl /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtend_android.o + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:182 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed C implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + implicit include dirs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:218 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed C implicit link information: + link line regex: [^( *|.*[/\\])(ld[0-9]*(\\.[a-z]+)?|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + linker tool regex: [^[ ]*(->|")?[ ]*(([^"]*[/\\])?(ld[0-9]*(\\.[a-z]+)?))("|,| |$)] + ignore line: [Change Dir: '/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeScratch/TryCompile-cpoM8o'] + ignore line: [] + ignore line: [Run Build Command(s): /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -v cmTC_2ca30] + ignore line: [[1/2] /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=x86_64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_2ca30.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_2ca30.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_2ca30.dir/CMakeCCompilerABI.c.o -c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c] + ignore line: [Android (12027248 +pgo -bolt +lto -mlgo based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: x86_64-none-linux-android23] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin] + ignore line: [ (in-process)] + ignore line: [ "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang" -cc1 -triple x86_64-none-linux-android23 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -target-feature +sse4.2 -target-feature +popcnt -target-feature +cx16 -tune-cpu generic -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeScratch/TryCompile-cpoM8o -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeScratch/TryCompile-cpoM8o -resource-dir /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_2ca30.dir/CMakeCCompilerABI.c.o.d -MT CMakeFiles/cmTC_2ca30.dir/CMakeCCompilerABI.c.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include -Wformat -ferror-limit 19 -femulated-tls -stack-protector 2 -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_2ca30.dir/CMakeCCompilerABI.c.o -x c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 18.0.1 based upon LLVM 18.0.1 default target x86_64-apple-darwin24.5.0] + ignore line: [ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] : && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=x86_64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -static-libstdc++ -Wl --build-id=sha1 -Wl --no-rosegment -Wl --no-undefined-version -Wl --fatal-warnings -Wl --no-undefined -Qunused-arguments -v CMakeFiles/cmTC_2ca30.dir/CMakeCCompilerABI.c.o -o cmTC_2ca30 && :] + ignore line: [Android (12027248 +pgo -bolt +lto -mlgo based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: x86_64-none-linux-android23] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin] + link line: [ "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -z now -z relro --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -pie -dynamic-linker /system/bin/linker64 -o cmTC_2ca30 /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtbegin_dynamic.o -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/x86_64 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_2ca30.dir/CMakeCCompilerABI.c.o /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a -l:libunwind.a -ldl -lc /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a -l:libunwind.a -ldl /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtend_android.o] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker64] ==> ignore + arg [-o] ==> ignore + arg [cmTC_2ca30] ==> ignore + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtbegin_dynamic.o] ==> obj [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtbegin_dynamic.o] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/x86_64] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/x86_64] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + arg [--build-id=sha1] ==> ignore + arg [--no-rosegment] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_2ca30.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a] ==> lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a] ==> lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtend_android.o] ==> obj [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtend_android.o] + linker tool for 'C': /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld + remove lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a] + remove lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/x86_64] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/x86_64] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + implicit libs: [-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtbegin_dynamic.o;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtend_android.o] + implicit dirs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/x86_64;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + implicit fwks: [] + + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake:40 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:255 (cmake_determine_linker_id)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Running the C compiler's linker: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" "-v" + LLD 18.0.1 (compatible with GNU linkers) + - + kind: "try_compile-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:74 (try_compile)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + checks: + - "Detecting CXX compiler ABI info" + directories: + source: "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeScratch/TryCompile-lWzOMw" + binary: "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeScratch/TryCompile-lWzOMw" + cmakeVariables: + ANDROID_ABI: "x86_64" + ANDROID_ARM_MODE: "thumb" + ANDROID_PIE: "TRUE" + ANDROID_PLATFORM: "android-23" + ANDROID_STL: "c++_static" + ANDROID_TOOLCHAIN: "clang" + CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang-scan-deps" + CMAKE_CXX_COMPILER_TARGET: "x86_64-none-linux-android23" + CMAKE_CXX_FLAGS: "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat " + CMAKE_CXX_FLAGS_DEBUG: "-fno-limit-debug-info " + CMAKE_CXX_SCAN_FOR_MODULES: "OFF" + CMAKE_C_COMPILER_TARGET: "x86_64-none-linux-android23" + CMAKE_EXE_LINKER_FLAGS: "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments " + CMAKE_POSITION_INDEPENDENT_CODE: "TRUE" + CMAKE_SYSROOT: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot" + buildResult: + variable: "CMAKE_CXX_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeScratch/TryCompile-lWzOMw' + + Run Build Command(s): /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -v cmTC_0003a + [1/2] /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=x86_64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_0003a.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_0003a.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_0003a.dir/CMakeCXXCompilerABI.cpp.o -c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp + Android (12027248, +pgo, -bolt, +lto, -mlgo, based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: x86_64-none-linux-android23 + Thread model: posix + InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin + (in-process) + "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++" -cc1 -triple x86_64-none-linux-android23 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -target-feature +sse4.2 -target-feature +popcnt -target-feature +cx16 -tune-cpu generic -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeScratch/TryCompile-lWzOMw -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeScratch/TryCompile-lWzOMw -resource-dir /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_0003a.dir/CMakeCXXCompilerABI.cpp.o.d -MT CMakeFiles/cmTC_0003a.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1 -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -femulated-tls -stack-protector 2 -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_0003a.dir/CMakeCXXCompilerABI.cpp.o -x c++ /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp + clang -cc1 version 18.0.1 based upon LLVM 18.0.1 default target x86_64-apple-darwin24.5.0 + ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include" + ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include" + #include "..." search starts here: + #include <...> search starts here: + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1 + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android + /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include + End of search list. + [2/2] : && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=x86_64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -v CMakeFiles/cmTC_0003a.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_0003a && : + Android (12027248, +pgo, -bolt, +lto, -mlgo, based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) + Target: x86_64-none-linux-android23 + Thread model: posix + InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin + "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -z now -z relro --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -pie -dynamic-linker /system/bin/linker64 -o cmTC_0003a /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtbegin_dynamic.o -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/x86_64 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_0003a.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -Bdynamic -lm /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a -l:libunwind.a -ldl -lc /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a -l:libunwind.a -ldl /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtend_android.o + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:182 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed CXX implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android] + add: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + end of search list found + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android] + collapse include dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + implicit include dirs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:218 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed CXX implicit link information: + link line regex: [^( *|.*[/\\])(ld[0-9]*(\\.[a-z]+)?|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + linker tool regex: [^[ ]*(->|")?[ ]*(([^"]*[/\\])?(ld[0-9]*(\\.[a-z]+)?))("|,| |$)] + ignore line: [Change Dir: '/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeScratch/TryCompile-lWzOMw'] + ignore line: [] + ignore line: [Run Build Command(s): /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -v cmTC_0003a] + ignore line: [[1/2] /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=x86_64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -fPIE -v -MD -MT CMakeFiles/cmTC_0003a.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_0003a.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_0003a.dir/CMakeCXXCompilerABI.cpp.o -c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Android (12027248 +pgo -bolt +lto -mlgo based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: x86_64-none-linux-android23] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin] + ignore line: [ (in-process)] + ignore line: [ "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++" -cc1 -triple x86_64-none-linux-android23 -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -target-feature +sse4.2 -target-feature +popcnt -target-feature +cx16 -tune-cpu generic -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeScratch/TryCompile-lWzOMw -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/CMakeScratch/TryCompile-lWzOMw -resource-dir /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18 -dependency-file CMakeFiles/cmTC_0003a.dir/CMakeCXXCompilerABI.cpp.o.d -MT CMakeFiles/cmTC_0003a.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1 -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include -internal-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include -internal-externc-isystem /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include -Wformat -fdeprecated-macro -ferror-limit 19 -femulated-tls -stack-protector 2 -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_0003a.dir/CMakeCXXCompilerABI.cpp.o -x c++ /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 18.0.1 based upon LLVM 18.0.1 default target x86_64-apple-darwin24.5.0] + ignore line: [ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/include] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android] + ignore line: [ /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] : && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=x86_64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -static-libstdc++ -Wl --build-id=sha1 -Wl --no-rosegment -Wl --no-undefined-version -Wl --fatal-warnings -Wl --no-undefined -Qunused-arguments -v CMakeFiles/cmTC_0003a.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_0003a && :] + ignore line: [Android (12027248 +pgo -bolt +lto -mlgo based on r522817) clang version 18.0.1 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262)] + ignore line: [Target: x86_64-none-linux-android23] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin] + link line: [ "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -z now -z relro --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -pie -dynamic-linker /system/bin/linker64 -o cmTC_0003a /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtbegin_dynamic.o -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/x86_64 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23 -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android -L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib --build-id=sha1 --no-rosegment --no-undefined-version --fatal-warnings --no-undefined CMakeFiles/cmTC_0003a.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -Bdynamic -lm /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a -l:libunwind.a -ldl -lc /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a -l:libunwind.a -ldl /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtend_android.o] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld] ==> ignore + arg [--sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [-pie] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/system/bin/linker64] ==> ignore + arg [-o] ==> ignore + arg [cmTC_0003a] ==> ignore + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtbegin_dynamic.o] ==> obj [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtbegin_dynamic.o] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/x86_64] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/x86_64] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android] + arg [-L/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] ==> dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + arg [--build-id=sha1] ==> ignore + arg [--no-rosegment] ==> ignore + arg [--no-undefined-version] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [--no-undefined] ==> ignore + arg [CMakeFiles/cmTC_0003a.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-Bstatic] ==> search static + arg [-lc++] ==> lib [c++] + arg [-Bdynamic] ==> search dynamic + arg [-lm] ==> lib [m] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a] ==> lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [-lc] ==> lib [c] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a] ==> lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-ldl] ==> lib [dl] + arg [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtend_android.o] ==> obj [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtend_android.o] + linker tool for 'CXX': /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld + remove lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a] + remove lib [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64-android.a] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/x86_64] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/x86_64] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android] + collapse library dir [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] ==> [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + implicit libs: [c++;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl] + implicit objs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtbegin_dynamic.o;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/crtend_android.o] + implicit dirs: [/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/18/lib/linux/x86_64;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android;/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib] + implicit fwks: [] + + + - + kind: "message-v1" + backtrace: + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake:40 (message)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake:255 (cmake_determine_linker_id)" + - "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Running the CXX compiler's linker: "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld" "-v" + LLD 18.0.1 (compatible with GNU linkers) +... diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/TargetDirectories.txt b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..d90cabb --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/native-lib.dir +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/edit_cache.dir +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/rebuild_cache.dir diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/cmake.check_cache b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/native-lib.dir/native-lib.cpp.o b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/native-lib.dir/native-lib.cpp.o new file mode 100644 index 0000000..35d470c Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/native-lib.dir/native-lib.cpp.o differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/rules.ninja b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/rules.ninja new file mode 100644 index 0000000..8172c05 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/CMakeFiles/rules.ninja @@ -0,0 +1,66 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.31 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: intaleq_driver +# Configurations: Debug +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__native-lib_unscanned_Debug + depfile = $DEP_FILE + deps = gcc + command = ${LAUNCHER}${CODE_CHECK}/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=x86_64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX shared library. + +rule CXX_SHARED_LIBRARY_LINKER__native-lib_Debug + depfile = $DEP_FILE + deps = gcc + command = $PRE_LINK && /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=x86_64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD + description = Linking CXX shared library $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake --regenerate-during-build -S/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp -B/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64 + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja -t targets + description = All primary targets available: + diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/additional_project_files.txt b/android/app/.cxx/Debug/2j1f5m6a/x86_64/additional_project_files.txt new file mode 100644 index 0000000..e69de29 diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/android_gradle_build.json b/android/app/.cxx/Debug/2j1f5m6a/x86_64/android_gradle_build.json new file mode 100644 index 0000000..6a0def2 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/android_gradle_build.json @@ -0,0 +1,38 @@ +{ + "buildFiles": [ + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt" + ], + "cleanCommandsComponents": [ + [ + "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja", + "-C", + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64", + "clean" + ] + ], + "buildTargetsCommandComponents": [ + "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja", + "-C", + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64", + "{LIST_OF_TARGETS_TO_BUILD}" + ], + "libraries": { + "native-lib::@6890427a1f51a3e7e1df": { + "toolchain": "toolchain", + "abi": "x86_64", + "artifactName": "native-lib", + "output": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64/libnative-lib.so", + "runtimeFiles": [] + } + }, + "toolchains": { + "toolchain": { + "cCompilerExecutable": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld", + "cppCompilerExecutable": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld" + } + }, + "cFileExtensions": [], + "cppFileExtensions": [ + "cpp" + ] +} \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/android_gradle_build_mini.json b/android/app/.cxx/Debug/2j1f5m6a/x86_64/android_gradle_build_mini.json new file mode 100644 index 0000000..d622242 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/android_gradle_build_mini.json @@ -0,0 +1,27 @@ +{ + "buildFiles": [ + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt" + ], + "cleanCommandsComponents": [ + [ + "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja", + "-C", + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64", + "clean" + ] + ], + "buildTargetsCommandComponents": [ + "/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja", + "-C", + "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64", + "{LIST_OF_TARGETS_TO_BUILD}" + ], + "libraries": { + "native-lib::@6890427a1f51a3e7e1df": { + "artifactName": "native-lib", + "abi": "x86_64", + "output": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64/libnative-lib.so", + "runtimeFiles": [] + } + } +} \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/build.ninja b/android/app/.cxx/Debug/2j1f5m6a/x86_64/build.ninja new file mode 100644 index 0000000..9c0e487 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/build.ninja @@ -0,0 +1,156 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.31 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: intaleq_driver +# Configurations: Debug +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = Debug +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include CMakeFiles/rules.ninja + +# ============================================================================= + +############################################# +# Logical path to working directory; prefix for absolute paths. + +cmake_ninja_workdir = /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/ +# ============================================================================= +# Object build statements for SHARED_LIBRARY target native-lib + + +############################################# +# Order-only phony target for native-lib + +build cmake_object_order_depends_target_native-lib: phony || . + +build CMakeFiles/native-lib.dir/native-lib.cpp.o: CXX_COMPILER__native-lib_unscanned_Debug /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp || cmake_object_order_depends_target_native-lib + DEFINES = -Dnative_lib_EXPORTS + DEP_FILE = CMakeFiles/native-lib.dir/native-lib.cpp.o.d + FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info -fPIC + OBJECT_DIR = CMakeFiles/native-lib.dir + OBJECT_FILE_DIR = CMakeFiles/native-lib.dir + TARGET_COMPILE_PDB = CMakeFiles/native-lib.dir/ + TARGET_PDB = /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64/libnative-lib.pdb + + +# ============================================================================= +# Link build statements for SHARED_LIBRARY target native-lib + + +############################################# +# Link the shared library /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64/libnative-lib.so + +build /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64/libnative-lib.so: CXX_SHARED_LIBRARY_LINKER__native-lib_Debug CMakeFiles/native-lib.dir/native-lib.cpp.o | /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/liblog.so + DEP_FILE = CMakeFiles/native-lib.dir/link.d + LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info + LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -Xlinker --dependency-file=CMakeFiles/native-lib.dir/link.d + LINK_LIBRARIES = /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/23/liblog.so -latomic -lm + OBJECT_DIR = CMakeFiles/native-lib.dir + POST_BUILD = : + PRE_LINK = : + SONAME = libnative-lib.so + SONAME_FLAG = -Wl,-soname, + TARGET_COMPILE_PDB = CMakeFiles/native-lib.dir/ + TARGET_FILE = /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64/libnative-lib.so + TARGET_PDB = /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64/libnative-lib.pdb + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cd /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64 && /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ccmake -S/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp -B/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64 + DESC = Running CMake cache editor... + pool = console + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cd /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64 && /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/cmake --regenerate-during-build -S/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp -B/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64 + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + +# ============================================================================= +# Target aliases. + +build libnative-lib.so: phony /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64/libnative-lib.so + +build native-lib: phony /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64/libnative-lib.so + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64 + +build all: phony /Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64/libnative-lib.so + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeGenericSystem.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeInitializeConfigs.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystem.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInitialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Bruce-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX-CXXImportStd.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-FindBinUtils.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SDCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCXXLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android/Determine-Compiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/UnixPaths.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/abis.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android-legacy.toolchain.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/flags.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Determine.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Determine-Compiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/platforms.cmake /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt CMakeCache.txt CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCCompilerABI.c /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCXXInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeGenericSystem.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeInitializeConfigs.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystem.cmake.in /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeSystemSpecificInitialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Bruce-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX-CXXImportStd.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang-FindBinUtils.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SDCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-C-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCXXLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Linker/LLD.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Determine.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Android/Determine-Compiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Android-LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-C.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD-CXX.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linker/Linux-LLD.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/Linux.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/share/cmake-3.31/Modules/Platform/UnixPaths.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/abis.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android-legacy.toolchain.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/flags.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Clang.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Determine.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android-Initialize.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Android.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/hooks/pre/Determine-Compiler.cmake /Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/platforms.cmake /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt CMakeCache.txt CMakeFiles/3.31.5-g6cf5163/CMakeCCompiler.cmake CMakeFiles/3.31.5-g6cf5163/CMakeCXXCompiler.cmake CMakeFiles/3.31.5-g6cf5163/CMakeSystem.cmake: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/build_file_index.txt b/android/app/.cxx/Debug/2j1f5m6a/x86_64/build_file_index.txt new file mode 100644 index 0000000..b1ca0fa --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/build_file_index.txt @@ -0,0 +1 @@ +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/cmake_install.cmake b/android/app/.cxx/Debug/2j1f5m6a/x86_64/cmake_install.cmake new file mode 100644 index 0000000..78a6ac6 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/cmake_install.cmake @@ -0,0 +1,66 @@ +# Install script for directory: /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Debug") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "TRUE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() +if(CMAKE_INSTALL_COMPONENT) + if(CMAKE_INSTALL_COMPONENT MATCHES "^[a-zA-Z0-9_.+-]+$") + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") + else() + string(MD5 CMAKE_INST_COMP_HASH "${CMAKE_INSTALL_COMPONENT}") + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INST_COMP_HASH}.txt") + unset(CMAKE_INST_COMP_HASH) + endif() +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +if(NOT CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/compile_commands.json b/android/app/.cxx/Debug/2j1f5m6a/x86_64/compile_commands.json new file mode 100644 index 0000000..d2623d0 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/compile_commands.json @@ -0,0 +1,8 @@ +[ +{ + "directory": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64", + "command": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=x86_64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dnative_lib_EXPORTS -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info -fPIC -o CMakeFiles/native-lib.dir/native-lib.cpp.o -c /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp", + "file": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp", + "output": "CMakeFiles/native-lib.dir/native-lib.cpp.o" +} +] \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/compile_commands.json.bin b/android/app/.cxx/Debug/2j1f5m6a/x86_64/compile_commands.json.bin new file mode 100644 index 0000000..43a1569 Binary files /dev/null and b/android/app/.cxx/Debug/2j1f5m6a/x86_64/compile_commands.json.bin differ diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/configure_fingerprint.bin b/android/app/.cxx/Debug/2j1f5m6a/x86_64/configure_fingerprint.bin new file mode 100644 index 0000000..c8c0570 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/configure_fingerprint.bin @@ -0,0 +1,29 @@ +C/C++ Structured Log€ +~ +|/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/additional_project_files.txtC +A +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ³¡¹™„3  ›ø“Ó3} +{ +y/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/android_gradle_build.json  ³¡¹™„3õ + ¬ø“Ó3ƒ +€ +~/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/android_gradle_build_mini.json  ³¡¹™„3· Ðø“Ó3o +m +k/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/build.ninja  ³¡¹™„3‰¤ Õ÷“Ó3s +q +o/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/build.ninja.txt  ³¡¹™„3x +v +t/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/build_file_index.txt  ³¡¹™„3 ` Ýø“Ó3y +w +u/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/compile_commands.json  ³¡¹™„3­ Õ÷“Ó3} +{ +y/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/compile_commands.json.bin  ³¡¹™„3 Æ Õ÷“Ó3„ + +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/metadata_generation_command.txt  ³¡¹™„3 +ƒ Üø“Ó3v +t +r/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/prefab_config.json  ³¡¹™„3  ( Üø“Ó3{ +y +w/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64/symbol_folder_index.txt  ³¡¹™„3  n Üø“Ó3d +b +`/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/CMakeLists.txt  ³¡¹™„3  ¿åŠÿ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/metadata_generation_command.txt b/android/app/.cxx/Debug/2j1f5m6a/x86_64/metadata_generation_command.txt new file mode 100644 index 0000000..208d7ba --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/metadata_generation_command.txt @@ -0,0 +1,18 @@ + -H/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp +-DCMAKE_SYSTEM_NAME=Android +-DCMAKE_EXPORT_COMPILE_COMMANDS=ON +-DCMAKE_SYSTEM_VERSION=23 +-DANDROID_PLATFORM=android-23 +-DANDROID_ABI=x86_64 +-DCMAKE_ANDROID_ARCH_ABI=x86_64 +-DANDROID_NDK=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973 +-DCMAKE_ANDROID_NDK=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973 +-DCMAKE_TOOLCHAIN_FILE=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake +-DCMAKE_MAKE_PROGRAM=/Users/hamzaaleghwairyeen/Library/Android/sdk/cmake/3.31.5/bin/ninja +-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64 +-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64 +-DCMAKE_BUILD_TYPE=Debug +-B/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64 +-GNinja + Build command args: [] + Version: 2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/prefab_config.json b/android/app/.cxx/Debug/2j1f5m6a/x86_64/prefab_config.json new file mode 100644 index 0000000..e799de8 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/prefab_config.json @@ -0,0 +1,4 @@ +{ + "enabled": false, + "packages": [] +} \ No newline at end of file diff --git a/android/app/.cxx/Debug/2j1f5m6a/x86_64/symbol_folder_index.txt b/android/app/.cxx/Debug/2j1f5m6a/x86_64/symbol_folder_index.txt new file mode 100644 index 0000000..2fb6516 --- /dev/null +++ b/android/app/.cxx/Debug/2j1f5m6a/x86_64/symbol_folder_index.txt @@ -0,0 +1 @@ +/Users/hamzaaleghwairyeen/development/App/intaleq_driver/build/app/intermediates/cxx/Debug/2j1f5m6a/obj/x86_64 \ No newline at end of file diff --git a/android/app/.cxx/tools/profile/arm64-v8a/compile_commands.json b/android/app/.cxx/tools/profile/arm64-v8a/compile_commands.json new file mode 100644 index 0000000..230c355 --- /dev/null +++ b/android/app/.cxx/tools/profile/arm64-v8a/compile_commands.json @@ -0,0 +1,8 @@ +[ +{ + "directory": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/arm64-v8a", + "command": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=aarch64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dnative_lib_EXPORTS -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info -fPIC -o CMakeFiles/native-lib.dir/native-lib.cpp.o -c /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp", + "file": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp", + "output": "CMakeFiles/native-lib.dir/native-lib.cpp.o" +} +] \ No newline at end of file diff --git a/android/app/.cxx/tools/profile/armeabi-v7a/compile_commands.json b/android/app/.cxx/tools/profile/armeabi-v7a/compile_commands.json new file mode 100644 index 0000000..ebf94e0 --- /dev/null +++ b/android/app/.cxx/tools/profile/armeabi-v7a/compile_commands.json @@ -0,0 +1,8 @@ +[ +{ + "directory": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/armeabi-v7a", + "command": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=armv7-none-linux-androideabi23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dnative_lib_EXPORTS -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -fno-limit-debug-info -fPIC -o CMakeFiles/native-lib.dir/native-lib.cpp.o -c /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp", + "file": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp", + "output": "CMakeFiles/native-lib.dir/native-lib.cpp.o" +} +] \ No newline at end of file diff --git a/android/app/.cxx/tools/profile/x86/compile_commands.json b/android/app/.cxx/tools/profile/x86/compile_commands.json new file mode 100644 index 0000000..a59621a --- /dev/null +++ b/android/app/.cxx/tools/profile/x86/compile_commands.json @@ -0,0 +1,8 @@ +[ +{ + "directory": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86", + "command": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=i686-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dnative_lib_EXPORTS -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info -fPIC -o CMakeFiles/native-lib.dir/native-lib.cpp.o -c /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp", + "file": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp", + "output": "CMakeFiles/native-lib.dir/native-lib.cpp.o" +} +] \ No newline at end of file diff --git a/android/app/.cxx/tools/profile/x86_64/compile_commands.json b/android/app/.cxx/tools/profile/x86_64/compile_commands.json new file mode 100644 index 0000000..d2623d0 --- /dev/null +++ b/android/app/.cxx/tools/profile/x86_64/compile_commands.json @@ -0,0 +1,8 @@ +[ +{ + "directory": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/.cxx/Debug/2j1f5m6a/x86_64", + "command": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=x86_64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dnative_lib_EXPORTS -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info -fPIC -o CMakeFiles/native-lib.dir/native-lib.cpp.o -c /Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp", + "file": "/Users/hamzaaleghwairyeen/development/App/intaleq_driver/android/app/src/main/cpp/native-lib.cpp", + "output": "CMakeFiles/native-lib.dir/native-lib.cpp.o" +} +] \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..61a6225 --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,83 @@ +plugins { + id "com.android.application" + // START: FlutterFire Configuration + id 'com.google.gms.google-services' + // END: FlutterFire Configuration + id "kotlin-android" + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id "dev.flutter.flutter-gradle-plugin" +} +def keystoreProperties = new Properties() +def keystorePropertiesFile = rootProject.file('key.properties') +// Load keystore properties if the file exists +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) +} +android { + namespace = "com.intaleq_driver" + compileSdk = 35 + // ndkVersion = flutter.ndkVersion + externalNativeBuild { + cmake { + path "src/main/cpp/CMakeLists.txt" + version "3.31.5" // Match cmake_minimum_required in CMakeLists.txt + } + } + + defaultConfig { + ndk { + abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64" // Keep these! + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + coreLibraryDesugaringEnabled true + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_1_8 + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "com.intaleq_driver" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = 23 + targetSdk = flutter.targetSdkVersion + versionCode = 3 + versionName = '1.0.3' + multiDexEnabled =true + } + + signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null + storePassword keystoreProperties['storePassword'] + } + } + buildTypes { + release { + signingConfig signingConfigs.release + minifyEnabled true + shrinkResources true + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + + } + } +} + +flutter { + source = "../.." +} +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation 'com.scottyab:rootbeer-lib:0.1.0' + implementation 'com.stripe:paymentsheet:20.52.2' + implementation 'com.google.android.gms:play-services-safetynet:18.0.1' + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.4' + +} \ No newline at end of file diff --git a/android/app/google-services.json b/android/app/google-services.json new file mode 100644 index 0000000..84714e7 --- /dev/null +++ b/android/app/google-services.json @@ -0,0 +1,168 @@ +{ + "project_info": { + "project_number": "1086900987150", + "project_id": "intaleq-d48a7", + "storage_bucket": "intaleq-d48a7.firebasestorage.app" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:1086900987150:android:b7231956aa6d3b3377a35f", + "android_client_info": { + "package_name": "com.Intaleq.intaleq" + } + }, + "oauth_client": [ + { + "client_id": "1086900987150-060srlmdjocdcav377rbur4ka14m90b7.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "com.Intaleq.intaleq", + "certificate_hash": "765bbb7c5d30bc58a7ba44372db614d6bbe6e34d" + } + }, + { + "client_id": "1086900987150-aomdf61hg1g6a76pak4k6lfkdgvfj3vn.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "com.Intaleq.intaleq", + "certificate_hash": "3997f1e87f9fc7190d55c049c0de02c825085267" + } + }, + { + "client_id": "1086900987150-44lu3vt9fpbfiif37e8iji7besrfuha9.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyCFsWBqvkXzk1Gb-bCGxwqTwJQKIeHjH64" + }, + { + "current_key": "AIzaSyCwWsOw7WSMohXhBTTn0mY_Jyc90d5a0t4" + }, + { + "current_key": "AIzaSyBTNkIyhQf4oCKdg2SthaLAOUSctS1WiMU" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "1086900987150-44lu3vt9fpbfiif37e8iji7besrfuha9.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "1086900987150-9jv4oa8l3t23d54lrf27c1d22tbt9i6d.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "com.Intaleq.intaleq" + } + } + ] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:1086900987150:android:ff3846ae398ca82877a35f", + "android_client_info": { + "package_name": "com.example.intaleq_driver" + } + }, + "oauth_client": [ + { + "client_id": "1086900987150-ot11rb6tkvmlvr03tm5bg8bjb5p6tnuq.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "com.example.intaleq_driver", + "certificate_hash": "765bbb7c5d30bc58a7ba44372db614d6bbe6e34d" + } + }, + { + "client_id": "1086900987150-44lu3vt9fpbfiif37e8iji7besrfuha9.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyCFsWBqvkXzk1Gb-bCGxwqTwJQKIeHjH64" + }, + { + "current_key": "AIzaSyCwWsOw7WSMohXhBTTn0mY_Jyc90d5a0t4" + }, + { + "current_key": "AIzaSyBTNkIyhQf4oCKdg2SthaLAOUSctS1WiMU" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "1086900987150-44lu3vt9fpbfiif37e8iji7besrfuha9.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "1086900987150-9jv4oa8l3t23d54lrf27c1d22tbt9i6d.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "com.Intaleq.intaleq" + } + } + ] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:1086900987150:android:e3daebe53bf691de77a35f", + "android_client_info": { + "package_name": "com.intaleq_driver" + } + }, + "oauth_client": [ + { + "client_id": "1086900987150-to2jdiukfmr30qsfvov71ra4tp1koluk.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "com.intaleq_driver", + "certificate_hash": "765bbb7c5d30bc58a7ba44372db614d6bbe6e34d" + } + }, + { + "client_id": "1086900987150-44lu3vt9fpbfiif37e8iji7besrfuha9.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyCFsWBqvkXzk1Gb-bCGxwqTwJQKIeHjH64" + }, + { + "current_key": "AIzaSyCwWsOw7WSMohXhBTTn0mY_Jyc90d5a0t4" + }, + { + "current_key": "AIzaSyBTNkIyhQf4oCKdg2SthaLAOUSctS1WiMU" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "1086900987150-44lu3vt9fpbfiif37e8iji7besrfuha9.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "1086900987150-9jv4oa8l3t23d54lrf27c1d22tbt9i6d.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "com.Intaleq.intaleq" + } + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro new file mode 100755 index 0000000..9af0b7d --- /dev/null +++ b/android/app/proguard-rules.pro @@ -0,0 +1,38 @@ +# Suppress warnings for specific Google ML Kit and Stripe classes +-dontwarn com.google.mlkit.vision.text.chinese.ChineseTextRecognizerOptions$Builder +-dontwarn com.google.mlkit.vision.text.chinese.ChineseTextRecognizerOptions +-dontwarn com.google.mlkit.vision.text.devanagari.DevanagariTextRecognizerOptions$Builder +-dontwarn com.google.mlkit.vision.text.devanagari.DevanagariTextRecognizerOptions +-dontwarn com.google.mlkit.vision.text.japanese.JapaneseTextRecognizerOptions$Builder +-dontwarn com.google.mlkit.vision.text.japanese.JapaneseTextRecognizerOptions +-dontwarn com.google.mlkit.vision.text.korean.KoreanTextRecognizerOptions$Builder +-dontwarn com.google.mlkit.vision.text.korean.KoreanTextRecognizerOptions +-dontwarn com.stripe.android.pushProvisioning.PushProvisioningActivity$g +-dontwarn com.stripe.android.pushProvisioning.PushProvisioningActivityStarter$Args +-dontwarn com.stripe.android.pushProvisioning.PushProvisioningActivityStarter$Error +-dontwarn com.stripe.android.pushProvisioning.PushProvisioningActivityStarter +-dontwarn com.stripe.android.pushProvisioning.PushProvisioningEphemeralKeyProvider + +# Keep rules for Google ML Kit +-keep class com.google.mlkit.vision.** { *; } +-keep class com.google.mlkit.vision.text.** { *; } +-keep class com.google.mlkit.vision.text.chinese.ChineseTextRecognizerOptions { *; } +-keep class com.google.mlkit.vision.text.chinese.ChineseTextRecognizerOptions$Builder { *; } +-keep class com.google.mlkit.vision.text.devanagari.DevanagariTextRecognizerOptions { *; } +-keep class com.google.mlkit.vision.text.devanagari.DevanagariTextRecognizerOptions$Builder { *; } +-keep class com.google.mlkit.vision.text.japanese.JapaneseTextRecognizerOptions { *; } +-keep class com.google.mlkit.vision.text.japanese.JapaneseTextRecognizerOptions$Builder { *; } +-keep class com.google.mlkit.vision.text.korean.KoreanTextRecognizerOptions { *; } +-keep class com.google.mlkit.vision.text.korean.KoreanTextRecognizerOptions$Builder { *; } + +# Keep rules for Stripe +-keep class com.stripe.android.** { *; } +-keep class com.stripe.android.pushProvisioning.** { *; } +-keep class com.yalantis.ucrop.** { *; } +-keep class com.yalantis.ucrop.util.** { *; } + +# منع قراءة كود RootDetection +#-keep class com.sefer_driver.RootDetection { *; } +-keep class com.sefer_driver.RootDetection { + native ; + } \ No newline at end of file diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..5b329ca --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/cpp/CMakeLists.txt b/android/app/src/main/cpp/CMakeLists.txt new file mode 100755 index 0000000..c92732c --- /dev/null +++ b/android/app/src/main/cpp/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.10.2) # 3.10.2 is fine, but no need to go as high as 3.31.5 +project(intaleq_driver) # Good + +# Add your C++ source file(s) to create a SHARED library. +add_library(native-lib SHARED native-lib.cpp) + +# Find the Android log library. +find_library(log-lib log) + +# Link your library against the log library. This is essential for debugging. +target_link_libraries(native-lib ${log-lib}) \ No newline at end of file diff --git a/android/app/src/main/cpp/native-lib.cpp b/android/app/src/main/cpp/native-lib.cpp new file mode 100755 index 0000000..2596162 --- /dev/null +++ b/android/app/src/main/cpp/native-lib.cpp @@ -0,0 +1,187 @@ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // Add this line + +#define LOG_TAG "NativeLib" +#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) +#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__) + +// Function to check for common root binaries +bool isRooted() +{ + std::string paths[] = { + "/system/app/Superuser.apk", + "/system/xbin/su", + "/system/bin/su", + "/system/bin/magisk", + "/system/xbin/magisk", + "/sbin/magisk"}; + + for (const auto &path : paths) + { + std::ifstream file(path); + if (file.good()) + { + return true; + } + } + return false; +} + +// Function to check for the presence of files or directories commonly associated with Frida. +bool checkFridaFiles() +{ + std::string fridaFiles[] = { + "/data/local/tmp/re.frida.server", // Common Frida server path + "/data/local/tmp/frida-server", + "/usr/lib/libfrida-gadget.so", // Frida gadget (injected library) + "/usr/lib64/libfrida-gadget.so", + "/data/local/re.frida.server", + + }; + + for (const auto &path : fridaFiles) + { + if (access(path.c_str(), F_OK) != -1) + { + LOGE("Frida file detected: %s", path.c_str()); + return true; + } + } + return false; +} + +// Checks for open ports commonly used by Frida. This is less reliable, as ports can be changed. +bool checkFridaPorts() +{ + int sock = socket(AF_INET, SOCK_STREAM, 0); + if (sock == -1) + { + return false; // Couldn't create socket, not a strong indicator. + } + + sockaddr_in sa; + memset(&sa, 0, sizeof(sa)); + sa.sin_family = AF_INET; + sa.sin_port = htons(27042); // Default Frida port + inet_pton(AF_INET, "127.0.0.1", &sa.sin_addr); + + if (connect(sock, (struct sockaddr *)&sa, sizeof(sa)) != -1) + { + LOGE("Frida default port (27042) is open."); + close(sock); + return true; + } + + close(sock); + return false; +} + +// Check the maps file of the current process for any suspicious entries. +bool checkMaps() +{ + std::ifstream mapsFile("/proc/self/maps"); + std::string line; + + if (mapsFile.is_open()) + { + while (std::getline(mapsFile, line)) + { + // Look for lines that indicate injected libraries, especially Frida. + if (line.find("frida") != std::string::npos || + line.find("gum-js-") != std::string::npos) + { // Gum is Frida's JavaScript engine + LOGE("Suspicious entry in /proc/self/maps: %s", line.c_str()); + return true; + } + } + mapsFile.close(); + } + else + { + LOGE("Could not open /proc/self/maps"); + return false; + } + return false; +} + +// Check loaded modules. +bool checkLoadedModules() +{ + bool found = false; + dl_iterate_phdr([](struct dl_phdr_info *info, size_t size, void *data) + { + bool *found_ptr = static_cast(data); + if (std::string(info->dlpi_name).find("frida") != std::string::npos) + { + LOGE("Frida module detected: %s", info->dlpi_name); + *found_ptr = true; + return 1; // Stop iterating + } + return 0; // Continue iterating + }, + &found); + + return found; +} + +// This is a simple ptrace check. More sophisticated checks are possible (and necessary for robust detection). +// bool checkPtrace() { +// // Attempt to ptrace ourselves. If another process is already tracing us, this will fail. +// if (ptrace(PTRACE_TRACEME, 0, 1, 0) < 0) { +// LOGE("ptrace failed. Debugger or tracer detected."); +// return true; // Likely being traced +// } +// // Detach. If attached, need to detach to not interfere. +// ptrace(PTRACE_DETACH, 0, 0, 0); +// return false; +//} + +extern "C" JNIEXPORT jboolean JNICALL +Java_com_intaleq_1driver_RootDetection_isNativeRooted(JNIEnv *env, jobject /* this */) +{ + + if (isRooted()) + { + return JNI_TRUE; + } + + if (checkFridaFiles()) + { + return JNI_TRUE; + } + + if (checkFridaPorts()) + { + return JNI_TRUE; + } + if (checkMaps()) + { + return JNI_TRUE; + } + + if (checkLoadedModules()) + { + return JNI_TRUE; + } + + // if (checkPtrace()) { + // return JNI_TRUE; + // } + + return JNI_FALSE; +} \ No newline at end of file diff --git a/android/app/src/main/kotlin/com/example/intaleq_driver/MainActivity.kt b/android/app/src/main/kotlin/com/example/intaleq_driver/MainActivity.kt new file mode 100644 index 0000000..11ded83 --- /dev/null +++ b/android/app/src/main/kotlin/com/example/intaleq_driver/MainActivity.kt @@ -0,0 +1,174 @@ +package com.intaleq_driver + +import android.app.AlertDialog +import android.content.Intent +import android.os.Bundle +import android.util.Log +import android.widget.LinearLayout +import android.widget.ProgressBar +import android.widget.TextView +import androidx.core.view.setPadding +import com.scottyab.rootbeer.RootBeer +import io.flutter.embedding.android.FlutterFragmentActivity +import io.flutter.embedding.engine.FlutterEngine +import io.flutter.plugin.common.MethodChannel +import java.io.File +import java.util.Timer +import kotlin.concurrent.schedule + +class MainActivity : FlutterFragmentActivity() { + private val SECURITY_CHANNEL = "com.intaleq_driver/security" + private val APP_CONTROL_CHANNEL = "com.intaleq_driver/app_control" + + override fun configureFlutterEngine(flutterEngine: FlutterEngine) { + super.configureFlutterEngine(flutterEngine) + + // Channel for security checks (isRooted) + MethodChannel(flutterEngine.dartExecutor.binaryMessenger, SECURITY_CHANNEL) + .setMethodCallHandler { call, result -> + when (call.method) { + "isNativeRooted" -> result.success(isDeviceCompromised()) + else -> result.notImplemented() + } + } + + // Channel for app control (bringing to foreground) + MethodChannel(flutterEngine.dartExecutor.binaryMessenger, APP_CONTROL_CHANNEL) + .setMethodCallHandler { call, result -> + when (call.method) { + "bringToForeground" -> { + Log.d("MainActivity", "Received bringToForeground request") + val intent = + Intent(this, MainActivity::class.java).apply { + action = Intent.ACTION_MAIN + addCategory(Intent.CATEGORY_LAUNCHER) + addFlags( + Intent.FLAG_ACTIVITY_NEW_TASK or + Intent.FLAG_ACTIVITY_CLEAR_TOP or + Intent.FLAG_ACTIVITY_SINGLE_TOP + ) + } + try { + startActivity(intent) + Log.d( + "MainActivity", + "App brought to foreground successfully with flags: ${intent.flags}" + ) + result.success(true) + } catch (e: Exception) { + Log.e( + "MainActivity", + "Error bringing app to foreground: ${e.message}", + e + ) + result.error( + "ACTIVITY_START_FAILED", + e.message, + e.stackTraceToString() + ) + } + } + else -> result.notImplemented() + } + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + Log.d("MainActivity", "MainActivity onCreate") + if (isDeviceCompromised()) { + showSecurityWarningDialog() + } + } + + override fun onNewIntent(intent: Intent) { + super.onNewIntent(intent) + setIntent(intent) + Log.d("MainActivity", "Received new intent: ${intent.action}, flags: ${intent.flags}") + } + + private fun isDeviceCompromised(): Boolean { + return try { + val isRootedByRootBeer = RootBeer(this).isRooted + Log.d("MainActivity", "Root check result: $isRootedByRootBeer") + isRootedByRootBeer + } catch (e: Exception) { + Log.e("MainActivity", "Security check error: ${e.message}", e) + true // Fail-safe: assume compromised if check fails + } + } + + private fun showSecurityWarningDialog() { + var secondsRemaining = 10 + val progressBar = + ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal).apply { + max = 10 + progress = 10 + } + val textView = + TextView(this).apply { + text = getString(R.string.security_warning_message) + textAlignment = TextView.TEXT_ALIGNMENT_CENTER + } + val layout = + LinearLayout(this).apply { + orientation = LinearLayout.VERTICAL + setPadding(48) + addView(textView) + addView(progressBar) + } + val dialog = + AlertDialog.Builder(this) + .setTitle(getString(R.string.security_warning_title)) + .setView(layout) + .setCancelable(false) + .create() + dialog.show() + val timer = Timer() + timer.schedule(0, 1000) { + secondsRemaining-- + runOnUiThread { + progressBar.progress = secondsRemaining + if (secondsRemaining <= 0) { + timer.cancel() + dialog.dismiss() + clearAppDataAndExit() + } + } + } + } + + private fun clearAppDataAndExit() { + try { + Runtime.getRuntime().exec("pm clear $packageName") + Log.d("MainActivity", "Cleared app data via package manager") + } catch (e: Exception) { + Log.e("MainActivity", "Error clearing app data: ${e.message}", e) + clearCache() + clearAppData() + } + finishAffinity() + System.exit(0) + } + + private fun clearCache() { + deleteDir(cacheDir) + deleteDir(externalCacheDir) + Log.d("MainActivity", "Cleared cache directories") + } + + private fun clearAppData() { + // Be careful with this, it deletes all app data. + // deleteDir(applicationContext.dataDir) + Log.d("MainActivity", "App data clearing skipped (commented out)") + } + + private fun deleteDir(dir: File?): Boolean { + if (dir != null && dir.isDirectory) { + dir.list()?.forEach { deleteDir(File(dir, it)) } + } + val deleted = dir?.delete() ?: false + Log.d("MainActivity", "Deleted directory ${dir?.path}: $deleted") + return deleted + } +} diff --git a/android/app/src/main/kotlin/com/example/intaleq_driver/MyApplication.kt b/android/app/src/main/kotlin/com/example/intaleq_driver/MyApplication.kt new file mode 100755 index 0000000..4a1dc86 --- /dev/null +++ b/android/app/src/main/kotlin/com/example/intaleq_driver/MyApplication.kt @@ -0,0 +1,44 @@ +package com.intaleq_driver + +import android.app.Application +import android.content.Intent +import io.flutter.embedding.engine.FlutterEngine +import io.flutter.embedding.engine.dart.DartExecutor +import io.flutter.plugin.common.MethodChannel + +class MyApplication : Application() { + companion object { + lateinit var instance: MyApplication + private set + + val flutterEngine: FlutterEngine by lazy { + FlutterEngine(instance).apply { + dartExecutor.executeDartEntrypoint(DartExecutor.DartEntrypoint.createDefault()) + } + } + } + + override fun onCreate() { + super.onCreate() + instance = this + + MethodChannel( + flutterEngine.dartExecutor.binaryMessenger, + "com.intaleq_driver/app_lifecycle" + ) + .setMethodCallHandler { call, result -> + if (call.method == "bringAppToForeground") { + bringAppToForeground() + result.success(null) + } else { + result.notImplemented() + } + } + } + + private fun bringAppToForeground() { + val intent = Intent(applicationContext, MainActivity::class.java) + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_REORDER_TO_FRONT) + startActivity(intent) + } +} diff --git a/android/app/src/main/kotlin/com/example/intaleq_driver/RootDetection.kt b/android/app/src/main/kotlin/com/example/intaleq_driver/RootDetection.kt new file mode 100755 index 0000000..760f02c --- /dev/null +++ b/android/app/src/main/kotlin/com/example/intaleq_driver/RootDetection.kt @@ -0,0 +1,9 @@ +package com.intaleq_driver + +object RootDetection { + init { + System.loadLibrary("native-lib") // Load the native library + } + + external fun isNativeRooted(): Boolean // Declare the external function +} diff --git a/android/app/src/main/kotlin/com/example/intaleq_driver/SafetyNetCheck.kt b/android/app/src/main/kotlin/com/example/intaleq_driver/SafetyNetCheck.kt new file mode 100755 index 0000000..2e4a1d4 --- /dev/null +++ b/android/app/src/main/kotlin/com/example/intaleq_driver/SafetyNetCheck.kt @@ -0,0 +1,104 @@ +import android.content.Context +import android.util.Base64 +import android.util.Log +import com.google.android.gms.safetynet.SafetyNet +import java.io.IOException +import java.security.GeneralSecurityException +import java.security.SecureRandom +import org.json.JSONObject + +object SafetyNetCheck { + + private const val TAG = "SafetyNetCheck" + + fun checkSafetyNet(context: Context, apiKey: String, callback: (Boolean) -> Unit) { + // Generate a nonce. A good nonce is large, random, and used only once. + val nonce = generateNonce() + + SafetyNet.getClient(context) + .attest(nonce, apiKey) + .addOnSuccessListener { response -> + // Success! Now, *verify* the response. + val jwsResult = response.jwsResult + if (jwsResult != null) { + try { + val isSafe = SafetyNetResponseVerifier.verify(jwsResult) + Log.d(TAG, "SafetyNet verification result: $isSafe") + callback(isSafe) // Now passing a *verified* result. + } catch (e: Exception) { + Log.e(TAG, "Error verifying SafetyNet response: ${e.message}", e) + callback(false) // Treat verification errors as failures. + } + } else { + Log.e(TAG, "SafetyNet jwsResult is null") + callback(false) // Null result is a failure. + } + } + .addOnFailureListener { e -> + Log.e(TAG, "SafetyNet attest API call failed: ${e.message}", e) + callback(false) // API call failure. + } + } + + // Helper function to generate a nonce. + private fun generateNonce(): ByteArray { + val byteGenerator = SecureRandom() + val nonce = ByteArray(32) + byteGenerator.nextBytes(nonce) + return nonce + } +} + +// Helper class to verify the SafetyNet response. +object SafetyNetResponseVerifier { + + private const val TAG = "SafetyNetVerifier" + + // This method *must* be implemented on a *backend server* for real security. + // This is just a *simplified example* for demonstration purposes and is + // *not* suitable for production without a backend check. + @Throws(GeneralSecurityException::class, IOException::class) + fun verify(jwsResult: String): Boolean { + // 1. Parse the JWS: Split into header, payload, and signature. + val parts = jwsResult.split(".") + if (parts.size != 3) { + Log.e(TAG, "Invalid JWS format") + return false // Invalid JWS format + } + + val header = parts[0] + val payload = parts[1] + val signature = parts[2] + + // 2. Decode the payload (it's Base64 encoded). + val decodedPayload = Base64.decode(payload, Base64.DEFAULT) + val payloadJson = JSONObject(String(decodedPayload)) + + // 3. Check the ctsProfileMatch and basicIntegrity. + val ctsProfileMatch = payloadJson.optBoolean("ctsProfileMatch", false) + val basicIntegrity = payloadJson.optBoolean("basicIntegrity", false) + + Log.d(TAG, "ctsProfileMatch: $ctsProfileMatch, basicIntegrity: $basicIntegrity") + + // 4. **CRITICAL: In a real application, you *must* send the JWS to your + // backend server for verification. The server should use the + // Google SafetyNet API (or a library that wraps it) to verify + // the signature and check the fields. This prevents attackers + // from tampering with the response on the device.** + // + // // Example (pseudo-code) of what the backend check would do: + // // GoogleCredential credential = ...; + // // SafetyNet safetyNet = new SafetyNet.Builder(httpTransport, jsonFactory) + // // .setApplicationName("YourAppName") + // // .setHttpRequestInitializer(credential) + // // .build(); + // // SafetyNetApi.VerifyJwsRequest request = safetyNet.safetynet().verifyJws(jwsResult); + // // SafetyNetApi.VerifyJwsResponse response = request.execute(); + // // return response.isValidSignature() && response.getCtsProfileMatch() && + // response.getBasicIntegrity(); + + // 5. For this *example* (without a backend), we'll just check the fields. + // This is *NOT SECURE* for production! + return ctsProfileMatch && basicIntegrity + } +} diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/drawable/app_icon.png b/android/app/src/main/res/drawable/app_icon.png new file mode 100644 index 0000000..8b07675 Binary files /dev/null and b/android/app/src/main/res/drawable/app_icon.png differ diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..db77bb4 Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-hdpi/launcher_icon.png b/android/app/src/main/res/mipmap-hdpi/launcher_icon.png new file mode 100644 index 0000000..4f73670 Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/launcher_icon.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..17987b7 Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/launcher_icon.png b/android/app/src/main/res/mipmap-mdpi/launcher_icon.png new file mode 100644 index 0000000..9a7f3b9 Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/launcher_icon.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..09d4391 Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png new file mode 100644 index 0000000..1c93d6a Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..d5f1c8d Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png new file mode 100644 index 0000000..bc339dd Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..4d6372e Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png new file mode 100644 index 0000000..8b07675 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png differ diff --git a/android/app/src/main/res/values-ar/strings.xml b/android/app/src/main/res/values-ar/strings.xml new file mode 100755 index 0000000..6b7cb35 --- /dev/null +++ b/android/app/src/main/res/values-ar/strings.xml @@ -0,0 +1,6 @@ + + تحذير أمني + تم اكتشا٠مشكلة أمنية أو تعديل على هذا الجهاز. لا يمكن تشغيل التطبيق على هذا الجهاز. + إغلاق التطبيق + الجهاز آمن. الاستمرار بشكل طبيعي. + \ No newline at end of file diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..06952be --- /dev/null +++ b/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml new file mode 100755 index 0000000..cf5127a --- /dev/null +++ b/android/app/src/main/res/values/strings.xml @@ -0,0 +1,15 @@ + + My App + + + high_importance_channel + AIzaSyCFsWBqvkXzk1Gb-bCGxwqTwJQKIeHjH64 + Security Warning + AIzaSyB04YNW3LbvmQ5lX1t2bOwEU18-KUoovzw + + A security issue or modification has been detected on + this device. The app cannot run on this device. + Exit App + Device is secure. Proceeding normally. + + \ No newline at end of file diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..cb1ef88 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..9dc10f0 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,56 @@ +// allprojects { +// repositories { +// google() +// mavenCentral() +// } +// } + +// rootProject.buildDir = "../build" +// subprojects { +// project.buildDir = "${rootProject.buildDir}/${project.name}" +// } +// subprojects { +// project.evaluationDependsOn(":app") +// } + +// tasks.register("clean", Delete) { +// delete rootProject.buildDir +// } + +buildscript { + ext.kotlin_version = '1.9.23' + repositories { + google() + mavenCentral() + } + + dependencies { + // START: FlutterFire Configuration +// classpath 'com.google.gms:google-services:4.4.2' +// // END: FlutterFire Configuration +// classpath 'com.android.tools.build:gradle:7.3.1' + classpath 'com.google.gms:google-services:4.3.15' + // END: FlutterFire Configuration + classpath 'com.android.tools.build:gradle:8.11.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/android/build/reports/problems/problems-report.html b/android/build/reports/problems/problems-report.html new file mode 100644 index 0000000..aadff16 --- /dev/null +++ b/android/build/reports/problems/problems-report.html @@ -0,0 +1,663 @@ + + + + + + + + + + + + + Gradle Configuration Cache + + + +
+ +
+ Loading... +
+ + + + + + diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..e6860ca --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,8 @@ +org.gradle.jvmargs=-Xmx4096M +android.useAndroidX=true +android.enableJetifier=true +android.defaults.buildfeatures.buildconfig=true +android.nonTransitiveRClass=true +android.nonFinalResIds=true +dart.obfuscation=true +android.enableR8.fullMode=true \ No newline at end of file diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..02767eb --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-all.zip diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..4fc9848 --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,28 @@ +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version '8.11.0' apply false + // START: FlutterFire Configuration + id "com.google.gms.google-services" version "4.3.10" apply false + // END: FlutterFire Configuration + id "org.jetbrains.kotlin.android" version "2.0.0" apply false +} + +include ":app" diff --git a/assets/aggrement.wav b/assets/aggrement.wav new file mode 100644 index 0000000..c82ef23 Binary files /dev/null and b/assets/aggrement.wav differ diff --git a/assets/fonts/digit.ttf b/assets/fonts/digit.ttf new file mode 100755 index 0000000..5dbe6f9 Binary files /dev/null and b/assets/fonts/digit.ttf differ diff --git a/assets/images/1.png b/assets/images/1.png new file mode 100644 index 0000000..5cc4c86 Binary files /dev/null and b/assets/images/1.png differ diff --git a/assets/images/2.png b/assets/images/2.png new file mode 100644 index 0000000..69005af Binary files /dev/null and b/assets/images/2.png differ diff --git a/assets/images/3.png b/assets/images/3.png new file mode 100644 index 0000000..4040f40 Binary files /dev/null and b/assets/images/3.png differ diff --git a/assets/images/4.png b/assets/images/4.png new file mode 100644 index 0000000..15b4d56 Binary files /dev/null and b/assets/images/4.png differ diff --git a/assets/images/5.png b/assets/images/5.png new file mode 100644 index 0000000..4440755 Binary files /dev/null and b/assets/images/5.png differ diff --git a/assets/images/6.png b/assets/images/6.png new file mode 100644 index 0000000..cea38b9 Binary files /dev/null and b/assets/images/6.png differ diff --git a/assets/images/A.png b/assets/images/A.png new file mode 100755 index 0000000..246b9d2 Binary files /dev/null and b/assets/images/A.png differ diff --git a/assets/images/arrow.png b/assets/images/arrow.png new file mode 100755 index 0000000..3d3db75 Binary files /dev/null and b/assets/images/arrow.png differ diff --git a/assets/images/b.png b/assets/images/b.png new file mode 100755 index 0000000..b22f96c Binary files /dev/null and b/assets/images/b.png differ diff --git a/assets/images/brand.png b/assets/images/brand.png new file mode 100755 index 0000000..9282720 Binary files /dev/null and b/assets/images/brand.png differ diff --git a/assets/images/car.png b/assets/images/car.png new file mode 100755 index 0000000..5932743 Binary files /dev/null and b/assets/images/car.png differ diff --git a/assets/images/lady1.png b/assets/images/lady1.png new file mode 100755 index 0000000..2797b75 Binary files /dev/null and b/assets/images/lady1.png differ diff --git a/assets/images/logo.gif b/assets/images/logo.gif new file mode 100644 index 0000000..4dd5d9c Binary files /dev/null and b/assets/images/logo.gif differ diff --git a/assets/images/logo.png b/assets/images/logo.png new file mode 100644 index 0000000..d048e42 Binary files /dev/null and b/assets/images/logo.png differ diff --git a/assets/images/logo1.png b/assets/images/logo1.png new file mode 100755 index 0000000..8507dbc Binary files /dev/null and b/assets/images/logo1.png differ diff --git a/assets/images/notepad.png b/assets/images/notepad.png new file mode 100755 index 0000000..9536a4d Binary files /dev/null and b/assets/images/notepad.png differ diff --git a/assets/images/on1.png b/assets/images/on1.png new file mode 100644 index 0000000..4f75853 Binary files /dev/null and b/assets/images/on1.png differ diff --git a/assets/images/on2.png b/assets/images/on2.png new file mode 100644 index 0000000..83b4e38 Binary files /dev/null and b/assets/images/on2.png differ diff --git a/assets/images/on3.png b/assets/images/on3.png new file mode 100644 index 0000000..3fe9574 Binary files /dev/null and b/assets/images/on3.png differ diff --git a/assets/images/picker.png b/assets/images/picker.png new file mode 100755 index 0000000..6a35bf3 Binary files /dev/null and b/assets/images/picker.png differ diff --git a/assets/images/s.png b/assets/images/s.png new file mode 100755 index 0000000..dd3b7b8 Binary files /dev/null and b/assets/images/s.png differ diff --git a/assets/order.mp3 b/assets/order.mp3 new file mode 100755 index 0000000..b2b0ba2 Binary files /dev/null and b/assets/order.mp3 differ diff --git a/assets/order1.wav b/assets/order1.wav new file mode 100755 index 0000000..919fdda Binary files /dev/null and b/assets/order1.wav differ diff --git a/bubble-master/.gitignore b/bubble-master/.gitignore new file mode 100755 index 0000000..af412f1 --- /dev/null +++ b/bubble-master/.gitignore @@ -0,0 +1,7 @@ +.DS_Store +.dart_tool/ + +.packages +.pub/ + +build/ diff --git a/bubble-master/.metadata b/bubble-master/.metadata new file mode 100755 index 0000000..27b30b4 --- /dev/null +++ b/bubble-master/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: f4abaa0735eba4dfd8f33f73363911d63931fe03 + channel: stable + +project_type: plugin diff --git a/bubble-master/CHANGELOG.md b/bubble-master/CHANGELOG.md new file mode 100755 index 0000000..1c63343 --- /dev/null +++ b/bubble-master/CHANGELOG.md @@ -0,0 +1,14 @@ +## 0.0.1 + +* Created and implemented startBubbleHead and closeBubbleHead usecases for bubble head package + + +## 0.0.2 +* Fix read-me documentation + +## 0.0.3 +* Fix read-me documentation (added `Buy me a coffee link`) + +## 0.0.4 +* Added optional parameter to enable or disable send-app-to-background +* Updated documentation \ No newline at end of file diff --git a/bubble-master/LICENSE b/bubble-master/LICENSE new file mode 100755 index 0000000..a7446aa --- /dev/null +++ b/bubble-master/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 chrisoftech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bubble-master/README.md b/bubble-master/README.md new file mode 100755 index 0000000..63dffed --- /dev/null +++ b/bubble-master/README.md @@ -0,0 +1,128 @@ +# bubble_head + + +A flutter plugin to enable you launch a bubble while putting your application to background and upon clicking the bubble brings your application back to foreground + +## Getting Started +### Add dependency + +```yaml + dependencies: + bubble_head: ^0.0.4 +``` + + +### Add in android-manifest file (**../main/AndroidManifest.xml**) + +If you are unsure on where to do this, you can reference the example project AndroidManifest.xml file [here](example/android/app/src/main/AndroidManifest.xml) + + +Add `SYSTEM_ALERT_WINDOW` permission in manifest +```xml + +``` + +NOTE: For best UX practices, you should request for `SYSTEM_ALERT_WINDOW` permission on your application launch (if permission `status` is not granted) +To request for permission, we advise the use of this [package](https://pub.dev/packages/permission_handler) + + +Add `intent-filter` in activity tag + +```xml + + + + +``` + +Add `service` in application tag +```xml + +``` + +### Note: To set bubble icon, create `assets/images` folder path and add your png icon with name `icon.png` to the directory (ensure to import assets in your `pubspec.yaml` file) + +**GIF illustration** + +[![](example/assets/images/bubble_head_example.gif)](example/assets/images/bubble_head_example.gif "Bubble-head example") + +### Examples + +**To start bubble** +[This puts your app in background and can be re-launched (brought to foreground) on tap of the bubble] + +```dart + Bubble _bubble = new Bubble(); + + Future startBubbleHead() async { + + try { + await _bubble.startBubbleHead(); + } on PlatformException { + print('Failed to call startBubbleHead'); + } + } +``` + +**To stop/close bubble** + +```dart + Bubble _bubble = new Bubble(); + + Future stopBubbleHead() async { + + try { + await _bubble.stopBubbleHead(); + } on PlatformException { + print('Failed to call stopBubbleHead'); + } + } +``` + +You can prevent the default action of putting your application in background when starting `bubble_head` by setting `sendAppToBackground` parameter when starting bubble head (if you choose to use another means of sending your application to background) + +```dart + Bubble _bubble = new Bubble(); + + Future startBubbleHead() async { + + try { + // this will only display the bubble-head without sending the application to background + await _bubble.startBubbleHead(sendAppToBackground: false); + } on PlatformException { + print('Failed to call startBubbleHead'); + } + } +``` + + +**Other parameters** +(You can choose to tweak **optional** parameters when initializing bubble) + + +```dart + Bubble({ + this.shouldBounce = true, + this.allowDragToClose = true, + this.showCloseButton = false, + }); +``` +```dart + Bubble().startBubbleHead(sendAppToBackground: true); +``` + +**Parameter Definition** +- shouldBounce - Defaults to `True` +(Adds animation to bubble-head) +- allowDragToClose - Defaults to `True` +(Enables dragging bubble to bottom screen to exit) +- showCloseButton - Defaults to `False` +(Adds a close button icon to the bubble-head) +- sendAppToBackground - Defaults to `True` +(Sends application to background) + +## [Buy me a Coffee](https://www.buymeacoffee.com/dsaved) + diff --git a/bubble-master/android/.gitignore b/bubble-master/android/.gitignore new file mode 100755 index 0000000..4c9e2c6 --- /dev/null +++ b/bubble-master/android/.gitignore @@ -0,0 +1,8 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures diff --git a/bubble-master/android/build.gradle b/bubble-master/android/build.gradle new file mode 100755 index 0000000..a5d8c0b --- /dev/null +++ b/bubble-master/android/build.gradle @@ -0,0 +1,35 @@ +group 'com.dsaved.bubblehead.bubble' +version '1.0' + +buildscript { + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:4.1.3' + } +} + +rootProject.allprojects { + repositories { + google() + mavenCentral() + } +} + +apply plugin: 'com.android.library' + +android { + namespace 'com.dsaved.bubblehead.bubble' + compileSdkVersion 33 + + defaultConfig { + minSdkVersion 16 + } +} + +dependencies { + implementation 'com.google.android.material:material:1.4.0' +} diff --git a/bubble-master/android/gradle.properties b/bubble-master/android/gradle.properties new file mode 100755 index 0000000..46c1f16 --- /dev/null +++ b/bubble-master/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/bubble-master/android/gradle/wrapper/gradle-wrapper.properties b/bubble-master/android/gradle/wrapper/gradle-wrapper.properties new file mode 100755 index 0000000..127680f --- /dev/null +++ b/bubble-master/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Jul 10 12:15:00 EET 2025 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/bubble-master/android/settings.gradle b/bubble-master/android/settings.gradle new file mode 100755 index 0000000..a1c42ae --- /dev/null +++ b/bubble-master/android/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'bubble' diff --git a/bubble-master/android/src/main/AndroidManifest.xml b/bubble-master/android/src/main/AndroidManifest.xml new file mode 100755 index 0000000..adf9d32 --- /dev/null +++ b/bubble-master/android/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + diff --git a/bubble-master/android/src/main/java/com/dsaved/bubblehead/bubble/BubbleHeadService.java b/bubble-master/android/src/main/java/com/dsaved/bubblehead/bubble/BubbleHeadService.java new file mode 100755 index 0000000..7b86119 --- /dev/null +++ b/bubble-master/android/src/main/java/com/dsaved/bubblehead/bubble/BubbleHeadService.java @@ -0,0 +1,456 @@ +package com.dsaved.bubblehead.bubble; + +import android.annotation.SuppressLint; +import android.app.Service; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.res.Configuration; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.PixelFormat; +import android.graphics.Point; +import android.os.Build; +import android.os.CountDownTimer; +import android.os.Handler; +import android.os.IBinder; +import android.util.Base64; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.WindowManager; +import android.widget.ImageView; + +public class BubbleHeadService extends Service implements View.OnClickListener { + private WindowManager mWindowManager; + private View mFloatingWidgetView; + private ImageView remove_image_view; + private final Point szWindow = new Point(); + private View removeFloatingWidgetView; + private static boolean showCloseButton = false, _bounce = true, _dragToClose = true, _sendAppToBackground = true; + private boolean _continueToSnap = false; + + private int x_init_cord, y_init_cord, x_init_margin, y_init_margin; + static Bitmap _image; + + // Set the value for showing close button to true or false + public static void shouldShowCloseButton(Boolean show) { + showCloseButton = show; + } + + // set to true to enable bouncing + public static void bounce(Boolean bounce) { + _bounce = bounce; + } + + // Set the value for drag to close to enable dragging bubble to close + public static void dragToClose(Boolean dragToClose) { + _dragToClose = dragToClose; + } + + public static void sendAppToBackground(Boolean sendAppToBackground) { + _sendAppToBackground = sendAppToBackground; + } + + public static void startService(Context activity, String image) { + byte[] decodedBytes = Base64.decode(image, Base64.DEFAULT); + _image = BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length); + + // send application to background if this is true + if (_sendAppToBackground) { + Intent i = new Intent(); + i.setAction(Intent.ACTION_MAIN); + i.addCategory(Intent.CATEGORY_HOME); + activity.startActivity(i); + } + + Intent intent = new Intent(activity, BubbleHeadService.class); + activity.startService(intent); + } + + public static void stopService(Context activity) { + Intent intent = new Intent(activity, BubbleHeadService.class); + activity.stopService(intent); + } + + // create an empty constructor + public BubbleHeadService() { + } + + @Override + public IBinder onBind(Intent intent) { + return null; + } + + @SuppressLint({"ClickableViewAccessibility", "InflateParams"}) + @Override + public void onCreate() { + super.onCreate(); + // init WindowManager + mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE); + getWindowManagerDefaultDisplay(); + + // Init LayoutInflater + LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); + + // Inflate the removing view layout we created + removeFloatingWidgetView = inflater.inflate(R.layout.bubble_head_remove_widget, null); + + // Add the view to the window. + WindowManager.LayoutParams paramRemove; + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + paramRemove = new WindowManager.LayoutParams( + WindowManager.LayoutParams.WRAP_CONTENT, + WindowManager.LayoutParams.WRAP_CONTENT, + WindowManager.LayoutParams.TYPE_PHONE, + WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, + PixelFormat.TRANSLUCENT); + } else { + paramRemove = new WindowManager.LayoutParams( + WindowManager.LayoutParams.WRAP_CONTENT, + WindowManager.LayoutParams.WRAP_CONTENT, + WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, + WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, + PixelFormat.TRANSLUCENT); + } + + // Specify the view position + paramRemove.gravity = Gravity.TOP | Gravity.LEFT; + + // Initially the Removing widget view is not visible, so set visibility to GONE + removeFloatingWidgetView.setVisibility(View.GONE); + remove_image_view = (ImageView) removeFloatingWidgetView.findViewById(R.id.remove_img); + + // Add the view to the window + mWindowManager.addView(removeFloatingWidgetView, paramRemove); + + // Inflate the floating view layout we created + mFloatingWidgetView = inflater.inflate(R.layout.layout_bubble_head, null); + + // Add the view to the window. + WindowManager.LayoutParams params; + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + params = new WindowManager.LayoutParams( + WindowManager.LayoutParams.WRAP_CONTENT, + WindowManager.LayoutParams.WRAP_CONTENT, + WindowManager.LayoutParams.TYPE_PHONE, + WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, + PixelFormat.TRANSLUCENT); + } else { + params = new WindowManager.LayoutParams( + WindowManager.LayoutParams.WRAP_CONTENT, + WindowManager.LayoutParams.WRAP_CONTENT, + WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, + WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, + PixelFormat.TRANSLUCENT); + } + + // Specify the view position + params.gravity = Gravity.TOP | Gravity.LEFT; + + // Initially view will be added to top-left corner, you change x-y coordinates according to your need + params.x = 0; + params.y = 100; + + // Add the view to the window + mWindowManager.addView(mFloatingWidgetView, params); + + //set image to chatHead + ImageView chatHeadImage = mFloatingWidgetView.findViewById(R.id.chat_head_profile_iv); + chatHeadImage.setImageBitmap(_image); + + // find id of close image button + ImageView closeBubbleHead = mFloatingWidgetView.findViewById(R.id.close_bubble_head); + closeBubbleHead.setOnClickListener(this); + if (!showCloseButton) { + closeBubbleHead.setVisibility(View.GONE); + } + + implementTouchListenerToFloatingWidgetView(); + } + + private void getWindowManagerDefaultDisplay() { + mWindowManager.getDefaultDisplay().getSize(szWindow); + } + + @SuppressLint("ClickableViewAccessibility") + private void implementTouchListenerToFloatingWidgetView() { + _continueToSnap = true; + // Drag and move chat head using user's touch action. + mFloatingWidgetView.findViewById(R.id.root_container); + mFloatingWidgetView.setOnTouchListener(new View.OnTouchListener() { + long time_start = 0, time_end = 0; + + boolean isLongClick = false; + boolean inBounded = false; + int remove_img_width = 0, remove_img_height = 0; + + final Handler handler_longClick = new Handler(); + final Runnable runnable_longClick = new Runnable() { + @Override + public void run() { + isLongClick = true; + removeFloatingWidgetView.setVisibility(View.VISIBLE); + onFloatingWidgetLongClick(); + } + }; + + @Override + public boolean onTouch(View v, MotionEvent event) { + WindowManager.LayoutParams layoutParams = (WindowManager.LayoutParams) mFloatingWidgetView.getLayoutParams(); + + int x_cord = (int) event.getRawX(); + int y_cord = (int) event.getRawY(); + + int x_cord_Destination, y_cord_Destination; + + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + time_start = System.currentTimeMillis(); + + if (_dragToClose) { + handler_longClick.postDelayed(runnable_longClick, 100); + } + remove_img_width = remove_image_view.getLayoutParams().width; + remove_img_height = remove_image_view.getLayoutParams().height; + + x_init_cord = x_cord; + y_init_cord = y_cord; + + // remember the initial position. + x_init_margin = layoutParams.x; + y_init_margin = layoutParams.y; + return true; + case MotionEvent.ACTION_UP: + isLongClick = false; + removeFloatingWidgetView.setVisibility(View.GONE); + remove_image_view.getLayoutParams().height = remove_img_height; + remove_image_view.getLayoutParams().width = remove_img_width; + + if (_dragToClose) { + handler_longClick.removeCallbacks(runnable_longClick); + } + + // If user drag and drop the floating widget view + // into remove view then stop the service + if (inBounded) { + stopSelf(); + inBounded = false; + break; + } + + // Difference between initial coordinate and current coordinate + int x_diff = x_cord - x_init_cord; + int y_diff = y_cord - y_init_cord; + + // check if action move is little as move happen on view with just a tap + if (Math.abs(x_diff) < 5 && Math.abs(y_diff) < 5) { + time_end = System.currentTimeMillis(); + // only perform click if time is less than 200ms + if ((time_end - time_start) < 200) { + onFloatingWidgetClick(); + } + } + + y_cord_Destination = y_init_margin + y_diff; + + int barHeight = getStatusBarHeight(); + if (y_cord_Destination < 0) { + y_cord_Destination = 0; + } else if (y_cord_Destination + (mFloatingWidgetView.getHeight() + barHeight) > szWindow.y) { + y_cord_Destination = szWindow.y - (mFloatingWidgetView.getHeight() + barHeight); + } + + layoutParams.y = y_cord_Destination; + + inBounded = false; + + // reset position + resetPosition(x_cord); + return true; + case MotionEvent.ACTION_MOVE: + int x_diff_move = x_cord - x_init_cord; + int y_diff_move = y_cord - y_init_cord; + + x_cord_Destination = x_init_margin + x_diff_move; + y_cord_Destination = y_init_margin + y_diff_move; + + // If user long click the floating view, update remove view + if (isLongClick) { + int x_bound_left = szWindow.x / 2 - (int) (remove_img_width * 1.5); + int x_bound_right = szWindow.x / 2 + (int) (remove_img_width * 1.5); + int y_bound_top = szWindow.y - (int) (remove_img_height * 1.5); + + // If Floating view comes under Remove View update Window Manager + if ((x_cord >= x_bound_left && x_cord <= x_bound_right) && y_cord >= y_bound_top) { + inBounded = true; + + int x_cord_remove = (int) ((szWindow.x - (remove_img_height * 1.5)) / 2); + int y_cord_remove = (int) (szWindow.y - ((remove_img_width * 1.5) + getStatusBarHeight())); + + if (remove_image_view.getLayoutParams().height == remove_img_height) { + WindowManager.LayoutParams param_remove = (WindowManager.LayoutParams) removeFloatingWidgetView.getLayoutParams(); + param_remove.x = x_cord_remove; + param_remove.y = y_cord_remove; + + mWindowManager.updateViewLayout(removeFloatingWidgetView, param_remove); + } + + layoutParams.x = x_cord_remove + (Math.abs(removeFloatingWidgetView.getWidth() - mFloatingWidgetView.getWidth())) / 2; + layoutParams.y = y_cord_remove + (Math.abs(removeFloatingWidgetView.getHeight() - mFloatingWidgetView.getHeight())) / 2; + + // Update the layout with new X & Y coordinate + mWindowManager.updateViewLayout(mFloatingWidgetView, layoutParams); + break; + } else { + // If Floating window gets out of the Remove view update Remove view again + inBounded = false; + remove_image_view.getLayoutParams().height = remove_img_height; + remove_image_view.getLayoutParams().width = remove_img_width; +// onFloatingWidgetClick(); + } + + } + + layoutParams.x = x_cord_Destination; + layoutParams.y = y_cord_Destination; + + // Update the layout with new X & Y coordinate + mWindowManager.updateViewLayout(mFloatingWidgetView, layoutParams); + return true; + } + return false; + } + }); + } + + @Override + public void onClick(View v) { + int id = v.getId(); + if (id == R.id.close_bubble_head) { + stopSelf(); + } + } + + private void onFloatingWidgetLongClick() { + // Get remove Floating view params + WindowManager.LayoutParams removeParams = (WindowManager.LayoutParams) removeFloatingWidgetView.getLayoutParams(); + + // get x and y coordinates of remove view + int x_cord = (szWindow.x - removeFloatingWidgetView.getWidth()) / 2; + int y_cord = szWindow.y - (removeFloatingWidgetView.getHeight() + getStatusBarHeight()); + + removeParams.x = x_cord; + removeParams.y = y_cord; + + // Update Remove view params + mWindowManager.updateViewLayout(removeFloatingWidgetView, removeParams); + } + + // Reset position of Floating Widget view on dragging + private void resetPosition(int x_cord_now) { + if (_continueToSnap) { + if (x_cord_now <= szWindow.x / 2) { + snapToLeft(x_cord_now); + } else { + snapToRight(x_cord_now); + } + } + } + + private void snapToLeft(final int current_x_cord) { + final int x = szWindow.x - current_x_cord; + new CountDownTimer(500, 5) { + final WindowManager.LayoutParams mParams = (WindowManager.LayoutParams) mFloatingWidgetView.getLayoutParams(); + + public void onTick(long t) { + long step = (500 - t) / 5; + mParams.x = -(int) (current_x_cord * current_x_cord * step); + if (_bounce) { + mParams.x = -(int) (double) bounceValue(step, x); + } + mWindowManager.updateViewLayout(mFloatingWidgetView, mParams); + } + + public void onFinish() { + mParams.x = 0; + mWindowManager.updateViewLayout(mFloatingWidgetView, mParams); + } + }.start(); + } + + private void snapToRight(final int current_x_cord) { + new CountDownTimer(500, 5) { + final WindowManager.LayoutParams mParams = (WindowManager.LayoutParams) mFloatingWidgetView.getLayoutParams(); + + public void onTick(long t) { + long step = (500 - t) / 5; + mParams.x = (int) (szWindow.x + (current_x_cord * current_x_cord * step) - mFloatingWidgetView.getWidth()); + if (_bounce) { + mParams.x = szWindow.x + (int) (double) bounceValue(step, current_x_cord) - mFloatingWidgetView.getWidth(); + } + mWindowManager.updateViewLayout(mFloatingWidgetView, mParams); + } + + public void onFinish() { + mParams.x = szWindow.x - mFloatingWidgetView.getWidth(); + mWindowManager.updateViewLayout(mFloatingWidgetView, mParams); + } + }.start(); + } + + private double bounceValue(long step, long scale) { + return scale * Math.exp(-0.15 * step) * Math.cos(0.08 * step); + } + + private int getStatusBarHeight() { + return (int) Math.ceil(25 * getApplicationContext().getResources().getDisplayMetrics().density); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + + getWindowManagerDefaultDisplay(); + WindowManager.LayoutParams layoutParams = (WindowManager.LayoutParams) mFloatingWidgetView.getLayoutParams(); + + if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { + if (layoutParams.y + (mFloatingWidgetView.getHeight() + getStatusBarHeight()) > szWindow.y) { + layoutParams.y = szWindow.y - (mFloatingWidgetView.getHeight() + getStatusBarHeight()); + mWindowManager.updateViewLayout(mFloatingWidgetView, layoutParams); + } + + if (layoutParams.x != 0 && layoutParams.x < szWindow.x) { + resetPosition(szWindow.x); + } + } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { + if (layoutParams.x > szWindow.x) { + resetPosition(szWindow.x); + } + } + } + + private void onFloatingWidgetClick() { + _continueToSnap = false; + // bring the application to front + Intent it = new Intent("intent.bring.app.to.foreground"); + it.setComponent(new ComponentName(getPackageName(), getApplicationContext().getPackageName() + ".MainActivity")); + it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + getApplicationContext().startActivity(it); + + // stop the service + stopSelf(); + } + + @Override + public void onDestroy() { + super.onDestroy(); + if (mFloatingWidgetView != null) { + mWindowManager.removeView(mFloatingWidgetView); + } + if (removeFloatingWidgetView != null) { + mWindowManager.removeView(removeFloatingWidgetView); + } + } +} diff --git a/bubble-master/android/src/main/java/com/dsaved/bubblehead/bubble/BubblePlugin.java b/bubble-master/android/src/main/java/com/dsaved/bubblehead/bubble/BubblePlugin.java new file mode 100755 index 0000000..1dc7421 --- /dev/null +++ b/bubble-master/android/src/main/java/com/dsaved/bubblehead/bubble/BubblePlugin.java @@ -0,0 +1,95 @@ +package com.dsaved.bubblehead.bubble; + +import android.content.Context; +import android.os.Build; +import android.provider.Settings; + +import androidx.annotation.NonNull; +import androidx.annotation.RequiresApi; + +import io.flutter.embedding.engine.plugins.FlutterPlugin; +import io.flutter.embedding.engine.plugins.activity.ActivityAware; +import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; +import io.flutter.plugin.common.MethodChannel.MethodCallHandler; +import io.flutter.plugin.common.MethodChannel.Result; + +/** + * BubblePlugin + */ +public class BubblePlugin implements FlutterPlugin, MethodCallHandler, ActivityAware { + /// The MethodChannel that will the communication between Flutter and native Android + /// + /// This local reference serves to register the plugin with the Flutter Engine and unregister it + /// when the Flutter Engine is detached from the Activity + private MethodChannel channel; + private Context activity; + + + @Override + public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) { + channel = new MethodChannel(flutterPluginBinding.getBinaryMessenger(), "com.dsaved.bubble.head"); + channel.setMethodCallHandler(this); + } + + @RequiresApi(api = Build.VERSION_CODES.M) + @Override + public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) { + if (call.method.equals("startBubbleHead")) { + startBubbleHead(result, call); + } else if (call.method.equals("stopBubbleHead")) { + BubbleHeadService.stopService(activity); + } else { + result.notImplemented(); + } + } + + @RequiresApi(api = Build.VERSION_CODES.M) + public void startBubbleHead(@NonNull Result result, MethodCall call) { + if (Settings.canDrawOverlays(activity)) { + boolean bounce = call.argument("bounce"); + BubbleHeadService.bounce(bounce); + + boolean showClose = call.argument("showClose"); + BubbleHeadService.shouldShowCloseButton(showClose); + + boolean dragToClose = call.argument("dragToClose"); + BubbleHeadService.dragToClose(dragToClose); + + boolean sendAppToBackground = call.argument("sendAppToBackground"); + BubbleHeadService.sendAppToBackground(sendAppToBackground); + + String imageByte = call.argument("image"); + BubbleHeadService.startService(activity, imageByte); + } else { + //Permission is not available + result.error("EPERMNOTGRANTED", "permission not available", "Please request permission for: android.permission.SYSTEM_ALERT_WINDOW. with out this permission you cannot launch the bubble head."); + } + } + + @Override + public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) { + channel.setMethodCallHandler(null); + } + + @Override + public void onAttachedToActivity(@NonNull ActivityPluginBinding binding) { + this.activity = binding.getActivity(); + } + + @Override + public void onDetachedFromActivityForConfigChanges() { + + } + + @Override + public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding binding) { + + } + + @Override + public void onDetachedFromActivity() { + + } +} diff --git a/bubble-master/android/src/main/res/drawable/circle_shape.xml b/bubble-master/android/src/main/res/drawable/circle_shape.xml new file mode 100755 index 0000000..39b30cf --- /dev/null +++ b/bubble-master/android/src/main/res/drawable/circle_shape.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/bubble-master/android/src/main/res/drawable/ic_aspect_ratio_black_24dp.xml b/bubble-master/android/src/main/res/drawable/ic_aspect_ratio_black_24dp.xml new file mode 100755 index 0000000..fd01d34 --- /dev/null +++ b/bubble-master/android/src/main/res/drawable/ic_aspect_ratio_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/bubble-master/android/src/main/res/drawable/ic_close_black_24dp.xml b/bubble-master/android/src/main/res/drawable/ic_close_black_24dp.xml new file mode 100755 index 0000000..20a88e1 --- /dev/null +++ b/bubble-master/android/src/main/res/drawable/ic_close_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/bubble-master/android/src/main/res/drawable/ic_close_white_24dp.xml b/bubble-master/android/src/main/res/drawable/ic_close_white_24dp.xml new file mode 100755 index 0000000..7fb0631 --- /dev/null +++ b/bubble-master/android/src/main/res/drawable/ic_close_white_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/bubble-master/android/src/main/res/drawable/ic_launcher.png b/bubble-master/android/src/main/res/drawable/ic_launcher.png new file mode 100755 index 0000000..cde69bc Binary files /dev/null and b/bubble-master/android/src/main/res/drawable/ic_launcher.png differ diff --git a/bubble-master/android/src/main/res/drawable/white_circle_shape.xml b/bubble-master/android/src/main/res/drawable/white_circle_shape.xml new file mode 100755 index 0000000..53a328a --- /dev/null +++ b/bubble-master/android/src/main/res/drawable/white_circle_shape.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/bubble-master/android/src/main/res/layout/bubble_head_remove_widget.xml b/bubble-master/android/src/main/res/layout/bubble_head_remove_widget.xml new file mode 100755 index 0000000..532c606 --- /dev/null +++ b/bubble-master/android/src/main/res/layout/bubble_head_remove_widget.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/bubble-master/android/src/main/res/layout/layout_bubble_head.xml b/bubble-master/android/src/main/res/layout/layout_bubble_head.xml new file mode 100755 index 0000000..b237150 --- /dev/null +++ b/bubble-master/android/src/main/res/layout/layout_bubble_head.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + diff --git a/bubble-master/android/src/main/res/values/styles.xml b/bubble-master/android/src/main/res/values/styles.xml new file mode 100755 index 0000000..ce24e43 --- /dev/null +++ b/bubble-master/android/src/main/res/values/styles.xml @@ -0,0 +1,16 @@ + + + + + + + + \ No newline at end of file diff --git a/bubble-master/lib/bubble.dart b/bubble-master/lib/bubble.dart new file mode 100755 index 0000000..00fa44a --- /dev/null +++ b/bubble-master/lib/bubble.dart @@ -0,0 +1,41 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:typed_data'; + +import 'package:flutter/services.dart'; + +class Bubble { + static const MethodChannel _channel = + const MethodChannel('com.dsaved.bubble.head'); + + bool shouldBounce; + bool showCloseButton; + bool allowDragToClose; + + Bubble({ + this.shouldBounce = true, + this.allowDragToClose = true, + this.showCloseButton = false, + }); + + /// puts app in background and shows floaty-bubble head + Future startBubbleHead({bool sendAppToBackground = true}) async { + ByteData bytes = await rootBundle.load( + 'assets/images/s.png', + ); + var buffer = bytes.buffer; + var encodedImage = base64.encode(Uint8List.view(buffer)); + await _channel.invokeMethod('startBubbleHead', { + "image": encodedImage, + "bounce": shouldBounce, + "showClose": showCloseButton, + "dragToClose": allowDragToClose, + "sendAppToBackground": sendAppToBackground, + }); + } + + /// closes floaty-bubble head + Future stopBubbleHead() async { + await _channel.invokeMethod('stopBubbleHead'); + } +} diff --git a/bubble-master/pubspec.lock b/bubble-master/pubspec.lock new file mode 100755 index 0000000..f4bbb72 --- /dev/null +++ b/bubble-master/pubspec.lock @@ -0,0 +1,189 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" + url: "https://pub.dev" + source: hosted + version: "2.13.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + characters: + dependency: transitive + description: + name: characters + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" + url: "https://pub.dev" + source: hosted + version: "1.3.3" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" + url: "https://pub.dev" + source: hosted + version: "10.0.9" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + url: "https://pub.dev" + source: hosted + version: "3.0.9" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + meta: + dependency: transitive + description: + name: meta + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + url: "https://pub.dev" + source: hosted + version: "1.16.0" + path: + dependency: transitive + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + source_span: + dependency: transitive + description: + name: source_span + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + url: "https://pub.dev" + source: hosted + version: "1.10.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test_api: + dependency: transitive + description: + name: test_api + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + url: "https://pub.dev" + source: hosted + version: "0.7.4" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 + url: "https://pub.dev" + source: hosted + version: "15.0.0" +sdks: + dart: ">=3.7.0-0 <4.0.0" + flutter: ">=3.18.0-18.0.pre.54" diff --git a/bubble-master/pubspec.yaml b/bubble-master/pubspec.yaml new file mode 100755 index 0000000..1a07ea9 --- /dev/null +++ b/bubble-master/pubspec.yaml @@ -0,0 +1,63 @@ +name: bubble_head +description: A flutter plugin to enable you launch a bubble while putting your application to background and upon clicking the bubble brings your application back to foreground +version: 0.0.4 +homepage: https://github.com/chrisoftech/bubble +# publish_to: + +environment: + sdk: ">=2.12.0 <3.0.0" + flutter: ">=1.20.0" + +dependencies: + flutter: + sdk: flutter + +dev_dependencies: + flutter_test: + sdk: flutter + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter. +flutter: + # This section identifies this Flutter project as a plugin project. + # The 'pluginClass' and Android 'package' identifiers should not ordinarily + # be modified. They are used by the tooling to maintain consistency when + # adding or updating assets for this project. + plugin: + platforms: + android: + package: com.dsaved.bubblehead.bubble + pluginClass: BubblePlugin + + # To add assets to your plugin package, add an assets section, like this: + # assets: + # - assets/images/ + # - images/a_dot_ham.jpeg + # + # For details regarding assets in packages, see + # https://flutter.dev/assets-and-images/#from-packages + # + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware. + + # To add custom fonts to your plugin package, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts in packages, see + # https://flutter.dev/custom-fonts/#from-packages diff --git a/devtools_options.yaml b/devtools_options.yaml new file mode 100644 index 0000000..fa0b357 --- /dev/null +++ b/devtools_options.yaml @@ -0,0 +1,3 @@ +description: This file stores settings for Dart & Flutter DevTools. +documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states +extensions: diff --git a/firebase.json b/firebase.json new file mode 100644 index 0000000..cd75a65 --- /dev/null +++ b/firebase.json @@ -0,0 +1 @@ +{"flutter":{"platforms":{"android":{"default":{"projectId":"intaleq-d48a7","appId":"1:1086900987150:android:e3daebe53bf691de77a35f","fileOutput":"android/app/google-services.json"}},"ios":{"default":{"projectId":"intaleq-d48a7","appId":"1:1086900987150:ios:4de021170777304677a35f","uploadDebugSymbols":false,"fileOutput":"ios/Runner/GoogleService-Info.plist"}},"dart":{"lib/firebase_options.dart":{"projectId":"intaleq-d48a7","configurations":{"android":"1:1086900987150:android:e3daebe53bf691de77a35f","ios":"1:1086900987150:ios:4de021170777304677a35f"}}}}}} \ No newline at end of file diff --git a/flutter_overlay_apps-main/.gitignore b/flutter_overlay_apps-main/.gitignore new file mode 100755 index 0000000..9be145f --- /dev/null +++ b/flutter_overlay_apps-main/.gitignore @@ -0,0 +1,29 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. +/pubspec.lock +**/doc/api/ +.dart_tool/ +.packages +build/ diff --git a/flutter_overlay_apps-main/.metadata b/flutter_overlay_apps-main/.metadata new file mode 100755 index 0000000..62d25ea --- /dev/null +++ b/flutter_overlay_apps-main/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: b101bfe32f634566e7cb2791a9efe19cf8828b15 + channel: beta + +project_type: plugin diff --git a/flutter_overlay_apps-main/CHANGELOG.md b/flutter_overlay_apps-main/CHANGELOG.md new file mode 100755 index 0000000..3e7e332 --- /dev/null +++ b/flutter_overlay_apps-main/CHANGELOG.md @@ -0,0 +1,20 @@ +## 1.2.0 + +* Upgraded gradle +* Added Back Button navigation action + +## 1.1.2 + +* exposed overlay StreamController + +## 1.0.2 + +* enabled keyboard input + +## 1.0.1 + +* Update app from overlay fix + +## 1.0.0 + +* Ininial release diff --git a/flutter_overlay_apps-main/LICENSE b/flutter_overlay_apps-main/LICENSE new file mode 100755 index 0000000..caf2d49 --- /dev/null +++ b/flutter_overlay_apps-main/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022, Eddie Genius + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/flutter_overlay_apps-main/README.md b/flutter_overlay_apps-main/README.md new file mode 100755 index 0000000..d496264 --- /dev/null +++ b/flutter_overlay_apps-main/README.md @@ -0,0 +1,179 @@ +# flutter_overlay_apps + +Android plugin for displaying flutter app over other apps + +## Usage + +Add dependency to pubspec.yaml file + + +### Android +You'll need to add the `SYSTEM_ALERT_WINDOW` permission and `OverlayService` to your Android Manifest. +```XML + + + ... + + +``` + +### Entry point +Inside `main.dart` create an entry point for your Overlay widget; +NOTE: `MaterialApp` is required +```dart +// overlay entry point +@pragma("vm:entry-point") +void showOverlay() { + runApp(const MaterialApp( + debugShowCheckedModeBanner: false, + home: Material(child: Text("My overlay")) + )); +} +``` + + +### Methods +To open an overlay, call `FlutterOverlayApps.showOverlay()`. +Default `height` & `width` is fill screen + +```dart +FlutterOverlayApps.showOverlay(height: 300, width: 400, alignment: OverlayAlignment.center); +``` + +To close the overlay widget call +```dart +FlutterOverlayApps.closeOverlay(); +``` +To send data to and from Overlay widget, call +```dart +FlutterOverlayApps.sendDataToAndFromOverlay(); +``` +For listening to broadcasted data, stream the messages by calling +```dart +FlutterOverlayApps.overlayListener().listen((data) { + print(data); +}); +``` + +### Code Example +```dart +import 'package:flutter/material.dart'; +import 'dart:async'; + +import 'package:flutter_overlay_apps/flutter_overlay_apps.dart'; + +void main() { + runApp(const MyApp()); +} + +// overlay entry point +@pragma("vm:entry-point") +void showOverlay() { + runApp(const MaterialApp( + debugShowCheckedModeBanner: false, + home: MyOverlaContent() + )); +} + + +class MyApp extends StatelessWidget { + const MyApp({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + appBar: AppBar( + title: const Text('Plugin example app'), + ), + body: Center( + child: ElevatedButton( + onPressed: () async { + + // Open overlay + await FlutterOverlayApps.showOverlay(height: 300, width: 400, alignment: OverlayAlignment.center); + + // send data to ovelay + await Future.delayed(const Duration(seconds: 2)); + FlutterOverlayApps.sendDataToAndFromOverlay("Hello from main app"); + }, + child: const Text("showOverlay") + ), + ), + ), + ); + } +} + + + +class MyOverlaContent extends StatefulWidget { + const MyOverlaContent({ Key? key }) : super(key: key); + + @override + State createState() => _MyOverlaContentState(); +} + +class _MyOverlaContentState extends State { + String _dataFromApp = "Hey send data"; + + @override + void initState() { + super.initState(); + + // lisent for any data from the main app + FlutterOverlayApps.overlayListener().listen((event) { + setState(() { + _dataFromApp = event.toString(); + }); + }); + } + + @override + Widget build(BuildContext context) { + return Material( + child: InkWell( + onTap: (){ + // close overlay + FlutterOverlayApps.closeOverlay(); + }, + child: Card( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + ), + child: Center(child: Text(_dataFromApp, style: const TextStyle(color: Colors.red),)), + ), + ), + ); + } +} +``` + +## Android back button +The back navigation button on android will close the overlay app. To prevent this, set `closeOnBackButton` to `false`. Example; + +```dart +await FlutterOverlayApps.showOverlay( + height: 300, + closeOnBackButton: false, + alignment: OverlayAlignment.center); +``` + +When `closeOnBackButton` is set to `false`, an action will be sent via the stream controller. You can get the action like the example below; + +```dart +var overlayStreamController = FlutterOverlayApps.overlayListener(); + +overlayStreamController.stream.listen((event) { + if(event['method'] == 'backButton'){ + // handle back button + if(mounted && Navigator.of(context).canPop()){ + Navigator.of(context).pop(); + } + } +}) +``` + +Support the plugin Buy Me A Coffee diff --git a/flutter_overlay_apps-main/analysis_options.yaml b/flutter_overlay_apps-main/analysis_options.yaml new file mode 100755 index 0000000..a5744c1 --- /dev/null +++ b/flutter_overlay_apps-main/analysis_options.yaml @@ -0,0 +1,4 @@ +include: package:flutter_lints/flutter.yaml + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/flutter_overlay_apps-main/android/.gitignore b/flutter_overlay_apps-main/android/.gitignore new file mode 100755 index 0000000..161bdcd --- /dev/null +++ b/flutter_overlay_apps-main/android/.gitignore @@ -0,0 +1,9 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures +.cxx diff --git a/flutter_overlay_apps-main/android/build.gradle b/flutter_overlay_apps-main/android/build.gradle new file mode 100755 index 0000000..79a5e7b --- /dev/null +++ b/flutter_overlay_apps-main/android/build.gradle @@ -0,0 +1,52 @@ +group 'com.phan_tech.flutter_overlay_apps' +version '1.0-SNAPSHOT' + +buildscript { + ext.kotlin_version = '1.6.10' + + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:4.1.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +rootProject.allprojects { + repositories { + google() + mavenCentral() + } +} + +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' + +android { + compileSdkVersion 31 + namespace 'com.phan_tech.flutter_overlay_apps' // Specify the namespace here + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + minSdkVersion 16 + } +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/flutter_overlay_apps-main/android/gradle/wrapper/gradle-wrapper.jar b/flutter_overlay_apps-main/android/gradle/wrapper/gradle-wrapper.jar new file mode 100755 index 0000000..7454180 Binary files /dev/null and b/flutter_overlay_apps-main/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/flutter_overlay_apps-main/android/gradle/wrapper/gradle-wrapper.properties b/flutter_overlay_apps-main/android/gradle/wrapper/gradle-wrapper.properties new file mode 100755 index 0000000..e277664 --- /dev/null +++ b/flutter_overlay_apps-main/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Sat Jul 26 11:25:02 EET 2025 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/flutter_overlay_apps-main/android/gradlew b/flutter_overlay_apps-main/android/gradlew new file mode 100755 index 0000000..1b6c787 --- /dev/null +++ b/flutter_overlay_apps-main/android/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/flutter_overlay_apps-main/android/gradlew.bat b/flutter_overlay_apps-main/android/gradlew.bat new file mode 100755 index 0000000..ac1b06f --- /dev/null +++ b/flutter_overlay_apps-main/android/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/flutter_overlay_apps-main/android/settings.gradle b/flutter_overlay_apps-main/android/settings.gradle new file mode 100755 index 0000000..c577374 --- /dev/null +++ b/flutter_overlay_apps-main/android/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'flutter_overlay_apps' diff --git a/flutter_overlay_apps-main/android/src/main/AndroidManifest.xml b/flutter_overlay_apps-main/android/src/main/AndroidManifest.xml new file mode 100755 index 0000000..bb97f39 --- /dev/null +++ b/flutter_overlay_apps-main/android/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + diff --git a/flutter_overlay_apps-main/android/src/main/kotlin/com/phan_tech/flutter_overlay_apps/FlutterOverlayAppsPlugin.kt b/flutter_overlay_apps-main/android/src/main/kotlin/com/phan_tech/flutter_overlay_apps/FlutterOverlayAppsPlugin.kt new file mode 100755 index 0000000..97a7a68 --- /dev/null +++ b/flutter_overlay_apps-main/android/src/main/kotlin/com/phan_tech/flutter_overlay_apps/FlutterOverlayAppsPlugin.kt @@ -0,0 +1,131 @@ +package com.phan_tech.flutter_overlay_apps + +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.os.Build +import android.provider.Settings +import androidx.annotation.NonNull +import androidx.annotation.RequiresApi +import io.flutter.FlutterInjector +import io.flutter.embedding.engine.FlutterEngineCache +import io.flutter.embedding.engine.FlutterEngineGroup +import io.flutter.embedding.engine.dart.DartExecutor +import io.flutter.embedding.engine.plugins.FlutterPlugin +import io.flutter.embedding.engine.plugins.activity.ActivityAware +import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding +import io.flutter.plugin.common.* +import io.flutter.plugin.common.MethodChannel.MethodCallHandler +import io.flutter.plugin.common.MethodChannel.Result + +const val mainAppMethodChannel: String = "com.phan_tech/flutter_overlay_apps" +const val overlayAppMethodChannel: String = "com.phan_tech/flutter_overlay_apps/overlay" +const val overlayAppMessageChannel: String = "com.phan_tech/flutter_overlay_apps/overlay/messenger" + +/** FlutterOverlayAppsPlugin */ +class FlutterOverlayAppsPlugin : FlutterPlugin, MethodCallHandler, ActivityAware, BasicMessageChannel.MessageHandler { + private lateinit var channel: MethodChannel + private lateinit var messenger: BasicMessageChannel + private lateinit var context: Context + private var activity: Activity? = null + + override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) { + channel.setMethodCallHandler(null) + } + + override fun onAttachedToActivity(binding: ActivityPluginBinding) { + activity = binding.activity + context = binding.activity.applicationContext + WindowSetup.messenger = messenger + WindowSetup.messenger!!.setMessageHandler(this) + + val engineGroup = FlutterEngineGroup(context) + val dartEntrypoint = DartExecutor.DartEntrypoint( + FlutterInjector.instance().flutterLoader().findAppBundlePath(), + "showOverlay" + ) + val engine = engineGroup.createAndRunEngine(context, dartEntrypoint) + FlutterEngineCache.getInstance().put("my_engine_id", engine) + } + + override fun onDetachedFromActivityForConfigChanges() { + activity = null + } + + override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) { + activity = binding.activity + } + + override fun onDetachedFromActivity() { + activity = null + } + + override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { + channel = MethodChannel(flutterPluginBinding.binaryMessenger, mainAppMethodChannel) + channel.setMethodCallHandler(this) + + messenger = BasicMessageChannel(flutterPluginBinding.binaryMessenger, overlayAppMessageChannel, JSONMessageCodec.INSTANCE) + messenger.setMessageHandler(this) + } + + override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) { + val currentActivity = activity + if (currentActivity == null) { + result.error("activity_not_attached", "Activity is not attached", null) + return + } + + when (call.method) { + "showOverlay" -> { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { + result.error("1", "SDK version is lower than 23", "Requires Android SDK 23 and above") + } else if (!checkPermissions()) { + requestPermissions() + } else { + val height = call.argument("height") + val width = call.argument("width") + val alignment = call.argument("alignment") + val closeOnBackButton = call.argument("closeOnBackButton") + + WindowSetup.width = width ?: -1 + WindowSetup.height = height ?: -1 + WindowSetup.closeOnBackButton = closeOnBackButton ?: true + WindowSetup.setGravityFromAlignment(alignment ?: "center") + currentActivity.startService(Intent(context, OverlayService::class.java)) + result.success(true) + } + } + else -> { + result.notImplemented() + } + } + } + + override fun onMessage(message: Any?, reply: BasicMessageChannel.Reply) { + val engine = FlutterEngineCache.getInstance().get("my_engine_id") + if (engine != null) { + val overlayMessageChannel = BasicMessageChannel(engine.dartExecutor, overlayAppMessageChannel, JSONMessageCodec.INSTANCE) + overlayMessageChannel.send(message, reply) + } else { + reply.reply(null) + } + } + + @RequiresApi(Build.VERSION_CODES.M) + private fun checkPermissions(): Boolean { + return Settings.canDrawOverlays(context) + } + + @RequiresApi(Build.VERSION_CODES.M) + private fun requestPermissions() { + activity?.let { + it.startActivity( + Intent( + Settings.ACTION_MANAGE_OVERLAY_PERMISSION, + Uri.parse("package:${it.packageName}") + ) + ) + } + } +} diff --git a/flutter_overlay_apps-main/android/src/main/kotlin/com/phan_tech/flutter_overlay_apps/OverlayService.kt b/flutter_overlay_apps-main/android/src/main/kotlin/com/phan_tech/flutter_overlay_apps/OverlayService.kt new file mode 100755 index 0000000..f7f11a9 --- /dev/null +++ b/flutter_overlay_apps-main/android/src/main/kotlin/com/phan_tech/flutter_overlay_apps/OverlayService.kt @@ -0,0 +1,97 @@ +package com.phan_tech.flutter_overlay_apps + +import android.app.Service +import android.content.Intent +import android.graphics.PixelFormat +import android.os.Build +import android.os.IBinder +import android.view.KeyEvent +import android.view.WindowManager +import android.widget.FrameLayout +import androidx.annotation.RequiresApi +import io.flutter.embedding.android.FlutterView +import io.flutter.embedding.engine.FlutterEngineCache +import io.flutter.plugin.common.BasicMessageChannel +import io.flutter.plugin.common.JSONMessageCodec +import io.flutter.plugin.common.MethodCall +import io.flutter.plugin.common.MethodChannel +import org.json.JSONObject + + +class OverlayService : Service() { + private var windowManager: WindowManager? = null + private lateinit var flutterView: FlutterView + private val flutterChannel = MethodChannel(FlutterEngineCache.getInstance().get("my_engine_id")!!.dartExecutor, overlayAppMethodChannel) + private val overlayMessageChannel = BasicMessageChannel(FlutterEngineCache.getInstance().get("my_engine_id")!!.dartExecutor, overlayAppMessageChannel, JSONMessageCodec.INSTANCE) + + override fun onBind(intent: Intent?): IBinder? { + // Not used + return null + } + + @RequiresApi(Build.VERSION_CODES.O) + override fun onCreate() { + super.onCreate() + + val engine = FlutterEngineCache.getInstance().get("my_engine_id")!! + engine.lifecycleChannel.appIsResumed() + + flutterView = object: FlutterView(applicationContext){ + override fun dispatchKeyEvent(event: KeyEvent): Boolean { + return if (event.keyCode == KeyEvent.KEYCODE_BACK) { + // handle the back button code; + if(WindowSetup.closeOnBackButton){ + stopService(Intent(baseContext, OverlayService().javaClass)) + windowManager?.removeView(flutterView) + }else{ + // send message + overlayMessageChannel.send(JSONObject("{\"method\": \"backButton\"}"))// {"method" "backButton"} + + } + + true + } else super.dispatchKeyEvent(event) + } + + } + + flutterView.attachToFlutterEngine(FlutterEngineCache.getInstance().get("my_engine_id")!!) + flutterView.fitsSystemWindows = true + + flutterChannel.setMethodCallHandler{ methodCall: MethodCall, result: MethodChannel.Result -> + if(methodCall.method == "close"){ + val closed = stopService(Intent(baseContext, OverlayService().javaClass)) + result.success(closed) + } + } + overlayMessageChannel.setMessageHandler(MyHandler()) + + + windowManager = getSystemService(WINDOW_SERVICE) as WindowManager? + + val params = WindowManager.LayoutParams( + WindowSetup.width, + WindowSetup.height, + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY + else WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, + WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, + PixelFormat.TRANSLUCENT + ) + params.flags = params.flags and WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE.inv() + params.gravity = WindowSetup.gravity + windowManager!!.addView(flutterView, params) + } + + + override fun onDestroy() { + super.onDestroy() + windowManager!!.removeView(flutterView) + } +} + +class MyHandler: BasicMessageChannel.MessageHandler{ + override fun onMessage(message: Any?, reply: BasicMessageChannel.Reply) { + WindowSetup.messenger!!.send(message) + } + +} \ No newline at end of file diff --git a/flutter_overlay_apps-main/android/src/main/kotlin/com/phan_tech/flutter_overlay_apps/WindowSetup.kt b/flutter_overlay_apps-main/android/src/main/kotlin/com/phan_tech/flutter_overlay_apps/WindowSetup.kt new file mode 100755 index 0000000..b99a055 --- /dev/null +++ b/flutter_overlay_apps-main/android/src/main/kotlin/com/phan_tech/flutter_overlay_apps/WindowSetup.kt @@ -0,0 +1,53 @@ +package com.phan_tech.flutter_overlay_apps + +import android.annotation.SuppressLint +import android.view.Gravity +import android.view.WindowManager +import io.flutter.plugin.common.BasicMessageChannel + +object WindowSetup { + var height: Int = -1 + var width: Int = WindowManager.LayoutParams.MATCH_PARENT + var gravity: Int = Gravity.CENTER + var messenger : BasicMessageChannel? = null + var closeOnBackButton : Boolean = true; + + @SuppressLint("RtlHardcoded") + fun setGravityFromAlignment(alignment: String){ + when { + alignment.lowercase() == "topLeft".lowercase() -> { + gravity = Gravity.TOP or Gravity.LEFT + } + alignment.lowercase() == "topCenter".lowercase() -> { + gravity = Gravity.TOP + } + alignment.lowercase() == "topRight".lowercase() -> { + gravity = Gravity.TOP or Gravity.RIGHT + } + + + alignment.lowercase() == "centerLeft".lowercase() -> { + gravity = Gravity.CENTER or Gravity.LEFT + } + alignment.lowercase() == "center".lowercase() -> { + gravity = Gravity.CENTER + } + alignment.lowercase() == "centerRight".lowercase() -> { + gravity = Gravity.CENTER or Gravity.RIGHT + } + + + alignment.lowercase() == "bottomLeft".lowercase() -> { + gravity = Gravity.BOTTOM or Gravity.LEFT + } + alignment.lowercase() == "bottomCenter".lowercase() -> { + gravity = Gravity.BOTTOM + } + alignment.lowercase() == "bottomRight".lowercase() -> { + gravity = Gravity.BOTTOM or Gravity.RIGHT + } + + + } + } +} \ No newline at end of file diff --git a/flutter_overlay_apps-main/lib/flutter_overlay_apps.dart b/flutter_overlay_apps-main/lib/flutter_overlay_apps.dart new file mode 100755 index 0000000..9e2b8e0 --- /dev/null +++ b/flutter_overlay_apps-main/lib/flutter_overlay_apps.dart @@ -0,0 +1,84 @@ +import 'dart:async'; + +import 'package:flutter/services.dart'; + +const int overlaySizeFill = -1; +const String _mainAppMethodChannel = "com.phan_tech./flutter_overlay_apps"; +const String _overlayAppMethodChannel = + "com.phan_tech/flutter_overlay_apps/overlay"; +const String _overlayAppMessageChannel = + "com.phan_tech/flutter_overlay_apps/overlay/messenger"; + +class FlutterOverlayApps { + static const MethodChannel _channel = MethodChannel(_mainAppMethodChannel); + + // overlay methodChanel + static const MethodChannel _overlayChannel = + MethodChannel(_overlayAppMethodChannel); + //Overlay BasicMessageChannel + static const BasicMessageChannel _overlayMessageChannel = + BasicMessageChannel(_overlayAppMessageChannel, JSONMessageCodec()); + + /// Open overLay content + /// Takes optional; + /// - int [height] default is [overlaySizeFill] + /// - int [width] default is [overlaySizeFill] + /// - OverlayAlignment [width] default is [alignment] [OverlayAlignment.center] + /// - bool [closeOnBackButton] default is `true` + static Future showOverlay( + {int height = overlaySizeFill, + int width = overlaySizeFill, + bool closeOnBackButton = true, + OverlayAlignment alignment = OverlayAlignment.center}) async { + final bool? _res = await _channel.invokeMethod('showOverlay', { + "height": height, + "width": width, + "alignment": alignment.name, + "closeOnBackButton": closeOnBackButton + }); + return _res; + } + + /// Closes overlau if open + static Future closeOverlay() async { + final bool? _res = await _overlayChannel.invokeMethod('close'); + return _res; + } + + /// broadcast data to and from overlay app + /// the supported data type are; + /// - [int], [double], [bool], [String], null + /// - [List] of supported types + /// - [Map] of supported types + static Future sendDataToAndFromOverlay(dynamic data) async { + return await _overlayMessageChannel.send(data); + } + + /// Streams message shared between overlay and main app + static final StreamController _controller = StreamController(); + static StreamController overlayListener() { + _overlayMessageChannel.setMessageHandler((message) async { + _controller.add(message); + return message; + }); + return _controller; + } + + /// dispose overlay controller + static void disposeOverlayListener() { + _controller.close(); + } +} + +/// Overlay alignment on screen +enum OverlayAlignment { + topLeft, + topCenter, + topRight, + centerLeft, + center, + centerRight, + bottomLeft, + bottomCenter, + bottomRight +} diff --git a/flutter_overlay_apps-main/pubspec.yaml b/flutter_overlay_apps-main/pubspec.yaml new file mode 100755 index 0000000..d4d42e9 --- /dev/null +++ b/flutter_overlay_apps-main/pubspec.yaml @@ -0,0 +1,27 @@ +name: flutter_overlay_apps +description: Android plugin for displaying flutter widgets over other apps +version: 1.2.0 +homepage: https://github.com/EddieKamau/flutter_overlay_apps + +environment: + sdk: ">=2.16.0 <4.0.0" + flutter: ">=2.5.0" + +dependencies: + flutter: + sdk: flutter + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^1.0.0 + + +flutter: + + plugin: + platforms: + android: + package: com.phan_tech.flutter_overlay_apps + pluginClass: FlutterOverlayAppsPlugin + diff --git a/flutter_overlay_apps-main/test/flutter_overlay_apps_test.dart b/flutter_overlay_apps-main/test/flutter_overlay_apps_test.dart new file mode 100755 index 0000000..8aa3449 --- /dev/null +++ b/flutter_overlay_apps-main/test/flutter_overlay_apps_test.dart @@ -0,0 +1,24 @@ +import 'package:flutter/services.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:flutter_overlay_apps/flutter_overlay_apps.dart'; + +void main() { + const MethodChannel channel = + MethodChannel('com.phan_tech./flutter_overlay_apps'); + + TestWidgetsFlutterBinding.ensureInitialized(); + + setUp(() { + channel.setMockMethodCallHandler((MethodCall methodCall) async { + return true; + }); + }); + + tearDown(() { + channel.setMockMethodCallHandler(null); + }); + + test('getPlatformVersion', () async { + expect(await FlutterOverlayApps.showOverlay(), true); + }); +} diff --git a/ios b/ios new file mode 160000 index 0000000..76b68ec --- /dev/null +++ b/ios @@ -0,0 +1 @@ +Subproject commit 76b68ec339c648b29159d91bb25ac15ece32abfd diff --git a/lib/constant/api_key.dart b/lib/constant/api_key.dart new file mode 100755 index 0000000..eb16dbe --- /dev/null +++ b/lib/constant/api_key.dart @@ -0,0 +1,90 @@ +import 'package:secure_string_operations/secure_string_operations.dart'; + +import '../env/env.dart'; +import 'char_map.dart'; + +class AK { + static final String sss_pass = X.r(X.r(X.r(Env.sss_pass, cn), cC), cs); + static final String allowed = Env.allowed; + static final String allowedWallet = Env.allowedWallet; + static final String passnpassenger = X + .r(X.r(X.r(Env.passnpassenger, cn), cC), cs) + .toString() + .split(Env.addd)[0]; + static final String newId = Env.newId; + static final String sss_encryptionSalt = + X.r(X.r(X.r(Env.sss_encryptionSalt, cn), cC), cs); + + static final String publishableKeyStripe = + X.r(X.r(X.r(Env.stripePublishableKe, cn), cC), cs); + static final String secretKeyStripe = + X.r(X.r(X.r(Env.secretKey, cn), cC), cs); + static final String basicAuthCredentials = + X.r(X.r(X.r(Env.basicAuthCredentials, cn), cC), cs); + static final String basicCompareFaces = + X.r(X.r(X.r(Env.basicCompareFaces, cn), cC), cs); + static final String accountSIDTwillo = + X.r(X.r(X.r(Env.accountSIDTwillo, cn), cC), cs); + static final String serverAPI = X.r(X.r(X.r(Env.serverAPI, cn), cC), cs); + static final String mapAPIKEY = X.r(X.r(X.r(Env.mapAPIKEY, cn), cC), cs); + static final String twilloRecoveryCode = + X.r(X.r(X.r(Env.twilloRecoveryCode, cn), cC), cs); + static final String authTokenTwillo = + X.r(X.r(X.r(Env.authTokenTwillo, cn), cC), cs); + static final String chatGPTkey = X.r(X.r(X.r(Env.chatGPTkey, cn), cC), cs); + static final String transactionCloude = + X.r(X.r(X.r(Env.transactionCloude, cn), cC), cs); + static final String visionApi = X.r(X.r(X.r(Env.visionApi, cn), cC), cs); + static final String chatGPTkeySefer = + X.r(X.r(X.r(Env.chatGPTkeySefer, cn), cC), cs); + static final String chatGPTkeySeferNew = + X.r(X.r(X.r(Env.chatGPTkeySeferNew, cn), cC), cs); + static final String serverPHP = Env.serverPHP; + static final String llamaKey = X.r(X.r(X.r(Env.llamaKey, cn), cC), cs); + static final String cohere = X.r(X.r(X.r(Env.cohere, cn), cC), cs); + static final String claudeAiAPI = X.r(X.r(X.r(Env.claudeAiAPI, cn), cC), cs); + static final String payPalClientId = + X.r(X.r(X.r(Env.payPalClientId, cn), cC), cs); + static final String payPalSecret = + X.r(X.r(X.r(Env.payPalSecret, cn), cC), cs); + static final String geminiApi = X.r(X.r(X.r(Env.geminiApi, cn), cC), cs); + static final String agoraAppId = X.r(X.r(X.r(Env.agoraAppId, cn), cC), cs); + static final String agoraAppCertificate = + X.r(X.r(X.r(Env.agoraAppCertificate, cn), cC), cs); + static final String payPalClientIdLive = + X.r(X.r(X.r(Env.payPalClientIdLive, cn), cC), cs); + static final String payPalSecretLive = + X.r(X.r(X.r(Env.payPalSecretLive, cn), cC), cs); + static final String integrationIdPayMob = + X.r(X.r(X.r(Env.integrationIdPayMob, cn), cC), cs); + static final String passwordPayMob = + X.r(X.r(X.r(Env.passwordPayMob, cn), cC), cs); + static final String usernamePayMob = + X.r(X.r(X.r(Env.usernamePayMob, cn), cC), cs); + static final String payMobApikey = + X.r(X.r(X.r(Env.payMobApikey, cn), cC), cs); + static final String integrationIdPayMobWallet = + X.r(X.r(X.r(Env.integrationIdPayMobWallet, cn), cC), cs); + static final String smsPasswordEgypt = + X.r(X.r(X.r(Env.smsPasswordEgypt, cn), cC), cs); + static final String ocpApimSubscriptionKey = Env.ocpApimSubscriptionKey; + static final String chatGPTkeySeferNew4 = + X.r(X.r(X.r(Env.chatGPTkeySeferNew4, cn), cC), cs); + static final String anthropicAIkeySeferNew = + X.r(X.r(X.r(Env.anthropicAIkeySeferNew, cn), cC), cs); + static final String llama3Key = X.r(X.r(X.r(Env.llama3Key, cn), cC), cs); + + static final String payMobOutPassword = + X.r(X.r(X.r(Env.payMobOutPassword, cn), cC), cs); + // static final String privateKeyFCM = Env.privateKeyFCM; + static final String payMobOutUserName = + X.r(X.r(X.r(Env.payMobOutUserName, cn), cC), cs); + +/////////// + static final String keyOfApp = X.r(X.r(X.r(Env.keyOfApp, cn), cC), cs); +} + +class KN { + static const String pmobsec = 'PAYMOBOUTCLIENTSECRET'; + static const String pmobid = 'PAYMOBOUTCLIENT_ID'; +} diff --git a/lib/constant/box_name.dart b/lib/constant/box_name.dart new file mode 100755 index 0000000..810fcab --- /dev/null +++ b/lib/constant/box_name.dart @@ -0,0 +1,116 @@ +class BoxName { + static const String driverID = "driverID"; + static const String countryCode = "countryCode"; + static const String googlaMapApp = "googlaMapApp"; + static const String keyOfApp = 'keyOfApp'; + static const String initializationVector = 'initializationVector'; + static const String firstTimeLoadKey = 'firstTimeLoadKey'; + static const String jwt = "jwt"; + static const String rideId = "rideId"; + static const String rideArgumentsFromBackground = + "rideArgumentsFromBackground"; + static const String FCM_PRIVATE_KEY = "FCM_PRIVATE_KEY"; + static const String hmac = "hmac"; + static const String fingerPrint = "fingerPrint"; + static const String payMobApikey = "payMobApikey"; + static const String refreshToken = "refreshToken"; + static const String lang = "lang"; + static const String isvibrate = "isvibrate"; + static const String myListString = "myListString"; + static const String myList = "myList"; + static const String bodyOrder = "bodyOrder"; + static const String gender = "gender"; + static const String phoneWallet = "phoneWallet"; + static const String locationName = "locationName"; + static const String basicLink = "basicLink"; + static const String paymentLink = "paymentLink"; + static const String isSavedPhones = "IsSavedPhones"; + static const String isTest = "isTest"; + static const String carType = "carType"; + static const String carTypeOfDriver = "carTypeOfDriver"; + static const String isFirstTime = "isFirstTime"; + static const String deviceInfo = "deviceInfo"; + static const String packagInfo = "packagInfo"; + static const String phoneVerified = "phoneVerified"; + static const String carPlate = "carPlate"; + static const String statusDriverLocation = "statusDriverLocation"; + static const String rideStatus = "rideStatus"; + static const String nameArabic = "nameArabic"; + static const String carYear = "carYear"; + static const String password = "password"; + static const String isVerified = '0'; + static const String arrivalTime = "arrivalTime"; + static const String locationPermission = "locationPermission"; + static const String passwordDriver = "passwordDriver"; + static const String agreeTerms = "agreeTerms"; + static const String addWork = 'addWork'; + static const String addHome = 'addHome'; + static const String rideArguments = 'rideArguments'; + static const String durationData = 'durationData'; + static const String rideStaticDriverData = 'rideStaticDriverData'; + static const String lastTimeStaticThrottle = 'lastTimeStaticThrottle'; + static const String lastTimeCaptainWalletCashOut = + 'lastTimeCaptainWalletCashOut'; + static const String tipPercentage = 'tipPercentage'; + static const String accountIdStripeConnect = "accountIdStripeConnect"; + static const String faceDetectTimes = "faceDetectTimes"; + static const String sosPhonePassenger = "sosPhonePassenger"; + static const String sosPhoneDriver = "sosPhoneDriver"; + static const String passengerID = "pasengerID"; + static const String phone = "phone"; + static const String phoneDriver = "phoneDriver"; + static const String is_claimed = "is_claimed"; + static const String isInstall = "isInstall"; + static const String isGiftToken = "isGiftToken"; + static const String lastOtpTime = "lastOtpTime"; + static const String bankCodeDriver = "bankCodeDriver"; + static const String accountBankNumberDriver = "accountBankNumberDriver"; + static const String dobDriver = "dobDriver"; + static const String sexDriver = "sexDriver"; + static const String lastNameDriver = "lastNameDriver"; + static const String name = "name"; + static const String nameDriver = "nameDriver"; + static const String driverPhotoUrl = "driverPhotoUrl"; + static const String email = "email"; + static const String emailDriver = "emailDriver"; + static const String tokens = "tokens"; + static const String tokenFCM = "tokenFCM"; + static const String tokenDriver = "tokenDriver"; + static const String cardNumber = "cardNumber"; + static const String cardNumberDriver = "cardNumberDriver"; + static const String cardHolderName = "cardHolderName"; + static const String cardHolderNameDriver = "cardHolderNameDriver"; + static const String expiryDate = "expiryDate"; + static const String expiryDateDriver = "expiryDateDriver"; + static const String cvvCode = "cvvCode"; + static const String cvvCodeDriver = "cvvCodeDriver"; + static const String passengerWalletDetails = "passengerWalletDetails"; + static const String passengerWalletTotal = "passengerWalletTotal"; + static const String passengerWalletFound = "passengerWalletFound"; + static const String periods = 'periods'; + static const String onBoarding = 'onBoarding'; + static const String stripePublishableKey = 'stripe_publishableKe'; + static const String apiKeyRun = 'apiKeyRun'; + static const String serverAPI = 'serverAPI'; + static const String serverChosen = 'serverChosen'; + static const String secretKey = 'secretKey'; + static const String basicAuthCredentials = 'basicAuthCredentials'; + static const String mapAPIKEY = 'mapAPIKEY'; + static const String twilloRecoveryCode = 'twilloRecoveryCode'; + static const String accountSIDTwillo = 'accountSIDTwillo'; + static const String authTokenTwillo = 'authTokenTwillo'; + static const String chatGPTkey = 'chatGPTkey'; + static const String chatGPTkeySefer = 'chatGPTkeySefer'; + static const String transactionCloude = 'transactionCloude'; + static const String visionApi = 'visionApi'; + static const String vin = "vin"; + static const String make = "make"; + static const String model = "model"; + static const String year = "year"; + static const String expirationDate = "expirationDate"; + static const String color = "color"; + static const String owner = "owner"; + static const String registrationDate = "registrationDate"; + static const String recentLocations = 'recentLocations'; + static const String tripData = 'tripData'; +} diff --git a/lib/constant/char_map.dart b/lib/constant/char_map.dart new file mode 100755 index 0000000..ca5ee37 --- /dev/null +++ b/lib/constant/char_map.dart @@ -0,0 +1,75 @@ +import '../env/env.dart'; + +Map cs = { + "a": Env.a, + "b": Env.b, + "c": Env.c, + "d": Env.d, + "e": Env.e, + "f": Env.f, + "g": Env.g, + "h": Env.h, + "i": Env.i, + "j": Env.j, + "k": Env.k, + "l": Env.l, + "m": Env.m, + "n": Env.n, + "o": Env.o, + "p": Env.p, + "q": Env.q, + "r": Env.r, + "s": Env.s, + "t": Env.t, + "u": Env.u, + "v": Env.v, + "w": Env.w, + "x": Env.x, + "y": Env.y, + "z": Env.z, +}; +Map cC = { + "A": Env.A, + "B": Env.B, + "C": Env.C, + "D": Env.D, + "E": Env.E, + "F": Env.F, + "G": Env.G, + "H": Env.H, + "I": Env.I, + "J": Env.J, + "K": Env.K, + "L": Env.L, + "M": Env.M, + "N": Env.N, + "O": Env.O, + "P": Env.P, + "Q": Env.Q, + "R": Env.R, + "S": Env.S, + "T": Env.T, + "U": Env.U, + "V": Env.V, + "W": Env.W, + "X": Env.X, + "Y": Env.Y, + "Z": Env.Z +}; + +// + +// + +Map cn = { + "0": "3", + "1": "7", + "2": "1", + "3": "9", + "4": "0", + "5": "5", + "6": "2", + "7": "6", + "8": "4", + "9": "8" +}; diff --git a/lib/constant/colors.dart b/lib/constant/colors.dart new file mode 100755 index 0000000..9a14399 --- /dev/null +++ b/lib/constant/colors.dart @@ -0,0 +1,33 @@ +import 'package:flutter/material.dart'; + +class AppColor { + static const Color primaryColor = Color(0xFF1DA1F2); + static const Color writeColor = Color(0xff222359); + + static const Color bronze = Color(0xFFCD7F32); + static const Color goldenBronze = Color(0xFFB87333); // Golden bronze color + static const Color gold = Color(0xFFD4AF37); + static const Color secondaryColor = Colors.white; + static const Color accentColor = Colors.grey; + static const Color greyColor = Colors.grey; + static const Color twitterColor = Color(0xFF1DA1F2); // Twitter blue + + static const Color redColor = Color(0xFFEA4335); // Google Red + static const Color greenColor = Color(0xFF34A853); // Google Green + static const Color blueColor = Color(0xFF1DA1F2); // Google Blue + static const Color yellowColor = Color(0xFFFBBC05); // Google Yellow + static Color deepPurpleAccent = + const Color.fromARGB(255, 123, 76, 254).withOpacity(0.3); + + // For dynamic elements like gradients + static List gradientStartEnd = [ + Color.fromARGB(255, 40, 158, 232), // Start with primary color + Color.fromARGB( + 255, 44, 63, 75), // End with a slightly darker shade of Twitter blue + ]; + + static List secondaryGradientStartEnd = [ + const Color(0xFF1DA1F2), // Start with Twitter blue + const Color(0xFF0C7ABF), // End with a slightly darker shade of Twitter blue + ]; +} diff --git a/lib/constant/credential.dart b/lib/constant/credential.dart new file mode 100755 index 0000000..28c46e1 --- /dev/null +++ b/lib/constant/credential.dart @@ -0,0 +1,104 @@ +import 'dart:convert'; +import 'package:crypto/crypto.dart'; +import 'package:secure_string_operations/secure_string_operations.dart'; + +import '../controller/functions/crud.dart'; +import '../main.dart'; +import 'box_name.dart'; +import 'char_map.dart'; +import 'links.dart'; + +class AC { + gAK() async { + if (box.read(BoxName.apiKeyRun).toString() != 'run') { + var res = await CRUD().get(link: AppLink.getApiKey, payload: {}); + var decod = jsonDecode(res); + // print(decod); + + Map jsonData = {}; + for (var i = 0; i < decod['message'].length; i++) { + String h = decod['message'][i]['hashed_key'].toString(); + String retrievedString = X.r(X.r(X.r(h, cn), cC), cs); + + await storage.write( + key: decod['message'][i]['name'].toString(), + value: retrievedString.toString(), + ); + // + String name = decod['message'][i]['name'].toString(); + String value = decod['message'][i]['hashed_key'].toString(); + + jsonData[name] = value; + } + String jsonString = json.encode(jsonData); + print(jsonString); + box.write(BoxName.apiKeyRun, 'run'); + } + } + + String q(String b, String c) { + final d = utf8.encode(c); + final e = utf8.encode(b); + + final f = Hmac(sha256, d); + final g = f.convert(e); + + final h = g.bytes; + final i = base64Url.encode(h); + return i; + } + + String j(String k, String l) { + final m = utf8.encode(l); + final n = base64Url.decode(k); + + final o = Hmac(sha256, m); + final p = o.convert(n); + + final q = utf8.decode(p.bytes); + return q; + } + + String a(String b, String c) { + int d = b.length; + int e = d ~/ 4; + + List f = []; + for (int g = 0; g < d; g += e) { + int h = g + e; + if (h > d) { + h = d; + } + String i = b.substring(g, h); + f.add(i); + } + + print(f); + Map j = {}; + j['birinci'] = f[4]; + j['ikinci'] = f[2]; + j['üçüncü'] = c + f[1]; + j['dördüncü'] = f[0]; + j['beş'] = f[3]; + + String k = ''; + j.forEach((l, m) { + k += m; + }); + + return k; + } + + Map n(String o, String c) { + String p = o.replaceAll(c, ''); + + Map q = {}; + q['birinci'] = p[p.length - 5] + p[p.length - 3]; + q['ikinci'] = p[p.length - 1] + p[p.length - 15]; + q['üçüncü'] = p[p.length - 9] + p[p.length - 12]; + q['dördüncü'] = p[p.length - 11] + p[p.length - 6]; + q['beş'] = p[p.length - 2] + p[p.length - 8]; + + return q; + } +} diff --git a/lib/constant/info.dart b/lib/constant/info.dart new file mode 100755 index 0000000..891bf55 --- /dev/null +++ b/lib/constant/info.dart @@ -0,0 +1,4508 @@ +class AppInformation { + static const String companyName = 'Intaleq'; + static const String appName = 'Intaleq DRIVER'; + static const String appVersion = 'Intaleq Captain'; + static const String phoneNumber = '962798583052'; + static const String linkedInProfile = + 'https://www.linkedin.com/in/hamza-ayed/'; + static const String website = 'https://intaleqapp.com'; + static const String email = 'hamzaayed@intaleqapp.com'; + static const String complaintPrompt = + 'for this data for complaint from driver or passenger i collect all data i want you analyze this complaint and show what is reason and what is solution .this data collected from many table to find solution if payment in visa not complete and if ride status is finished it will be paymnet in payment table if ride status is not finished there is no need to pay and payment table is null for this ride and if paymentFromPaymentTable not null and visa type not cash the payment sucssessed . if ratingpassenger is low or passengr rating drivers low grade then dont mine of this passenger ,look at driver too like passengerratingdriver with rating or ratingtopassenger .in json add status of complaint and message to passenger and message to driver and message to call center write in arabic in json output with key in english .for output please just json i want'; + static const String addd = 'BlBlNl'; + static const String privacyPolicy = ''' + + + + + + + + + + + + +
+
+
+
+
+
+

Terms and Conditions

+

1 TERMS OF USE

+

By downloading, browsing, accessing or using the Mobile Application; “Intaleqâ€, Users agree to be bound by these Terms and Conditions of Use. We reserve the right to amend these terms and conditions at any time. If the User disagrees with any of these Terms and Conditions of Use, the User must immediately discontinue their access to the Mobile Application and their use of the services offered on the Mobile Application. Continued use of the Mobile Application will constitute acceptance of these Terms and Conditions of Use, as may be amended from time to time.

+

2.1. DEFINITIONS

+

In these Terms and Conditions of Use, the following capitalized terms shall have the following meanings, except where the context otherwise requires:

+

“Mobile Application†or “Intaleq†refers to the smartphone software through which the company mediates services between Users and Service Providers.

+

"Account" means an account created by a User or a Service Provider on the Mobile Application as part of Registration.

+

“Service Providers†refers to the individuals or companies registered within the Company to provide products or services approved and mediated by the Company/Mobile Application and that are requested/purchased by “Usersâ€. “Service Provider†means any one of them.

+

"Users" means users of the Mobile Application, including you and "User" means any one of them. “Users†also includes Service Providers using the Mobile Application version dedicated to the use of Service Providers.

+

"Privacy Policy" means the privacy policy set out in Clause 14 of these Terms and Conditions of Use.

+

"Redeem" means to redeem a company’s products or services on these Terms and Conditions of Use and

+

"Redemption" means the act of redeeming such products or services.

+

"Register" means to create an Account on the Mobile Application and "Registration" means the act of creating such an Account.

+

"Services" means all the services provided by Service Providers via the Mobile Application and mediated by the Company to Users, and "Service" means any one of them.

+

2.2. WHAT IS THE MOBILE APPLICATION, “Intaleq�

+

The “Intaleq†Mobile Application consists in a specialize service with the purpose to schedule/match the Service Provider with the User, however without creating any employee relationship with the Service Provider, meaning that the Mobile Application should be considered only as a service mediator with the purpose of scheduling/matching between Users and Service Providers for the latter to fulfill the service requested by Users. Through the system, the Company allows, totally free of charge, the Users to sign up and request the desired available services from Service Providers in a more efficient way than the conventional existing methods. The Service Providers, by their means, can register on the Mobile Application dedicated for Service Providers through the methods indicated by the Company, pending an evaluation from the Company and the necessary documentation when signing up in accordance with guidelines set by the Transportation General Authority (TGA) to provide services through the Mobile Application. The Service Provider will pay a profit margin fee determined by the Company -in knowledge of the Service Provider- per completed service. Users can pay their ride fare using Apple Pay as an additional payment method in Saudi Arabia on iPhones

+

+

3. GENERAL ISSUES ABOUT THE MOBILE APPLICATION AND THE SERVICES

+

3.1 Applicability of terms and conditions: The use of any Services and/or the Mobile Application and the making of any Redemptions are subject to these Terms and Conditions of Use.

+

3.2 Location: The Mobile Application, the Services and any Redemptions are intended solely for use by Users who access the Mobile Application where it operates and provides its services regionally. We make no representation that the Services (or any goods or services) are available or otherwise suitable for use outside of the regions indicated by the Company. Notwithstanding the above, if the User accesses the Mobile Application, use the Services or make any Redemptions from locations outside the regions indicated by the Service Provider, the User does so on their own initiative and are responsible for the consequences and for compliance with all applicable laws.

+

3.3 Scope: The Mobile Application, the Services and any Redemptions are for Users’ non-commercial, personal use only and must not be used for business purposes unless an official written permission is granted by the Company.

+

3.4 Prevention on use: We reserve the right to prevent the User using the Mobile Application and the Service (or any part of them) and to prevent the User from making any Redemptions.

+

3.5 Equipment and Networks: The provision of the Services and the Mobile Application does not include the provision of a mobile telephone or handheld device or other necessary equipment to access the Mobile Application or the Services or make any Redemptions. To use the Mobile Application or Services or to make Redemptions, the User will require Internet connectivity and appropriate telecommunication links. The User acknowledges that the terms of agreement with their respective mobile network provider will continue to apply when using the Mobile Application. As a result, the User may be charged by the Mobile Provider for access to network connection services for the duration of the connection while accessing the Mobile Application or any such third party charges as may arise. The User accepts responsibility for any such charges that arise.

+

3.6 Permission to use Mobile Application: If the User is not the bill payer for the mobile telephone or handheld device being used to access the Mobile Application, the User will be assumed to have received permission from the bill payer for using the Mobile Application.

+

3.7 License to Use Material: By submitting any text or images (including photographs) via the Application, the User represents that they are the owner of the Material, or have proper authorization from the owner of the Material to use, reproduce and distribute it. The User hereby grants us a worldwide, royalty-free, non-exclusive license to use the Material to promote any products or services.

+

4. REDEMPTIONS

+

4.1 Need for registration: a) Users must Register to make a Redemption from the Mobile Application. b) The Service Provider agrees that by registering they will be scrutinized to be accepted by the Company who may refuse or cancel the Service Provider account at any time, whether by complaints or by internal policy.

+

4.2 Application of these Terms and Conditions of Use: By making any Redemption, the User acknowledges that the Redemption is subject to these Terms and Conditions of Use.

+

4.3 Redemption: Any attempted Redemption not consistent with these Terms and Conditions of Use may be disallowed or rendered void at our or the relevant Service Provider’s discretion.

+

4.4 Responsibility for Redemptions of perishable products of services: Each Service Provider shall be responsible to ensure that any of its products or services for Redemption that are perishable has not expired.

+

4.5 Restrictions: (a) Reproduction, sale, resale or trading of any products or services or Redeemed products is prohibited. (b) If any product or service is Redeemed for less than its face value, there is no entitlement to a credit, cash or Sample equal to the difference between the face value and the amount Redeemed. (c) Redemption of products or services is subject to availability of the relevant Service Providers’ stocks.

+

4.6 Company Not Liable: For the avoidance of doubt, the Company shall not be liable for any losses or damages suffered by Users resulting from a failure by the relevant Service Provider to fulfil any Redemptions in accordance with Clause 4.4 or for a failure by us to deliver any products or services to Users due to the unavailability of such products or services pursuant to Clause 4.5(c). Users accept that the Mobile Application acts solely as a scheduling/matching service between its Users and Service Providers, and that it is not responsible for any issues that arise, including but not limited to accidents, delays, car discomfort, and unavailability of products or services.

+

4.7 Lost/stolen services: Neither we nor any Service Provider shall be responsible for lost or stolen Samples or products that have been Redeemed.

+

+

5. LOCATION ALERTS AND NOTIFICATIONS

+

5.1 The USer agrees to receive pre-programmed notifications (“Location Alertsâ€) on the Mobile Application from Service Providers if the User has turned on locational services on their mobile telephone or other handheld devices (as the case may be).

+

+

6. USERS’ OBLIGATIONS

+

6.1 Service Provider terms: Users agree to (and shall) abide by the terms and conditions of the relevant Service Provider for which their Redemption relates to, as may be amended from time to time.

+

6.2 Accurate information: The User warrants that all information provided on Registration and contained as part of their Account is true, complete and accurate and that the User will promptly inform us of any changes to such information by updating the information in their Account.

+

6.3 Content on the Mobile Application and Service: It is the User’s responsibility to ensure that any products, services or information available through the Mobile Application or the Services meet their specific requirements before making any Redemption.

+

6.4 Prohibitions in relation to usage of Services or Mobile Application: Without limitation, the User undertakes not to use or permit anyone else to use the Services or Mobile Application:-

+

6.4.1 to send or receive any material which is not civil or tasteful

+

6.4.2 to send or receive any material which is threatening, grossly offensive, of an indecent, obscene or menacing character, blasphemous or defamatory of any person, in contempt of court or in breach of confidence, copyright, rights of personality, publicity or privacy or any other third party rights;

+

6.4.3 to send or receive any material for which the User has not obtained all necessary licenses and/or approvals (from us or third parties); or which constitutes or encourages conduct that would be considered a criminal offence, give rise to civil liability, or otherwise be contrary to the law of or infringe the rights of any third party in any country in the world;

+

6.4.4 to send or receive any material which is technically harmful (including computer viruses, logic bombs, Trojan horses, worms, harmful components, corrupted data or other malicious software or harmful data);

+

6.4.5 to cause annoyance, inconvenience or needless anxiety;

+

6.4.6 to intercept or attempt to intercept any communications transmitted by way of a telecommunications system;

+

6.4.7 for a purpose other than which we have designed them or intended them to be used;

+

6.4.8 for any fraudulent purpose;

+

6.4.9 other than in conformance with accepted Internet practices and practices of any connected networks;

+

6.4.10 in any way which is calculated to incite hatred against any ethnic, religious or any other minority or is otherwise calculated to adversely affect any individual, group or entity; or

+

6.4.11 in such a way as to, or commit any act that would or does, impose an unreasonable or disproportionately large load on our infrastructure.

+

6.5 Prohibitions in relation to usage of Services, Mobile Application: Without limitation, the User further undertakes not to or permit anyone else to:-

+

6.5.1 resell any products or services;

+

6.5.2 furnish false data including false names, addresses and contact details and fraudulently use credit/debit card numbers;

+

6.5.3 attempt to circumvent our security or network including to access data not intended for the User, log into a server or account the User is not expressly authorized to access, or probe the security of other networks (such as running a port scan);

+

6.5.4 execute any form of network monitoring which will intercept data not intended for the User;

+

6.5.5 enter into fraudulent interactions or transactions with us or a Service Provider (including interacting or transacting purportedly on behalf of a third party where the User has no authority to bind that third party or the User is pretending to be a third party);

+

6.5.6 extract data from or hack into the Mobile Application;

+

6.5.7 use the Services or Mobile Application in breach of these Terms and Conditions of Use;

+

6.5.8 engage in any unlawful activity in connection with the use of the Mobile Application or the Services; or

+

6.5.9 engage in any conduct which, in our exclusive reasonable opinion, restricts or inhibits any other customer from properly using or enjoying the Mobile Application or Services.

+

+

7. RULES ABOUT USE OF THE SERVICE AND THE MOBILE APPLICATION

+

7.1 We will use reasonable endeavors to correct any errors or omissions as soon as practicable after being notified of them. However, we do not guarantee that the Services or the Mobile Application will be free of faults, and we do not accept liability for any such faults, errors or omissions. In the event of any such error, fault or omission, Users should report it by contacting us at JORDAN: 962798583052 .

+

7.2 We do not warrant that Users’ use of the Services or the Mobile Application will be uninterrupted and we do not warrant that any information (or messages) transmitted via the Services or the Mobile Application will be transmitted accurately, reliably, in a timely manner or at all. Notwithstanding that we will try to allow uninterrupted access to the Services and the Mobile Application, access to the Services and the Mobile Application may be suspended, restricted or terminated at any time.

+

7.3 We do not give any warranty that the Services and the Mobile Application are free from viruses or anything else which may have a harmful effect on any technology.

+

7.4 We reserve the right to change, modify, substitute, suspend or remove without notice any information or Services on the Mobile Application from time to time. Users’ access to the Mobile Application and/or the Services may also be occasionally restricted to allow for repairs, maintenance or the introduction of new facilities or services. We will attempt to restore such access as soon as we reasonably can. For the avoidance of doubt, we reserve the right to withdraw any information or Services from the Mobile Application at any time.

+

7.5 We reserve the right to block access to and/or to edit or remove any material which in our reasonable opinion may give rise to a breach of these Terms and Conditions of Use.

+

7.6 The acceptance and denial of the service request may occur at first by the Service Provider, who can accept or deny the service when receiving a notification for a request. The User may cancel the contract for any reason which may or may not apply cancellation fees for which the conditions and amount is determined and communicated by the Company. Both recognize that “Intaleq†is not liable for any delays, cancellations, failure to cancel the contract and miscommunication between the User and the Service Provider, nor for any delay or failure in the delivery of services from the Service Provider.

+

+

8. SUSPENSION AND TERMINATION

+

8.1 If the User uses (or others, with the User’s permission use) the Mobile Application, any Services in contravention of these Terms and Conditions of Use, we may suspend their use of the Services and/or Mobile Application.

+

8.2 If we suspend the Services or Mobile Application, we may refuse to restore the Services or Mobile Application for the User’s use until we receive an assurance from them, in a form we deem acceptable, that there will be no further breach of the provisions of these Terms and Conditions of Use.

+

8.3 The Company shall fully co-operate with any law enforcement authorities or court order requesting or directing the Company to disclose the identity or locate anyone in breach of these Terms and Conditions of Use.

+

8.4 Without limitation to anything else in this Clause 8, we shall be entitled immediately or at any time (in whole or in part) to: (a) suspend the Services and/or Mobile Application; (b) suspend Users’ use of the Services and/or Mobile Application; and/or (c) suspend the use of the Services and/or Mobile Application for persons we believe to be connected (in whatever manner) to the concerned User, if:

+

8.4.1 the User commits any breach of these Terms and Conditions of Use;

+

8.4.2 we suspect, on reasonable grounds, that the User has, might or will commit a breach of these Terms and Conditions of Use; or

+

8.4.3 we suspect, on reasonable grounds, that the User may have committed or will be committing any fraud against us or any person.

+

8.5 Our rights under this Clause 8 shall not prejudice any other right or remedy we may have in respect of any breach or any rights, obligations or liabilities accrued prior to termination.

+

+

9. DISCLAIMER AND EXCLUSION OF LIABILITY

+

9.1 The Mobile Application, the Services, the information on the Mobile Application and use of all related facilities are provided on an "as is, as available" basis without any warranties whether express or implied.

+

9.2 The credit balance shall remain valid for the specific period. The credit in the wallet will be expired after 6 months of inactivity.

+

9.3 To the fullest extent permitted by applicable law, we disclaim all representations and warranties relating to the Mobile Application and its contents, including in relation to any inaccuracies or omissions in the Mobile Application, warranties of merchantability, quality, fitness for a particular purpose, accuracy, availability, non-infringement or implied warranties from course of dealing or usage of trade.

+

9.4 We do not warrant that the Mobile Application will always be accessible, uninterrupted, timely, secure, error free or free from computer virus or other invasive or damaging code or that the Mobile Application will not be affected by any acts of nature or other force majeure events, including inability to obtain or shortage of necessary materials, equipment facilities, power or telecommunications, lack of telecommunications equipment or facilities and failure of information technology or telecommunications equipment or facilities.

+

9.5 While we may use reasonable efforts to include accurate and up-to-date information on the Mobile Application, we make no warranties or representations as to its accuracy, timeliness or completeness.

+

9.6 We shall not be liable for any acts or omissions of any third parties howsoever caused, and for any direct, indirect, incidental, special, consequential or punitive damages, howsoever caused, resulting from or in connection with the Mobile Application and the services offered in the mobile application, Users’ access to, use of or inability to use the mobile application or the services offered in the mobile application, reliance on or downloading from the mobile application and/or services, or any delays, inaccuracies in the information or in its transmission including but not limited to damages for loss of business or profits, use, data or other intangible, even if we have been advised of the possibility of such damages.

+

9.7 We shall not be liable in contract, tort (including negligence or breach of statutory duty) or otherwise howsoever and whatever the cause thereof, for any indirect, consequential, collateral, special or incidental loss or damage suffered or incurred by the User in connection with the Mobile Application and these Terms and Conditions of Use. For the purposes of these Terms and Conditions of Use, indirect or consequential loss or damage includes, without limitation, loss of revenue, profits, anticipated savings or business, loss of data or goodwill, loss of use or value of any equipment including software, claims of third parties, and all associated and incidental costs and expenses.

+

9.8 The above exclusions and limitations apply only to the extent permitted by law. None of the User’s statutory rights as a consumer that cannot be excluded or limited are affected.

+

9.9 Notwithstanding our efforts to ensure that our system is secure, the User acknowledges that all electronic data transfers are potentially susceptible to interception by others. We cannot, and do not, warrant that data transfers pursuant to the Mobile Application, or electronic mail transmitted to and from us, will not be monitored or read by others.

+

+

10. INDEMNITY

+

The User agrees to indemnify and keep us indemnified against any claim, action, suit or proceeding brought or threatened to be brought against us which is caused by or arising out of (a) the User’s use of the Services, (b) any other party’s use of the Services using the User’s user ID, verification PIN and/or any identifier number allocated by the Company, and/or (c) the User’s breach of any of these Terms and Conditions of Use, and to pay us damages, costs and interest in connection with such claim, action, suit or proceeding.

+

+

11. INTELLECTUAL PROPERTY RIGHTS

+

11.1 All editorial content, information, photographs, illustrations, artwork and other graphic materials, and names, logos and trade marks on the Mobile Application are protected by copyright laws and/or other laws and/or international treaties, and belong to us and/or our suppliers, as the case may be. These works, logos, graphics, sounds or images may not be copied, reproduced, retransmitted, distributed, disseminated, sold, published, broadcasted or circulated whether in whole or in part, unless expressly permitted by us and/or our suppliers, as the case may be.

+

11.2 Nothing contained on the Mobile Application should be construed as granting by implication, estoppel, or otherwise, any license or right to use any trademark displayed on the Mobile Application without our written permission. Misuse of any trademarks or any other content displayed on the Mobile Application is prohibited.

+

11.3 We will not hesitate to take legal action against any unauthorized usage of our trade marks, name or symbols to preserve and protect its rights in the matter. All rights not expressly granted herein are reserved. Other product and company names mentioned herein may also be the trademarks of their respective owners.

+

+

12. AMENDMENTS

+

12.1 We may periodically make changes to the contents of the Mobile Application, including to the descriptions and prices of goods and services advertised, at any time and without notice. We assume no liability or responsibility for any errors or omissions in the content of the Mobile Application.

+

12.2 We reserve the right to amend these Terms and Conditions of Use from time to time without notice. The revised Terms and Conditions of Use will be posted on the Mobile Application and shall take effect from the date of such posting. The User is advised to review these terms and conditions periodically as they are binding upon the User.

+

+

13. APPLICABLE LAW AND JURISDICTION

+

13.1 These Terms and Conditions of Use shall be governed by and construed in accordance with the applicable Federal laws of Kingdom of Saudi Arabia.

+

13.2 The Mobile Application can be accessed from all countries around the world where the local technology permits. As each of these places have differing laws, by accessing the Mobile Application both the User and we agree that the laws of the country where accessed, without regard to the conflicts of laws principles thereof, will apply to all matters relating to the use of the Mobile Application.

+

13.3 the User accepts and agrees that both the User and we shall submit to the exclusive jurisdiction of the courts of the country where accessed in respect of any dispute arising out of and/or in connection with these Terms and Conditions of Use.

+

+

14. PRIVACY POLICY

+

14.1 Access to the Mobile Application and use of the Services offered on the Mobile Application by the Company and/or its group of companies & partners is subject to this Privacy Policy. By accessing the Mobile Application and by continuing to use the Services offered, Users are deemed to have accepted this Privacy Policy, and in particular, they are deemed to have consented to our use and disclosure of their personal information in the manner prescribed in this Privacy Policy and for the purposes set out in Clauses 3.7 and/or 4.1.1 We reserve the right to amend this Privacy Policy from time to time. If the User disagrees with any part of this Privacy Policy, the User must immediately discontinue their access to the Mobile Application and their use of the Services.

+

14.2 As part of the normal operation of our Services, we collect, use and, in some cases, disclose information about the User to third parties. Accordingly, we have developed this Privacy Policy in order for Users to understand how we collect, use, communicate and disclose and make use of their personal information when they use the Services on the Mobile Application:-

+

(a) Before or at the time of collecting personal information, we will identify the purposes for which information is being collected.

+

(b) We will collect and use of personal information solely with the objective of fulfilling those purposes specified by us and for other compatible purposes, unless we obtain the consent of the individual concerned or as required by law.

+

(c) We will only retain personal information as long as necessary for the fulfillment of those purposes.

+

(d) We will collect personal information by lawful and fair means and, where appropriate, with the knowledge or consent of the individual concerned.

+

(e) Personal information should be relevant to the purposes for which it is to be used, and, to the extent necessary for those purposes, should be accurate, complete, and up-to-date.

+

(f) We will protect personal information by reasonable security safeguards against loss or theft, as well as unauthorized access, disclosure, copying, use or modification.

+

(g) The Company further reserves the right to use all legal means possible and to identify the Users, as well as to request, at any time, additional data and documents it considers appropriate in order to verify personal data informed by the user.

+

We are committed to conducting our business in accordance with these principles in order to ensure that the confidentiality of personal information is protected and maintained.

+

14.3 Social logins policy
Our Services offers you the ability to register and login using Facebook. Where you choose to do this, we will receive certain profile information about you from your social media provider. The profile Information may include your name and social token.
We will use the information we receive only to associate your social token with your Intaleq account or for the purposes that are described in this privacy policy.
â€
14.4 Account and data deletion
Based on the applicable laws of your country, you may have the right to request the deletion of your personal data in some circumstances. If you want to delete your account or personal data in the application, please contact us via e-mail: support@mobile-app.store. We will respond to your request within 30 days.

+

15. In-Ride Policy

+

15.1 Smoking Policy:

+

No smoking or other use of tobacco products (including, but not limited to, cigarettes, pipes, cigars, snuff, or chewing tobacco) is permitted during rides. No cigarette butts or other traces of smell, litter, or tobacco use should be present in the vehicle. image

+

15.2 COVID-19 Policy: Face masks must be always worn during rides.

+
+
+
+
+
+
+ + + + + +
+
+ + + + +
+

+ All rights reserved. Fast Global Technology Holding Limited. © 2022 +

+
+
+ +
+ + + + +
+ + + + + + +
+ +'''; + + static const String privacyPolicyArabic = ''' +

الشروط والأحكام

+

1. شروط الاستخدام

+

عبر تحميل أو ØªØµÙØ­ أو استخدام تطبيق "انطلق"ØŒ يواÙÙ‚ المستخدمون على الالتزام بهذه الشروط والأحكام. Ù†Ø­ØªÙØ¸ بالحق ÙÙŠ تعديل هذه الشروط ÙÙŠ أي وقت. إذا كنت لا تواÙÙ‚ على أي من هذه الشروط، يجب عليك التوق٠Ùورًا عن استخدام التطبيق. استمرارك ÙÙŠ الاستخدام يعتبر قبولًا للشروط وتعديلاتها.

+ +

2.1. Ø§Ù„ØªØ¹Ø±ÙŠÙØ§Øª

+
    +
  • "التطبيق" أو "انطلق": يشير إلى برنامج الهات٠الذكي الذي تتوسط الشركة من خلاله ÙÙŠ تقديم الخدمات بين المستخدمين ومقدمي الخدمة.
  • +
  • "مقدمو الخدمة": Ø§Ù„Ø£ÙØ±Ø§Ø¯ أو الشركات المسجلون لتقديم خدمات معتمدة من الشركة.
  • +
  • "المستخدمون": مستخدمو التطبيق، بما Ùيهم أنت، ويشمل أيضًا مقدمي الخدمة.
  • +
  • "الخدمات": جميع الخدمات المقدمة من مقدمي الخدمة عبر التطبيق.
  • +
+ +

2.2. ما هو تطبيق "انطلق"؟

+

تطبيق "انطلق" هو خدمة متخصصة تهد٠إلى جدولة وتوÙيق الخدمة بين مقدم الخدمة والمستخدم، دون إنشاء أي علاقة عمل مع مقدم الخدمة. يعمل التطبيق كوسيط Ùقط. يسمح النظام للمستخدمين بالتسجيل وطلب الخدمات المتاحة من مقدمي الخدمة Ø¨ÙƒÙØ§Ø¡Ø©. ÙŠØ¯ÙØ¹ مقدم الخدمة هامش ربح تحدده الشركة عن كل خدمة مكتملة.

+ +

3. أمور عامة حول التطبيق والخدمات

+

3.1 نطاق التطبيق: التطبيق والخدمات مخصصة للاستخدام الشخصي وغير التجاري Ùقط.

+

3.2 الأجهزة والشبكات: يتطلب استخدام التطبيق وجود اتصال بالإنترنت وروابط اتصالات مناسبة. أنت مسؤول عن أي رسوم قد تنشأ من مزود خدمة شبكة الهات٠المحمول الخاص بك.

+ +

6. التزامات المستخدمين

+

6.2 معلومات دقيقة: يتعهد المستخدم بأن جميع المعلومات المقدمة عند التسجيل ÙˆÙÙŠ حسابه صحيحة وكاملة ودقيقة.

+

6.4 المحظورات: يتعهد المستخدم بعدم استخدام التطبيق ÙÙŠ إرسال أو استقبال أي مواد غير لائقة، أو تهديدية، أو ÙØ§Ø­Ø´Ø©ØŒ أو تشهيرية، أو ضارة تقنيًا (مثل الÙيروسات)ØŒ أو لأي غرض احتيالي.

+ +

9. إخلاء المسؤولية

+

يتم توÙير التطبيق والخدمات "كما هي"ØŒ دون أي ضمانات صريحة أو ضمنية. نحن لا نتحمل المسؤولية عن أي أضرار مباشرة أو غير مباشرة تنتج عن استخدام التطبيق.

+ +

14. سياسة الخصوصية

+

14.1 باستخدامك للتطبيق، ÙØ£Ù†Øª تواÙÙ‚ على سياسة الخصوصية هذه وتواÙÙ‚ على استخدامنا وكشÙنا لمعلوماتك الشخصية بالطريقة الموضحة.

+

14.2 نجمع معلوماتك الشخصية ونستخدمها Ùقط لتحقيق الأغراض المحددة من قبلنا، ما لم نحصل على مواÙقة Ø§Ù„ÙØ±Ø¯ المعني أو كما يقتضي القانون. سنحمي معلوماتك الشخصية بإجراءات أمنية معقولة.

+

14.4 حذ٠الحساب والبيانات: إذا كنت ترغب ÙÙŠ حذ٠حسابك أو بياناتك الشخصية، يرجى الاتصال بنا عبر البريد الإلكتروني: support@intaleqapp.com. سنرد على طلبك ÙÙŠ غضون 30 يومًا.

+ +

15. سياسة أثناء الرحلة

+

15.1 سياسة التدخين: يمنع التدخين بجميع أشكاله أثناء الرحلات.

+

15.2 سياسة كوÙيد-19: يجب ارتداء الكمامات دائمًا أثناء الرحلات.

+'''; +} diff --git a/lib/constant/links.dart b/lib/constant/links.dart new file mode 100755 index 0000000..f76d12b --- /dev/null +++ b/lib/constant/links.dart @@ -0,0 +1,382 @@ +// import 'package:sefer_driver/env/env.dart'; + +import 'package:sefer_driver/env/env.dart'; + +import '../main.dart'; +import 'box_name.dart'; + +class AppLink { + static String serverPHP = box.read('serverPHP'); + + static String seferPaymentServer = + 'https://walletintaleq.intaleq.xyz/v1/main'; + static String seferPaymentServer0 = + 'https://walletintaleq.intaleq.xyz/v1/main'; + + static final String endPoint = 'https://intaleq.xyz/intaleq'; + // 'https://api.tripz-egypt.com/tripz'; + static final String server = endPoint; + static String seferCairoServer = endPoint; + static String seferGizaServer = + box.read('Giza') ?? box.read(BoxName.serverChosen); + static String seferAlexandriaServer = + box.read('Alexandria') ?? box.read(BoxName.serverChosen); + // static final String server = Env.serverPHP; + + static String loginJwtDriver = "$server/loginJwtDriver.php"; + static String loginJwtWalletDriver = + "$seferPaymentServer/loginJwtWalletDriver.php"; + static String loginFirstTimeDriver = "$server/loginFirstTimeDriver.php"; + + static String googleMapsLink = 'https://maps.googleapis.com/maps/api/'; + static String llama = 'https://api.llama-api.com/chat/completions'; + static String gemini = + 'https://generativelanguage.googleapis.com/v1beta3/models/text-bison-001:generateText'; + + static String test = "$server/test.php"; + static String ride = '$server/ride'; + //===============contact========================== + static String savePhones = "$ride/egyptPhones/add.php"; + static String getPhones = "$ride/egyptPhones/get.php"; + + ////===============firebase========================== + static String getTokens = "$ride/firebase/get.php"; + + static String getDriverToken = "$ride/firebase/getDriverToken.php"; + static String addTokens = "$ride/firebase/add.php"; + static String addTokensDriver = "$ride/firebase/addDriver.php"; + + //=======================Wallet=================== + static String wallet = '$seferPaymentServer/ride/passengerWallet'; + static String walletDriver = '$seferPaymentServer/ride/driverWallet'; + static String getAllPassengerTransaction = + "$wallet/getAllPassengerTransaction.php"; + static String payWithMTNConfirm = + "$seferPaymentServer/ride/mtn/driver/confirm_payment.php"; + static String payWithMTNStart = + "$seferPaymentServer/ride/mtn/driver/mtn_start.php"; + static String payWithEcashDriver = + "$seferPaymentServer/ride/ecash/driver/payWithEcash.php"; + static String payWithEcashPassenger = + "$seferPaymentServer/ride/ecash/passenger/payWithEcash.php"; +// wl.tripz-egypt.com/v1/main/ride/ecash/driver + static String getWalletByPassenger = "$wallet/getWalletByPassenger.php"; + static String getPassengersWallet = "$wallet/get.php"; + static String getPassengerWalletArchive = + "$wallet/getPassengerWalletArchive.php"; + static String addPassengersWallet = "$wallet/add.php"; + static String deletePassengersWallet = "$wallet/delete.php"; + static String updatePassengersWallet = "$wallet/update.php"; + + static String getWalletByDriver = "$walletDriver/getWalletByDriver.php"; + static String driverStatistic = "$walletDriver/driverStatistic.php"; + static String getDriverDetails = + "$seferCairoServer/ride/driverWallet/getDriverDetails.php"; + static String getDriverWeekPaymentMove = + "$walletDriver/getDriverWeekPaymentMove.php"; + static String getDriversWallet = "$walletDriver/get.php"; + static String addDriversWalletPoints = "$walletDriver/add.php"; + static String addpromotionDriver = "$walletDriver/promotionDriver.php"; + static String deleteDriversWallet = "$walletDriver/delete.php"; + static String updateDriversWallet = "$walletDriver/update.php"; + + //=======================promo===================ride.mobile-app.store/ride/promo/get.php + static String promo = '$server/ride/promo'; + static String getPassengersPromo = "$promo/get.php"; + static String getPromoBytody = "$promo/getPromoBytody.php"; + static String addPassengersPromo = "$promo/add.php"; + static String deletePassengersPromo = "$promo/delete.php"; + static String updatePassengersPromo = "$promo/update.php"; + + ////=======================cancelRide=================== + + static String addCancelRideFromPassenger = "$ride/cancelRide/add.php"; + static String addCancelTripFromDriverAfterApplied = + "$ride/cancelRide/addCancelTripFromDriverAfterApplied.php"; + static String cancelRide = "$ride/cancelRide/get.php"; +//-----------------ridessss------------------ + static String addRides = "$ride/rides/add.php"; + static String getRides = "$ride/rides/get.php"; + static String getMishwari = "$ride/mishwari/get.php"; + static String getMishwariDriver = "$ride/mishwari/getDriver.php"; + static String getTripCountByCaptain = "$ride/rides/getTripCountByCaptain.php"; + static String getRideOrderID = "$ride/rides/getRideOrderID.php"; + static String getRideStatus = "$ride/rides/getRideStatus.php"; + static String getOverLayStatus = "$ride/overLay/get.php"; + static String getArgumentAfterAppliedFromBackground = + "$ride/overLay/getArgumentAfterAppliedFromBackground.php"; + static String addOverLayStatus = "$ride/overLay/add.php"; + static String getapiKey = "$ride/apiKey/get.php"; + + static String getapiKeySefer = "$ride/apiKey/get.php"; + static String getRideStatusBegin = "$ride/rides/getRideStatusBegin.php"; + static String getRideStatusFromStartApp = + "$ride/rides/getRideStatusFromStartApp.php"; + static String updateRides = "$ride/rides/update.php"; + static String updateRideAndCheckIfApplied = + "$ride/rides/updateRideAndCheckIfApplied.php"; + static String updateStausFromSpeed = "$ride/rides/updateStausFromSpeed.php"; + static String deleteRides = "$ride/rides/delete.php"; + +//-----------------DriverPayment------------------ + static String addDriverScam = "$ride/driver_scam/add.php"; + static String getDriverScam = "$ride/driver_scam/get.php"; + +/////////---getKazanPercent===//////////// + static String getKazanPercent = "$ride/kazan/get.php"; + static String addKazanPercent = "$ride/kazan/add.php"; + +////-----------------DriverPayment------------------ + static String addDrivePayment = "$seferPaymentServer/ride/payment/add.php"; + static String payWithPayMobCardDriver = + "$seferPaymentServer/ride/payMob/paymob_driver/payWithCard.php"; + static String payWithWallet = + "$seferPaymentServer/ride/payMob/paymob_driver/payWithWallet.php"; + static String paymetVerifyDriver = + "$seferPaymentServer/ride/payMob/paymob_driver/paymet_verfy.php"; + static String updatePaymetToPaid = + "$seferPaymentServer/ride/payment/updatePaymetToPaid.php"; + static String paymobPayoutDriverWallet = + "$seferPaymentServer/ride/payMob/paymob_driver/paymob_payout.php'"; + + static String addSeferWallet = "$seferPaymentServer/ride/seferWallet/add.php"; + static String getSeferWallet = "$seferPaymentServer/ride/seferWallet/get.php"; + static String addDriverPaymentPoints = + "$seferPaymentServer/ride/driverPayment/add.php"; + static String addPaymentTokenDriver = + "$seferPaymentServer/ride/driverWallet/addPaymentToken.php"; //driverWallet/addPaymentToken.php + static String addPaymentTokenPassenger = + "$seferPaymentServer/ride/passengerWallet/addPaymentTokenPassenger.php"; + static String getDriverPaymentPoints = + "$seferPaymentServer/ride/driverWallet/get.php"; + static String getDriverPaymentToday = + "$seferPaymentServer/ride/payment/get.php"; + static String getCountRide = "$ride/payment/getCountRide.php"; + static String getAllPaymentFromRide = + "$seferPaymentServer/ride/payment/getAllPayment.php"; + static String getAllPaymentVisa = + "$seferPaymentServer/ride/payment/getAllPaymentVisa.php"; + +//-----------------Passenger NotificationCaptain------------------ + static String addNotificationPassenger = + "$ride/notificationPassenger/add.php"; + static String getNotificationPassenger = + "$ride/notificationPassenger/get.php"; + static String updateNotificationPassenger = + "$ride/notificationPassenger/update.php"; +//-----------------Driver NotificationCaptain------------------ + static String addNotificationCaptain = "$ride/notificationCaptain/add.php"; + static String addWaitingRide = "$ride/notificationCaptain/addWaitingRide.php"; + static String deleteAvailableRide = + "$ride/notificationCaptain/deleteAvailableRide.php"; + static String updateWaitingRide = + "$ride/notificationCaptain/updateWaitingTrip.php"; + static String getRideWaiting = + "$endPoint/ride/notificationCaptain/getRideWaiting.php"; + static String getNotificationCaptain = "$ride/notificationCaptain/get.php"; + static String updateNotificationCaptain = + "$ride/notificationCaptain/update.php"; + static String deleteNotificationCaptain = + "$ride/notificationCaptain/delete.php"; + //-----------------Api Key------------------ + static String addApiKey = "$ride/apiKey/add.php"; + static String getApiKey = "$ride/apiKey/get.php"; + static String getCnMap = "$server/auth/cnMap.php"; + static String getPromptDriverDocumentsEgypt = + "$server/auth/captin/getPromptDriverDocumentsEgypt.php"; + + static String updateApiKey = "$ride/apiKey/update.php"; + static String deleteApiKey = "$ride/apiKey/delete.php"; + static String checkPhoneNumberISVerfiedDriver = + "$auth/checkPhoneNumberISVerfiedDriver.php"; + static String getTesterApp = "$auth/Tester/getTesterApp.php"; + static String updateTesterApp = "$auth/Tester/updateTesterApp.php"; + +//-----------------healthInsuranceProvider------------------ + static String addHealthInsuranceProvider = "$server/driver_assurance/add.php"; + static String getHealthInsuranceProvider = "$server/driver_assurance/get.php"; + +//-----------------Feed Back------------------ + static String addFeedBack = "$ride/feedBack/add.php"; + static String getFeedBack = "$ride/feedBack/get.php"; + static String updateFeedBack = "$ride/feedBack/updateFeedBack.php"; + + //-----------------Tips------------------ + static String addTips = "$ride/tips/add.php"; + static String getTips = "$ride/tips/get.php"; + static String updateTips = "$ride/tips/update.php"; + +//-----------------Help Center------------------ + static String addhelpCenter = "$ride/helpCenter/add.php"; + static String gethelpCenter = "$ride/helpCenter/get.php"; + static String getByIdhelpCenter = "$ride/helpCenter/getById.php"; + static String updatehelpCenter = "$ride/helpCenter/update.php"; + static String deletehelpCenter = "$ride/helpCenter/delete.php"; + + //-----------------license------------------ + static String addLicense = "$ride/license/add.php"; + static String getLicense = "$ride/license/get.php"; + static String updateLicense = "$ride/license/updateFeedBack.php"; +//-----------------RegisrationCar------------------ + static String addRegisrationCar = "$ride/RegisrationCar/add.php"; + static String getRegisrationCar = "$endPoint/ride/RegisrationCar/get.php"; + static String updateRegisrationCar = "$ride/RegisrationCar/update.php"; + static String makeDefaultCar = "$ride/RegisrationCar/makeDefaultCar.php"; + +//-----------------DriverOrder------------------ + + static String addDriverOrder = "$ride/driver_order/add.php"; + static String getDriverOrder = "$ride/driver_order/get.php"; + static String getOrderCancelStatus = + "$ride/driver_order/getOrderCancelStatus.php"; + static String updateDriverOrder = "$ride/driver_order/update.php"; + static String deleteDriverOrder = "$ride/driver_order/delete.php"; + + // ===================================== + static String addRateToPassenger = "$ride/rate/add.php"; + static String addRateToDriver = "$ride/rate/addRateToDriver.php"; + static String addRateApp = "$ride/rate/add_rate_app.php"; + static String sendEmailRateingApp = "$ride/rate/sendEmailRateingApp.php"; + static String getDriverRate = "$ride/rate/getDriverRate.php"; + static String getPassengerRate = "$ride/rate/getPassengerRate.php"; + + ////////////////emails ============// + static String sendEmailToPassengerForTripDetails = + "$ride/rides/emailToPassengerTripDetail.php"; + static String sendEmailToDrivertransaction = + "$server/Admin/sendEmailToDrivertransaction.php"; +// =========================================== + static String pathImage = "$server/upload/types/"; + static String uploadImage = "$server/uploadImage.php"; + static String uploadImage1 = "$server/uploadImage1.php"; + static String uploadImagePortrate = "$server/uploadImagePortrate.php"; + static String uploadImageType = "$server/uploadImageType.php"; +//=============egypt documents ============== + static String uploadEgyptidFront = + "$server/EgyptDocuments/uploadEgyptidFront.php"; + static String uploadEgypt = "$server/uploadEgypt.php"; + static String uploadEgypt1 = "$server/uploadEgypt1.php"; + + //==================certifcate========== + static String location = '$endPoint/ride/location'; + static String getCarsLocationByPassenger = "$location/get.php"; + static String addpassengerLocation = "$location/addpassengerLocation.php"; + static String getLocationAreaLinks = "$location/get_location_area_links.php"; + static String getLatestLocationPassenger = + "$location/getLatestLocationPassenger.php"; + static String getFemalDriverLocationByPassenger = + "$location/getFemalDriver.php"; + static String getDriverCarsLocationToPassengerAfterApplied = + "$location/getDriverCarsLocationToPassengerAfterApplied.php"; + static String addCarsLocationByPassenger = "$location/add.php"; + static String saveBehavior = "$location/save_behavior.php"; + static String addCarsLocationGizaEndpoint = "$location/add.php"; + static String addCarsLocationAlexandriaEndpoint = "$location/add.php"; + static String addCarsLocationCairoEndpoint = "$location/add.php"; + static String deleteCarsLocationByPassenger = "$location/delete.php"; + static String updateCarsLocationByPassenger = "$location/update.php"; + static String getTotalDriverDuration = "$location/getTotalDriverDuration.php"; + static String getRidesDriverByDay = "$location/getRidesDriverByDay.php"; + static String getTotalDriverDurationToday = + "$location/getTotalDriverDurationToday.php"; + + //==================get_driver_behavior.php============= + static String get_driver_behavior = + '$ride/driver_behavior/get_driver_behavior.php'; + + //==================cars new drivers============= + static String addNewCarsDrivers = '$ride/carDrivers/add.php'; + static String getNewCarsDrivers = '$ride/carDrivers/get.php'; + static String deleteNewCarsDrivers = '$ride/carDrivers/delete.php'; + + //==================Blog============= + static String profile = '$ride/profile'; + static String getprofile = "$profile/get.php"; + static String getCaptainProfile = "$profile/getCaptainProfile.php"; + static String addprofile = "$profile/add.php"; + static String deleteprofile = "$profile/delete.php"; + static String updateprofile = "$profile/update.php"; + + //===================Auth============ + + static String addInviteDriver = "$ride/invitor/add.php"; + static String addInvitationPassenger = + "$ride/invitor/addInvitationPassenger.php"; + static String getInviteDriver = "$ride/invitor/get.php"; + static String getDriverInvitationToPassengers = + "$ride/invitor/getDriverInvitationToPassengers.php"; + static String updateInviteDriver = "$ride/invitor/update.php"; + static String updatePassengerGift = "$ride/invitor/updatePassengerGift.php"; + static String updateInvitationCodeFromRegister = + "$ride/invitor/updateInvitationCodeFromRegister.php"; + static String updateDriverInvitationDirectly = + "$ride/invitor/updateDriverInvitationDirectly.php"; + static String updatePassengersInvitation = + "$ride/invitor/updatePassengersInvitation.php"; + + //===================Auth============ + + static String auth = '$server/auth'; + static String login = "$auth/login.php"; + static String signUp = "$auth/signup.php"; + static String updateDriverClaim = "$auth/captin/updateDriverClaim.php"; + static String sendVerifyEmail = "$auth/sendVerifyEmail.php"; + static String passengerRemovedAccountEmail = + "$auth/passengerRemovedAccountEmail.php"; + static String verifyEmail = "$auth/verifyEmail.php"; +//===================Auth Captin============ + static String authCaptin = '$server/auth/captin'; + static String loginCaptin = "$authCaptin/login.php"; + static String loginFromGoogleCaptin = "$authCaptin/loginFromGoogle.php"; + static String loginUsingCredentialsWithoutGoogle = + "$authCaptin/loginUsingCredentialsWithoutGoogle.php"; + static String packageInfo = "$server/auth/packageInfo.php"; + static String signUpCaptin = "$authCaptin/register.php"; + static String addCriminalDocuments = "$authCaptin/addCriminalDocuments.php"; + static String sendVerifyEmailCaptin = "$authCaptin/sendVerifyEmail.php"; + static String sendVerifyOtpMessage = + "$server/auth/captin/sendOtpMessageDriver.php"; + static String verifyOtpMessage = "$server/auth/verifyOtpMessage.php"; + static String verifyOtpDriver = "$server/auth/captin/verifyOtpDriver.php"; + static String verifyEmailCaptin = "$authCaptin/verifyEmail.php"; + static String removeUser = "$authCaptin/removeAccount.php"; + static String deletecaptainAccounr = "$authCaptin/deletecaptainAccounr.php"; + static String updateAccountBank = "$authCaptin/updateAccountBank.php"; + static String getAccount = "$authCaptin/getAccount.php"; + static String uploadImageToAi = "$auth/document_syria/ai_document.php"; + static String isPhoneVerified = "$auth/syria/driver/isPhoneVerified.php"; + + //===================Admin Captin============ + + static String getPassengerDetailsByPassengerID = + "$server/Admin/getPassengerDetailsByPassengerID.php"; + static String getPassengerDetails = "$server/Admin/getPassengerDetails.php"; + static String getPassengerbyEmail = "$server/Admin/getPassengerbyEmail.php"; + static String addAdminUser = "$server/Admin/adminUser/add.php"; + static String addError = "$server/Admin/errorApp.php"; + static String getAdminUser = "$server/Admin/adminUser/get.php"; + static String getCaptainDetailsByEmailOrIDOrPhone = + "$server/Admin/AdminCaptain/getCaptainDetailsByEmailOrIDOrPhone.php"; + static String getCaptainDetails = "$server/Admin/AdminCaptain/get.php"; + static String getRidesPerMonth = + "$server/Admin/AdminRide/getRidesPerMonth.php"; + static String getRidesDetails = "$server/Admin/AdminRide/get.php"; + +//////////Sms egypt/////////// + static String sendSms = "https://sms.kazumi.me/api/sms/send-sms"; + static String senddlr = "https://sms.kazumi.me/api/sms/send-dlr"; + static String sendvalidity = "https://sms.kazumi.me/api/sms/send-validity"; + static String sendmany = "https://sms.kazumi.me/api/sms/send-many"; + static String checkCredit = "https://sms.kazumi.me/api/sms/check-credit"; + static String checkStatus = "https://sms.kazumi.me/api/sms/check-status"; + static String getSender = "$server/auth/sms/getSender.php"; + static String updatePhoneInvalidSMS = + "$server/auth/sms/updatePhoneInvalidSMS.php"; + + //////////////service/////////// + + static String serviceApp = "$server/serviceapp"; + static String getComplaintAllData = "$serviceApp/getComplaintAllData.php"; + static String getComplaintAllDataForDriver = + "$serviceApp/getComplaintAllDataForDriver.php"; +} diff --git a/lib/constant/notification.dart b/lib/constant/notification.dart new file mode 100755 index 0000000..06aa67e --- /dev/null +++ b/lib/constant/notification.dart @@ -0,0 +1,22 @@ +List driverMessages = [ + "💸 ÙØ±Øµ الربح: Ø§ÙØªØ­ تطبيق انطلق الآن وزد دخلك اليوم! المزيد من الطلبات بانتظارك! 🚗", + "🚀 طلبات جديدة: لا تضيع Ø§Ù„ÙØ±ØµØ©! المزيد من الركاب ينتظرونك الآن على تطبيق انطلق. ðŸƒâ€â™‚ï¸", + "📈 زيادة الدخل: حقق أعلى أرباح اليوم مع انطلق! Ø§ÙØªØ­ التطبيق وابدأ عملك الآن. 💵", + "🕒 أوقات الذروة: استعد لكسب المزيد خلال ÙØªØ±Ø§Øª الطلب Ø§Ù„Ù…Ø±ØªÙØ¹Ø©. Ø§ÙØªØ­ التطبيق الآن! 📲", + "🚗 طلبات جديدة: كن مستعداً، Ø§ÙØªØ­ تطبيق انطلق الآن واستقبل المزيد من الطلبات. 🔔", + "🎉 ÙØ±Øµ النجاح: ابدأ رحلتك إلى النجاح! Ø§ÙØªØ­ تطبيق انطلق لزيادة دخلك اليوم. 💼", + "🌠طلبات Ù…Ø±ØªÙØ¹Ø©: المزيد من الركاب بانتظارك، لا تÙوّت Ø§Ù„ÙØ±ØµØŒ Ø§ÙØªØ­ التطبيق الآن! 🚖", + "💪 زيادة الدخل: انطلق نحو تحقيق أهداÙÙƒ المالية، Ø§ÙØªØ­ تطبيق انطلق واكسب المزيد. ðŸ†", + "💰 أرباح إضاÙية: Ø§ÙØªØ­ التطبيق واستعد لتحقيق أرباح إضاÙية مع انطلق! المزيد من الطلبات ÙÙŠ انتظارك. 🛣ï¸", + "🔥 ÙØ±Øµ جديدة: تطبيق انطلق مزدحم الآن! Ø§ÙØªØ­ التطبيق وزد أرباحك Ø¨ÙØ±Øµ جديدة. 🚗", + "🚨 طلبات متزايدة: Ø§ÙØªØ­ تطبيق انطلق الآن! الطلب Ù…Ø±ØªÙØ¹ ÙˆÙØ±Øµ الربح كبيرة! 💸", + "💼 زيادة الدخل: هل أنت جاهز لتحقيق المزيد من الدخل؟ Ø§ÙØªØ­ التطبيق وانطلق الآن! 🚖", + "🚗 أوقات الذروة: احجز مقعدك ÙÙŠ ÙØªØ±Ø§Øª الطلب العالي، Ø§ÙØªØ­ تطبيق انطلق الآن واكسب المزيد. 📈", + "📲 بدء اليوم: ابدأ يومك مع انطلق، ÙˆØ§ÙØªØ­ التطبيق الآن لتزيد من ÙØ±Øµ الربح. 💵", + "💸 ÙØ±Øµ مستمرة: لا تÙوت ÙØ±Øµ الربح، Ø§ÙØªØ­ تطبيق انطلق الآن وكن على استعداد للمزيد! 🔔", + "📆 زيادة الطلب: انطلق اليوم ÙˆØ§Ø³ØªÙØ¯ من الطلبات المتزايدة على تطبيق انطلق! Ø§ÙØªØ­ التطبيق الآن. 🚗", + "💥 دخل إضاÙÙŠ: Ø§ÙØªØ­ تطبيق انطلق الآن واستقبل طلبات جديدة تحقق لك المزيد من الدخل. 💰", + "ðŸ† ÙØ±Øµ Ù…Ø±ØªÙØ¹Ø©: Ø§Ø³ØªÙØ¯ من طلبات اليوم Ø§Ù„Ù…Ø±ØªÙØ¹Ø©ØŒ Ø§ÙØªØ­ التطبيق الآن مع انطلق. 📲", + "🚗 ØªÙØ¶ÙŠÙ„ العملاء: كن السائق الذي يختاره الجميع! Ø§ÙØªØ­ تطبيق انطلق اليوم واربح المزيد. 🔥", + "💸 دخل إضاÙÙŠ: ÙØ±Øµ الدخل الإضاÙÙŠ ÙÙŠ انتظارك! Ø§ÙØªØ­ تطبيق انطلق واستمتع بالطلبات المتزايدة. 💼", +]; diff --git a/lib/constant/style.dart b/lib/constant/style.dart new file mode 100755 index 0000000..f2697b5 --- /dev/null +++ b/lib/constant/style.dart @@ -0,0 +1,70 @@ +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'colors.dart'; + +class AppStyle { + static TextStyle headTitle = TextStyle( + fontWeight: FontWeight.bold, + fontSize: 36, + color: AppColor.accentColor, + fontFamily: box.read(BoxName.lang) == 'ar' + // ?GoogleFonts.markaziText().fontFamily + ? GoogleFonts.markaziText().fontFamily + : GoogleFonts.inter().fontFamily); + static TextStyle headTitle2 = TextStyle( + fontWeight: FontWeight.bold, + fontSize: 24, + color: AppColor.writeColor, + fontFamily: box.read(BoxName.lang) == 'ar' + ? GoogleFonts.markaziText().fontFamily + : GoogleFonts.inter().fontFamily); + static TextStyle title = TextStyle( + fontWeight: FontWeight.normal, + fontSize: 16, + color: AppColor.writeColor, + fontFamily: box.read(BoxName.lang) == 'ar' + ? GoogleFonts.markaziText().fontFamily + : GoogleFonts.inter().fontFamily); + static TextStyle subtitle = TextStyle( + fontWeight: FontWeight.bold, + fontSize: 12, + color: AppColor.writeColor, + fontFamily: box.read(BoxName.lang) == 'ar' + ? GoogleFonts.markaziText().fontFamily + : GoogleFonts.inter().fontFamily); + static TextStyle number = const TextStyle( + fontWeight: FontWeight.bold, + fontSize: 14, + color: AppColor.writeColor, + fontFamily: 'digit'); + + static BoxDecoration boxDecoration = const BoxDecoration( + boxShadow: [ + BoxShadow( + color: AppColor.accentColor, blurRadius: 5, offset: Offset(2, 4)), + BoxShadow( + color: AppColor.accentColor, blurRadius: 5, offset: Offset(-2, -2)) + ], + color: AppColor.secondaryColor, + borderRadius: BorderRadius.all( + Radius.elliptical(15, 30), + )); + static BoxDecoration boxDecoration1 = const BoxDecoration( + boxShadow: [ + BoxShadow( + color: Color.fromARGB(255, 237, 230, 230), + blurRadius: 5, + offset: Offset(2, 4)), + BoxShadow( + color: Color.fromARGB(255, 242, 237, 237), + blurRadius: 5, + offset: Offset(-2, -2)) + ], + color: AppColor.secondaryColor, + borderRadius: BorderRadius.all( + Radius.elliptical(15, 30), + ), + ); +} diff --git a/lib/constant/table_names.dart b/lib/constant/table_names.dart new file mode 100755 index 0000000..6e1b658 --- /dev/null +++ b/lib/constant/table_names.dart @@ -0,0 +1,19 @@ +class TableName { + static const String placesFavorite = "placesFavorite"; + static const String recentLocations = "recentLocations"; + static const String carLocations = "carLocations"; + static const String driverOrdersRefuse = "driverOrdersRefuse"; + static const String rideLocation = "rideLocation"; + static const String faceDetectTimes = "faceDetectTimes"; + static const String behavior = "behavior"; + static const String captainNotification = "captainNotification"; + static const String applyRideFromOverLay = "applyRideFromOverLay"; +} + +class Driver { + static const String driverPass = 'MG6DEJZSczBT6Rx0jOlehQ=='; + static const String payMobApikey = 'payMobApikey'; + static const String initializationVector = 'initializationVector'; + static const String keyOfApp = 'keyOfApp'; + static const String FCM_PRIVATE_KEY = 'FCM_PRIVATE_KEY'; +} diff --git a/lib/controller/auth/apple_sigin.dart b/lib/controller/auth/apple_sigin.dart new file mode 100755 index 0000000..a624cae --- /dev/null +++ b/lib/controller/auth/apple_sigin.dart @@ -0,0 +1,34 @@ +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:get/get.dart'; +import 'package:sign_in_with_apple/sign_in_with_apple.dart'; + +class AuthController extends GetxController { + final FirebaseAuth _auth = FirebaseAuth.instance; + + Future signInWithApple() async { + try { + final appleCredential = await SignInWithApple.getAppleIDCredential( + scopes: [ + AppleIDAuthorizationScopes.email, + AppleIDAuthorizationScopes.fullName, + ], + ); + + final oAuthProvider = OAuthProvider('apple.com'); + final credential = oAuthProvider.credential( + idToken: appleCredential.identityToken, + accessToken: appleCredential.authorizationCode, + ); + + UserCredential userCredential = + await _auth.signInWithCredential(credential); + return userCredential.user; + } catch (error) { + return null; + } + } + + void signOut() async { + await _auth.signOut(); + } +} diff --git a/lib/controller/auth/captin/history_captain.dart b/lib/controller/auth/captin/history_captain.dart new file mode 100755 index 0000000..528b136 --- /dev/null +++ b/lib/controller/auth/captin/history_captain.dart @@ -0,0 +1,61 @@ +import 'dart:convert'; + +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:get/get.dart'; + +import '../../../constant/box_name.dart'; +import '../../../constant/links.dart'; +import '../../../main.dart'; +import '../../../views/home/Captin/history/history_details_page.dart'; +import '../../functions/crud.dart'; +import '../../functions/encrypt_decrypt.dart'; + +class HistoryCaptainController extends GetxController { + bool isloading = false; + Map historyData = {}; + Map historyDetailsData = {}; + late String orderID; + getOrderId(String orderId) { + orderID = orderId; + update(); + } + + getHistory() async { + isloading = true; + var res = await CRUD().get( + link: AppLink.getDriverOrder, + payload: {'driver_id': box.read(BoxName.driverID)}); + if (res != 'failure') { + historyData = jsonDecode(res); + isloading = false; + update(); + } else { + Get.defaultDialog( + title: 'No ride yet'.tr, + middleText: '', + barrierDismissible: false, + confirm: MyElevatedButton( + title: 'Back'.tr, + onPressed: () { + Get.back(); + Get.back(); + })); + } + } + + getHistoryDetails(String orderId) async { + isloading = true; + var res = await CRUD() + .get(link: AppLink.getRideOrderID, payload: {'id': (orderId)}); + historyDetailsData = jsonDecode(res); + isloading = false; + update(); + Get.to(() => HistoryDetailsPage()); + } + + @override + void onInit() { + getHistory(); + super.onInit(); + } +} diff --git a/lib/controller/auth/captin/invit_controller.dart b/lib/controller/auth/captin/invit_controller.dart new file mode 100755 index 0000000..94feeae --- /dev/null +++ b/lib/controller/auth/captin/invit_controller.dart @@ -0,0 +1,416 @@ +import 'dart:convert'; + +import 'package:local_auth/local_auth.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/firebase/local_notification.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/controller/functions/encrypt_decrypt.dart'; +import 'package:sefer_driver/controller/home/payment/captain_wallet_controller.dart'; +import 'package:sefer_driver/views/widgets/mydialoug.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_contacts/contact.dart'; +import 'package:flutter_contacts/flutter_contacts.dart'; +import 'package:get/get.dart'; +import 'package:share_plus/share_plus.dart'; + +import '../../../main.dart'; +import '../../../views/widgets/error_snakbar.dart'; +import '../../functions/launch.dart'; +import '../../notification/notification_captain_controller.dart'; + +class InviteController extends GetxController { + final TextEditingController invitePhoneController = TextEditingController(); + List driverInvitationData = []; + List driverInvitationDataToPassengers = []; + String? couponCode; + String? driverCouponCode; + + int selectedTab = 0; + PassengerStats passengerStats = PassengerStats(); + void updateSelectedTab(int index) { + selectedTab = index; + update(); + } + + Future shareCouponCode() async { + // TODO: Implement sharing functionality + // You can use share_plus package to share the coupon code + } + Future shareDriverCode() async { + if (driverCouponCode != null) { + final String shareText = ''' +Join Intaleq as a driver using my referral code! +Use code: $driverCouponCode +Download the Intaleq Driver app now and earn rewards! +'''; + await Share.share(shareText); + } + } + + Future sharePassengerCode() async { + if (couponCode != null) { + final String shareText = ''' +Get a discount on your first Intaleq ride! +Use my referral code: $couponCode +Download the Intaleq app now and enjoy your ride! +'''; + await Share.share(shareText); + } + } + + @override + void onInit() { + super.onInit(); + // fetchDriverStats(); + } + + void fetchDriverStats() async { + try { + var response = await CRUD().get(link: AppLink.getInviteDriver, payload: { + "driverId": box.read(BoxName.driverID), + }); + if (response != 'failure') { + var data = jsonDecode(response); + driverInvitationData = data['message']; + update(); + } + } catch (e) {} + } + + void fetchDriverStatsPassengers() async { + try { + var response = await CRUD() + .get(link: AppLink.getDriverInvitationToPassengers, payload: { + "driverId": box.read(BoxName.driverID), + }); + if (response != 'failure') { + var data = jsonDecode(response); + driverInvitationDataToPassengers = data['message']; + update(); + } + } catch (e) {} + } + + void selectPhone(String phone) { + if (box.read(BoxName.countryCode) == 'Egypt') { + invitePhoneController.text = phone; + update(); + Get.back(); + } + } + + Future saveContactsToServer() async { + try { + // TODO: Implement the actual server upload logic here + // Simulating a server request + await Future.delayed(Duration(seconds: 2)); + + mySnackbarSuccess( + '${selectedContacts.length} contacts saved to server'.tr); + } catch (e) { + mySnackeBarError( + 'An error occurred while saving contacts to server: $e'.tr); + } + } + + List contacts = []; + List selectedContacts = []; + RxList> contactMaps = >[].obs; + + Future pickContacts() async { + try { + if (await FlutterContacts.requestPermission(readonly: true)) { + final List fetchedContacts = + await FlutterContacts.getContacts(withProperties: true); + contacts = fetchedContacts; + + // Convert contacts to a list of maps + contactMaps.value = fetchedContacts.map((contact) { + return { + 'name': contact.displayName, + 'phones': + contact.phones.map((phone) => phone.normalizedNumber).toList(), + 'emails': contact.emails.map((email) => email.address).toList(), + }; + }).toList(); + update(); + + if (contacts.isEmpty) { + mySnackeBarError('Please add contacts to your phone.'.tr); + } + } else { + mySnackeBarError('Contact permission is required to pick contacts'.tr); + } + } catch (e) { + mySnackeBarError('An error occurred while picking contacts: $e'.tr); + } + } + + void onSelectDriverInvitation(int index) async { + MyDialog().getDialog( + int.parse((driverInvitationData[index]['countOfInvitDriver'])) < 100 + ? '${'When'.tr} ${(driverInvitationData[index]['invitorName'])} ${"complete, you can claim your gift".tr} ' + : 'You deserve the gift'.tr, + '${(driverInvitationData[index]['invitorName'])} ${(driverInvitationData[index]['countOfInvitDriver'])} / 100 ${'Trip'.tr}', + () async { + bool isAvailable = await LocalAuthentication().isDeviceSupported(); + if (int.parse((driverInvitationData[index]['countOfInvitDriver'])) < + 100) { + Get.back(); + } else + //claim your gift + + if (isAvailable) { + // Authenticate the user + bool didAuthenticate = await LocalAuthentication().authenticate( + localizedReason: 'Use Touch ID or Face ID to confirm payment', + options: AuthenticationOptions( + biometricOnly: true, + sensitiveTransaction: true, + )); + if (didAuthenticate) { + if ((driverInvitationData[index]['isGiftToken']).toString() == + '0') { + Get.back(); + await CRUD().post( + link: AppLink.updateInviteDriver, + payload: {'id': (driverInvitationData[index]['id'])}); + await Get.find().addDriverPayment( + 'paymentMethod', + ('500'), + '', + ); + // add for invitor too + await Get.find() + .addDriverWalletToInvitor( + 'paymentMethod', + (driverInvitationData[index]['driverInviterId']), + ('500'), + ); + // await Get.find() + // .addSeferWallet('giftInvitation', ('-1000')); + NotificationCaptainController().addNotificationCaptain( + driverInvitationData[index]['driverInviterId'].toString(), + "You have got a gift for invitation".tr, + '${"You have 500".tr} ${'LE'.tr}', + false); + NotificationController().showNotification( + "You have got a gift for invitation".tr, + '${"You have 500".tr} ${'LE'.tr}', + 'tone1', + ''); + } else { + Get.back(); + MyDialog().getDialog("You have got a gift".tr, + "Share the app with another new driver".tr, () { + Get.back(); + }); + } + } else { + // Authentication failed, handle accordingly + MyDialog().getDialog('Authentication failed'.tr, ''.tr, () { + Get.back(); + }); + } + } else { + MyDialog().getDialog('Biometric Authentication'.tr, + 'You should use Touch ID or Face ID to confirm payment'.tr, () { + Get.back(); + }); + } + }, + ); + } + + void onSelectPassengerInvitation(int index) async { + bool isAvailable = await LocalAuthentication().isDeviceSupported(); + MyDialog().getDialog( + int.parse(driverInvitationDataToPassengers[index]['countOfInvitDriver'] + .toString()) < + 3 + ? '${'When'.tr} ${(driverInvitationDataToPassengers[index]['passengerName'].toString())} ${"complete, you can claim your gift".tr} ' + : 'You deserve the gift'.tr, + '${(driverInvitationDataToPassengers[index]['passengerName'].toString())} ${driverInvitationDataToPassengers[index]['countOfInvitDriver']} / 3 ${'Trip'.tr}', + () async { + if (int.parse(driverInvitationDataToPassengers[index] + ['countOfInvitDriver'] + .toString()) < + 3) { + Get.back(); + } else if (isAvailable) { + // Authenticate the user + bool didAuthenticate = await LocalAuthentication().authenticate( + localizedReason: 'Use Touch ID or Face ID to confirm payment', + options: AuthenticationOptions( + biometricOnly: true, + sensitiveTransaction: true, + )); + if (didAuthenticate) { + // Claim the gift if 100 trips are completed + if (driverInvitationDataToPassengers[index]['isGiftToken'] + .toString() == + '0') { + Get.back(); + // Add wallet to the inviter + await Get.find() + .addDriverWallet('paymentMethod', '50', '50'); + // add for invitor too + await Get.find() + .addDriverWalletToInvitor('paymentMethod', + driverInvitationData[index]['driverInviterId'], '50'); + // Update invitation as claimed + await CRUD().post( + link: AppLink.updatePassengerGift, + payload: {'id': driverInvitationDataToPassengers[index]['id']}, + ); + + // Notify the inviter + NotificationCaptainController().addNotificationCaptain( + driverInvitationDataToPassengers[index]['passengerInviterId'] + .toString(), + "You have got a gift for invitation".tr, + '${"You have 50".tr} ${'LE'}', + false, + ); + } else { + Get.back(); + MyDialog().getDialog( + "You have got a gift".tr, + "Share the app with another new passenger".tr, + () { + Get.back(); + }, + ); + } + } else { + // Authentication failed, handle accordingly + MyDialog().getDialog('Authentication failed'.tr, ''.tr, () { + Get.back(); + }); + } + } else { + MyDialog().getDialog('Biometric Authentication'.tr, + 'You should use Touch ID or Face ID to confirm payment'.tr, () { + Get.back(); + }); + } + }, + ); + } + + savePhoneToServer() async { + for (var i = 0; i < contactMaps.length; i++) { + var phones = contactMaps[i]['phones']; + if (phones != null && phones.isNotEmpty && phones[0].isNotEmpty) { + var res = await CRUD().post(link: AppLink.savePhones, payload: { + "name": contactMaps[i]['name'] ?? 'none', + "phones": phones[0] ?? 'none', + "phones2": phones.join(', ') ?? + 'none', // Convert List to a comma-separated string + }); + if (res != 'failure') {} + } else {} + } + } + + String formatPhoneNumber(String input) { + // Remove any non-digit characters + String digitsOnly = input.replaceAll(RegExp(r'\D'), ''); + + // Ensure the number starts with the country code + if (digitsOnly.startsWith('20')) { + digitsOnly = digitsOnly.substring(1); + } + + return digitsOnly; + } + + void sendInvite() async { + if (invitePhoneController.text.isEmpty) { + mySnackeBarError('Please enter an phone address'.tr); + return; + } + + // try { + String phoneNumber = formatPhoneNumber(invitePhoneController.text); + + var response = await CRUD().post(link: AppLink.addInviteDriver, payload: { + "driverId": box.read(BoxName.driverID), + "inviterDriverPhone": '+2$phoneNumber' + }); + + if (response != 'failure') { + var d = (response); + mySnackbarSuccess('Invite sent successfully'.tr); + String message = '${'*Intaleq DRIVER CODE*'.tr}\n\n' + '${"Use this code in registration".tr}\n' + '${"To get a gift for both".tr}\n\n' + '${"The period of this code is 1 hour".tr}\n\n' + '${'before'.tr} *${d['message']['expirationTime'].toString()}*\n\n' + '_*${d['message']['inviteCode'].toString()}*_\n\n' + '${"Install our app:".tr}\n' + '*Android:* https://play.google.com/store/apps/details?id=com.sefer_driver\n\n\n' + '*iOS:* https://apps.apple.com/ae/app/sefer-driver/id6502189302'; + + launchCommunication('whatsapp', '+2$phoneNumber', message); + + invitePhoneController.clear(); + } else { + mySnackeBarError("Invite code already used".tr); + } + } + + void sendInviteToPassenger() async { + if (invitePhoneController.text.isEmpty) { + mySnackeBarError('Please enter an phone address'.tr); + + return; + } + + // try { + String phoneNumber = formatPhoneNumber(invitePhoneController.text); + + var response = + await CRUD().post(link: AppLink.addInvitationPassenger, payload: { + "driverId": box.read(BoxName.driverID), + "inviterPassengerPhone": '+2$phoneNumber' + }); + + if (response != 'failure') { + var d = jsonDecode(response); + + mySnackbarSuccess('Invite sent successfully'.tr); + + String message = '${'*Intaleq APP CODE*'.tr}\n\n' + '${"Use this code in registration".tr}\n' + '${"To get a gift for both".tr}\n\n' + '${"The period of this code is 1 hour".tr}\n\n' + '${'before'.tr} *${d['message']['expirationTime'].toString()}*\n\n' + '_*${d['message']['inviteCode'].toString()}*_\n\n' + '${"Install our app:".tr}\n' + '*Android:* https://play.google.com/store/apps/details?id=com.mobileapp.store.ride\n\n\n' + '*iOS:* https://apps.apple.com/us/app/sefer/id6458734951'; + + launchCommunication('whatsapp', '+2$phoneNumber', message); + + invitePhoneController.clear(); + } else { + mySnackeBarError( + "Invite code already used".tr, + ); + } + } +} + +class PassengerStats { + final int totalInvites; + final int activeUsers; + final double totalEarnings; + + PassengerStats({ + this.totalInvites = 0, + this.activeUsers = 0, + this.totalEarnings = 0.0, + }); +} diff --git a/lib/controller/auth/captin/login_captin_controller.dart b/lib/controller/auth/captin/login_captin_controller.dart new file mode 100755 index 0000000..7c8b656 --- /dev/null +++ b/lib/controller/auth/captin/login_captin_controller.dart @@ -0,0 +1,608 @@ +import 'dart:convert'; +import 'dart:io'; +import 'package:crypto/crypto.dart'; + +import 'dart:math'; +import 'package:http/http.dart' as http; +import 'package:permission_handler/permission_handler.dart'; +import 'package:secure_string_operations/secure_string_operations.dart'; +import 'package:sefer_driver/controller/functions/location_background_controller.dart'; +import 'package:sefer_driver/views/auth/captin/cards/sms_signup.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/home/Captin/home_captain/home_captin.dart'; +import 'package:location/location.dart'; + +import '../../../constant/api_key.dart'; +import '../../../constant/char_map.dart'; +import '../../../constant/info.dart'; +import '../../../constant/table_names.dart'; +import '../../../print.dart'; +import '../../../views/auth/captin/cards/syrian_card_a_i.dart'; +import '../../../views/auth/captin/otp_page.dart'; +import '../../../views/auth/captin/otp_token_page.dart'; +import '../../firebase/firbase_messge.dart'; +import '../../functions/encrypt_decrypt.dart'; +import '../../functions/package_info.dart'; +import '../../functions/secure_storage.dart'; +import '../../functions/security_checks.dart'; + +class LoginDriverController extends GetxController { + final formKey = GlobalKey(); + TextEditingController emailController = TextEditingController(); + TextEditingController phoneController = TextEditingController(); + TextEditingController passwordController = TextEditingController(); + TextEditingController passwordController2 = TextEditingController(); + bool isAgreeTerms = false; + bool isGoogleDashOpen = false; + bool isGoogleLogin = false; + bool isloading = false; + late int isTest = 1; + final FlutterSecureStorage _storage = const FlutterSecureStorage(); + final location = Location(); + void changeAgreeTerm() { + isAgreeTerms = !isAgreeTerms; + update(); + } + + bool isPasswordHidden = true; + + void togglePasswordVisibility() { + isPasswordHidden = !isPasswordHidden; + update([ + 'passwordVisibility' + ]); // Use a unique ID to only update the password field + } + + void changeGoogleDashOpen() { + isGoogleDashOpen = !isGoogleDashOpen; + update(); + } + + @override + void onInit() async { + box.write(BoxName.countryCode, 'Syria'); + box.read(BoxName.isTest) == null || + box.read(BoxName.isTest).toString() == '0' + ? await getAppTester() + : null; + + super.onInit(); + } + + getAppTester() async { + var res = await CRUD().get( + link: AppLink.getTesterApp, + payload: {'appPlatform': AppInformation.appName}); + if (res != 'failure') { + var d = jsonDecode(res); + + isTest = d['message'][0]['isTest']; + update(); + } else { + return false; + } + } + + updateAppTester(String appPlatform) async { + await CRUD().post( + link: AppLink.updateTesterApp, payload: {'appPlatform': appPlatform}); + } + + isPhoneVerified() async { + var res = await CRUD().post(link: AppLink.isPhoneVerified, payload: { + 'phone_number': box.read( + BoxName.phoneDriver, + ) + }); + if (res != 'failure') { + Get.offAll(() => SyrianCardAI()); + + // isloading = false; + // update(); + } else { + Get.offAll(() => PhoneNumberScreen()); + } + } + + void saveAgreementTerms() { + box.write(BoxName.agreeTerms, 'agreed'); + update(); + } + + void saveCountryCode(String countryCode) { + box.write(BoxName.countryCode, countryCode); + update(); + } + + var dev = ''; + getJwtWallet() async { + final random = Random(); + + if (random.nextBool()) { + await SecurityHelper.performSecurityChecks(); + } else { + await SecurityChecks.isDeviceRootedFromNative(Get.context!); + } + String fingerPrint = await DeviceHelper.getDeviceFingerprint(); + // print('fingerPrint: ${fingerPrint}'); + dev = Platform.isAndroid ? 'android' : 'ios'; + var payload = { + 'id': box.read(BoxName.driverID), + 'password': AK.passnpassenger, + 'aud': '${AK.allowedWallet}$dev', + 'fingerPrint': fingerPrint + }; + var response1 = await http.post( + Uri.parse(AppLink.loginJwtWalletDriver), + body: payload, + ); + // Log.print('response.request: ${response1.request}'); + // Log.print('response.body: ${response1.body}'); + // print(payload); + // Log.print( + // 'jsonDecode(response1.body)["jwt"]: ${jsonDecode(response1.body)['jwt']}'); + await box.write(BoxName.hmac, jsonDecode(response1.body)['hmac']); + return jsonDecode(response1.body)['jwt'].toString(); + } + + String shortHash(String password) { + var bytes = utf8.encode(password); + var digest = sha256.convert(bytes); + return base64UrlEncode(digest.bytes); + } + + getJWT() async { + dev = Platform.isAndroid ? 'android' : 'ios'; + Log.print( + 'box.read(BoxName.firstTimeLoadKey): ${box.read(BoxName.firstTimeLoadKey)}'); + if (box.read(BoxName.firstTimeLoadKey).toString() != 'false') { + var payload = { + 'id': box.read(BoxName.driverID) ?? AK.newId, + 'password': AK.passnpassenger, + 'aud': '${AK.allowed}$dev', + }; + Log.print('payload: ${payload}'); + + var response0 = await http.post( + Uri.parse(AppLink.loginFirstTimeDriver), + body: payload, + ); + Log.print('response0: ${response0.body}'); + Log.print('request: ${response0.request}'); + if (response0.statusCode == 200) { + final decodedResponse1 = jsonDecode(response0.body); + // Log.print('decodedResponse1: ${decodedResponse1}'); + + final jwt = decodedResponse1['jwt']; + box.write(BoxName.jwt, c(jwt)); + // await box.write(BoxName.hmac, decodedResponse1['hmac']); + + // await AppInitializer().getAIKey(Driver.payMobApikey); + // await AppInitializer().getAIKey(Driver.FCM_PRIVATE_KEY); + + // await AppInitializer().getAIKey(Driver.initializationVector); + // await AppInitializer().getAIKey(Driver.keyOfApp); + + // ✅ بعد التأكد أن كل Ø§Ù„Ù…ÙØ§ØªÙŠØ­ موجودة + await EncryptionHelper.initialize(); + + await AppInitializer().getKey(); + } else {} + } else { + await EncryptionHelper.initialize(); + + var payload = { + 'id': box.read(BoxName.driverID), + 'password': box.read(BoxName.emailDriver), + 'aud': '${AK.allowed}$dev', + }; + print(payload); + var response1 = await http.post( + Uri.parse(AppLink.loginJwtDriver), + body: payload, + ); + print(response1.request); + print(response1.body); + + if (response1.statusCode == 200) { + final decodedResponse1 = jsonDecode(response1.body); + // Log.print('decodedResponse1: ${decodedResponse1}'); + + final jwt = decodedResponse1['jwt']; + await box.write(BoxName.jwt, c(jwt)); + + await AppInitializer().getKey(); + } + } + } + + Future getLocationPermission() async { + var status = await Permission.locationAlways.status; + if (!status.isGranted) { + await Permission.locationAlways.request(); + } + update(); + } + + String generateUniqueIdFromEmail(String email) { + // Step 1: Extract the local part of the email + String localPart = email.split('@')[0]; + + // Step 2: Replace invalid characters (if any) + String cleanLocalPart = localPart.replaceAll(RegExp(r'[^a-zA-Z0-9]'), ''); + + // Step 3: Ensure it does not exceed 24 characters + if (cleanLocalPart.length > 24) { + cleanLocalPart = cleanLocalPart.substring(0, 24); + } + + // Step 4: Generate a random suffix if needed + String suffix = generateRandomSuffix(24 - cleanLocalPart.length); + + return cleanLocalPart + suffix; + } + + String generateRandomSuffix(int length) { + const String chars = + 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; + Random random = Random(); + return List.generate(length, (index) => chars[random.nextInt(chars.length)]) + .join(''); + } + + loginWithGoogleCredential(String driverID, email) async { + isloading = true; + update(); + await SecurityHelper.performSecurityChecks(); + Log.print('(BoxName.emailDriver): ${box.read(BoxName.emailDriver)}'); + + var res = await CRUD().get(link: AppLink.loginFromGoogleCaptin, payload: { + 'email': email ?? 'yet', + 'id': driverID, + }); + + // print('res is $res'); + if (res == 'failure') { + await isPhoneVerified(); + // Get.snackbar('Failure', '', backgroundColor: Colors.red); + } else { + var jsonDecoeded = jsonDecode(res); + var d = jsonDecoeded['data'][0]; + if (jsonDecoeded.isNotEmpty) { + if (jsonDecoeded['status'] == 'success' && + d['is_verified'].toString() == '1') { + box.write(BoxName.emailDriver, d['email']); + box.write(BoxName.firstTimeLoadKey, 'false'); + box.write(BoxName.driverID, (d['id'])); + box.write(BoxName.isTest, '1'); + box.write(BoxName.gender, (d['gender'])); + box.write(BoxName.phoneVerified, d['is_verified'].toString()); + box.write(BoxName.phoneDriver, (d['phone'])); + box.write(BoxName.is_claimed, d['is_claimed']); + box.write(BoxName.isInstall, d['isInstall']); + // box.write( + // BoxName.isGiftToken, d['isGiftToken']); + box.write(BoxName.nameArabic, (d['name_arabic'])); + box.write(BoxName.carYear, d['year']); + box.write(BoxName.bankCodeDriver, (d['bankCode'])); + box.write(BoxName.accountBankNumberDriver, (d['accountBank'])); + box.write( + BoxName.nameDriver, + '${(d['first_name'])}' + ' ${(d['last_name'])}'); + if (((d['model']).toString().contains('دراجه') || + d['make'].toString().contains('دراجه '))) { + if ((d['gender']).toString() == 'Male') { + box.write(BoxName.carTypeOfDriver, 'Scooter'); + } else { + box.write(BoxName.carTypeOfDriver, 'Pink Bike'); + } + } else if (int.parse(d['year'].toString()) > 2016) { + if (d['gender'].toString() != 'Male') { + box.write(BoxName.carTypeOfDriver, 'Lady'); + } else { + box.write(BoxName.carTypeOfDriver, 'Comfort'); + } + } else if (int.parse(d['year'].toString()) > 2002 && + int.parse(d['year'].toString()) < 2016) { + box.write(BoxName.carTypeOfDriver, 'Speed'); + } else if (int.parse(d['year'].toString()) < 2002) { + box.write(BoxName.carTypeOfDriver, 'Awfar Car'); + } + updateAppTester(AppInformation.appName); + + var token = await CRUD().get( + link: AppLink.getDriverToken, + payload: {'captain_id': (box.read(BoxName.driverID)).toString()}); + + String fingerPrint = await DeviceHelper.getDeviceFingerprint(); + await storage.write( + key: BoxName.fingerPrint, value: fingerPrint.toString()); + print(jsonDecode(token)['data'][0]['token'].toString()); + print(box.read(BoxName.tokenDriver).toString()); + if (email == '962798583052@intaleqapp.com') { + } else { + if (token != 'failure') { + if ((jsonDecode(token)['data'][0]['token'].toString()) != + box.read(BoxName.tokenDriver).toString()) { + await Get.defaultDialog( + title: 'Device Change Detected'.tr, + middleText: 'Please verify your identity'.tr, + textConfirm: 'Verify'.tr, + confirmTextColor: Colors.white, + onConfirm: () { + // Get.back(); + // انتقل Ù„ØµÙØ­Ø© OTP الجديدة + Get.to( + () => OtpVerificationPage( + phone: d['phone'].toString(), + deviceToken: fingerPrint.toString(), + token: token.toString(), + ptoken: + jsonDecode(token)['data'][0]['token'].toString(), + ), + ); + }, + ); + } + } + } + + Get.off(() => HomeCaptain()); + } else { + Get.offAll(() => PhoneNumberScreen()); + + isloading = false; + update(); + } + } else { + mySnackbarSuccess(''); + + isloading = false; + update(); + } + } + } + + logintest(String driverID, email) async { + isloading = true; + update(); + await SecurityHelper.performSecurityChecks(); + Log.print('(BoxName.emailDriver): ${box.read(BoxName.emailDriver)}'); + + var res = await CRUD().get(link: AppLink.loginFromGoogleCaptin, payload: { + 'email': email ?? 'yet', + 'id': driverID, + }); + + // print('res is $res'); + if (res == 'failure') { + await isPhoneVerified(); + // Get.snackbar('Failure', '', backgroundColor: Colors.red); + } else { + var jsonDecoeded = jsonDecode(res); + var d = jsonDecoeded['data'][0]; + if (jsonDecoeded.isNotEmpty) { + if (jsonDecoeded['status'] == 'success' && + d['is_verified'].toString() == '1') { + box.write(BoxName.emailDriver, d['email']); + box.write(BoxName.firstTimeLoadKey, 'false'); + box.write(BoxName.driverID, (d['id'])); + box.write(BoxName.isTest, '1'); + box.write(BoxName.gender, (d['gender'])); + box.write(BoxName.phoneVerified, d['is_verified'].toString()); + box.write(BoxName.phoneDriver, (d['phone'])); + box.write(BoxName.is_claimed, d['is_claimed']); + box.write(BoxName.isInstall, d['isInstall']); + // box.write( + // BoxName.isGiftToken, d['isGiftToken']); + box.write(BoxName.nameArabic, (d['name_arabic'])); + box.write(BoxName.carYear, d['year']); + box.write(BoxName.bankCodeDriver, (d['bankCode'])); + box.write(BoxName.accountBankNumberDriver, (d['accountBank'])); + box.write( + BoxName.nameDriver, + '${(d['first_name'])}' + ' ${(d['last_name'])}'); + if (((d['model']).toString().contains('دراجه') || + d['make'].toString().contains('دراجه '))) { + if ((d['gender']).toString() == 'Male') { + box.write(BoxName.carTypeOfDriver, 'Scooter'); + } else { + box.write(BoxName.carTypeOfDriver, 'Pink Bike'); + } + } else if (int.parse(d['year'].toString()) > 2016) { + if (d['gender'].toString() != 'Male') { + box.write(BoxName.carTypeOfDriver, 'Lady'); + } else { + box.write(BoxName.carTypeOfDriver, 'Comfort'); + } + } else if (int.parse(d['year'].toString()) > 2002 && + int.parse(d['year'].toString()) < 2016) { + box.write(BoxName.carTypeOfDriver, 'Speed'); + } else if (int.parse(d['year'].toString()) < 2002) { + box.write(BoxName.carTypeOfDriver, 'Awfar Car'); + } + updateAppTester(AppInformation.appName); + + var token = await CRUD().get( + link: AppLink.getDriverToken, + payload: {'captain_id': (box.read(BoxName.driverID)).toString()}); + + String fingerPrint = await DeviceHelper.getDeviceFingerprint(); + await storage.write( + key: BoxName.fingerPrint, value: fingerPrint.toString()); + + Get.off(() => HomeCaptain()); + } else { + Get.offAll(() => PhoneNumberScreen()); + + isloading = false; + update(); + } + } else { + mySnackbarSuccess(''); + + isloading = false; + update(); + } + } + } + + loginUsingCredentialsWithoutGoogle(String password, email) async { + isloading = true; + isGoogleLogin = true; + update(); + var res = await CRUD() + .get(link: AppLink.loginUsingCredentialsWithoutGoogle, payload: { + 'email': (email), + 'password': password, + }); + box.write(BoxName.emailDriver, (email).toString()); + // print(res); + if (res == 'failure') { + //Failure + if (box.read(BoxName.phoneVerified).toString() == '1') { + Get.offAll(() => SyrianCardAI()); + } else { + Get.offAll(() => SmsSignupEgypt()); + } + + isloading = false; + update(); + } else { + var jsonDecoeded = jsonDecode(res); + var d = jsonDecoeded['data'][0]; + if (jsonDecoeded.isNotEmpty) { + if (jsonDecoeded['status'] == 'success' && + d['is_verified'].toString() == '1') { + box.write(BoxName.emailDriver, (d['email'])); + box.write(BoxName.driverID, (d['id'])); + box.write(BoxName.isTest, '1'); + box.write(BoxName.gender, (d['gender'])); + box.write(BoxName.phoneVerified, d['is_verified'].toString()); + box.write(BoxName.phoneDriver, (d['phone'])); + box.write(BoxName.nameArabic, (d['name_arabic'])); + box.write(BoxName.bankCodeDriver, (d['bankCode'])); + box.write(BoxName.accountBankNumberDriver, d['accountBank']); + box.write( + BoxName.nameDriver, + '${(d['first_name'])}' + ' ${(d['last_name'])}'); + if ((d['model'].toString().contains('دراجه') || + d['make'].toString().contains('دراجه '))) { + if ((d['gender']).toString() == 'Male') { + box.write(BoxName.carTypeOfDriver, 'Scooter'); + } else { + box.write(BoxName.carTypeOfDriver, 'Pink Bike'); + } + } else if (int.parse(d['year'].toString()) > 2017) { + if ((d['gender']).toString() != 'Male') { + box.write(BoxName.carTypeOfDriver, 'Lady'); + } else { + box.write(BoxName.carTypeOfDriver, 'Comfort'); + } + } else if (int.parse(d['year'].toString()) > 2002 && + int.parse(d['year'].toString()) < 2017) { + box.write(BoxName.carTypeOfDriver, 'Speed'); + } else if (int.parse(d['year'].toString()) < 2002) { + box.write(BoxName.carTypeOfDriver, 'Awfar Car'); + } + updateAppTester(AppInformation.appName); + + var fingerPrint = DeviceHelper.getDeviceFingerprint().toString(); + await storage.write(key: BoxName.fingerPrint, value: fingerPrint); + + var token = await CRUD().get( + link: AppLink.getDriverToken, + payload: {'captain_id': box.read(BoxName.driverID).toString()}); + + if (token != 'failure') { + if ((jsonDecode(token)['data'][0]['token']) != + (box.read(BoxName.tokenDriver))) { + Get.put(FirebaseMessagesController()).sendNotificationToDriverMAP( + 'token change'.tr, + 'change device'.tr, + (jsonDecode(token)['data'][0]['token']).toString(), + [], + 'ding.wav'); + Get.defaultDialog( + title: 'you will use this device?'.tr, + middleText: '', + confirm: MyElevatedButton( + title: 'Ok'.tr, + onPressed: () async { + await CRUD() + .post(link: AppLink.addTokensDriver, payload: { + 'token': box.read(BoxName.tokenDriver), + 'captain_id': box.read(BoxName.driverID).toString(), + 'fingerPrint': (fingerPrint).toString() + }); + await CRUD().post( + link: + "${AppLink.seferAlexandriaServer}/ride/firebase/addDriver.php", + payload: { + 'token': box.read(BoxName.tokenDriver), + 'captain_id': + box.read(BoxName.driverID).toString(), + 'fingerPrint': (fingerPrint).toString() + }); + await CRUD().post( + link: + "${AppLink.seferGizaServer}/ride/firebase/addDriver.php", + payload: { + 'token': box.read(BoxName.tokenDriver), + 'captain_id': + box.read(BoxName.driverID).toString(), + 'fingerPrint': (fingerPrint).toString() + }); + Get.back(); + })); + } + } + + Get.off(() => HomeCaptain()); + // Get.off(() => LoginCaptin()); + } else { + Get.offAll(() => SmsSignupEgypt()); + + isloading = false; + update(); + } + } else { + mySnackeBarError(''); + + isloading = false; + update(); + } + } + } + + void loginByBoxData() async { + Get.to(() => HomeCaptain()); + await CRUD().post(link: AppLink.addTokensDriver, payload: { + 'token': box.read(BoxName.tokenDriver).toString(), + 'captain_id': box.read(BoxName.driverID).toString() + }); + CRUD().post( + link: "${AppLink.seferAlexandriaServer}/ride/firebase/addDriver.php", + payload: { + 'token': box.read(BoxName.tokenDriver), + 'captain_id': box.read(BoxName.driverID).toString() + }); + CRUD().post( + link: "${AppLink.seferGizaServer}/ride/firebase/addDriver.php", + payload: { + 'token': box.read(BoxName.tokenDriver), + 'captain_id': box.read(BoxName.driverID).toString() + }); + } +} diff --git a/lib/controller/auth/captin/ml_google_doc.dart b/lib/controller/auth/captin/ml_google_doc.dart new file mode 100755 index 0000000..87b70a2 --- /dev/null +++ b/lib/controller/auth/captin/ml_google_doc.dart @@ -0,0 +1,93 @@ +import 'dart:io'; + +import 'package:get/get.dart'; +// import 'package:google_mlkit_text_recognition/google_mlkit_text_recognition.dart'; +import 'package:image_cropper/image_cropper.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/controller/functions/llama_ai.dart'; + +// class CarRegistrationRecognizerController extends GetxController { +// @override +// void onInit() { +// // scanText(); +// super.onInit(); +// } + +// // The ImagePicker instance +// final ImagePicker _imagePicker = ImagePicker(); + +// // The GoogleMlKit TextRecognizer instance +// // final TextRecognizer _textRecognizer = TextRecognizer(); + +// // The scanned text +// String? scannedText; +// String? jsonOutput; +// final List> lines = []; +// Map extracted = {}; +// XFile? image; +// CroppedFile? croppedFile; +// // Picks an image from the camera or gallery and extracts the text +// final List> extractedTextWithCoordinates = []; + +// Future scanText() async { +// // Pick an image from the camera or gallery +// image = await _imagePicker.pickImage(source: ImageSource.gallery); +// update(); + +// // If no image was picked, return +// if (image == null) { +// return; +// } + +// // Crop the image +// croppedFile = await ImageCropper().cropImage( +// sourcePath: image!.path, +// // +// uiSettings: [ +// AndroidUiSettings( +// toolbarTitle: 'Cropper'.tr, +// toolbarColor: AppColor.blueColor, +// toolbarWidgetColor: AppColor.yellowColor, +// initAspectRatio: CropAspectRatioPreset.original, +// lockAspectRatio: false), +// IOSUiSettings( +// title: 'Cropper'.tr, +// ), +// ], +// ); + +// // If no cropped image was obtained, return +// if (croppedFile == null) { +// return; +// } + +// // Convert the cropped file to an InputImage object +// final InputImage inputImage = InputImage.fromFile(File(croppedFile!.path)); + +// // Recognize the text in the image +// final RecognizedText recognizedText = +// await _textRecognizer.processImage(inputImage); +// scannedText = recognizedText.text; + +// // Extract the scanned text line by line +// final List> lines = []; +// for (var i = 0; i < recognizedText.blocks.length; i++) { +// lines.add({ +// i.toString(): recognizedText.blocks[i].text, +// }); +// } + +// String result = lines.map((map) => map.values.first.toString()).join(' '); +// if (result.length > 2200) { +// result = result.substring(0, 2200); +// } +// Map result2 = await LlamaAi().getCarRegistrationData(result, +// 'vin,make,made,year,expiration_date,color,owner,registration_date'); // + +// // Assign the result to the extracted variable +// extracted = result2; + +// update(); +// } +// } diff --git a/lib/controller/auth/captin/opt_token_controller.dart b/lib/controller/auth/captin/opt_token_controller.dart new file mode 100644 index 0000000..12890d5 --- /dev/null +++ b/lib/controller/auth/captin/opt_token_controller.dart @@ -0,0 +1,108 @@ +import 'dart:async'; + +import 'package:get/get.dart'; +import 'package:sefer_driver/views/home/Captin/home_captain/home_captin.dart'; + +import '../../../constant/box_name.dart'; +import '../../../constant/links.dart'; +import '../../../main.dart'; +import '../../firebase/firbase_messge.dart'; +import '../../functions/crud.dart'; + +class OtpVerificationController extends GetxController { + final String phone; + final String deviceToken; + final String token; + final otpCode = ''.obs; + final isLoading = false.obs; + final isVerifying = false.obs; + var canResend = false.obs; + var countdown = 120.obs; + Timer? _timer; + + OtpVerificationController({ + required this.phone, + required this.deviceToken, + required this.token, + }); + + @override + void onInit() { + super.onInit(); + sendOtp(); // ترسل تلقائيًا عند ÙØªØ­ Ø§Ù„ØµÙØ­Ø© + startCountdown(); + } + + void startCountdown() { + canResend.value = false; + countdown.value = 120; + _timer?.cancel(); + _timer = Timer.periodic(const Duration(seconds: 1), (timer) { + if (countdown.value > 0) { + countdown.value--; + } else { + canResend.value = true; + timer.cancel(); + } + }); + } + + Future sendOtp() async { + isLoading.value = true; + try { + final response = await CRUD().post( + link: + '${AppLink.server}/auth/token_passenger/driver/send_otp_driver.php', + payload: { + 'receiver': phone, + // 'device_token': deviceToken, + }, + ); + + if (response != 'failure') { + // بإمكانك عرض رسالة نجاح هنا + } else { + // Get.snackbar('Error', 'Failed to send OTP'); + } + } catch (e) { + Get.snackbar('Error', e.toString()); + } finally { + isLoading.value = false; + } + } + + Future verifyOtp(String ptoken) async { + isVerifying.value = true; + var finger = await storage.read(key: BoxName.fingerPrint); + try { + final response = await CRUD().post( + link: + '${AppLink.server}/auth/token_passenger/driver/verify_otp_driver/.php', + payload: { + 'phone_number': phone, + 'otp': otpCode.value, + 'token': box.read(BoxName.tokenDriver).toString(), + 'fingerPrint': finger.toString(), + }, + ); + + if (response != 'failure' && response['status'] == 'success') { + Get.back(); // توجه إلى Ø§Ù„ØµÙØ­Ø© التالية + Get.put(FirebaseMessagesController()).sendNotificationToDriverMAP( + 'token change', + 'change device'.tr, + ptoken.toString(), + [], + 'cancel.wav', + ); + Get.offAll(() => HomeCaptain()); + } else { + Get.snackbar('Verification Failed', 'OTP is incorrect or expired'); + } + } catch (e) { + Get.snackbar('Error', e.toString()); + } finally { + isVerifying.value = false; + } + } +} diff --git a/lib/controller/auth/captin/phone_helper_controller.dart b/lib/controller/auth/captin/phone_helper_controller.dart new file mode 100644 index 0000000..82c358c --- /dev/null +++ b/lib/controller/auth/captin/phone_helper_controller.dart @@ -0,0 +1,142 @@ +import 'package:get/get.dart'; +import 'package:sefer_driver/controller/auth/captin/login_captin_controller.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/views/auth/captin/cards/syrian_card_a_i.dart'; +import 'package:sefer_driver/views/home/on_boarding_page.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; + +import '../../../constant/box_name.dart'; +import '../../../constant/links.dart'; +import '../../../main.dart'; +import '../../../print.dart'; +import '../../../views/auth/captin/otp_page.dart'; + +// --- Helper Class for Phone Authentication --- + +class PhoneAuthHelper { + // Define your server URLs + static final String _baseUrl = '${AppLink.server}/auth/syria/driver/'; + static final String _sendOtpUrl = '${_baseUrl}sendWhatsAppDriver.php'; + static final String _verifyOtpUrl = '${_baseUrl}verifyOtp.php'; + static final String _registerUrl = '${_baseUrl}register_driver.php'; + + /// Sends an OTP to the provided phone number. + static Future sendOtp(String phoneNumber) async { + try { + final response = await CRUD().post( + link: _sendOtpUrl, + payload: {'receiver': phoneNumber}, + ); + Log.print('response: ${response}'); + if (response != 'failure') { + final data = (response); + // if (data['status'] == 'success') { + mySnackbarSuccess('An OTP has been sent to your WhatsApp number.'.tr); + return true; + // } else { + // mySnackeBarError(data['message'] ?? 'Failed to send OTP.'); + // return false; + // } + } else { + mySnackeBarError('Server error. Please try again.'.tr); + return false; + } + } catch (e) { + Log.print('e: ${e}'); + // mySnackeBarError('An error occurred: $e'); + return false; + } + } + + /// Verifies the OTP and logs the user in. + static Future verifyOtp(String phoneNumber, String otp) async { + try { + final response = await CRUD().post( + link: _verifyOtpUrl, + payload: {'phone_number': phoneNumber, 'otp': otp}, + ); + + if (response != 'failure') { + final data = response; + + if (data['status'] == 'success') { + final isRegistered = data['message']['isRegistered'] ?? false; + Log.print('isRegistered: ${isRegistered}'); + box.write(BoxName.phoneVerified, true); + box.write(BoxName.phoneDriver, phoneNumber); + box.write(BoxName.driverID, data['message']['driverID']); + Log.print('BoxName.driverID: ${box.read(BoxName.driverID)}'); + + if (isRegistered) { + // ✅ السائق مسجل مسبقًا - سجل دخوله واذهب إلى Ø§Ù„ØµÙØ­Ø© الرئيسية + final driver = data['message']['driver']; + // mySnackbarSuccess('Welcome back, ${driver['first_name']}!'); + Log.print('Welcome: }'); + + // Ø­ÙØ¸ بيانات السائق إذا أردت: + box.write(BoxName.driverID, driver['id']); + box.write(BoxName.emailDriver, driver['email']); + + await Get.find().loginWithGoogleCredential( + driver['id'].toString(), driver['email'].toString()); + } else { + // ✅ رقم الهات٠تم التحقق منه لكن السائق غير مسجل + // mySnackbarSuccess('Phone verified. Please complete registration.'); + Get.to(() => SyrianCardAI()); + } + } else { + mySnackeBarError(data['message'] ?? 'Verification failed.'); + } + } else { + mySnackeBarError('Server error. Please try again.'); + } + } catch (e) { + mySnackeBarError('An error occurred: $e'); + Log.print('e: ${e}'); + } + } + + static Future registerUser({ + required String phoneNumber, + required String firstName, + required String lastName, + String? email, + }) async { + try { + final response = await CRUD().post( + link: _registerUrl, + payload: { + 'phone_number': phoneNumber, + 'first_name': firstName, + 'last_name': lastName, + 'email': email ?? '', // Send empty string if null + }, + ); + final data = (response); + if (data != 'failure') { + // Registration successful, log user in + await _handleSuccessfulLogin(data['message']); + } else { + mySnackeBarError( + "User with this phone number or email already exists.".tr); + } + } catch (e) { + Log.print('e: ${e}'); + mySnackeBarError('An error occurred: $e'); + } + } + + static Future _handleSuccessfulLogin( + Map userData) async { + mySnackbarSuccess('Welcome, ${userData['first_name']}!'); + + // Save user data to local storage (Hive box) using new keys + box.write(BoxName.passengerID, userData['id']); + box.write(BoxName.nameDriver, userData['first_name']); + box.write(BoxName.lastNameDriver, userData['last_name']); + box.write(BoxName.emailDriver, userData['email']); + box.write(BoxName.phoneDriver, userData['phone']); + + Get.offAll(() => OnBoardingPage()); // Navigate to home + } +} diff --git a/lib/controller/auth/captin/register_captin_controller.dart b/lib/controller/auth/captin/register_captin_controller.dart new file mode 100755 index 0000000..d17ca6a --- /dev/null +++ b/lib/controller/auth/captin/register_captin_controller.dart @@ -0,0 +1,420 @@ +import 'dart:convert'; +import 'dart:math'; + +import 'package:sefer_driver/controller/auth/captin/login_captin_controller.dart'; +import 'package:sefer_driver/views/auth/captin/cards/syrian_card_a_i.dart'; +import 'package:sefer_driver/views/auth/captin/register_captin.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/controller/functions/ocr_controller.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/auth/captin/login_captin.dart'; +import 'package:sefer_driver/views/auth/captin/verify_email_captain.dart'; + +import '../../../constant/colors.dart'; +import '../../../views/auth/captin/ai_page.dart'; +import '../../../views/auth/captin/car_license_page.dart'; +import '../../../views/home/Captin/home_captain/home_captin.dart'; +import '../../functions/encrypt_decrypt.dart'; +import '../../functions/sms_egypt_controller.dart'; + +class RegisterCaptainController extends GetxController { + final formKey = GlobalKey(); + final formKey3 = GlobalKey(); + + TextEditingController emailController = TextEditingController(); + TextEditingController phoneController = TextEditingController(); + TextEditingController passwordController = TextEditingController(); + TextEditingController verifyCode = TextEditingController(); + + String birthDate = 'Birth Date'.tr; + String gender = 'Male'.tr; + bool isLoading = false; + bool isSent = false; + late String name; + late String licenseClass; + late String documentNo; + late String address; + late String height; + late String postalCode; + late String sex; + late String stateCode; + late String expireDate; + late String dob; + + getBirthDate() { + Get.defaultDialog( + title: 'Select Date'.tr, + content: SizedBox( + width: 300, + child: CalendarDatePicker( + initialDate: DateTime.now().subtract(const Duration(days: 18 * 365)), + firstDate: DateTime.parse('1940-06-01'), + lastDate: DateTime.now().subtract(const Duration(days: 18 * 365)), + onDateChanged: (date) { + // Get the selected date and convert it to a DateTime object + DateTime dateTime = date; + // Call the getOrders() function from the controller + birthDate = dateTime.toString().split(' ')[0]; + update(); + Get.back(); + }, + + // onDateChanged: (DateTime value) {}, + ), + ), + ); + } + + @override + void onInit() { + // Get.put(SmsEgyptController()); + super.onInit(); + } + + void changeGender(String value) { + gender = value; + update(); + } + + bool isValidEgyptianPhoneNumber(String phoneNumber) { + // Remove any non-digit characters (spaces, dashes, etc.) + phoneNumber = phoneNumber.replaceAll(RegExp(r'\D+'), ''); + + // Check if the phone number has exactly 11 digits + if (phoneNumber.length != 11) { + return false; + } + + // Check if the phone number starts with 010, 011, 012, or 015 + RegExp validPrefixes = RegExp(r'^01[0125]\d{8}$'); + + return validPrefixes.hasMatch(phoneNumber); + } + + sendOtpMessage() async { + SmsEgyptController smsEgyptController = Get.put(SmsEgyptController()); + isLoading = true; + update(); + isLoading = true; + update(); + if (formKey3.currentState!.validate()) { + if (box.read(BoxName.countryCode) == 'Egypt') { + if (isValidEgyptianPhoneNumber(phoneController.text)) { + var responseCheker = await CRUD() + .post(link: AppLink.checkPhoneNumberISVerfiedDriver, payload: { + 'phone_number': ('+2${phoneController.text}'), + }); + if (responseCheker != 'failure') { + var d = jsonDecode(responseCheker); + if (d['message'][0]['is_verified'].toString() == '1') { + Get.snackbar('Phone number is verified before'.tr, '', + backgroundColor: AppColor.greenColor); + box.write(BoxName.phoneVerified, '1'); + box.write(BoxName.phone, ('+2${phoneController.text}')); + await Get.put(LoginDriverController()).loginWithGoogleCredential( + box.read(BoxName.driverID).toString(), + (box.read(BoxName.emailDriver).toString()), + ); + } else { + await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { + 'phone_number': ('+2${phoneController.text}'), + "driverId": box.read(BoxName.driverID), + "email": (box.read(BoxName.emailDriver)), + }); + + isSent = true; + + isLoading = false; + update(); + } + } else { + await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { + 'phone_number': ('+2${phoneController.text}'), + "driverId": box.read(BoxName.driverID), + "email": box.read(BoxName.emailDriver), + }); + + isSent = true; + + isLoading = false; + update(); + } + } else { + mySnackeBarError( + 'Phone Number wrong'.tr, + ); + } + } + } + isLoading = false; + update(); + } + + DateTime? lastOtpSentTime; // Store the last OTP sent time + int otpResendInterval = 300; // 5 minutes in seconds + +// Main function to handle OTP sending + // sendOtpMessage() async { + // if (_isOtpResendAllowed()) { + // isLoading = true; + // update(); + + // if (formKey3.currentState!.validate()) { + // String countryCode = box.read(BoxName.countryCode); + // String phoneNumber = phoneController.text; + + // if (countryCode == 'Egypt' && isValidEgyptianPhoneNumber(phoneNumber)) { + // await _checkAndSendOtp(phoneNumber); + // } else { + // _showErrorMessage('Phone Number is not Egypt phone '.tr); + // } + // } + // isLoading = false; + // update(); + // } else { + // _showCooldownMessage(); + // } + // } + +// Check if the resend OTP request is allowed (5 minutes cooldown) +// bool _isOtpResendAllowed() { +// if (lastOtpSentTime == null) return true; + +// final int elapsedTime = +// DateTime.now().difference(lastOtpSentTime!).inSeconds; +// return elapsedTime >= otpResendInterval; +// } + +// // Show message when user tries to resend OTP too soon +// void _showCooldownMessage() { +// int remainingTime = otpResendInterval - +// DateTime.now().difference(lastOtpSentTime!).inSeconds; +// Get.snackbar( +// 'Please wait ${remainingTime ~/ 60}:${(remainingTime % 60).toString().padLeft(2, '0')} minutes before requesting again', +// '', +// backgroundColor: AppColor.redColor, +// ); +// } + +// // Check if the phone number has been verified, and send OTP if not verified +// _checkAndSendOtp(String phoneNumber) async { +// var responseChecker = await CRUD().post( +// link: AppLink.checkPhoneNumberISVerfiedDriver, +// payload: { +// 'phone_number': '+2$phoneNumber', +// }, +// ); + +// if (responseChecker != 'failure') { +// var responseData = jsonDecode(responseChecker); +// if (_isPhoneVerified(responseData)) { +// _handleAlreadyVerified(); +// } else { +// await _sendOtpAndSms(phoneNumber); +// } +// } else { +// await _sendOtpAndSms(phoneNumber); +// } +// } + +// Check if the phone number is already verified + bool _isPhoneVerified(dynamic responseData) { + return responseData['message'][0]['is_verified'].toString() == '1'; + } + +// Handle case where phone number is already verified + _handleAlreadyVerified() { + mySnackbarSuccess('Phone number is already verified'.tr); + box.write(BoxName.phoneVerified, '1'); + box.write(BoxName.phone, ('+2${phoneController.text}')); + Get.put(LoginDriverController()).loginWithGoogleCredential( + box.read(BoxName.driverID).toString(), + box.read(BoxName.emailDriver).toString(), + ); + } + +// Send OTP and SMS + _sendOtpAndSms(String phoneNumber) async { + SmsEgyptController smsEgyptController = Get.put(SmsEgyptController()); + int randomNumber = Random().nextInt(100000) + 1; + + await CRUD().post( + link: AppLink.sendVerifyOtpMessage, + payload: { + 'phone_number': ('+2$phoneNumber'), + 'token_code': (randomNumber.toString()), + 'driverId': box.read(BoxName.driverID), + 'email': box.read(BoxName.emailDriver), + }, + ); + + await smsEgyptController.sendSmsEgypt(phoneNumber); + + lastOtpSentTime = DateTime.now(); // Update the last OTP sent time + isSent = true; + isLoading = false; + update(); + } + + verifySMSCode() async { + // var loginDriverController = Get.put(LoginDriverController()); + if (formKey3.currentState!.validate()) { + var res = await CRUD().post(link: AppLink.verifyOtpDriver, payload: { + 'phone_number': ('+2${phoneController.text}'), + 'token_code': (verifyCode.text.toString()), + }); + if (res != 'failure') { + // var dec = jsonDecode(res); + box.write(BoxName.phoneDriver, ('+2${phoneController.text}')); + box.write(BoxName.phoneVerified, '1'); + + // loginDriverController.isGoogleLogin == true + // ? await loginDriverController.loginUsingCredentialsWithoutGoogle( + // loginDriverController.passwordController.text.toString(), + // box.read(BoxName.emailDriver).toString(), + // ) + // : await loginDriverController.loginUsingCredentials( + // box.read(BoxName.driverID).toString(), + // box.read(BoxName.emailDriver).toString(), + // ); + Get.to(SyrianCardAI()); + // } else { + // Get.snackbar('title', 'message'); + // } + } + } else { + mySnackeBarError('you must insert token code '.tr); + } + } + + sendVerifications() async { + var res = await CRUD().post(link: AppLink.verifyEmail, payload: { + 'email': emailController.text.isEmpty + ? (Get.find().emailController.text.toString()) + : (emailController.text), + 'token': (verifyCode.text), + }); + + if (res != 'failure') { + if (Get.find().emailController.text.toString() != + '') { + Get.offAll(() => HomeCaptain()); + } else { + // Get.to(() => CarLicensePage()); + } + } + } + + void nextToAIDetection() async { + //Todo dont forget this + if (formKey.currentState!.validate()) { + isLoading = true; + update(); + Get.to(() => AiPage()); + } + } + + Map payloadLisence = {}; + + void getFromController() { + name = Get.find().name; + licenseClass = Get.find().licenseClass.toString(); + documentNo = Get.find().documentNo.toString(); + address = Get.find().address.toString(); + height = Get.find().height.toString(); + postalCode = Get.find().address.toString(); + sex = Get.find().sex.toString(); + stateCode = Get.find().postalCode.toString(); + expireDate = Get.find().expireDate.toString(); + dob = Get.find().dob.toString(); + update(); + } + + Future addLisence() async { + getFromController(); + var res = await CRUD().post(link: AppLink.addLicense, payload: { + 'name': name, + 'licenseClass': licenseClass, + 'documentNo': documentNo, + 'address': address, + 'height': height, + 'postalCode': postalCode, + 'sex': sex, + 'stateCode': stateCode, + 'expireDate': expireDate, + 'dateOfBirth': dob, + }); + isLoading = false; + update(); + if (jsonDecode(res)['status'] == 'success') { + // Get.to(() => AiPage()); //todo rplace this + } + } + + void addRegisrationCarForDriver(String vin, make, model, year, color, owner, + expirationDate, registrationDate) async { + getFromController(); + var res = await CRUD().post(link: AppLink.addRegisrationCar, payload: { + 'vin': vin, + 'make': make, + 'model': model, + 'year': year, + 'expirationDate': expirationDate, + 'color': color, + 'owner': owner, + 'registrationDate': registrationDate, + }); + box.write(BoxName.vin, vin); + box.write(BoxName.make, make); + box.write(BoxName.model, model); + box.write(BoxName.year, year); + box.write(BoxName.expirationDate, expirationDate); + box.write(BoxName.color, color); + box.write(BoxName.owner, owner); + box.write(BoxName.registrationDate, registrationDate); + isLoading = false; + update(); + if (jsonDecode(res)['status'] == 'success') { + Get.offAll(() => LoginCaptin()); //todo replace this + } + } + + Future register() async { + getFromController(); + if (formKey.currentState!.validate()) { + isLoading = true; + update(); + var res = await CRUD().post(link: AppLink.signUpCaptin, payload: { + 'first_name': name.split(' ')[1], + 'last_name': name.split(' ')[0], + 'email': emailController.text, + 'phone': phoneController.text, + 'password': passwordController.text, + 'gender': sex, + 'site': address, + 'birthdate': dob, + }); + + isLoading = false; + update(); + if (jsonDecode(res)['status'] == 'success') { + box.write(BoxName.driverID, jsonDecode(res)['message']); + box.write(BoxName.dobDriver, dob); + box.write(BoxName.sexDriver, sex); + box.write(BoxName.phoneDriver, phoneController.text); + box.write(BoxName.lastNameDriver, name.split(' ')[0]); + int randomNumber = Random().nextInt(100000) + 1; + await CRUD().post(link: AppLink.sendVerifyEmail, payload: { + 'email': emailController.text, + 'token': randomNumber.toString(), + }); + Get.to(() => VerifyEmailCaptainPage()); + } + } + } +} diff --git a/lib/controller/auth/facebook_login.dart b/lib/controller/auth/facebook_login.dart new file mode 100755 index 0000000..693b0eb --- /dev/null +++ b/lib/controller/auth/facebook_login.dart @@ -0,0 +1,30 @@ +// import 'package:firebase_auth/firebase_auth.dart'; +// import 'package:flutter_facebook_auth/flutter_facebook_auth.dart'; + +// class FacebookSignIn { +// Future signInWithFacebook() async { +// final LoginResult result = await FacebookAuth.instance.login(); +// if (result.status == LoginStatus.success) { +// // Create a credential from the access token +// final OAuthCredential credential = +// FacebookAuthProvider.credential(result.accessToken!.tokenString); +// // Once signed in, return the UserCredential +// return await FirebaseAuth.instance.signInWithCredential(credential); +// } +// return null; +// } + +// Future signOut() async { +// try { +// await FacebookAuth.instance.logOut(); +// print('Facebook Sign Out Successful'); +// } catch (e) { +// print('Error during Facebook Sign Out: $e'); +// } +// } + +// Future isSignedIn() async { +// final accessToken = await FacebookAuth.instance.accessToken; +// return accessToken != null; +// } +// } diff --git a/lib/controller/auth/google_sign.dart b/lib/controller/auth/google_sign.dart new file mode 100755 index 0000000..78b84d9 --- /dev/null +++ b/lib/controller/auth/google_sign.dart @@ -0,0 +1,293 @@ +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/controller/auth/captin/login_captin_controller.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/auth/captin/cards/sms_signup.dart'; +import 'package:sefer_driver/views/home/on_boarding_page.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:get/get.dart'; +import 'package:google_sign_in/google_sign_in.dart'; + +import '../../views/auth/captin/ai_page.dart'; +import '../functions/add_error.dart'; +import '../functions/encrypt_decrypt.dart'; + +class GoogleSignInHelper { + static final GoogleSignIn _googleSignIn = GoogleSignIn( + scopes: [ + 'email', + 'profile', + ], + ); + + // Method to handle Google Sign-In + static Future signIn() async { + try { + final GoogleSignInAccount? googleUser = await _googleSignIn.signIn(); + if (googleUser != null) { + await _handleSignUp(googleUser); + if (box.read(BoxName.countryCode) == 'Egypt') { + Get.to(() => SmsSignupEgypt()); + } else if (box.read(BoxName.countryCode) == 'Jordan') { + Get.to(() => AiPage()); + } + } + return googleUser; + } catch (error) { + return null; + } + } + + Future signInFromLogin() async { + try { + final GoogleSignInAccount? googleUser = await _googleSignIn.signIn(); + + if (googleUser != null) { + // Handle sign-up and store user information + await _handleSignUp(googleUser); + + // Retrieve driverID and emailDriver with added validation + final driverID = + (box.read(BoxName.driverID)!.toString()) ?? 'Unknown ID'; + final emailDriver = + (box.read(BoxName.emailDriver)!.toString()) ?? 'Unknown Email'; + + // Debug print statements + print('Driver ID: $driverID'); + print('Driver Email: $emailDriver'); + + // Check if driverID is a valid numeric string + // if (driverID != 'Unknown ID' && int.tryParse(driverID) != null) { + await Get.find() + .loginWithGoogleCredential(driverID, emailDriver); + // } + // else { + // print('Invalid driverID format: $driverID'); + // Get.snackbar('Login Error', 'Invalid driver ID format.', + // backgroundColor: AppColor.redColor); + // } + } + + return googleUser; + } catch (error) { + mySnackeBarError('$error'); + addError(error.toString(), 'GoogleSignInAccount?> signInFromLogin()'); + return null; + } + } + + static Future _handleSignUp(GoogleSignInAccount user) async { + // Store driver information + box.write(BoxName.driverID, + (user.id) ?? 'Unknown ID'); // Ensure there's a fallback value + box.write(BoxName.emailDriver, (user.email) ?? 'Unknown Email'); + } + + // Method to handle Google Sign-Out + static Future signOut() async { + try { + await _googleSignIn.signOut(); + await _handleSignOut(); + } catch (error) {} + } + + static Future _handleSignOut() async { + // Clear stored driver information + + box.remove(BoxName.driverID); + box.remove(BoxName.emailDriver); + box.remove(BoxName.lang); + box.remove(BoxName.nameDriver); + box.remove(BoxName.passengerID); + box.remove(BoxName.phoneDriver); + box.remove(BoxName.tokenFCM); + box.remove(BoxName.tokens); + box.remove(BoxName.carPlate); + box.remove(BoxName.lastNameDriver); + box.remove(BoxName.agreeTerms); + box.remove(BoxName.tokenDriver); + box.remove(BoxName.countryCode); + box.remove(BoxName.accountIdStripeConnect); + box.remove(BoxName.phoneVerified); + Get.offAll(OnBoardingPage()); + // Perform any additional sign-out tasks or API calls here + // For example, you can notify your server about the user sign-out + } + + // Method to get the current signed-in user + static GoogleSignInAccount? getCurrentUser() { + return _googleSignIn.currentUser; + } +} +// import 'dart:async'; +// import 'dart:async'; +// import 'dart:convert'; +// import 'package:flutter/material.dart'; +// import 'package:get/get.dart'; +// import 'package:http/http.dart' as http; +// import 'package:sefer_driver/constant/box_name.dart'; +// import 'package:sefer_driver/controller/auth/captin/login_captin_controller.dart'; +// import 'package:sefer_driver/main.dart'; +// import 'package:sefer_driver/views/auth/captin/ai_page.dart'; +// import 'package:sefer_driver/views/auth/captin/cards/sms_signup.dart'; +// import 'package:sefer_driver/views/home/on_boarding_page.dart'; +// import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +// import 'package:url_launcher/url_launcher.dart'; + +// import '../functions/add_error.dart'; + +// /// Helper class to manage Google Sign-In via an external browser and polling. +// class GoogleSignInHelper { +// // URLs for your server endpoints +// static const String _startLoginUrl = +// 'https://api.tripz-egypt.com/tripz/auth/google_auth/login.php'; +// static const String _checkStatusUrl = +// 'https://api.tripz-egypt.com/tripz/auth/google_auth/check_status.php'; + +// static Future _initiateSignIn( +// Function(Map userData) onSignInSuccess) async { +// try { +// // Show a loading dialog to the user +// Get.dialog( +// const Center( +// child: Material( +// color: Colors.transparent, +// child: Column( +// mainAxisSize: MainAxisSize.min, +// children: [ +// CircularProgressIndicator(), +// SizedBox(height: 16), +// Text( +// "Waiting for browser sign-in...", +// style: TextStyle(color: Colors.white, fontSize: 16), +// ), +// ], +// ), +// ), +// ), +// barrierDismissible: false, +// ); + +// // 1. Get the auth URL and login token from the server +// final startResponse = await http.get(Uri.parse(_startLoginUrl)); +// if (startResponse.statusCode != 200) { +// throw Exception('Failed to start login process.'); +// } + +// final startData = jsonDecode(startResponse.body); +// final String authUrl = startData['authUrl']; +// final String loginToken = startData['loginToken']; + +// // 2. Launch the URL in an external browser +// if (!await launchUrl(Uri.parse(authUrl), +// mode: LaunchMode.externalApplication)) { +// throw Exception('Could not launch browser.'); +// } + +// // 3. Start polling the server for status +// await _startPolling(loginToken, onSignInSuccess); +// } catch (e) { +// addError(e.toString(), '_initiateSignIn'); +// mySnackeBarError('Sign-in failed: ${e.toString()}'); +// // Close the loading dialog on error +// if (Get.isDialogOpen ?? false) { +// Get.back(); +// } +// } +// } + +// static Future _startPolling(String loginToken, +// Function(Map userData) onSignInSuccess) async { +// Timer? poller; +// const int maxAttempts = 30; // Poll for 60 seconds (30 attempts * 2s) +// int attempts = 0; + +// poller = Timer.periodic(const Duration(seconds: 2), (timer) async { +// if (attempts >= maxAttempts) { +// timer.cancel(); +// if (Get.isDialogOpen ?? false) Get.back(); +// mySnackeBarError('Sign-in timed out. Please try again.'); +// return; +// } + +// attempts++; + +// try { +// final statusResponse = await http.post( +// Uri.parse(_checkStatusUrl), +// headers: {'Content-Type': 'application/json'}, +// body: jsonEncode({'loginToken': loginToken}), +// ); + +// if (statusResponse.statusCode == 200) { +// final statusData = jsonDecode(statusResponse.body); +// if (statusData['status'] == 'success') { +// timer.cancel(); +// if (Get.isDialogOpen ?? false) Get.back(); +// // Success! +// onSignInSuccess(statusData['userData']); +// } +// // If status is 'pending', do nothing and wait for the next poll. +// } +// } catch (e) { +// // Handle polling errors silently or log them +// debugPrint("Polling error: $e"); +// } +// }); +// } + +// /// Triggers the sign-in process for a new user. +// static Future signIn() async { +// await _initiateSignIn((userData) async { +// debugPrint('Sign-in success data: $userData'); +// await _handleSignUp(userData); +// if (box.read(BoxName.countryCode) == 'Egypt') { +// Get.offAll(() => SmsSignupEgypt()); +// } else if (box.read(BoxName.countryCode) == 'Jordan') { +// Get.offAll(() => AiPage()); +// } +// }); +// } + +// /// Triggers the sign-in process for an existing user. +// static Future signInFromLogin() async { +// await _initiateSignIn((userData) async { +// debugPrint('Sign-in from login success data: $userData'); +// await _handleSignUp(userData); + +// final driverID = userData['id']?.toString() ?? 'Unknown ID'; +// final emailDriver = userData['email']?.toString() ?? 'Unknown Email'; + +// debugPrint('Driver ID from server: $driverID'); +// debugPrint('Driver Email from server: $emailDriver'); + +// await Get.find() +// .loginWithGoogleCredential(driverID, emailDriver); +// }); +// } + +// /// Stores user information received from the server. +// static Future _handleSignUp(Map userData) async { +// box.write(BoxName.driverID, userData['id'] ?? 'Unknown ID'); +// box.write(BoxName.emailDriver, userData['email'] ?? 'Unknown Email'); +// } + +// /// Clears local data. +// static Future signOut() async { +// box.remove(BoxName.driverID); +// box.remove(BoxName.emailDriver); +// box.remove(BoxName.lang); +// box.remove(BoxName.nameDriver); +// box.remove(BoxName.passengerID); +// box.remove(BoxName.phoneDriver); +// box.remove(BoxName.tokenFCM); +// box.remove(BoxName.tokens); +// box.remove(BoxName.carPlate); +// box.remove(BoxName.lastNameDriver); +// box.remove(BoxName.agreeTerms); +// box.remove(BoxName.tokenDriver); +// box.remove(BoxName.countryCode); +// box.remove(BoxName.accountIdStripeConnect); +// box.remove(BoxName.phoneVerified); +// Get.offAll(() => OnBoardingPage()); +// } +// } diff --git a/lib/controller/auth/login_controller.dart b/lib/controller/auth/login_controller.dart new file mode 100755 index 0000000..edb3bd7 --- /dev/null +++ b/lib/controller/auth/login_controller.dart @@ -0,0 +1,117 @@ +import 'dart:convert'; +import 'dart:math'; + +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/controller/functions/secure_storage.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/auth/verify_email_page.dart'; + +import '../functions/encrypt_decrypt.dart'; + +class LoginController extends GetxController { + final formKey = GlobalKey(); + final formKeyAdmin = GlobalKey(); + TextEditingController emailController = TextEditingController(); + TextEditingController phoneController = TextEditingController(); + TextEditingController passwordController = TextEditingController(); + TextEditingController adminPasswordController = TextEditingController(); + TextEditingController adminNameController = TextEditingController(); + bool isAgreeTerms = false; + bool isloading = false; + final FlutterSecureStorage _storage = const FlutterSecureStorage(); + + void changeAgreeTerm() { + isAgreeTerms = !isAgreeTerms; + update(); + } + + void saveAgreementTerms() { + box.write(BoxName.agreeTerms, 'agreed'); + update(); + } + + void saveCountryCode(String countryCode) { + box.write(BoxName.countryCode, countryCode); + update(); + } + + void login() async { + isloading = true; + update(); + var res = await CRUD().get(link: AppLink.login, payload: { + 'email': emailController.text, + 'phone': phoneController.text, + 'password': passwordController.text + }); + isloading = false; + update(); + if (res == 'failure') { + //Failure + mySnackeBarError(''); + } else { + var jsonDecoeded = jsonDecode(res); + if (jsonDecoeded.isNotEmpty) { + if (jsonDecoeded['status'] == 'success') { + if (jsonDecoeded['data'][0]['verified'] == 1) { + box.write(BoxName.driverID, jsonDecoeded['data'][0]['id']); + box.write(BoxName.emailDriver, (jsonDecoeded['data'][0]['email'])); + box.write( + BoxName.nameDriver, + jsonDecoeded['data'][0]['first_name'] + + ' ' + + jsonDecoeded['data'][0]['last_name']); + box.write(BoxName.phone, jsonDecoeded['data'][0]['phone']); + SecureStorage().saveData(BoxName.password, passwordController.text); + // Get.offAll(() => const MapPagePassenger()); + isloading = false; + update(); + await CRUD().post(link: AppLink.addTokens, payload: { + 'token': box.read(BoxName.tokenFCM), + 'passengerID': box.read(BoxName.passengerID).toString() + }); + } else { + isloading = false; + update(); + Get.defaultDialog( + title: 'You must Verify email !.'.tr, + middleText: '', + backgroundColor: Colors.yellow[300], + onConfirm: () async { + int randomNumber = Random().nextInt(100000) + 1; + await CRUD().post(link: AppLink.sendVerifyEmail, payload: { + 'email': emailController.text, + 'token': randomNumber.toString(), + }); + Get.to(() => const VerifyEmailPage()); + }, + ); + } + } else if (jsonDecoeded['status'] == 'Failure') { + mySnackeBarError(jsonDecoeded['data']); + isloading = false; + update(); + } + } else { + isloading = false; + update(); + } + } + } + + goToMapPage() { + if (box.read(BoxName.email) != null) { + // Get.offAll(() => const MapPagePassenger()); + } + } + + @override + void onInit() { + super.onInit(); + } +} diff --git a/lib/controller/auth/onboarding_controller.dart b/lib/controller/auth/onboarding_controller.dart new file mode 100755 index 0000000..256ec6d --- /dev/null +++ b/lib/controller/auth/onboarding_controller.dart @@ -0,0 +1,43 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/main.dart'; + +import '../../models/model/onboarding_model.dart'; +import '../../views/auth/captin/login_captin.dart'; + +abstract class OnBoardingController extends GetxController { + next(); + onPageChanged(int index); +} + +class OnBoardingControllerImp extends OnBoardingController { + late PageController pageController; + + int currentPage = 0; + + @override + next() { + currentPage++; + + if (currentPage > onBoardingList.length - 1) { + box.write(BoxName.onBoarding, 'yes'); + Get.offAll(() => LoginCaptin()); + } else { + pageController.animateToPage(currentPage, + duration: const Duration(milliseconds: 900), curve: Curves.easeInOut); + } + } + + @override + onPageChanged(int index) { + currentPage = index; + update(); + } + + @override + void onInit() { + pageController = PageController(); + super.onInit(); + } +} diff --git a/lib/controller/auth/register_controller.dart b/lib/controller/auth/register_controller.dart new file mode 100755 index 0000000..fc4d393 --- /dev/null +++ b/lib/controller/auth/register_controller.dart @@ -0,0 +1,95 @@ +import 'dart:convert'; +import 'dart:math'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; + +import '../../views/auth/captin/login_captin.dart'; +import '../../views/auth/verify_email_page.dart'; + +class RegisterController extends GetxController { + final formKey = GlobalKey(); + + TextEditingController firstNameController = TextEditingController(); + TextEditingController lastNameController = TextEditingController(); + TextEditingController emailController = TextEditingController(); + TextEditingController phoneController = TextEditingController(); + TextEditingController passwordController = TextEditingController(); + TextEditingController siteController = TextEditingController(); + TextEditingController verfyCode = TextEditingController(); + + String birthDate = 'Birth Date'.tr; + String gender = 'Male'.tr; + @override + void onInit() { + super.onInit(); + } + + getBirthDate() { + Get.defaultDialog( + title: 'Select Date'.tr, + titleStyle: AppStyle.title, + content: SizedBox( + width: 300, + child: CalendarDatePicker( + initialDate: + DateTime.now().subtract(const Duration(days: 14 * 365)), + firstDate: DateTime.parse('1940-06-01'), + lastDate: DateTime.now().subtract(const Duration(days: 14 * 365)), + onDateChanged: (date) { + // Get the selected date and convert it to a DateTime object + DateTime dateTime = date; + // Call the getOrders() function from the controller + birthDate = dateTime.toString().split(' ')[0]; + update(); + }, + + // onDateChanged: (DateTime value) {}, + ), + ), + confirm: MyElevatedButton(title: 'Ok'.tr, onPressed: () => Get.back())); + } + + void changeGender(String value) { + gender = value; + update(); + } + + sendVerifications() async { + var res = await CRUD().post(link: AppLink.verifyEmail, payload: { + 'email': emailController.text, + 'token': verfyCode.text, + }); + var dec = jsonDecode(res); + if (dec['status'] == 'success') { + Get.offAll(() => LoginCaptin()); + } + } + + void register() async { + if (formKey.currentState!.validate()) { + var res = await CRUD().post(link: AppLink.signUp, payload: { + 'first_name': firstNameController.text.toString(), + 'last_name': lastNameController.text.toString(), + 'email': emailController.text.toString(), + 'phone': phoneController.text.toString(), + 'password': passwordController.text.toString(), + 'gender': 'yet', + 'site': siteController.text, + 'birthdate': birthDate, + }); + if (jsonDecode(res)['status'] == 'success') { + int randomNumber = Random().nextInt(100000) + 1; + await CRUD().post(link: AppLink.sendVerifyEmail, payload: { + 'email': emailController.text, + 'token': randomNumber.toString(), + }); + Get.to(() => const VerifyEmailPage()); + } + } + } +} diff --git a/lib/controller/auth/tokens_controller.dart b/lib/controller/auth/tokens_controller.dart new file mode 100755 index 0000000..165e21c --- /dev/null +++ b/lib/controller/auth/tokens_controller.dart @@ -0,0 +1,38 @@ +import 'dart:convert'; + +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:get/get.dart'; +import 'package:http/http.dart' as http; + +import '../../constant/box_name.dart'; +import '../../constant/links.dart'; +import '../../main.dart'; + +class TokenController extends GetxController { + bool isloading = false; + + Future addToken() async { + String? basicAuthCredentials = + await storage.read(key: BoxName.basicAuthCredentials); + isloading = true; + update(); + var res = await http.post( + Uri.parse(AppLink.addTokens), + headers: { + 'Authorization': + 'Basic ${base64Encode(utf8.encode(basicAuthCredentials.toString()))}', + }, + body: { + 'token': box.read(BoxName.tokenFCM.toString()), + 'passengerID': box.read(BoxName.passengerID).toString() + }, + ); + + isloading = false; + update(); + var jsonToken = jsonDecode(res.body); + if (jsonToken['status'] == 'The token has been updated successfully.') { + mySnackbarSuccess('token updated'.tr); + } + } +} diff --git a/lib/controller/auth/verify_email_controller.dart b/lib/controller/auth/verify_email_controller.dart new file mode 100755 index 0000000..b3e934d --- /dev/null +++ b/lib/controller/auth/verify_email_controller.dart @@ -0,0 +1,16 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; + +class VerifyEmailController extends GetxController { + TextEditingController verfyCode = TextEditingController(); + @override + void onInit() async { + super.onInit(); + } + + sendverfications() async { + await CRUD().post(link: AppLink.sendVerifyEmail); + } +} diff --git a/lib/controller/firebase/access_token.dart b/lib/controller/firebase/access_token.dart new file mode 100755 index 0000000..e98edb4 --- /dev/null +++ b/lib/controller/firebase/access_token.dart @@ -0,0 +1,53 @@ +import 'dart:convert'; +import 'package:googleapis_auth/auth_io.dart'; + +import '../../print.dart'; + +class AccessTokenManager { + static final AccessTokenManager _instance = AccessTokenManager._internal(); + late final String serviceAccountJsonKey; + AccessToken? _accessToken; + DateTime? _expiryDate; + + AccessTokenManager._internal(); + + factory AccessTokenManager(String jsonKey) { + if (_instance._isServiceAccountKeyInitialized()) { + // Prevent re-initialization + return _instance; + } + _instance.serviceAccountJsonKey = jsonKey; + return _instance; + } + + bool _isServiceAccountKeyInitialized() { + try { + serviceAccountJsonKey; // Access to check if initialized + return true; + } catch (e) { + return false; + } + } + + Future getAccessToken() async { + if (_accessToken != null && DateTime.now().isBefore(_expiryDate!)) { + return _accessToken!.data; + } + try { + final serviceAccountCredentials = ServiceAccountCredentials.fromJson( + json.decode(serviceAccountJsonKey)); + final client = await clientViaServiceAccount( + serviceAccountCredentials, + ['https://www.googleapis.com/auth/firebase.messaging'], + ); + + _accessToken = client.credentials.accessToken; + _expiryDate = client.credentials.accessToken.expiry; + client.close(); + // Log.print('_accessToken!.data: ${_accessToken!.data}'); + return _accessToken!.data; + } catch (e) { + throw Exception('Failed to obtain access token'); + } + } +} diff --git a/lib/controller/firebase/bring_app_foreground.dart b/lib/controller/firebase/bring_app_foreground.dart new file mode 100755 index 0000000..a99f2c5 --- /dev/null +++ b/lib/controller/firebase/bring_app_foreground.dart @@ -0,0 +1,18 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +class AppLifecycleManager { + static const platform = MethodChannel('com.sefer_driver/app_lifecycle'); + + static Future bringAppToForeground() async { + try { + debugPrint('Attempting to bring app to foreground'); + await platform.invokeMethod('bringAppToForeground'); + debugPrint('Method invocation completed'); + } on PlatformException catch (e) { + debugPrint("Failed to bring app to foreground: '${e.message}'."); + } catch (e) { + debugPrint("Unexpected error: $e"); + } + } +} diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart new file mode 100755 index 0000000..e15953b --- /dev/null +++ b/lib/controller/firebase/firbase_messge.dart @@ -0,0 +1,777 @@ +import 'dart:convert'; +import 'dart:io'; +import 'package:sefer_driver/constant/api_key.dart'; +import 'package:sefer_driver/controller/home/captin/home_captain_controller.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:sefer_driver/views/widgets/mydialoug.dart'; +import 'package:firebase_messaging/firebase_messaging.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:http/http.dart' as http; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/colors.dart'; +import '../../constant/style.dart'; +import '../../env/env.dart'; +import '../../main.dart'; +import '../../print.dart'; +import '../../views/auth/captin/criminal_documents_page.dart'; +import '../../views/home/Captin/home_captain/home_captin.dart'; +import '../../views/home/Captin/orderCaptin/order_speed_request.dart'; +import '../../views/home/Captin/orderCaptin/order_request_page.dart'; +import '../../views/home/Captin/orderCaptin/vip_order_page.dart'; +import '../auth/google_sign.dart'; +import '../functions/encrypt_decrypt.dart'; +import '../functions/face_detect.dart'; +import 'access_token.dart'; +import 'local_notification.dart'; + +class FirebaseMessagesController extends GetxController { + final fcmToken = FirebaseMessaging.instance; + + List tokens = []; + List dataTokens = []; + late String driverID; + late String driverToken; + NotificationSettings? notificationSettings; + NotificationController notificationController = + Get.put(NotificationController()); + Future getNotificationSettings() async { + // Get the current notification settings + NotificationSettings? notificationSettings = + await FirebaseMessaging.instance.getNotificationSettings(); + 'Notification authorization status: ${notificationSettings.authorizationStatus}'; + + // Call the update function if needed + update(); + } + + Future requestFirebaseMessagingPermission() async { + FirebaseMessaging messaging = FirebaseMessaging.instance; + + // Check if the platform is Android + if (Platform.isAndroid) { + // Request permission for Android + await messaging.requestPermission(); + } else if (Platform.isIOS) { + // Request permission for iOS + NotificationSettings settings = await messaging.requestPermission( + alert: true, + announcement: true, + badge: true, + carPlay: true, + criticalAlert: true, + provisional: false, + sound: true, + ); + messaging.setForegroundNotificationPresentationOptions( + alert: true, badge: true, sound: true); + } + } + + Future getToken() async { + fcmToken.getToken().then((token) { + Log.print('token: ${token}'); + box.write(BoxName.tokenDriver, (token!)); + }); + + FirebaseMessaging.onMessage.listen((RemoteMessage message) { + // If the app is in the background or terminated, show a system tray message + RemoteNotification? notification = message.notification; + AndroidNotification? android = notification?.android; + // if (notification != null && android != null) { + + if (message.data.isNotEmpty && message.notification != null) { + fireBaseTitles(message); + } + if (message.data.isNotEmpty && message.notification != null) { + fireBaseTitles(message); + } + }); + FirebaseMessaging.onBackgroundMessage((RemoteMessage message) async {}); + + FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { + if (message.data.isNotEmpty && message.notification != null) { + fireBaseTitles(message); + } + }); + } + + Future fireBaseTitles(RemoteMessage message) async { + if (message.notification!.title! == 'Order') { + if (Platform.isAndroid) { + notificationController.showNotification( + message.notification!.title.toString(), + message.notification!.body.toString(), + 'tone1', + ''); + } + // await FirebaseMessagesController().showOverlayNotification(message); + var myListString = message.data['DriverList']; + // var points = message.data['PolylineJson']; + + var myList = jsonDecode(myListString) as List; + // var myPoints = jsonDecode(points) as List; + driverToken = myList[14].toString(); + // This is for location using and uploading status + Get.put(HomeCaptainController()).changeRideId(); + update(); + Get.to(() => OrderRequestPage(), arguments: { + // Get.to(() => OrderRequestPage(), arguments: { + 'myListString': myListString, + 'DriverList': myList, + // 'PolylineJson': myPoints, + 'body': message.notification!.body + }); + } else if (message.notification!.title == 'OrderVIP') { + var myListString = message.data['DriverList']; + + var myList = jsonDecode(myListString) as List; + + // driverToken = myList[10].toString(); + if (Platform.isAndroid) { + notificationController.showNotification( + 'OrderVIP'.tr, 'OrderVIP'.tr, 'order', ''); + } + Get.to(VipOrderPage(), arguments: { + 'myListString': myListString, + 'DriverList': myList, + // 'PolylineJson': myPoints, + 'body': message.notification!.body + }); + } else if (message.notification!.title == 'Cancel Trip'.tr) { + if (Platform.isAndroid) { + notificationController.showNotification( + 'Cancel Trip'.tr, 'Passenger Cancel Trip'.tr, 'cancel', ''); + } + cancelTripDialog(); + } else if (message.notification!.title == 'VIP Order') { + var myListString = message.data['DriverList']; + var driverList = jsonDecode(myListString) as List; + if (Platform.isAndroid) { + notificationController.showNotification( + 'VIP Order'.tr, '', 'order', ''); + } + MyDialog().getDialog('VIP Order'.tr, 'midTitle', () { + sendNotificationToPassengerToken( + 'VIP Order Accepted'.tr, + 'The driver accepted your trip'.tr, + driverList[0], + [driverList[1]], + 'order'); + }); + + // Get.to(const VipOrderPage()); + } else if (message.notification!.title == 'message From passenger') { + if (Platform.isAndroid) { + notificationController.showNotification( + 'message From passenger'.tr, ''.tr, 'ding', ''); + } + MyDialog().getDialog( + 'message From passenger'.tr, message.notification!.body!, () { + Get.back(); + }); + } else if (message.notification!.title == 'Cancel') { + if (Platform.isAndroid) { + notificationController.showNotification( + 'Cancel'.tr, ''.tr, 'cancel', ''); + } + MyDialog().getDialog( + 'Passenger Cancel Trip'.tr, + 'Trip Cancelled. The cost of the trip will be added to your wallet.' + .tr, () { + box.write(BoxName.rideStatus, 'Cancel'); + Log.print('rideStatus from 184 : ${box.read(BoxName.rideStatus)}'); + Get.offAll(HomeCaptain()); + }); + // cancelTripDialog1(); + } else if (message.notification!.title! == 'token change') { + // notificationController + // .showNotification('token change'.tr, 'token change', 'cancel'); + // GoogleSignInHelper.signOut(); + GoogleSignInHelper.signOut(); + } else if (message.notification!.title! == 'face detect') { + if (Platform.isAndroid) { + notificationController.showNotification( + 'face detect'.tr, ''.tr, 'tone2', ''); + } + String result0 = await faceDetector(); + // Handle the result here, e.g., show a dialog or update the UI + var result = jsonDecode(result0); + MyDialogContent().getDialog( + 'Face Detection Result'.tr, + Text( + result['similar'].toString() == 'true' + ? 'similar'.tr + : 'not similar'.tr, + style: AppStyle.title, + ), + () { + Get.back(); + }, + ); + + update(); + } else if (message.notification!.title! == 'Hi ,I will go now') { + if (Platform.isAndroid) { + notificationController.showNotification( + 'Passenger come to you'.tr, 'Hi ,I will go now'.tr, 'tone2', ''); + } + update(); + } else if (message.notification!.title! == 'Call Income'.tr) { + try { + var myListString = message.data['passengerList']; + var driverList = jsonDecode(myListString) as List; + // if (Platform.isAndroid) { + if (Platform.isAndroid) { + notificationController.showNotification('Call Income'.tr, + message.notification!.body!, 'iphone_ringtone', ''); + } + // } + // Assuming GetMaterialApp is initialized and context is valid for navigation + // Get.to(() => PassengerCallPage( + // channelName: driverList[1].toString(), + // token: driverList[0].toString(), + // remoteID: driverList[2].toString(), + // )); + } catch (e) {} + } else if (message.notification!.title! == + 'Call Income from Passenger'.tr) { + try { + var myListString = message.data['passengerList']; + var driverList = jsonDecode(myListString) as List; + // if (Platform.isAndroid) { + if (Platform.isAndroid) { + notificationController.showNotification('Call Income'.tr, + message.notification!.body!, 'iphone_ringtone', ''); + } + // } + // Assuming GetMaterialApp is initialized and context is valid for navigation + // Get.to(() => CallPage( + // // channelName: driverList[1].toString(), + // // token: driverList[0].toString(), + // // remoteID: driverList[2].toString(), + // )); + } catch (e) {} + } else if (message.notification!.title! == + "Criminal Document Required".tr) { + if (Platform.isAndroid) { + notificationController.showNotification("Criminal Document Required".tr, + message.notification!.body!, 'tone2', ''); + } + MyDialog().getDialog( + "Criminal Document Required".tr, 'You should have upload it .'.tr, + () { + Get.to(() => const CriminalDocumemtPage()); + }); + Get.to(() => const CriminalDocumemtPage()); + } else if (message.notification!.title! == 'Call End'.tr) { + try { + var myListString = message.data['passengerList']; + var driverList = jsonDecode(myListString) as List; + if (Platform.isAndroid) { + notificationController.showNotification( + 'Call End'.tr, message.notification!.body!, 'tone2', ''); + } + // Assuming GetMaterialApp is initialized and context is valid for navigation + // Get.off(const CallPage()); + } catch (e) {} + } else if (message.notification!.title! == 'Order Applied'.tr) { + mySnackbarSuccess("The order has been accepted by another driver.".tr); + } else if (message.notification!.title! == 'Order') { + if (Platform.isAndroid) { + notificationController.showNotification( + message.notification!.title.toString(), + message.notification!.body.toString(), + 'order', + ''); + } + var myListString = message.data['DriverList']; + // var points = message.data['PolylineJson']; + + var myList = jsonDecode(myListString) as List; + // var myPoints = jsonDecode(points) as List; + driverToken = myList[14].toString(); + Get.put(HomeCaptainController()).changeRideId(); + update(); + Get.to(() => OrderSpeedRequest(), arguments: { + 'myListString': myListString, + 'DriverList': myList, + // 'PolylineJson': myPoints, + 'body': message.notification!.body + }); + } else if (message.notification!.title! == 'Order Applied'.tr) { + if (Platform.isAndroid) { + notificationController.showNotification( + 'The order Accepted by another Driver'.tr, + 'We regret to inform you that another driver has accepted this order.' + .tr, + 'order', + ''); + } + } + } + + SnackbarController driverAppliedTripSnakBar() { + return Get.snackbar( + 'Driver Applied the Ride for You'.tr, + '', + colorText: AppColor.greenColor, + duration: const Duration(seconds: 3), + snackPosition: SnackPosition.TOP, + titleText: Text( + 'Applied'.tr, + style: const TextStyle(color: AppColor.redColor), + ), + messageText: Text( + 'Driver Applied the Ride for You'.tr, + style: AppStyle.title, + ), + icon: const Icon(Icons.approval), + shouldIconPulse: true, + margin: const EdgeInsets.all(16), + padding: const EdgeInsets.all(16), + ); + } + + Future cancelTripDialog() { + return Get.defaultDialog( + barrierDismissible: false, + title: 'Passenger Cancel Trip'.tr, + middleText: '', + confirm: MyElevatedButton( + title: 'Ok'.tr, + onPressed: () { + box.write(BoxName.rideStatus, 'Cancel'); + Log.print( + 'rideStatus from 347 : ${box.read(BoxName.rideStatus)}'); + Get.offAll(HomeCaptain()); + })); + } + + Future cancelTripDialog1() { + return Get.defaultDialog( + barrierDismissible: false, + title: 'Passenger Cancel Trip'.tr, + middleText: + 'Trip Cancelled. The cost of the trip will be added to your wallet.' + .tr, + confirm: MyElevatedButton( + title: 'Ok'.tr, + onPressed: () { + box.write(BoxName.rideStatus, 'Cancel'); + Log.print( + 'rideStatus from 364 : ${box.read(BoxName.rideStatus)}'); + Get.offAll(HomeCaptain()); + })); + } + + // Future driverArrivePassengerDialoge() { + // return Get.defaultDialog( + // barrierDismissible: false, + // title: 'Hi ,I Arrive your site'.tr, + // middleText: 'Please go to Car Driver'.tr, + // confirm: MyElevatedButton( + // title: 'Ok I will go now.'.tr, + // onPressed: () { + // FirebaseMessagesController().sendNotificationToPassengerToken( + // 'Hi ,I will go now'.tr, + // 'I will go now'.tr, + // Get.find().driverToken, []); + // Get.find() + // .startTimerDriverWaitPassenger5Minute(); + + // Get.back(); + // })); + // } + + Future passengerDialog(String message) { + return Get.defaultDialog( + barrierDismissible: false, + title: 'message From passenger'.tr, + titleStyle: AppStyle.title, + middleTextStyle: AppStyle.title, + middleText: message.tr, + confirm: MyElevatedButton( + title: 'Ok'.tr, + onPressed: () { + // FirebaseMessagesController().sendNotificationToPassengerToken( + // 'Hi ,I will go now'.tr, + // 'I will go now'.tr, + // Get.find().driverToken, []); + // Get.find() + // .startTimerDriverWaitPassenger5Minute(); + + Get.back(); + })); + } + + late String serviceAccountKeyJson; + @override + Future onInit() async { + super.onInit(); + try { + var encryptedKey = Env.privateKeyFCM; + // Log.print('encryptedKey: ${encryptedKey}'); + serviceAccountKeyJson = + EncryptionHelper.instance.decryptData(encryptedKey); + // Log.print('serviceAccountKeyJson: ${serviceAccountKeyJson}'); + } catch (e) { + print('🔴 Error decrypting FCM key: $e'); + } + } + + void sendNotificationAll(String title, body, tone) async { + // Get the token you want to subtract. + String token = box.read(BoxName.tokenFCM); + tokens = box.read(BoxName.tokens); + // Subtract the token from the list of tokens. + tokens.remove(token); + + // Save the list of tokens back to the box. + // box.write(BoxName.tokens, tokens); + tokens = box.read(BoxName.tokens); + for (var i = 0; i < tokens.length; i++) { + if (serviceAccountKeyJson.isEmpty) { + print("🔴 Error: Service Account Key is empty"); + return; + } + // Initialize AccessTokenManager + final accessTokenManager = AccessTokenManager(serviceAccountKeyJson); + + // Obtain an OAuth 2.0 access token + final accessToken = await accessTokenManager.getAccessToken(); + // Log.print('accessToken: ${accessToken}'); + + // Send the notification + final response = await http + .post( + Uri.parse( + 'https://fcm.googleapis.com/v1/projects/ride-b1bd8/messages:send'), + headers: { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer $accessToken', + }, + body: jsonEncode({ + 'message': { + 'token': token, + 'notification': { + 'title': title, + 'body': body, + }, + // 'data': { + // 'DriverList': jsonEncode(data), + // }, + 'android': { + 'priority': 'high', // Set priority to high + 'notification': { + 'sound': tone, + }, + }, + 'apns': { + 'headers': { + 'apns-priority': '10', // Set APNs priority to 10 + }, + 'payload': { + 'aps': { + 'sound': tone, + }, + }, + }, + }, + }), + ) + .whenComplete(() {}) + .catchError((e) {}); + } + } + + void sendNotificationToPassengerToken( + String title, body, token, List map, String tone, + {int retryCount = 2}) async { + try { + if (serviceAccountKeyJson.isEmpty) { + print("🔴 Error: Service Account Key is empty"); + return; + } + // Initialize AccessTokenManager + final accessTokenManager = AccessTokenManager(serviceAccountKeyJson); + + // Obtain an OAuth 2.0 access token + final accessToken = await accessTokenManager.getAccessToken(); + // Log.print('accessToken: ${accessToken}'); + + // Send the notification + final response = await http.post( + Uri.parse( + 'https://fcm.googleapis.com/v1/projects/ride-b1bd8/messages:send'), + headers: { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer $accessToken', + }, + body: jsonEncode({ + 'message': { + 'token': token, + 'notification': { + 'title': title, + 'body': body, + }, + 'data': { + 'passengerList': jsonEncode(map), + }, + 'android': { + 'priority': 'high', // Set priority to high + 'notification': { + 'sound': tone, + }, + }, + 'apns': { + 'headers': { + 'apns-priority': '10', // Set APNs priority to 10 + }, + 'payload': { + 'aps': { + 'sound': tone, + }, + }, + }, + }, + }), + ); + + if (response.statusCode == 200) { + print( + 'Notification sent successfully. Status code: ${response.statusCode}'); + print('Response body: ${response.body}'); + } else { + print( + 'Failed to send notification. Status code: ${response.statusCode}'); + + print('Response body: ${response.body}'); + if (retryCount > 0) { + print('Retrying... Attempts remaining: $retryCount'); + await Future.delayed( + const Duration(seconds: 2)); // Optional delay before retrying + return sendNotificationToPassengerToken(title, body, token, map, tone, + retryCount: retryCount - 1); + } + } + } catch (e) { + print('Error sending notification: $e'); + if (retryCount > 0) { + print('Retrying... Attempts remaining: $retryCount'); + await Future.delayed( + const Duration(seconds: 2)); // Optional delay before retrying + return sendNotificationToPassengerToken(title, body, token, map, tone, + retryCount: retryCount - 1); + } + } + } + + void sendNotificationToPassengerTokenCALL( + String title, body, token, List map, String tone, + {int retryCount = 2}) async { + try { + if (serviceAccountKeyJson.isEmpty) { + print("🔴 Error: Service Account Key is empty"); + return; + } + // Initialize AccessTokenManager + final accessTokenManager = AccessTokenManager(serviceAccountKeyJson); + + // Obtain an OAuth 2.0 access token + final accessToken = await accessTokenManager.getAccessToken(); + // Log.print('accessToken: ${accessToken}'); + + // Send the notification + final response = await http.post( + Uri.parse( + 'https://fcm.googleapis.com/v1/projects/ride-b1bd8/messages:send'), + headers: { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer $accessToken', + }, + body: jsonEncode({ + 'message': { + 'token': token, + 'notification': { + 'title': title, + 'body': body, + }, + 'data': { + 'passengerList': jsonEncode(map), + }, + 'android': { + 'priority': 'high', // Set priority to high + 'notification': { + 'sound': tone, + }, + }, + 'apns': { + 'headers': { + 'apns-priority': '10', // Set APNs priority to 10 + }, + 'payload': { + 'aps': { + 'sound': tone, + }, + }, + }, + }, + }), + ); + + if (response.statusCode == 200) { + print( + 'Notification sent successfully. Status code: ${response.statusCode}'); + print('Response body: ${response.body}'); + } else { + print( + 'Failed to send notification. Status code: ${response.statusCode}'); + + print('Response body: ${response.body}'); + if (retryCount > 0) { + print('Retrying... Attempts remaining: $retryCount'); + await Future.delayed( + const Duration(seconds: 2)); // Optional delay before retrying + return sendNotificationToPassengerTokenCALL( + title, body, token, map, tone, + retryCount: retryCount - 1); + } + } + } catch (e) { + print('Error sending notification: $e'); + if (retryCount > 0) { + print('Retrying... Attempts remaining: $retryCount'); + await Future.delayed( + const Duration(seconds: 2)); // Optional delay before retrying + return sendNotificationToPassengerTokenCALL( + title, body, token, map, tone, + retryCount: retryCount - 1); + } + } + } + + Future sendNotificationToDriverMAP( + String title, String body, String token, List data, String tone, + {int retryCount = 2}) async { + try { + if (serviceAccountKeyJson.isEmpty) { + print("🔴 Error: Service Account Key is empty"); + return; + } + + // Initialize AccessTokenManager + final accessTokenManager = AccessTokenManager(serviceAccountKeyJson); + Log.print( + 'accessTokenManager: ${accessTokenManager.serviceAccountJsonKey}'); + + // Obtain an OAuth 2.0 access token + final accessToken = await accessTokenManager.getAccessToken(); + // Log.print('accessToken: ${accessToken}'); + + // Send the notification + final response = await http.post( + Uri.parse( + 'https://fcm.googleapis.com/v1/projects/intaleq-d48a7/messages:send'), + headers: { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer $accessToken', + }, + body: jsonEncode({ + 'message': { + 'token': token, + 'notification': { + 'title': title, + 'body': body, + }, + 'data': { + 'DriverList': jsonEncode(data), + }, + 'android': { + 'priority': 'high', // Set priority to high + 'notification': { + 'sound': tone, + }, + }, + 'apns': { + 'headers': { + 'apns-priority': '10', // Set APNs priority to 10 + }, + 'payload': { + 'aps': { + 'sound': tone, + }, + }, + }, + }, + }), + ); + + if (response.statusCode == 200) { + print( + 'Notification sent successfully. Status code: ${response.statusCode}'); + // print('Response token: ${token}'); + } else { + print( + 'Failed to send notification. Status code: ${response.statusCode}'); + print('Response body: ${response.body}'); + if (retryCount > 0) { + print('Retrying... Attempts remaining: $retryCount'); + await Future.delayed( + Duration(seconds: 2)); // Optional delay before retrying + return sendNotificationToDriverMAP(title, body, token, data, tone, + retryCount: retryCount - 1); + } + } + } catch (e) { + print('Error sending notification: $e'); + if (retryCount > 0) { + print('Retrying... Attempts remaining: $retryCount'); + await Future.delayed( + Duration(seconds: 2)); // Optional delay before retrying + return sendNotificationToDriverMAP(title, body, token, data, tone, + retryCount: retryCount - 1); + } + } + } + + Future removeInvalidToken(String token) async { + // Remove token from your database/storage + // This prevents future attempts to send to invalid tokens + print('Removing invalid token from database: $token'); + // Your database cleanup logic here + } +} + +class OverlayContent extends StatelessWidget { + final String title; + final String body; + + OverlayContent(this.title, this.body); + + @override + Widget build(BuildContext context) { + return Material( + child: Container( + padding: const EdgeInsets.all(16.0), + color: Colors.white, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + title, + style: const TextStyle(fontSize: 24, fontWeight: FontWeight.bold), + ), + const SizedBox(height: 8.0), + Text( + body, + style: const TextStyle(fontSize: 16), + ), + ], + ), + ), + ); + } +} diff --git a/lib/controller/firebase/local_notification.dart b/lib/controller/firebase/local_notification.dart new file mode 100755 index 0000000..ee79484 --- /dev/null +++ b/lib/controller/firebase/local_notification.dart @@ -0,0 +1,591 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; +import 'dart:typed_data'; + +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/views/home/Captin/orderCaptin/order_request_page.dart'; +import 'package:sefer_driver/views/home/Captin/orderCaptin/order_speed_request.dart'; +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:get/get.dart'; +import 'package:permission_handler/permission_handler.dart'; + +import 'package:timezone/data/latest.dart' as tz; +import 'package:timezone/timezone.dart' as tz; +import '../../constant/box_name.dart'; +import '../../main.dart'; +import '../../print.dart'; +import '../../views/notification/notification_captain.dart'; +import '../home/captin/home_captain_controller.dart'; + +class NotificationController extends GetxController { + final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin = + FlutterLocalNotificationsPlugin(); + + Future initNotifications() async { + const AndroidInitializationSettings android = + AndroidInitializationSettings('@mipmap/launcher_icon'); + DarwinInitializationSettings ios = DarwinInitializationSettings( + requestAlertPermission: true, + requestBadgePermission: true, + requestSoundPermission: true, + // onDidReceiveLocalNotification: + // (int id, String? title, String? body, String? payload) async {}, + ); + InitializationSettings initializationSettings = + InitializationSettings(android: android, iOS: ios); + tz.initializeTimeZones(); + print('Notifications initialized'); + await _flutterLocalNotificationsPlugin.initialize( + initializationSettings, + onDidReceiveNotificationResponse: onDidReceiveNotificationResponse, + onDidReceiveBackgroundNotificationResponse: notificationTapBackground, + ); + + // Create a notification channel + const AndroidNotificationChannel channel = AndroidNotificationChannel( + 'high_importance_channel', // Use the same ID as in strings.xml + 'High Importance Notifications', + description: 'This channel is used for important notifications.', + importance: Importance.high, + ); + + // Register the channel with the system + await _flutterLocalNotificationsPlugin + .resolvePlatformSpecificImplementation< + AndroidFlutterLocalNotificationsPlugin>() + ?.createNotificationChannel(channel); + } + + // Displays a notification with the given title and message + void showNotification( + String title, String message, String tone, String payLoad) async { + BigTextStyleInformation bigTextStyleInformation = BigTextStyleInformation( + message, + contentTitle: title.tr, + htmlFormatContent: true, + htmlFormatContentTitle: true, + ); + AndroidNotificationDetails android = AndroidNotificationDetails( + 'high_importance_channel', + 'High Importance Notifications', + importance: Importance.max, + priority: Priority.high, + sound: RawResourceAndroidNotificationSound(tone), + ); + + // AndroidNotificationDetails android = AndroidNotificationDetails( + // 'high_importance_channel', // Use the same ID as before + // 'High Importance Notifications', + // importance: Importance.high, + // priority: Priority.high, + // styleInformation: bigTextStyleInformation, + // playSound: true, + // sound: RawResourceAndroidNotificationSound(tone), + // // audioAttributesUsage: AudioAttributesUsage.alarm, + // visibility: NotificationVisibility.public, + // autoCancel: false, + // color: AppColor.primaryColor, + // showProgress: true, + // showWhen: true, + // ongoing: true, + // enableVibration: true, + // vibrationPattern: Int64List.fromList([0, 1000, 500, 1000]), + // timeoutAfter: 14500, + // setAsGroupSummary: true, + // subText: message, fullScreenIntent: true, + // actions: [ + // AndroidNotificationAction( + // allowGeneratedReplies: true, + // 'id', + // title.tr, + // titleColor: AppColor.blueColor, + // showsUserInterface: true, + // ) + // ], + // category: AndroidNotificationCategory.message, + // ); + + DarwinNotificationDetails ios = const DarwinNotificationDetails( + sound: 'default', + presentAlert: true, + presentBadge: true, + presentSound: true, + ); + NotificationDetails details = + NotificationDetails(android: android, iOS: ios); + + await _flutterLocalNotificationsPlugin.show(0, title, message, details, + payload: jsonEncode({'title': title, 'data': payLoad})); + } + + void scheduleNotificationAtSpecificTime( + String title, String message, String tone, int hour, int minute) async { + // Initialize and set Cairo time zone + tz.initializeTimeZones(); + var cairoLocation; + if (box.read(BoxName.countryCode).toString() == 'Egypt') { + cairoLocation = tz.getLocation('Africa/Cairo'); + } else {} // todo get for location country + + final AndroidNotificationDetails android = AndroidNotificationDetails( + 'high_importance_channel', + 'High Importance Notifications', + importance: Importance.max, + priority: Priority.high, + showWhen: false, + sound: RawResourceAndroidNotificationSound(tone), + ); + + const DarwinNotificationDetails ios = DarwinNotificationDetails( + sound: 'default', + presentAlert: true, + presentBadge: true, + presentSound: true, + ); + + final NotificationDetails details = + NotificationDetails(android: android, iOS: ios); + + final now = + tz.TZDateTime.now(cairoLocation); // Use Cairo timezone for current time + tz.TZDateTime scheduledTime = tz.TZDateTime( + cairoLocation, now.year, now.month, now.day, hour, minute); + + // If the scheduled time has already passed for today, schedule it for the next day + if (scheduledTime.isBefore(now)) { + scheduledTime = scheduledTime.add(const Duration(days: 1)); + } + + if (Platform.isAndroid) { + if (await Permission.scheduleExactAlarm.isDenied) { + if (await Permission.scheduleExactAlarm.request().isGranted) { + print('SCHEDULE_EXACT_ALARM permission granted'); + } else { + print('SCHEDULE_EXACT_ALARM permission denied'); + return; + } + } + } + + print('Current time: $now'); + print('Scheduling notification for: $scheduledTime'); + await _flutterLocalNotificationsPlugin.zonedSchedule( + 0, + title, + message, + scheduledTime, + details, + // androidAllowWhileIdle: true, + uiLocalNotificationDateInterpretation: + UILocalNotificationDateInterpretation.absoluteTime, + matchDateTimeComponents: DateTimeComponents.time, + androidScheduleMode: + AndroidScheduleMode.alarmClock, // Triggers daily at the same time + ); + print('Notification scheduled successfully'); + } + + void scheduleNotificationAfter1Minute( + String title, String message, String tone) async { + final AndroidNotificationDetails android = AndroidNotificationDetails( + 'high_importance_channel', + 'High Importance Notifications', + importance: Importance.max, + priority: Priority.high, + showWhen: false, + sound: RawResourceAndroidNotificationSound(tone), + ); + + const DarwinNotificationDetails ios = DarwinNotificationDetails( + sound: 'default', + presentAlert: true, + presentBadge: true, + presentSound: true, + ); + + final NotificationDetails details = + NotificationDetails(android: android, iOS: ios); + +// Schedule the notification to be shown after 1 minute + Timer.periodic(const Duration(seconds: 15), (timer) async { + final now = tz.TZDateTime.now(tz.local); + final scheduledTime = now.add(const Duration(seconds: 10)); + Log.print('scheduledTime: ${scheduledTime}'); + if (Platform.isAndroid) { + if (await Permission.scheduleExactAlarm.isDenied) { + if (await Permission.scheduleExactAlarm.request().isGranted) { + print('SCHEDULE_EXACT_ALARM permission granted'); + } else { + print('SCHEDULE_EXACT_ALARM permission denied'); + return; + } + } + } + + print('Scheduling notification for: $scheduledTime'); + await _flutterLocalNotificationsPlugin.zonedSchedule( + 0, + title, + message, + scheduledTime, + details, + uiLocalNotificationDateInterpretation: + UILocalNotificationDateInterpretation.absoluteTime, + matchDateTimeComponents: DateTimeComponents.time, + androidScheduleMode: AndroidScheduleMode.alarmClock, + ); + print('Notification scheduled successfully'); + }); + } + + void scheduleNotificationsForSevenDays( + String title, String message, String tone) async { + final AndroidNotificationDetails android = AndroidNotificationDetails( + 'high_importance_channel', + 'High Importance Notifications', + importance: Importance.max, + priority: Priority.high, + sound: RawResourceAndroidNotificationSound(tone), + ); + + const DarwinNotificationDetails ios = DarwinNotificationDetails( + sound: 'default', + presentAlert: true, + presentBadge: true, + presentSound: true, + ); + + final NotificationDetails details = + NotificationDetails(android: android, iOS: ios); + + // Check for the exact alarm permission on Android 12 and above + if (Platform.isAndroid) { + if (await Permission.scheduleExactAlarm.isDenied) { + if (await Permission.scheduleExactAlarm.request().isGranted) { + print('SCHEDULE_EXACT_ALARM permission granted'); + } else { + print('SCHEDULE_EXACT_ALARM permission denied'); + return; + } + } + } + + // Schedule notifications for the next 7 days + for (int day = 0; day < 7; day++) { + // List of notification times + final notificationTimes = [ + {'hour': 8, 'minute': 0, 'id': day * 1000 + 1}, // 8:00 AM + {'hour': 15, 'minute': 0, 'id': day * 1000 + 2}, // 3:00 PM + {'hour': 20, 'minute': 0, 'id': day * 1000 + 3}, // 8:00 PM + ]; + + for (var time in notificationTimes) { + final notificationId = time['id'] as int; + + // Check if this notification ID is already stored + bool isScheduled = box.read('notification_$notificationId') ?? false; + + if (!isScheduled) { + // Schedule the notification if not already scheduled + await _scheduleNotificationForTime( + day, + time['hour'] as int, + time['minute'] as int, + title, + message, + details, + notificationId, + ); + + // Mark this notification ID as scheduled in GetStorage + box.write('notification_$notificationId', true); + } else { + print('Notification with ID $notificationId is already scheduled.'); + } + } + } + + print('Notifications scheduled successfully for the next 7 days'); + } + + Future _scheduleNotificationForTime( + int dayOffset, + int hour, + int minute, + String title, + String message, + NotificationDetails details, + int notificationId, + ) async { + // Initialize and set Cairo timezone + tz.initializeTimeZones(); + var cairoLocation = tz.getLocation('Africa/Cairo'); + + final now = tz.TZDateTime.now(cairoLocation); + tz.TZDateTime scheduledDate = tz.TZDateTime( + cairoLocation, + now.year, + now.month, + now.day + dayOffset, // Add offset to schedule for the next days + hour, + minute, + ); + + // If the scheduled time is in the past, move it to the next day + if (scheduledDate.isBefore(now)) { + scheduledDate = scheduledDate.add(Duration(days: 1)); + } + + print('Current time (Cairo): $now'); + print('Scheduling notification for: $scheduledDate'); + + await _flutterLocalNotificationsPlugin.zonedSchedule( + notificationId, // Unique ID for each notification + title, + message, + scheduledDate, + details, + androidScheduleMode: AndroidScheduleMode.exact, + uiLocalNotificationDateInterpretation: + UILocalNotificationDateInterpretation.absoluteTime, + matchDateTimeComponents: + null, // Don't repeat automatically; we handle 7 days manually + ); + + print('Notification scheduled successfully for: $scheduledDate'); + } + + void scheduleNotificationEvery10Hours( + String title, String message, String tone) async { + final AndroidNotificationDetails android = AndroidNotificationDetails( + 'high_importance_channel', + 'High Importance Notifications', + importance: Importance.max, + priority: Priority.high, + showWhen: false, + sound: RawResourceAndroidNotificationSound(tone), + ); + + const DarwinNotificationDetails ios = DarwinNotificationDetails( + sound: 'default', + presentAlert: true, + presentBadge: true, + presentSound: true, + ); + + final NotificationDetails details = + NotificationDetails(android: android, iOS: ios); + + if (Platform.isAndroid) { + if (await Permission.scheduleExactAlarm.isDenied) { + if (await Permission.scheduleExactAlarm.request().isGranted) { + print('SCHEDULE_EXACT_ALARM permission granted'); + } else { + print('SCHEDULE_EXACT_ALARM permission denied'); + return; + } + } + } + + Timer.periodic(const Duration(hours: 10), (timer) async { + final now = tz.TZDateTime.now(tz.local); + final scheduledTime = now.add(const Duration(minutes: 10)); + + print('Scheduling notification for: $scheduledTime'); + await _flutterLocalNotificationsPlugin.zonedSchedule( + 0, + title.tr, + message.tr, + scheduledTime, + details, + // androidAllowWhileIdle: true, + uiLocalNotificationDateInterpretation: + UILocalNotificationDateInterpretation.absoluteTime, + matchDateTimeComponents: DateTimeComponents.time, + androidScheduleMode: AndroidScheduleMode.alarmClock, + ); + }); + + print('Notifications scheduled every 5 seconds'); + } + + void showTimerNotification(String title, String message, String tone) async { + final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = + FlutterLocalNotificationsPlugin(); + + // Setup Android notification + final AndroidNotificationDetails android = AndroidNotificationDetails( + 'high_importance_channel', + 'High Importance Notifications', + importance: Importance.max, + priority: Priority.high, + showWhen: false, + sound: RawResourceAndroidNotificationSound( + tone), // tone without the file extension + ); + + // Setup iOS notification + const DarwinNotificationDetails ios = DarwinNotificationDetails( + sound: 'default', + presentAlert: true, + presentBadge: true, + presentSound: true, + ); + + final NotificationDetails details = + NotificationDetails(android: android, iOS: ios); + + // Request permission on Android + if (Platform.isAndroid) { + if (await Permission.scheduleExactAlarm.isDenied) { + if (await Permission.scheduleExactAlarm.request().isGranted) { + print('SCHEDULE_EXACT_ALARM permission granted'); + } else { + print('SCHEDULE_EXACT_ALARM permission denied'); + return; + } + } + } + + // Timer duration (e.g., 120 seconds countdown) + int countdown = 12; + + // Display the notification initially with the full countdown time + + // Timer to update the notification every second + Timer.periodic(const Duration(seconds: 1), (timer) async { + // if (countdown > 0) { + // Update the existing notification with the updated countdown + + // Decrease the countdown by 1 + countdown--; + // } else { + // // Cancel the timer when the countdown reaches zero + // timer.cancel(); + // } + }); + await flutterLocalNotificationsPlugin.show( + 0, + title, + '$message Remaining: $countdown seconds', // Initial message + details, + ); + print('Notification will update every second'); + } + + // Callback when the notification is tapped + void onDidReceiveNotificationResponse(NotificationResponse response) { + handleNotificationResponse(response); + } + + // Callback when the notification is tapped while the app is in the background + void onDidReceiveBackgroundNotificationResponse( + NotificationResponse response) { + handleNotificationResponse(response); + } + + // Handle notification response for both foreground and background + void handleNotificationResponse(NotificationResponse response) { + print('Notification tapped!'); + Log.print('response.payload: ${response.payload}'); + if (response.payload != null) { + print('Notification payload: ${response.payload}'); + var payloadData = jsonDecode(response.payload.toString()); + + if (payloadData is Map) { + String title = payloadData['title']; + var data = payloadData['data']; + + switch (title) { + case 'Order': + _handleOrderNotification(data); + break; + case 'OrderSpeed': + _handleOrderSpeedNotification(data); + break; + case 'ADS': + _handleADSNotification(); + break; + default: + Log.print('Unknown notification type'); + } + } else { + Log.print('Invalid payload format'); + } + } else { + Log.print('Payload is null'); + } + } + + void _handleOrderNotification(dynamic data) { + if (data is String) { + var orderData = jsonDecode(data); + if (orderData is List && orderData.length == 34) { + //closeOverLay(); + Get.put(HomeCaptainController()).changeRideId(); + Get.to(() => OrderRequestPage(), arguments: {'myListString': data}); + } else { + Log.print('Invalid order data'); + } + } else { + Log.print('Invalid order payload'); + } + } + + void _handleOrderSpeedNotification(dynamic data) { + if (data is String) { + var orderData = jsonDecode(data); + if (orderData is List && orderData.length == 34) { + //closeOverLay(); + Get.put(HomeCaptainController()).changeRideId(); + Get.to(() => OrderRequestPage(), arguments: {'myListString': data}); + } else { + Log.print('Invalid order data'); + } + } else { + Log.print('Invalid order payload'); + } + } + + void _handleADSNotification() { + // var orderData = jsonDecode(data); + //closeOverLay(); + Get.to( + () => const NotificationCaptain(), + ); + } + + void onDidReceiveLocalNotification( + int id, String? title, String? body, String? payload) async { + // display a dialog with the notification details, tap ok to go to another page + } +} + +class NotificationController1 extends GetxController { + final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin = + FlutterLocalNotificationsPlugin(); + + // Initializes the local notifications plugin + Future initNotifications() async { + const AndroidInitializationSettings android = + AndroidInitializationSettings('@mipmap/launcher_icon'); + const InitializationSettings initializationSettings = + InitializationSettings(android: android); + await _flutterLocalNotificationsPlugin.initialize(initializationSettings); + } + + // Displays a notification with the given title and message + void showNotification( + String title, String message, String tone, String payLoad) async { + AndroidNotificationDetails android = AndroidNotificationDetails( + 'your channel id', 'your channel name', + importance: Importance.max, + priority: Priority.high, + showWhen: false, + sound: RawResourceAndroidNotificationSound(tone)); + + NotificationDetails details = NotificationDetails(android: android); + await _flutterLocalNotificationsPlugin.show(0, title, message, details); + } +} diff --git a/lib/controller/firebase/order_lay.dart b/lib/controller/firebase/order_lay.dart new file mode 100755 index 0000000..b1afa02 --- /dev/null +++ b/lib/controller/firebase/order_lay.dart @@ -0,0 +1,35 @@ +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/views/home/Captin/home_captain/home_captin.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:flutter/material.dart'; + +class OverlayContent1 extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Material( + child: Container( + padding: EdgeInsets.all(16.0), + color: Colors.white, + child: MyElevatedButton( + title: 'go to order', + onPressed: () async { + var res = await CRUD().post( + link: AppLink.addFeedBack, + payload: { + "passengerId": 'dddddd', + "feedBack": "eeeee", + }, + ); + print(res); + if (res != 'failure') { + Navigator.push( + context, MaterialPageRoute(builder: (cont) => HomeCaptain())); + // Get.to(OrderRequestPage()); + } + }, + ), + ), + ); + } +} diff --git a/lib/controller/functions/add_error.dart b/lib/controller/functions/add_error.dart new file mode 100755 index 0000000..320a996 --- /dev/null +++ b/lib/controller/functions/add_error.dart @@ -0,0 +1,19 @@ +import '../../constant/box_name.dart'; +import '../../constant/links.dart'; +import '../../main.dart'; +import 'crud.dart'; + +addError(String error, where) async { + CRUD().post(link: AppLink.addError, payload: { + 'error': error.toString(), // Example error description + 'userId': box.read(BoxName.driverID) ?? + box.read(BoxName.passengerID), // Example user ID + 'userType': box.read(BoxName.driverID) != null + ? 'Driver' + : 'passenger', // Example user type + 'phone': box.read(BoxName.phone) ?? + box.read(BoxName.phoneDriver), // Example phone number + + 'device': where + }); +} diff --git a/lib/controller/functions/audio_controller.dart b/lib/controller/functions/audio_controller.dart new file mode 100755 index 0000000..feddaa0 --- /dev/null +++ b/lib/controller/functions/audio_controller.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:just_audio/just_audio.dart'; +import 'package:get/get.dart'; + +class AudioController extends GetxController { + final AudioPlayer _audioPlayer = AudioPlayer(); + + Future playAudio() async { + // Check if the platform is Android + if (Theme.of(Get.context!).platform == TargetPlatform.android) { + try { + // Load the audio file from the raw resources + await _audioPlayer.setAsset( + 'assets/order1.wav'); // Adjust the path based on your project structure + _audioPlayer.play(); + } catch (e) { + // Handle errors, such as file not found + print('Error playing audio: $e'); + } + } + } + + Future playAudio1(String path) async { + // Check if the platform is Android + // if (Theme.of(Get.context!).platform == TargetPlatform.android) { + try { + // Load the audio file from the raw resources + await _audioPlayer + .setAsset(path); // Adjust the path based on your project structure + _audioPlayer.play(); + } catch (e) { + // Handle errors, such as file not found + print('Error playing audio: $e'); + } + // } + } + + @override + void onClose() { + // Release resources when done + _audioPlayer.dispose(); + super.onClose(); + } +} diff --git a/lib/controller/functions/call_controller.dart b/lib/controller/functions/call_controller.dart new file mode 100755 index 0000000..e310f0e --- /dev/null +++ b/lib/controller/functions/call_controller.dart @@ -0,0 +1,129 @@ +// import 'package:SEFER/constant/api_key.dart'; +// import 'package:SEFER/controller/functions/crud.dart'; +// // import 'package:agora_rtc_engine/agora_rtc_engine.dart'; +// import 'package:get/get.dart'; +// import 'package:permission_handler/permission_handler.dart'; + +// import '../../constant/box_name.dart'; +// import '../firebase/firbase_messge.dart'; +// import '../home/captin/map_driver_controller.dart'; +// import '../../main.dart'; + +// class CallController extends GetxController { +// String channelName = ''; // Get.find().rideId; +// String token = ''; +// // int uid = int.parse(box.read(BoxName.phoneDriver)); // uid of the local user +// int uid = 0; +// int? remoteUid; // uid of the remote user +// bool _isJoined = false; // Indicates if the local user has joined the channel +// String status = ''; +// // late RtcEngine agoraEngine; // Agora engine instance + +// @override +// void onInit() { +// super.onInit(); + +// channelName = Get.find().rideId; // 'sefer300'; // +// remoteUid = int.parse(Get.find().passengerPhone); +// uid = int.parse(box.read(BoxName.phoneDriver)); + +// initAgoraFull(); +// } + +// initAgoraFull() async { +// await fetchToken(); +// // Set up an instance of Agora engine +// setupVoiceSDKEngine(); +// // join(); +// FirebaseMessagesController().sendNotificationToPassengerTokenCALL( +// 'Call Income', +// '${'You have call from driver'.tr} ${box.read(BoxName.nameDriver)}', +// Get.find().tokenPassenger, +// [ +// token, +// channelName, +// uid.toString(), +// remoteUid.toString(), +// ], +// ); +// join(); +// } + +// @override +// void onClose() { +// // agoraEngine.leaveChannel(); +// super.onClose(); +// } + +// // Future setupVoiceSDKEngine() async { +// // // retrieve or request microphone permission +// // await [Permission.microphone].request(); + +// // //create an instance of the Agora engine +// // agoraEngine = createAgoraRtcEngine(); +// // await agoraEngine.initialize(RtcEngineContext(appId: AK.agoraAppId)); +// // // Register the event handler +// // agoraEngine.registerEventHandler( +// // RtcEngineEventHandler( +// // onJoinChannelSuccess: (RtcConnection connection, int elapsed) { +// // // Get.snackbar( +// // // "Local user uid:${connection.localUid} joined the channel", ''); +// // status = 'joined'.tr; +// // _isJoined = true; +// // update(); +// // }, +// // onUserJoined: (RtcConnection connection, int remoteUid, int elapsed) { +// // // Get.snackbar("Remote user uid:$remoteUid joined the channel", ''); +// // status = '${Get.find().passengerName} ' +// // 'joined' +// // .tr; +// // remoteUid = remoteUid; +// // update(); +// // }, +// // onUserOffline: (RtcConnection connection, int? remoteUid, +// // UserOfflineReasonType reason) { +// // // Get.snackbar("Remote user uid:$remoteUid left the channel", ''); +// // status = 'Call Left'.tr; +// // remoteUid = null; +// // update(); +// // }, +// // ), +// // ); +// // } + +// // void join() async { +// // // Set channel options including the client role and channel profile +// // ChannelMediaOptions options = const ChannelMediaOptions( +// // clientRoleType: ClientRoleType.clientRoleBroadcaster, +// // channelProfile: ChannelProfileType.channelProfileCommunication, +// // ); + +// // await agoraEngine.joinChannel( +// // token: token, +// // channelId: channelName, +// // options: options, +// // uid: uid, +// // ); +// // } + +// // void leave() { +// // _isJoined = false; +// // remoteUid = null; +// // update(); +// // agoraEngine.leaveChannel(); +// // } + +// // // Clean up the resources when you leave +// // @override +// // void dispose() async { +// // await agoraEngine.leaveChannel(); +// // super.dispose(); +// // } + +// fetchToken() async { +// var res = await CRUD() +// .getAgoraToken(channelName: channelName, uid: uid.toString()); +// token = res; +// update(); +// } +// } diff --git a/lib/controller/functions/camer_controller.dart b/lib/controller/functions/camer_controller.dart new file mode 100755 index 0000000..dc682aa --- /dev/null +++ b/lib/controller/functions/camer_controller.dart @@ -0,0 +1,236 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:camera/camera.dart'; +import 'package:get/get.dart'; +// import 'package:google_mlkit_text_recognition/google_mlkit_text_recognition.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:path_provider/path_provider.dart' as path_provider; +import 'package:path/path.dart' as path; +import 'package:http/http.dart' as http; +import '../../main.dart'; + +class CameraClassController extends GetxController { + late CameraController cameraController; + late List cameras; + bool isCameraInitialized = false; + // final TextRecognizer _textRecognizer = TextRecognizer(); + String? scannedText; + bool isloading = false; + + @override + void onInit() { + super.onInit(); + initializeCamera(); + } + + Future initializeCamera() async { + try { + cameras = await availableCameras(); + //update(); + cameraController = CameraController( + cameras[0], + ResolutionPreset.medium, + enableAudio: false, + ); + await cameraController.initialize(); + isCameraInitialized = true; + update(); + } catch (e) { + if (e is CameraException) { + switch (e.code) { + case 'CameraAccessDenied': + Get.defaultDialog( + title: 'Camera Access Denied.'.tr, + middleText: '', + confirm: + MyElevatedButton(title: 'Open Settings'.tr, onPressed: () {}), + ); + break; + default: + // Handle other errors here. + break; + } + } + } + } + + var imgUrl = ''; + Future extractCardId() async { + // Construct the path for the image file + final directory = await path_provider.getTemporaryDirectory(); + final imagePath = + path.join(directory.path, '${box.read(BoxName.driverID)}.png'); + + // Capture the image and save it to the specified path + final XFile capturedImage = await cameraController.takePicture(); + + // Move the captured image to the desired path + await capturedImage.saveTo(imagePath); + await uploadImage(File(capturedImage.path)); + + extractByAPI('${AppLink.server}/card_image/' + box.read(BoxName.driverID)); + } + + Future extractByAPI(String imgUrl) async { + var headers = {'apikey': 'K89368168788957'}; + var request = http.MultipartRequest( + 'POST', Uri.parse('https://api.ocr.space/parse/image')); + request.fields.addAll({ + 'language': 'ara', + 'isOverlayRequired': 'false', + 'url': imgUrl, + 'iscreatesearchablepdf': 'false', + 'issearchablepdfhidetextlayer': 'false' + }); + + request.headers.addAll(headers); + + http.StreamedResponse response = await request.send(); + + if (response.statusCode == 200) { + } else {} + } + + Future uploadImage(File imageFile) async { + String? basicAuthCredentials = + await storage.read(key: BoxName.basicAuthCredentials); + var request = http.MultipartRequest( + 'POST', + Uri.parse(AppLink.uploadImage), + ); + + // Attach the image file to the request + request.files.add( + await http.MultipartFile.fromPath('image', imageFile.path), + ); // Add the headers to the request + request.headers.addAll({ + "Content-Type": "application/x-www-form-urlencoded", + 'Authorization': + 'Basic ${base64Encode(utf8.encode(basicAuthCredentials.toString()))}', + }); + + // Add the driverID to the request + request.fields['driverID'] = box.read(BoxName.driverID); + // Send the request + var response = await request.send(); + + // Read the response + var responseData = await response.stream.toBytes(); + var responseString = String.fromCharCodes(responseData); + scannedText = responseString; + update(); + // Return the link received from the server + return responseString; + } + + // Future takePictureAndMLGoogleScan() async { + // try { + // // Construct the path for the image file + // final directory = await path_provider.getTemporaryDirectory(); + // final imagePath = + // path.join(directory.path, '${box.read(BoxName.driverID)}.png'); + + // // Capture the image and save it to the specified path + // final XFile capturedImage = await cameraController.takePicture(); + + // // Move the captured image to the desired path + // await capturedImage.saveTo(imagePath); + + // // Recognize the text in the image + // final InputImage inputImage = + // InputImage.fromFile(File(capturedImage.path)); + // final RecognizedText recognizedText = + // await _textRecognizer.processImage(inputImage); + // scannedText = recognizedText.text; + + // // Extract the scanned text line by line + // final List> lines = []; + // for (var i = 0; i < recognizedText.blocks.length; i++) { + // lines.add({ + // 'line_number': i, + // 'text': recognizedText.blocks[i].text, + // }); + // } + + // // Convert the list of lines to a JSON string + // final String jsonOutput = jsonEncode(lines); + + // update(); + + // // Print the JSON output + + // // Get.back(); + // } catch (e) {} + // } + + String getTextAsJSON(String text) { + final lines = text.split('\n'); + final jsonList = lines.map((line) { + return { + 'line_text': line, + 'num_words': line.trim().split(' ').length, + }; + }).toList(); + + final json = { + 'lines': jsonList, + 'num_lines': lines.length, + }; + + return jsonEncode(json); + } + + List getTextBlocks(String text) { + return text.split('\n'); + } + +// Future takePictureAndTesseractScan() async { +// try { +// // Construct the path for the image file +// final directory = await path_provider.getTemporaryDirectory(); +// final imagePath = +// path.join(directory.path, '${box.read(BoxName.driverID)}.png'); + +// // Capture the image and save it to the specified path +// final XFile capturedImage = await cameraController.takePicture(); + +// // Move the captured image to the desired path +// await capturedImage.saveTo(imagePath); + +// // Recognize the text in the image +// final languages = [ +// 'eng', +// 'ara' +// ]; // Specify the languages you want to use for text extraction + +// final text = await FlutterTesseractOcr.extractText(imagePath, +// language: languages.join('+'), // Combine multiple languages with '+' +// args: { +// "psm": "4", +// "preserve_interword_spaces": "1", +// // "rectangle": const Rect.fromLTWH(100, 100, 200, 200), +// } // Additional options if needed +// ); +// isloading = false; +// final jsonText = getTextAsJSON(text); +// final textBlocks = getTextBlocks(text); +// update(); +// scannedText = +// textBlocks.toString(); // Convert the extracted text to JSON. + +// // Print the JSON to the console. +// update(); +// } catch (e) { +// scannedText = ''; +// } +// } + + @override + void onClose() { + cameraController.dispose(); + super.onClose(); + } +} diff --git a/lib/controller/functions/crud.dart b/lib/controller/functions/crud.dart new file mode 100755 index 0000000..99aab26 --- /dev/null +++ b/lib/controller/functions/crud.dart @@ -0,0 +1,624 @@ +import 'dart:convert'; +import 'package:jwt_decoder/jwt_decoder.dart'; +import 'package:secure_string_operations/secure_string_operations.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/auth/captin/login_captin_controller.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:get/get.dart'; +import 'package:http/http.dart' as http; +import 'package:sefer_driver/env/env.dart'; + +import '../../constant/api_key.dart'; +import '../../constant/char_map.dart'; +import '../../constant/info.dart'; +import '../../print.dart'; +import 'gemeni.dart'; +import 'upload_image.dart'; + +class CRUD { + Future get({ + required String link, + Map? payload, + }) async { + bool isTokenExpired = JwtDecoder.isExpired(X + .r(X.r(X.r(box.read(BoxName.jwt), cn), cC), cs) + .toString() + .split(AppInformation.addd)[0]); + // Log.print('isTokenExpired: ${isTokenExpired}'); + + if (isTokenExpired) { + await LoginDriverController().getJWT(); + } + // await Get.put(LoginDriverController()).getJWT(); + var url = Uri.parse( + link, + ); + var response = await http.post( + url, + body: payload, + headers: { + "Content-Type": "application/x-www-form-urlencoded", + 'Authorization': + 'Bearer ${X.r(X.r(X.r(box.read(BoxName.jwt), cn), cC), cs).toString().split(AppInformation.addd)[0]}' + }, + ); + print(response.request); + Log.print('response.body: ${response.body}'); + print(payload); + if (response.statusCode == 200) { + var jsonData = jsonDecode(response.body); + if (jsonData['status'] == 'success') { + return response.body; + } + + return jsonData['status']; + } else if (response.statusCode == 401) { + // Specifically handle 401 Unauthorized + var jsonData = jsonDecode(response.body); + + if (jsonData['error'] == 'Token expired') { + // Show snackbar prompting to re-login + await Get.put(LoginDriverController()).getJWT(); + // mySnackbarSuccess('please order now'.tr); + + return 'token_expired'; // Return a specific value for token expiration + } else { + // Other 401 errors + // addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401'); + return 'failure'; + } + } else { + // addError('Non-200 response code: ${response.statusCode}', + // 'crud().post - Other'); + return 'failure'; + } + } + + Future getWallet({ + required String link, + Map? payload, + }) async { + var s = await LoginDriverController().getJwtWallet(); + final hmac = box.read(BoxName.hmac); + // Log.print('hmac: ${hmac}'); + var url = Uri.parse( + link, + ); + var response = await http.post( + url, + body: payload, + headers: { + "Content-Type": "application/x-www-form-urlencoded", + 'Authorization': 'Bearer $s', + 'X-HMAC-Auth': hmac.toString(), + }, + ); + Log.print('response.request: ${response.request}'); + Log.print('response.body: ${response.body}'); + print(payload); + if (response.statusCode == 200) { + var jsonData = jsonDecode(response.body); + if (jsonData['status'] == 'success') { + return response.body; + } + + return jsonData['status']; + } else if (response.statusCode == 401) { + // Specifically handle 401 Unauthorized + var jsonData = jsonDecode(response.body); + + if (jsonData['error'] == 'Token expired') { + // Show snackbar prompting to re-login + // await Get.put(LoginDriverController()).getJwtWallet(); + + return 'token_expired'; // Return a specific value for token expiration + } else { + // Other 401 errors + // addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401'); + return 'failure'; + } + } else { + // addError('Non-200 response code: ${response.statusCode}', + // 'crud().post - Other'); + return 'failure'; + } + } + + Future postWallet( + {required String link, Map? payload}) async { + var s = await LoginDriverController().getJwtWallet(); + // Log.print('jwt: ${s}'); + final hmac = box.read(BoxName.hmac); + // Log.print('hmac: ${hmac}'); + var url = Uri.parse(link); + // Log.print('url: ${url}'); + try { + // await LoginDriverController().getJWT(); + + var response = await http.post( + url, + body: payload, + headers: { + "Content-Type": "application/x-www-form-urlencoded", + 'Authorization': 'Bearer $s', + 'X-HMAC-Auth': hmac.toString(), + }, + ); + Log.print('response.request:${response.request}'); + Log.print('response.body: ${response.body}'); + Log.print('payload:$payload'); + if (response.statusCode == 200) { + try { + var jsonData = jsonDecode(response.body); + if (jsonData['status'] == 'success') { + return jsonData; + } else { + return jsonData['status']; + } + } catch (e) { + // addError(e.toString(), 'crud().post - JSON decoding'); + return 'failure'; + } + } else if (response.statusCode == 401) { + // Specifically handle 401 Unauthorized + var jsonData = jsonDecode(response.body); + + if (jsonData['error'] == 'Token expired') { + return 'token_expired'; // Return a specific value for token expiration + } else { + // Other 401 errors + // addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401'); + return 'failure'; + } + } else { + // addError('Non-200 response code: ${response.statusCode}', + // 'crud().post - Other'); + return 'failure'; + } + } catch (e) { + // addError('HTTP request error: $e', 'crud().post - HTTP'); + return 'failure'; + } + } + + Future post( + {required String link, Map? payload}) async { + var url = Uri.parse(link); + try { + bool isTokenExpired = JwtDecoder.isExpired(X + .r(X.r(X.r(box.read(BoxName.jwt), cn), cC), cs) + .toString() + .split(AppInformation.addd)[0]); + if (isTokenExpired) { + await LoginDriverController().getJWT(); + } + var response = await http.post( + url, + body: payload, + headers: { + "Content-Type": "application/x-www-form-urlencoded", + 'Authorization': + 'Bearer ${X.r(X.r(X.r(box.read(BoxName.jwt), cn), cC), cs).toString().split(AppInformation.addd)[0]}' + // 'Authorization': 'Bearer ${box.read(BoxName.jwt)}' + }, + ); + print(response.request); + Log.print('response.body: ${response.body}'); + print(payload); + if (response.statusCode == 200) { + try { + var jsonData = jsonDecode(response.body); + if (jsonData['status'] == 'success') { + return jsonData; + } else { + return jsonData['status']; + } + } catch (e) { + // addError(e.toString(), url); + return 'failure'; + } + } else if (response.statusCode == 401) { + // Specifically handle 401 Unauthorized + var jsonData = jsonDecode(response.body); + + if (jsonData['error'] == 'Token expired') { + // Show snackbar prompting to re-login + // await Get.put(LoginDriverController()).getJWT(); + // MyDialog().getDialog( + // 'Session expired. Please log in again.'.tr, + // '', + // () { + // Get.put(LoginController()).loginUsingCredentials( + // box.read(BoxName.passengerID), box.read(BoxName.email)); + // Get.back(); + // }, + // ); + + return 'token_expired'; // Return a specific value for token expiration + } else { + // Other 401 errors + // addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401'); + return 'failure'; + } + } else { + // addError('Non-200 response code: ${response.statusCode}', + // 'crud().post - Other'); + return 'failure'; + } + } catch (e) { + // addError('HTTP request error: $e', 'crud().post - HTTP'); + return 'failure'; + } + } + + Future getAgoraToken({ + required String channelName, + required String uid, + }) async { + var uid = box.read(BoxName.phone) ?? box.read(BoxName.phoneDriver); + var res = await http.get(Uri.parse( + // 'https://repulsive-pig-rugby-shirt.cyclic.app/token?channelName=$channelName'), + 'https://orca-app-b2i85.ondigitalocean.app/token?channelName=$channelName'), + headers: {'Authorization': 'Bearer ${AK.agoraAppCertificate}'}); + + if (res.statusCode == 200) { + var response = jsonDecode(res.body); + return response['token']; + } else {} + } + + Future getLlama({ + required String link, + required String payload, + required String prompt, + }) async { + var url = Uri.parse( + link, + ); + var headers = { + 'Content-Type': 'application/json', + 'Authorization': + 'Bearer LL-X5lJ0Px9CzKK0HTuVZ3u2u4v3tGWkImLTG7okGRk4t25zrsLqJ0qNoUzZ2x4ciPy' + // 'Authorization': 'Bearer ${Env.llamaKey}' + }; + var data = json.encode({ + "model": "Llama-3-70b-Inst-FW", + // "model": "llama-13b-chat", + "messages": [ + { + "role": "user", + "content": + "Extract the desired information from the following passage as json decoded like $prompt just in this:\n\n$payload" + } + ], + "temperature": 0.9 + }); + var response = await http.post( + url, + body: data, + headers: headers, + ); + + if (response.statusCode == 200) { + return response.body; + } + return response.statusCode; + } + + Future allMethodForAI(String prompt, linkPHP, imagePath) async { + await ImageController().choosImage(linkPHP, imagePath); + Future.delayed(const Duration(seconds: 2)); + var extractedString = + await arabicTextExtractByVisionAndAI(imagePath: imagePath); + var json = jsonDecode(extractedString); + + var textValues = extractTextFromLines(json); + // await Get.put(AI()).geminiAiExtraction(prompt, textValues); + await Get.put(AI()).anthropicAI(textValues, prompt, imagePath); + } + + String extractTextFromLines(Map jsonData) { + final readResult = jsonData['readResult']; + final blocks = readResult['blocks']; + + final StringBuffer buffer = StringBuffer(); + + for (final block in blocks) { + final lines = block['lines']; + for (final line in lines) { + final text = line['text']; + buffer.write(text); + buffer.write('\n'); + } + } + + return buffer.toString().trim(); + } + + Future arabicTextExtractByVisionAndAI({ + required String imagePath, + }) async { + var headers = { + 'Content-Type': 'application/json', + 'Ocp-Apim-Subscription-Key': AK.ocpApimSubscriptionKey + }; + + String imagePathFull = + '${AppLink.server}/card_image/$imagePath-${box.read(BoxName.driverID)}.jpg'; + var request = http.Request('POST', Uri.parse( + // 'https://ocrhamza.cognitiveservices.azure.com/vision/v2.1/ocr?language=ar')); + // 'https://eastus.api.cognitive.microsoft.com/vision/v3.2/ocr' + 'https://eastus.api.cognitive.microsoft.com/computervision/imageanalysis:analyze?features=caption,read&model-version=latest&language=en&api-version=2024-02-01')); + request.body = json.encode({"url": imagePathFull}); + // request.body = json.encode({"url": imagePathFull}); + request.headers.addAll(headers); + + http.StreamedResponse response = await request.send(); + + if (response.statusCode == 200) { + // 'response.stream.bytesToString(): ${await response.stream.bytesToString()}'); + return await response.stream.bytesToString(); + } else {} + } + + Future getChatGPT({ + required String link, + required String payload, + }) async { + var url = Uri.parse( + link, + ); + var headers = { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer ${Env.chatGPTkeySeferNew}' + }; + var data = json.encode({ + "model": "gpt-3.5-turbo", + "messages": [ + { + "role": "user", + "content": + "Extract the desired information from the following passage as json decoded like vin,make,made,year,expiration_date,color,owner,registration_date just in this:\n\n$payload" + } + ], + "temperature": 0.9 + }); + var response = await http.post( + url, + body: data, + headers: headers, + ); + + if (response.statusCode == 200) { + return response.body; + } + return response.statusCode; + } + + Future postStripe({ + required String link, + Map? payload, + }) async { + // String? secretKey = await storage.read(key: BoxName.secretKey); + var url = Uri.parse( + link, + ); + var response = await http.post( + url, + body: payload, + headers: { + "Content-Type": "application/x-www-form-urlencoded", + 'Authorization': 'Bearer ${AK.secretKeyStripe}', + }, + ); + if (response.statusCode == 200) { + return response.body; + } else {} + } + + Future postPayMob({ + required String link, + Map? payload, + }) async { + // String? basicAuthCredentials = + // await storage.read(key: BoxName.basicAuthCredentials); + var url = Uri.parse( + link, + ); + var response = await http.post(url, + body: payload, headers: {'Content-Type': 'application/json'}); + + var jsonData = jsonDecode(response.body); + if (response.statusCode == 200) { + if (jsonData['status'] == 'success') { + return response.body; + } else { + return (jsonData['status']); + } + } else { + return response.statusCode; + } + } + + Future sendEmail(String link, Map? payload) async { + // التحقق من صلاحية التوكن + String rawJwt = box.read(BoxName.jwt); + String token = X + .r(X.r(X.r(rawJwt, cn), cC), cs) + .toString() + .split(AppInformation.addd)[0]; + + bool isTokenExpired = JwtDecoder.isExpired(token); + if (isTokenExpired) { + await LoginDriverController().getJWT(); + rawJwt = box.read(BoxName.jwt); // تحديث التوكن بعد التجديد + token = X + .r(X.r(X.r(rawJwt, cn), cC), cs) + .toString() + .split(AppInformation.addd)[0]; + } + + // إعداد الهيدر + final headers = { + "Content-Type": "application/x-www-form-urlencoded", + "Authorization": "Bearer $token", + }; + + // إعداد الطلب + final request = http.Request('POST', Uri.parse(link)); + request.bodyFields = payload ?? {}; + request.headers.addAll(headers); + + // إرسال الطلب + final response = await request.send(); + + // التحقق من النتيجة + if (response.statusCode == 200) { + print("✅ Email sent successfully."); + } else { + print("⌠Failed to send email. Status: ${response.statusCode}"); + final responseBody = await response.stream.bytesToString(); + print("Response body: $responseBody"); + } + } + + Future postFromDialogue({ + required String link, + Map? payload, + }) async { + // String? basicAuthCredentials = + // await storage.read(key: BoxName.basicAuthCredentials); + var url = Uri.parse( + link, + ); + var response = await http.post( + url, + body: payload, + headers: { + "Content-Type": "application/x-www-form-urlencoded", + 'Authorization': + 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}', + }, + ); + + if (response.body.isNotEmpty) { + var jsonData = jsonDecode(response.body); + if (response.statusCode == 200) { + if (jsonData['status'] == 'success') { + Get.back(); + // Get.snackbar( + // jsonData['status'], + // jsonData['message'], + // ); + + return response.body; + } + } + return (jsonData['status']); + } + } + + Future sendVerificationRequest(String phoneNumber) async { + final accountSid = AK.accountSIDTwillo; + final authToken = AK.authTokenTwillo; + final verifySid = AK.twilloRecoveryCode; + + final Uri verificationUri = Uri.parse( + 'https://verify.twilio.com/v2/Services/$verifySid/Verifications'); + + // Send the verification request + final response = await http.post( + verificationUri, + headers: { + 'Authorization': + 'Basic ' + base64Encode(utf8.encode('$accountSid:$authToken')), + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: { + 'To': phoneNumber, + 'Channel': 'sms', + }, + ); + + if (response.statusCode == 201) { + } else {} + + // Prompt the user to enter the OTP + final otpCode = "123456"; // Replace with user input + + // Check the verification code + final checkUri = Uri.parse( + 'https://verify.twilio.com/v2/Services/$verifySid/VerificationCheck'); + + final checkResponse = await http.post( + checkUri, + headers: { + 'Authorization': + 'Basic ' + base64Encode(utf8.encode('$accountSid:$authToken')), + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: { + 'To': phoneNumber, + 'Code': otpCode, + }, + ); + + if (checkResponse.statusCode == 201) { + } else {} + } + + Future getGoogleApi({ + required String link, + Map? payload, + }) async { + var url = Uri.parse( + link, + ); + var response = await http.post( + url, + body: payload, + ); + var jsonData = jsonDecode(response.body); + if (jsonData['status'] == 'OK') { + return jsonData; + } + return (jsonData['status']); + } + + Future update({ + required String endpoint, + required Map data, + required String id, + }) async { + // String? basicAuthCredentials = + // await storage.read(key: BoxName.basicAuthCredentials); + var url = Uri.parse('$endpoint/$id'); + var response = await http.put( + url, + body: json.encode(data), + headers: { + 'Authorization': + 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}', + }, + ); + return json.decode(response.body); + } + + Future delete({ + required String endpoint, + required String id, + }) async { + // String? basicAuthCredentials = + // await storage.read(key: BoxName.basicAuthCredentials); + var url = Uri.parse('$endpoint/$id'); + var response = await http.delete( + url, + headers: { + 'Authorization': + 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}', + }, + ); + return json.decode(response.body); + } +} diff --git a/lib/controller/functions/custom_pant.dart b/lib/controller/functions/custom_pant.dart new file mode 100755 index 0000000..8b85ce4 --- /dev/null +++ b/lib/controller/functions/custom_pant.dart @@ -0,0 +1,26 @@ +import 'package:flutter/material.dart'; + +class LineChartPainter extends CustomPainter { + final List data; + + LineChartPainter(this.data); + + @override + void paint(Canvas canvas, Size size) { + // Calculate the scale factor. + final scaleFactor = size.height / 240; + + // Draw the line chart. + for (var i = 0; i < data.length - 1; i++) { + final x1 = i * size.width / data.length; + final y1 = data[i] * scaleFactor; + final x2 = (i + 1) * size.width / data.length; + final y2 = data[i + 1] * scaleFactor; + + canvas.drawLine(Offset(x1, y1), Offset(x2, y2), Paint()); + } + } + + @override + bool shouldRepaint(LineChartPainter oldDelegate) => false; +} diff --git a/lib/controller/functions/device_info.dart b/lib/controller/functions/device_info.dart new file mode 100755 index 0000000..dac977b --- /dev/null +++ b/lib/controller/functions/device_info.dart @@ -0,0 +1,80 @@ +import 'dart:io'; +import 'package:device_info_plus/device_info_plus.dart'; +import 'package:get_storage/get_storage.dart'; +import '../../constant/box_name.dart'; + +class DeviceInfo { + final String? manufacturer; + final String? model; + final String? deviceId; + final String? osVersion; + final String? platform; + final String? deviceName; + final bool? isPhysicalDevice; + + DeviceInfo({ + this.manufacturer, + this.model, + this.deviceId, + this.osVersion, + this.platform, + this.deviceName, + this.isPhysicalDevice, + }); + + Map toJson() => { + 'manufacturer': manufacturer, + 'model': model, + 'deviceId': deviceId, + 'osVersion': osVersion, + 'platform': platform, + 'deviceName': deviceName, + 'isPhysicalDevice': isPhysicalDevice, + }; +} + +class DeviceController { + final box = GetStorage(); + final _deviceInfo = DeviceInfoPlugin(); + + Future getDeviceInfo() async { + if (Platform.isAndroid) { + return await _getAndroidDeviceInfo(); + } else if (Platform.isIOS) { + return await _getIosDeviceInfo(); + } + throw UnsupportedError('Unsupported platform'); + } + + Future _getAndroidDeviceInfo() async { + final androidInfo = await _deviceInfo.androidInfo; + final deviceInfo = DeviceInfo( + manufacturer: androidInfo.manufacturer, + model: androidInfo.model, + deviceId: androidInfo.serialNumber, + osVersion: androidInfo.version.release, + platform: 'Android', + deviceName: androidInfo.device, + isPhysicalDevice: androidInfo.isPhysicalDevice, + ); + + box.write(BoxName.deviceInfo, deviceInfo.toJson()); + return deviceInfo; + } + + Future _getIosDeviceInfo() async { + final iosInfo = await _deviceInfo.iosInfo; + final deviceInfo = DeviceInfo( + manufacturer: 'Apple', + model: iosInfo.model, + deviceId: iosInfo.identifierForVendor, + osVersion: iosInfo.systemVersion, + platform: 'iOS', + deviceName: iosInfo.name, + isPhysicalDevice: iosInfo.isPhysicalDevice, + ); + + box.write(BoxName.deviceInfo, deviceInfo.toJson()); + return deviceInfo; + } +} diff --git a/lib/controller/functions/digit_obsecur_formate.dart b/lib/controller/functions/digit_obsecur_formate.dart new file mode 100755 index 0000000..b5972e4 --- /dev/null +++ b/lib/controller/functions/digit_obsecur_formate.dart @@ -0,0 +1,42 @@ +import 'package:flutter/services.dart'; + +class DigitObscuringFormatter extends TextInputFormatter { + @override + TextEditingValue formatEditUpdate( + TextEditingValue oldValue, TextEditingValue newValue) { + final maskedText = maskDigits(newValue.text); + return newValue.copyWith( + text: maskedText, + selection: updateCursorPosition(maskedText, newValue.selection)); + } + + String maskDigits(String text) { + final totalDigits = text.length; + final visibleDigits = 4; + final hiddenDigits = totalDigits - visibleDigits * 2; + + final firstVisibleDigits = text.substring(0, visibleDigits); + final lastVisibleDigits = text.substring(totalDigits - visibleDigits); + + final maskedDigits = List.filled(hiddenDigits, '*').join(); + + return '$firstVisibleDigits$maskedDigits$lastVisibleDigits'; + } + + TextSelection updateCursorPosition( + String maskedText, TextSelection currentSelection) { + final cursorPosition = currentSelection.baseOffset; + final cursorOffset = + currentSelection.extentOffset - currentSelection.baseOffset; + final totalDigits = maskedText.length; + const visibleDigits = 4; + final hiddenDigits = totalDigits - visibleDigits * 2; + + final updatedPosition = cursorPosition <= visibleDigits + ? cursorPosition + : hiddenDigits + visibleDigits + (cursorPosition - visibleDigits); + + return TextSelection.collapsed( + offset: updatedPosition, affinity: currentSelection.affinity); + } +} diff --git a/lib/controller/functions/document_scanner.dart b/lib/controller/functions/document_scanner.dart new file mode 100755 index 0000000..198992c --- /dev/null +++ b/lib/controller/functions/document_scanner.dart @@ -0,0 +1,41 @@ +// import 'dart:io'; +// +// import 'package:get/get.dart'; +// import 'package:image_picker/image_picker.dart'; +// import 'package:google_ml_kit/google_ml_kit.dart'; +// +// class ImagePickerController extends GetxController { +// RxBool textScanning = false.obs; +// RxString scannedText = ''.obs; +// +// Future getImage(ImageSource source) async { +// try { +// final pickedImage = await ImagePicker().pickImage(source: source); +// if (pickedImage != null) { +// textScanning.value = true; +// final imageFile = File(pickedImage.path); +// getRecognisedText(imageFile); +// } +// } catch (e) { +// textScanning.value = false; +// scannedText.value = "Error occurred while scanning"; +// } +// } +// +// Future getRecognisedText(File image) async { +// final inputImage = InputImage.fromFilePath(image.path); +// final textDetector = GoogleMlKit.vision.textRecognizer(); +// final RecognizedText recognisedText = +// await textDetector.processImage(inputImage); +// await textDetector.close(); +// +// scannedText.value = ''; +// for (TextBlock block in recognisedText.blocks) { +// for (TextLine line in block.lines) { +// scannedText.value += line.text + '\n'; +// } +// } +// +// textScanning.value = false; +// } +// } diff --git a/lib/controller/functions/encrypt.dart b/lib/controller/functions/encrypt.dart new file mode 100755 index 0000000..3457614 --- /dev/null +++ b/lib/controller/functions/encrypt.dart @@ -0,0 +1,32 @@ +import 'dart:convert'; +import 'package:encrypt/encrypt.dart' as encrypt; + +import '../../constant/api_key.dart'; + +class KeyEncryption { + // استخدم Ù…ÙØªØ§Ø­ بطول 32 حرÙًا + static final _key = encrypt.Key.fromUtf8(AK.keyOfApp); + static final _iv = + encrypt.IV.fromLength(16); // توليد تهيئة عشوائية بطول 16 بايت + + static String encryptKey(String key) { + final encrypter = + encrypt.Encrypter(encrypt.AES(_key, mode: encrypt.AESMode.cbc)); + final encrypted = encrypter.encrypt(key, iv: _iv); + final result = _iv.bytes + encrypted.bytes; // تضمين التهيئة مع النص Ø§Ù„Ù…Ø´ÙØ± + return base64Encode(result); + } + + static String decryptKey(String encryptedKey) { + print('encryptedKey: ${AK.keyOfApp}'); + + final decoded = base64Decode(encryptedKey); + print('encryptedKey: $encryptedKey'); + final iv = encrypt.IV(decoded.sublist(0, 16)); // استخراج التهيئة + final encrypted = + encrypt.Encrypted(decoded.sublist(16)); // استخراج النص Ø§Ù„Ù…Ø´ÙØ± + final encrypter = + encrypt.Encrypter(encrypt.AES(_key, mode: encrypt.AESMode.cbc)); + return encrypter.decrypt(encrypted, iv: iv); + } +} diff --git a/lib/controller/functions/encrypt_decrypt.dart b/lib/controller/functions/encrypt_decrypt.dart new file mode 100755 index 0000000..7098fdd --- /dev/null +++ b/lib/controller/functions/encrypt_decrypt.dart @@ -0,0 +1,79 @@ +import 'package:encrypt/encrypt.dart' as encrypt; +import 'package:flutter/foundation.dart'; +import 'package:secure_string_operations/secure_string_operations.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/char_map.dart'; +import '../../env/env.dart'; +import '../../main.dart'; + +class EncryptionHelper { + static EncryptionHelper? _instance; + + late final encrypt.Key key; + late final encrypt.IV iv; + + EncryptionHelper._(this.key, this.iv); + static EncryptionHelper get instance { + if (_instance == null) { + throw Exception( + "EncryptionHelper is not initialized. Call `await EncryptionHelper.initialize()` in main."); + } + return _instance!; + } + + /// Initializes and stores the instance globally + static Future initialize() async { + if (_instance != null) { + debugPrint("EncryptionHelper is already initialized."); + return; // Prevent re-initialization + } + debugPrint("Initializing EncryptionHelper..."); + // Read stored keys + var keyOfApp = r(Env.keyOfApp).toString().split(Env.addd)[0]; + var initializationVector = + r(Env.initializationVector).toString().split(Env.addd)[0]; + + // Log.print('initializationVector: ${initializationVector}'); + // Set the global instance + _instance = EncryptionHelper._( + encrypt.Key.fromUtf8(keyOfApp), + encrypt.IV.fromUtf8(initializationVector), + ); + debugPrint("EncryptionHelper initialized successfully."); + } + + /// Encrypts a string + String encryptData(String plainText) { + try { + final encrypter = encrypt.Encrypter( + encrypt.AES(key, mode: encrypt.AESMode.cbc)); // AES-GCM + final encrypted = encrypter.encrypt(plainText, iv: iv); + return encrypted.base64; + } catch (e) { + debugPrint('Encryption Error: $e'); + return ''; + } + } + + /// Decrypts a string + String decryptData(String encryptedText) { + try { + final encrypter = + encrypt.Encrypter(encrypt.AES(key, mode: encrypt.AESMode.cbc)); + final encrypted = encrypt.Encrypted.fromBase64(encryptedText); + return encrypter.decrypt(encrypted, iv: iv); + } catch (e) { + debugPrint('Decryption Error: $e'); + return ''; + } + } +} + +r(String string) { + return X.r(X.r(X.r(string, cn), cC), cs).toString(); +} + +c(String string) { + return X.c(X.c(X.c(string, cn), cC), cs).toString(); +} diff --git a/lib/controller/functions/face_detect.dart b/lib/controller/functions/face_detect.dart new file mode 100755 index 0000000..b0a805f --- /dev/null +++ b/lib/controller/functions/face_detect.dart @@ -0,0 +1,95 @@ +import 'dart:convert'; +import 'dart:io'; +import 'package:sefer_driver/constant/api_key.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:http/http.dart' as http; +import 'package:http/io_client.dart'; + +import '../../constant/links.dart'; +import 'encrypt_decrypt.dart'; +import 'upload_image.dart'; + +Future faceDetector() async { + await ImageController().choosFace(AppLink.uploadEgypt, 'face_detect'); + await Future.delayed(const Duration(seconds: 2)); + + var headers = { + // 'Authorization': 'Basic ${AK.basicCompareFaces}', + 'Authorization': 'Basic hamza:12345678', + 'Content-Type': 'application/json' + }; + + // var request = http.Request('POST', Uri.parse(//Todo + // 'https://face-detect-f6924392c4c7.herokuapp.com/compare_faces')); + + var request = http.Request( + 'POST', Uri.parse('https://mohkh.online:5000/compare_faces')); + + request.body = json.encode({ + "url1": + "${AppLink.seferCairoServer}/card_image/id_front-${(box.read(BoxName.driverID))}.jpg", + "url2": + "https://api.sefer.live/sefer/card_image/face_detect-${(box.read(BoxName.driverID))}.jpg" + }); + print('request.body: ${request.body}'); + request.headers.addAll(headers); + + try { + http.Client client = await createHttpClient(); + http.StreamedResponse response = await client.send(request); + // http.StreamedResponse response = await request.send(); + + if (response.statusCode == 200) { + String result = await response.stream.bytesToString(); + print('result: ${result}'); + return result; + } else { + print('Error: ${response.reasonPhrase}'); + return 'Error: ${response.reasonPhrase}'; + } + } catch (e) { + print('Exception occurred: $e'); + return 'Error: $e'; + } +} + +Future createHttpClient() async { + final SecurityContext securityContext = SecurityContext(); + HttpClient httpClient = HttpClient(context: securityContext); + httpClient.badCertificateCallback = + (X509Certificate cert, String host, int port) => true; // Bypass SSL + return IOClient(httpClient); +} + +Future faceDetector2(String url1, String url2) async { + var headers = { + 'Authorization': 'Basic hamza:12345678', + 'Content-Type': 'application/json' + }; + + var request = http.Request( + 'POST', Uri.parse('https://mohkh.online:5000/compare_faces')); + + request.body = json.encode({"url1": url1, "url2": url2}); + request.headers.addAll(headers); + + try { + http.Client client = await createHttpClient(); // Use custom client + DateTime startTime = DateTime.now(); + http.StreamedResponse response = await client.send(request); + DateTime endTime = DateTime.now(); + Duration duration = endTime.difference(startTime); + if (response.statusCode == 200) { + print(await response.stream.bytesToString()); + print(duration.inSeconds); + + return await response.stream.bytesToString(); + } else { + print(await response.stream.bytesToString()); + return 'Error: ${response.reasonPhrase}'; + } + } catch (e) { + return 'Exception: $e'; + } +} diff --git a/lib/controller/functions/gemeni.dart b/lib/controller/functions/gemeni.dart new file mode 100755 index 0000000..588194e --- /dev/null +++ b/lib/controller/functions/gemeni.dart @@ -0,0 +1,1641 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; +import 'dart:convert'; +import 'package:crypto/crypto.dart'; +import 'package:flutter_contacts/flutter_contacts.dart'; + +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/info.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/auth/captin/login_captin_controller.dart'; +import 'package:sefer_driver/controller/firebase/firbase_messge.dart'; +import 'package:sefer_driver/controller/firebase/local_notification.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/env/env.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/home/Captin/home_captain/home_captin.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:sefer_driver/views/widgets/mydialoug.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:image_cropper/image_cropper.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:http/http.dart' as http; +import 'package:image/image.dart' as img; +import 'package:path_provider/path_provider.dart'; +import 'package:secure_string_operations/secure_string_operations.dart'; + +import '../../constant/api_key.dart'; +import '../../constant/char_map.dart'; +import '../../constant/colors.dart'; +import '../../print.dart'; +import 'encrypt_decrypt.dart'; +import 'tts.dart'; +import 'upload_image.dart'; + +enum LicenseSide { + front, + back, + unknown, +} + +enum DocumentType { + carLicenseFront, + carLicenseBack, + idCardFront, + nonIdCardFront, + nonIdCardBack, + idCardBack, + driverLicense, + unknown, +} + +class AI extends GetxController { + bool approved = false; + bool isDriverSaved = false; + bool isCarSaved = false; + bool isInviteDriverFound = false; + final invitationCodeController = TextEditingController(); + final formKey = GlobalKey(); + bool isTimerComplete = false; + double progressValue = 1.0; + int remainingSeconds = 30; + + void startTimer() { + Timer.periodic(const Duration(seconds: 1), (timer) { + if (remainingSeconds == 0) { + timer.cancel(); + isTimerComplete = true; + update(); // Notify the UI + } else { + remainingSeconds--; + progressValue = remainingSeconds / 30.0; // Update progress + update(); // Notify the UI + } + }); + } + + void resetTimer() { + isTimerComplete = false; + progressValue = 1.0; + remainingSeconds = 40; + update(); // Notify the UI + startTimer(); // Restart the timer + } + + void setApproved() { + approved = true; + update(); + } + + Future updateInvitationCodeFromRegister() async { + var res = await CRUD().post( + link: AppLink.updateDriverInvitationDirectly, + payload: { + "inviterDriverPhone": box.read(BoxName.phoneDriver).toString(), + "driverId": box.read(BoxName.driverID).toString(), + }, + ); + + if (res != 'failure') { + isInviteDriverFound = true; + update(); + // mySnackbarSuccess("Code approved".tr); // Localized success message + box.write(BoxName.isInstall, '1'); + NotificationController().showNotification( + "Code approved".tr, "Code approved".tr, 'tone2', ''); + // Notification text with dynamic token + Get.put(FirebaseMessagesController()).sendNotificationToDriverMAP( + 'You have received a gift token!'.tr, + 'for '.tr + box.read(BoxName.phoneDriver).toString(), + jsonDecode(res)['message'][0]['token'].toString(), + [], + 'tone2', // Type of notification + ); + } else { + // mySnackeBarError( + // "You dont have invitation code".tr); // Localized error message + } + } + + Future updatePassengersInvitation() async { + if (formKey.currentState!.validate()) { + var res = await CRUD().post( + link: AppLink.updatePassengersInvitation, + payload: {"inviteCode": invitationCodeController.text}); + if (res != 'failure') { + isInviteDriverFound = true; + update(); + mySnackbarSuccess("Code approved".tr); + } else { + mySnackeBarError("Code not approved".tr); + } + } + } + + final today = DateTime.now(); + + Future addDriverAndCarEgypt() async { + final today = DateTime.now(); + + // رخصة القيادة + final drvExpiry = DateTime.tryParse(licenceBackSy['expiry_date'] ?? ''); + final drvExpired = drvExpiry != null && drvExpiry.isBefore(today); + + // ÙØ­Øµ السيارة + الضرائب + final inspDate = DateTime.tryParse(vehicleFrontSy['inspection_date'] ?? ''); + final taxExpiry = DateTime.tryParse(vehicleBackSy['tax_expiry'] ?? ''); + final inspExpired = inspDate != null && inspDate.isBefore(today); + final taxExpired = taxExpiry != null && taxExpiry.isBefore(today); + + // تطابق تاريخَي ميلاد الهوية غير المصرية + final birthFront = + DateTime.tryParse(responseNonIdCardFront['birthdate'] ?? ''); + final birthBack = + DateTime.tryParse(responseNonIdCardBack['birthDate'] ?? ''); + final birthMismatch = + (birthFront != null && birthBack != null && birthFront != birthBack); + + /* ـــــــ ⷠتحذيرات المستخدم ـــــــ */ + + if (!isEgypt && birthMismatch) { + await _showWarnDialog( + title: 'Birthdate Mismatch'.tr, + text: 'Birthdate on ID front and back does not match.'.tr, + ); + return; + } + + if (drvExpired) { + await _showWarnDialog( + title: 'Expired Driver’s License'.tr, + text: 'Your driver’s license has expired. Please renew it.'.tr, + ); + return; + } else { + await addDriverEgypt(); + await addRegistrationCarEgypt(); + + if (isCarSaved && isDriverSaved) { + // DeviceController().getDeviceSerialNumber(); + box.write(BoxName.phoneVerified, true); + + Get.find().loginWithGoogleCredential( + box.read(BoxName.driverID).toString(), + box.read(BoxName.emailDriver).toString(), + ); + } + } + } + + String extractDOB(String nationalNumber) { + if (nationalNumber.length != 14) { + throw ArgumentError('National number must be 14 digits long.'); + } + + // Extract the first digit to determine the century + String firstDigit = nationalNumber[0]; + + // Extract year, month, and day parts + String yearPart = nationalNumber.substring(1, 3); + String monthPart = nationalNumber.substring(3, 5); + String dayPart = nationalNumber.substring(5, 7); + + // Determine the year based on the first digit + int yearPrefix; + if (firstDigit == '2') { + yearPrefix = 1900; + } else if (firstDigit == '3') { + yearPrefix = 2000; + } else { + throw ArgumentError('Invalid first digit in national number.'); + } + + // Construct the full year + int year = yearPrefix + int.parse(yearPart); + + // Format the date as YYYY-MM-DD + String dob = + '$year-${monthPart.padLeft(2, '0')}-${dayPart.padLeft(2, '0')}'; + + return dob; + } + + Future _showWarnDialog( + {required String title, required String text}) async { + await Get.defaultDialog( + title: title, + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.warning, size: 48, color: Colors.red), + const SizedBox(height: 16), + Text(text, textAlign: TextAlign.center, style: AppStyle.title), + const SizedBox(height: 16), + IconButton( + icon: const Icon(Icons.volume_up), + onPressed: () async => + await Get.find().speakText(text), + ) + ], + ), + actions: [ + TextButton(onPressed: Get.back, child: const Text('OK')), + ], + ); + } + + String shortHash(String password) { + var bytes = utf8.encode(password); + var digest = sha256.convert(bytes); + return base64UrlEncode(digest.bytes); + } + + Future addDriverEgypt() async { + isLoading = true; + update(); + final loginDriverController = Get.put(LoginDriverController()); + + var pass = loginDriverController.passwordController.text.isEmpty + ? '${box.read(BoxName.emailDriver)}${box.read(BoxName.driverID)}' + : '${loginDriverController.emailController.text.toString()}${box.read(BoxName.driverID)}'; + String hashedPassword = shortHash(pass); + + var payload = { + 'first_name': + (idFrontSy['full_name'].toString().split(' ')[0]) ?? 'Not specified', + 'last_name': + (idFrontSy['full_name'].toString().split(' ')[1]) ?? 'Not specified', + 'email': 'Not specified', + 'phone': box.read(BoxName.phoneDriver)?.toString(), + 'id': box.read(BoxName.driverID)?.toString(), + 'password': hashedPassword.toString(), + 'gender': (idBackSy['gender'].toString()) ?? 'Not specified', + 'license_type': + (licenceBackSy['license_number'].toString()) ?? 'Not specified', + 'national_number': + (licenceFrontSy['national_number'].toString()) ?? 'Not specified', + 'name_arabic': (licenceFrontSy['name_arabic'].toString()), + 'issue_date': licenceBackSy['issue_date']?.toString() ?? 'Not specified', + 'expiry_date': + licenceBackSy['expiry_date']?.toString() ?? 'Not specified', + 'license_categories': + licenceBackSy['license_categories'] ?? 'Not specified', + 'address': (idBackSy['address'].toString()) ?? 'Not specified', + 'licenseIssueDate': + licenceBackSy['issue_date'].toString() ?? 'Not specified', + 'status': 'yet', + 'birthdate': idFrontSy['dob'].toString(), + 'maritalStatus': 'Not specified', + 'site': (idBackSy['address'].toString()) ?? 'Not specified', + 'employmentType': 'Not specified', + }; + Log.print('payload driver: ${payload}'); + try { + var res = await CRUD().post(link: AppLink.signUpCaptin, payload: payload); + + // Check if response is valid JSON + + isLoading = false; + update(); + + if (res['status'] == 'success') { + isDriverSaved = true; + box.write(BoxName.emailDriver, + '${box.read(BoxName.phoneDriver)}${Env.email}'); + Log.print('BoxName.emailDriver: ${box.read(BoxName.emailDriver)}'); + mySnackbarSuccess('Driver data saved successfully'); + } else { + mySnackeBarError('${'Failed to save driver data'.tr}: }'); + } + } catch (e) { + isLoading = false; + update(); + mySnackeBarError( + 'An error occurred while saving driver data'.tr, + ); + } + } + + addCriminalDocuments() async { + var res = await CRUD().post(link: AppLink.addCriminalDocuments, payload: { + "driverId": box.read(BoxName.driverID), + "IssueDate": responseCriminalRecordEgypt['IssueDate'], + "InspectionResult": (responseCriminalRecordEgypt['InspectionResult']), + }); + if (res != 'failure') { + mySnackbarSuccess('uploaded sucssefuly'.tr); + } + } + + Future addRegistrationCarEgypt() async { + try { + isLoading = true; + update(); + var payload = { + 'driverID': box.read(BoxName.driverID), + 'vin': vehicleBackSy['chassis'].toString(), + 'car_plate': (vehicleFrontSy['car_plate'].toString()), + 'make': (vehicleBackSy['make'].toString()), + 'model': (vehicleBackSy['model']), + 'year': vehicleBackSy['year'].toString(), + 'expiration_date': vehicleFrontSy['inspection_date'].toString(), + 'color': vehicleFrontSy['color'], + 'owner': (vehicleFrontSy['owner']), + 'color_hex': vehicleFrontSy['colorHex'].toString(), + 'fuel': vehicleBackSy['fuel'].toString(), + }; + Log.print('payload: ${payload}'); + var res = + await CRUD().post(link: AppLink.addRegisrationCar, payload: payload); + isLoading = false; + update(); + var status = (res); + if (status['status'] == 'success') { + isCarSaved = true; + mySnackbarSuccess(''); + } + } catch (e) {} + } + + final picker = ImagePicker(); + Map responseMap = {}; + Map responseCarLicenseMapJordan = {}; + Map responseBackCarLicenseMap = {}; + Map responseIdCardMap = {}; + Map responseIdCardDriverEgyptBack = {}; + Map responseForComplaint = {}; + Map responseIdCardDriverEgyptFront = {}; + Map responseIdEgyptFront = {}; + Map responseNonIdCardFront = {}; + Map responseNonIdCardBack = {}; + Map responseCriminalRecordEgypt = {}; + Map responseIdEgyptBack = {}; + Map responseIdEgyptDriverLicense = {}; + String? responseIdCardDriverEgypt1; + bool isloading = false; + bool isLoading = false; + bool isEgypt = true; + var image; + CroppedFile? croppedFile; + DateTime now = DateTime.now(); + + changeNationality() { + isEgypt = !isEgypt; + update(); + } + + Future pickImage() async { + final pickedImage = await picker.pickImage(source: ImageSource.gallery); + + if (pickedImage != null) { + image = File(pickedImage.path); + // Crop the image + croppedFile = await ImageCropper().cropImage( + sourcePath: image!.path, + uiSettings: [ + AndroidUiSettings( + toolbarTitle: 'Cropper'.tr, + toolbarColor: AppColor.blueColor, + toolbarWidgetColor: AppColor.yellowColor, + initAspectRatio: CropAspectRatioPreset.original, + lockAspectRatio: false), + IOSUiSettings( + title: 'Cropper'.tr, + ), + ], + ); + // image = croppedFile; + + // Resize the image + final rawImage = + img.decodeImage(File(croppedFile!.path).readAsBytesSync()); + final resizedImage = + img.copyResize(rawImage!, width: 800); // Adjust the width as needed + + final appDir = await getTemporaryDirectory(); + final resizedImagePath = '${appDir.path}/resized_image.jpg'; + + final resizedImageFile = File(resizedImagePath); + resizedImageFile.writeAsBytesSync( + img.encodeJpg(resizedImage)); // Save the resized image as JPEG + + image = resizedImageFile; + update(); + } + } + + DocumentType checkDocumentType(String text) { + // Convert text to lowercase and remove all spaces and new lines + text = text.toLowerCase().replaceAll(RegExp(r'\s+'), ''); + + // Keywords for each document type + final Map> keywords = { + DocumentType.carLicenseBack: ['شاسيه', 'موتور', 'سم٣'], + DocumentType.carLicenseFront: ['وزارةالداخلية', 'رخصةتسيير'], + DocumentType.idCardFront: [ + 'بطاقةتحقيقالشخصية', + 'بطاقة تحقيق الشخصية', + 'تحقيق' + ], + DocumentType.idCardBack: ['البطاقةساريةحتى'], + DocumentType.driverLicense: ['قيادةخاصة', 'خاصه', 'قيادة'], + DocumentType.nonIdCardFront: ['Foreign Residence Card', 'أجنبي', 'جواز'], + DocumentType.nonIdCardBack: [ + 'نوع الإقامة', + 'الإقامة', + 'Cardexpiresbyendofresidencepermit' + ], + }; + + // Check each document type + for (var entry in keywords.entries) { + if (entry.value.any((keyword) => text.contains(keyword))) { + return entry.key; + } + } + + // If no match is found + return DocumentType.unknown; + } + + // تحÙّظ كل استجابة على حدة + Map idFrontSy = {}; + Map idBackSy = {}; + Map licenceFrontSy = {}; + Map licenceBackSy = {}; + Map vehicleFrontSy = {}; + Map vehicleBackSy = {}; + bool isLoadingidFrontSy = false; + bool isLoadingidBackSy = false; + bool isLoadingLicenceFrontSy = false; + bool isLoadingLicenceBackSy = false; + bool isLoadingVehicleFrontSy = false; + bool isLoadingVehicleBackSy = false; + Future sendToAI(String type, {required File imageFile}) async { + final headers = { + 'Authorization': + 'Bearer ${r(box.read(BoxName.jwt)).split(AppInformation.addd)[0]}', + 'X-HMAC-Auth': '${box.read(BoxName.hmac)}', + }; + final driverID = box.read(BoxName.driverID) ?? 'eddfdfdgfd'; + + if (driverID == null) { + MyDialog() + .getDialog("Error".tr, "User not logged in".tr, () => Get.back()); + return; + } + + try { + isloading = true; + update(); + + final uri = Uri.parse(AppLink.uploadImageToAi); // سكربتك الجديد + final request = http.MultipartRequest("POST", uri); + request.headers.addAll(headers); + request.files + .add(await http.MultipartFile.fromPath("image", imageFile.path)); + request.fields['driver_id'] = driverID; + request.fields['type'] = type; + + final response = await request.send(); + final result = await http.Response.fromStream(response); + Log.print('result: ${result.body}'); + + if (result.statusCode == 200) { + final responseData = jsonDecode(result.body); + if (responseData['message'] != null && + responseData['message']['data'] != null) { + // final imageUrl = responseData['message']['image_url']; + final data = responseData['message']['data']; + + switch (type) { + case 'id_front_sy': + idFrontSy = data; + isLoadingidFrontSy = false; + update(); + break; + case 'id_back_sy': + idBackSy = data; + + isLoadingidBackSy = false; + update(); + break; + case 'driving_license_sy_front': + licenceFrontSy = data; + isLoadingLicenceFrontSy = false; + update(); + break; + case 'driving_license_sy_back': + licenceBackSy = data; + isLoadingLicenceBackSy = false; + update(); + break; + case 'vehicle_license_sy_front': + vehicleFrontSy = data; + isLoadingVehicleFrontSy = false; + update(); + break; + case 'vehicle_license_sy_back': + vehicleBackSy = data; + isLoadingVehicleBackSy = false; + update(); + break; + } + + isloading = false; + update(); + } else { + MyDialog().getDialog( + "Error".tr, "AI failed to extract info".tr, () => Get.back()); + } + } else { + MyDialog() + .getDialog("Error".tr, "Upload or AI failed".tr, () => Get.back()); + } + } catch (e) { + isloading = false; + update(); + MyDialog().getDialog("Error".tr, e.toString(), () => Get.back()); + Log.print('e: ${e}'); + } + } + + Future pickAndSendImage(String type) async { + final picker = ImagePicker(); + final pickedImage = await picker.pickImage(source: ImageSource.gallery); + if (pickedImage != null) { + image = File(pickedImage.path); + // Crop the image + croppedFile = await ImageCropper().cropImage( + sourcePath: image!.path, + uiSettings: [ + AndroidUiSettings( + toolbarTitle: 'Cropper'.tr, + toolbarColor: AppColor.accentColor, + toolbarWidgetColor: AppColor.redColor, + initAspectRatio: CropAspectRatioPreset.original, + lockAspectRatio: false), + IOSUiSettings( + title: 'Cropper'.tr, + ), + ], + ); + // image = croppedFile; + + // Resize the image + final rawImage = + img.decodeImage(File(croppedFile!.path).readAsBytesSync()); + final resizedImage = + img.copyResize(rawImage!, width: 800); // Adjust the width as needed + + final appDir = await getTemporaryDirectory(); + final resizedImagePath = '${appDir.path}/resized_image.jpg'; + + final resizedImageFile = File(resizedImagePath); + resizedImageFile.writeAsBytesSync( + img.encodeJpg(resizedImage)); // Save the resized image as JPEG + + image = resizedImageFile; + update(); + + await sendToAI(type, imageFile: File(image.path)); + } + } + + Future allMethodForAI( + String prompt, String linkPHP, String imagePath) async { + isLoading = true; + update(); + + try { + await ImageController().choosImage(linkPHP, imagePath); + + // if (imagePath == 'driver_license') { + // await ImageController().choosFaceFromDriverLicense(linkPHP, 'face'); + // } + + await Future.delayed(const Duration(seconds: 2)); + + var extractedString = + await CRUD().arabicTextExtractByVisionAndAI(imagePath: imagePath); + var json = jsonDecode(extractedString); + // Log.print('extractedString: ${extractedString}'); + var textValues = CRUD().extractTextFromLines(json); + Log.print('textValues: $textValues'); + // Log.print('json: ${json}'); + + DocumentType detectedType = checkDocumentType(textValues); + String expectedDocument = getExpectedDocument(imagePath); + String detectedDocument = getDetectedDocument(detectedType); + + bool isCorrectDocument = (detectedType == getExpectedType(imagePath)); + + if (!isCorrectDocument) { + MyDialog().getDialog('incorrect_document_title'.tr, + '${'expected'.tr}: $expectedDocument\n${'detected'.tr}: $detectedDocument', + () { + Get.back(); + }); + } else { + // Process the correct document + await Get.put(AI()).anthropicAI(textValues, prompt, imagePath); + } + } catch (e) { + MyDialog().getDialog('error'.tr, 'error_processing_document'.tr, () { + Get.back(); + }); + } finally { + isLoading = false; + update(); + } + } + + Future allMethodForAINewCar( + String prompt, String linkPHP, String imagePath, String carID) async { + isLoading = true; + update(); + + try { + await ImageController().choosImageNewCAr(linkPHP, imagePath); + + // if (imagePath == 'driver_license') { + // await ImageController().choosFaceFromDriverLicense(linkPHP, 'face'); + // } + + await Future.delayed(const Duration(seconds: 2)); + + var extractedString = + await CRUD().arabicTextExtractByVisionAndAI(imagePath: imagePath); + var json = jsonDecode(extractedString); + var textValues = CRUD().extractTextFromLines(json); + + DocumentType detectedType = checkDocumentType(textValues); + String expectedDocument = getExpectedDocument(imagePath); + String detectedDocument = getDetectedDocument(detectedType); + + bool isCorrectDocument = (detectedType == getExpectedType(imagePath)); + + if (!isCorrectDocument) { + MyDialog().getDialog('incorrect_document_title'.tr, + '${'expected'.tr}: $expectedDocument\n${'detected'.tr}: $detectedDocument', + () { + Get.back(); + }); + } else { + // Process the correct document + await Get.put(AI()).anthropicAI(textValues, prompt, imagePath); + } + } catch (e) { + MyDialog().getDialog('error'.tr, 'error_processing_document'.tr, () { + Get.back(); + }); + } finally { + isLoading = false; + update(); + } + } + + String getExpectedDocument(String imagePath) { + switch (imagePath) { + case 'car_front': + return 'car_license_front'.tr; + case 'car_back': + return 'car_license_back'.tr; + case 'id_back': + return 'id_card_back'.tr; + case 'id_front': + return 'id_card_front'.tr; + case 'driver_license': + return 'driver_license'.tr; + default: + return 'unknown_document'.tr; + } + } + + DocumentType getExpectedType(String imagePath) { + switch (imagePath) { + case 'car_front': + return DocumentType.carLicenseFront; + case 'car_back': + return DocumentType.carLicenseBack; + case 'id_back': + return DocumentType.idCardBack; + case 'id_front': + return DocumentType.idCardFront; + case 'driver_license': + return DocumentType.driverLicense; + default: + return DocumentType.unknown; + } + } + + String getDetectedDocument(DocumentType type) { + switch (type) { + case DocumentType.carLicenseFront: + return 'car_license_front'.tr; + case DocumentType.carLicenseBack: + return 'car_license_back'.tr; + case DocumentType.idCardFront: + return 'id_card_front'.tr; + case DocumentType.idCardBack: + return 'id_card_back'.tr; + case DocumentType.nonIdCardFront: + return 'non_id_card_front'.tr; + case DocumentType.nonIdCardBack: + return 'non_id_card_back'.tr; + case DocumentType.driverLicense: + return 'driver_license'.tr; + default: + return 'unknown_document'.tr; + } + } + + Future generateContent() async { + await pickImage(); + if (image != null) { + final imageBytes = await image.readAsBytes(); + final imageData = base64Encode(imageBytes); + + var requestBody = jsonEncode({ + 'contents': [ + { + 'parts': [ + { + 'inlineData': { + 'mimeType': 'image/jpeg', + 'data': imageData, + }, + }, + { + 'text': + 'write json for all data as first name ,last name,dob,licenseID,expiration date,issued date asdress class type ,output json type', + }, + ], + }, + ], + 'generationConfig': { + 'temperature': 0.4, + 'topK': 32, + 'topP': 1, + 'maxOutputTokens': 4096, + 'stopSequences': [], + }, + 'safetySettings': [ + { + 'category': 'HARM_CATEGORY_HARASSMENT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_HATE_SPEECH', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_SEXUALLY_EXPLICIT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_DANGEROUS_CONTENT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + ], + }); + + final response = await http.post( + Uri.parse( + 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro-vision:generateContent?key=${AK.geminiApi}'), + headers: {'Content-Type': 'application/json'}, + body: requestBody, + ); + + if (response.statusCode == 200) { + var responseData = jsonDecode(response.body); + // Process the responseData as needed + + var result = + responseData['candidates'][0]['content']['parts'][0]['text']; + RegExp regex = RegExp(r"```json([^`]*)```"); + String? jsonString = + regex.firstMatch(responseData.toString())?.group(1)?.trim(); + + if (jsonString != null) { + // Convert the JSON object to a String + jsonString = jsonEncode(json.decode(jsonString)); + } else {} + + // Rest of your code... + } else {} + } else {} + } + + Future getComplaintDataToAI() async { + var res = await CRUD().get( + link: AppLink.getComplaintAllDataForDriver, + payload: {'driver_id': box.read(BoxName.driverID).toString()}, + ); + if (res != 'failure') { + var d = jsonDecode(res)['message']; + return d; + } else { + return [ + {'data': 'no data'} + ]; + } + } + + Future anthropicAIForComplaint() async { + var dataComplaint = await getComplaintDataToAI(); + var messagesData = [ + { + "role": "user", + "content": [ + { + "type": "text", + "text": "$dataComplaint ${AppInformation.complaintPrompt} " + } + ] + } + ]; + var requestBody = jsonEncode({ + "model": "claude-3-haiku-20240307", + "max_tokens": 1024, + "temperature": 0, + "system": "Json output only without any additional ", + "messages": messagesData, + }); + final response = await http.post( + Uri.parse('https://api.anthropic.com/v1/messages'), + headers: { + 'x-api-key': AK.anthropicAIkeySeferNew, + 'anthropic-version': '2023-06-01', + 'content-type': 'application/json' + }, + body: requestBody, + ); + if (response.statusCode == 200) { + var responseData = jsonDecode(utf8.decode(response.bodyBytes)); + // Process the responseData as needed + + responseForComplaint = jsonDecode(responseData['content'][0]['text']); + } + } + + Future anthropicAI( + String payload, String prompt, String idType) async { + var messagesData = [ + { + "role": "user", + "content": [ + {"type": "text", "text": "$payload $prompt"} + ] + } + ]; + var k = X.r(X.r(X.r(await getAIKey('CLAUDAISEFER'), cn), cC), cs); + var requestBody = jsonEncode({ + "model": "claude-3-haiku-20240307", + "max_tokens": 1024, + "temperature": 0, + "system": "Json output only without any additional ", + "messages": messagesData, + }); + + final response = await http.post( + Uri.parse('https://api.anthropic.com/v1/messages'), + headers: { + 'x-api-key': k, + 'anthropic-version': '2023-06-01', + 'content-type': 'application/json' + }, + body: requestBody, + ); + + if (response.statusCode == 200) { + var responseData = jsonDecode(utf8.decode(response.bodyBytes)); + // Process the responseData as needed + if (idType == 'car_back') { + responseIdCardDriverEgyptBack = + jsonDecode(responseData['content'][0]['text']); + } else if (idType == 'car_front') { + responseIdCardDriverEgyptFront = + jsonDecode(responseData['content'][0]['text']); + } else if (idType == 'id_front') { + responseIdEgyptFront = jsonDecode(responseData['content'][0]['text']); + } else if (idType == 'id_back') { + responseIdEgyptBack = jsonDecode(responseData['content'][0]['text']); + } else if (idType == 'driver_license') { + responseIdEgyptDriverLicense = + jsonDecode(responseData['content'][0]['text']); + } else if (idType == 'criminalRecord') { + responseCriminalRecordEgypt = + jsonDecode(responseData['content'][0]['text']); + } else if (idType == 'non_id_front') { + responseNonIdCardFront = jsonDecode(responseData['content'][0]['text']); + Log.print('responseNonIdCardFront: $responseNonIdCardFront'); + } else if (idType == 'non_id_back') { + responseNonIdCardBack = jsonDecode(responseData['content'][0]['text']); + } + + update(); + return responseData.toString(); + } + return responseIdCardDriverEgyptBack.toString(); + } + + Future geminiAiExtraction(String prompt, payload, String idType) async { + var requestBody = jsonEncode({ + "contents": [ + { + "parts": [ + {"text": "$payload $prompt"} + ] + } + ], + "generationConfig": { + "temperature": 1, + "topK": 64, + "topP": 0.95, + "maxOutputTokens": 8192, + "stopSequences": [] + }, + "safetySettings": [ + { + "category": "HARM_CATEGORY_HARASSMENT", + "threshold": "BLOCK_MEDIUM_AND_ABOVE" + }, + { + "category": "HARM_CATEGORY_HATE_SPEECH", + "threshold": "BLOCK_MEDIUM_AND_ABOVE" + }, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "threshold": "BLOCK_MEDIUM_AND_ABOVE" + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "threshold": "BLOCK_MEDIUM_AND_ABOVE" + } + ] + }); + + final response = await http.post( + Uri.parse( + // 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro-vision:generateContent?key=${AK.geminiApi}'), + // 'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-latest:generateContent?key=${AK.geminiApi}'), + 'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro:generateContent?key=${AK.geminiApi}'), + headers: {'Content-Type': 'application/json'}, + body: requestBody, + ); + + if (response.statusCode == 200) { + var responseData = jsonDecode(response.body); + // Process the responseData as needed + + var result = responseData['candidates'][0]['content']['parts'][0]['text']; + RegExp regex = RegExp(r"```json([^`]*)```"); + String? jsonString = + regex.firstMatch(responseData.toString())?.group(1)?.trim(); + + if (jsonString != null) { + // Convert the JSON object to a String + jsonString = jsonEncode(json.decode(jsonString)); + + if (idType == 'car_back') { + responseIdCardDriverEgyptBack = jsonDecode(jsonString); + } else if (idType == 'car_front') { + responseIdCardDriverEgyptFront = jsonDecode(jsonString); + } else if (idType == 'id_front') { + responseIdEgyptFront = jsonDecode(jsonString); + } else if (idType == 'id_back') { + responseIdEgyptBack = jsonDecode(jsonString); + } else if (idType == 'driver_license') { + responseIdEgyptDriverLicense = jsonDecode(jsonString); + } else if (idType == 'non_id_front') { + responseNonIdCardFront = + jsonDecode(responseData['content'][0]['text']); + } else if (idType == 'non_id_back') { + responseNonIdCardBack = + jsonDecode(responseData['content'][0]['text']); + } + + update(); + } else { + mySnackeBarError("JSON string not found"); + } + + // Rest of your code... + } else {} + } + + Future getDriverLicenseJordanContent() async { + await pickImage(); + isloading = true; + update(); + if (image != null) { + final imageBytes = await image.readAsBytes(); + final imageData = base64Encode(imageBytes); + + var requestBody = jsonEncode({ + 'contents': [ + { + 'parts': [ + { + 'inlineData': { + 'mimeType': 'image/jpeg', + 'data': imageData, + }, + }, + { + 'text': + 'write json for all data as first name ,last name,dob,id ,expiration date,issued date asdress class type,age in years ,output json type in arabic value and stay engish key and make date format like YYYY-MM-DD , for name please extract name in arabic in Name in json plus first_name ', + }, + ], + }, + ], + 'generationConfig': { + 'temperature': 0.4, + 'topK': 32, + 'topP': 1, + 'maxOutputTokens': 4096, + 'stopSequences': [], + }, + 'safetySettings': [ + { + 'category': 'HARM_CATEGORY_HARASSMENT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_HATE_SPEECH', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_SEXUALLY_EXPLICIT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_DANGEROUS_CONTENT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + ], + }); + + final response = await http.post( + Uri.parse( + 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro-vision:generateContent?key=${AK.geminiApi}'), + headers: {'Content-Type': 'application/json'}, + body: requestBody, + ); + isloading = false; + update(); + if (response.statusCode == 200) { + var responseData = jsonDecode(response.body); + // Process the responseData as needed + + var result = + responseData['candidates'][0]['content']['parts'][0]['text']; + RegExp regex = RegExp(r"```json([^`]*)```"); + String? jsonString = + regex.firstMatch(responseData.toString())?.group(1)?.trim(); + + if (jsonString != null) { + // Convert the JSON object to a String + jsonString = jsonEncode(json.decode(jsonString)); + responseMap = jsonDecode(jsonString); + } else {} + + // Rest of your code... + } else {} + } else {} + } + + Future getCarLicenseJordanContent() async { + await pickImage(); + isloading = true; + update(); + if (image != null) { + final imageBytes = await image.readAsBytes(); + final imageData = base64Encode(imageBytes); + + var requestBody = jsonEncode({ + 'contents': [ + { + 'parts': [ + { + 'inlineData': { + 'mimeType': 'image/jpeg', + 'data': imageData, + }, + }, + { + 'text': + '''Extract the following information from the front face of the Jordanian ID card: +Name +National ID number +Gender +Date of birth +Output the extracted information in the following JSON format''', + }, + ], + }, + ], + 'generationConfig': { + 'temperature': 0.4, + 'topK': 32, + 'topP': 1, + 'maxOutputTokens': 4096, + 'stopSequences': [], + }, + 'safetySettings': [ + { + 'category': 'HARM_CATEGORY_HARASSMENT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_HATE_SPEECH', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_SEXUALLY_EXPLICIT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_DANGEROUS_CONTENT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + ], + }); + + final response = await http.post( + Uri.parse( + // 'https://${API_ENDPOINT}/v1/projects/${PROJECT_ID}/locations/${LOCATION_ID}/publishers/google/models/${MODEL_ID}:streamGenerateContent'), + 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro-vision:generateContent?key=${AK.geminiApi}'), + headers: {'Content-Type': 'application/json'}, + body: requestBody, + ); + isloading = false; + update(); + if (response.statusCode == 200) { + var responseData = jsonDecode(response.body); + // Process the responseData as needed + + var result = + responseData['candidates'][0]['content']['parts'][0]['text']; + RegExp regex = RegExp(r"```json([^`]*)```"); + String? jsonString = + regex.firstMatch(responseData.toString())?.group(1)?.trim(); + + if (jsonString != null) { + // Convert the JSON object to a String + jsonString = jsonEncode(json.decode(jsonString)); + responseCarLicenseMapJordan = jsonDecode(jsonString); + } else {} + + // Rest of your code... + } else {} + } else {} + } + + Future jordanID() async { + await pickImage(); + isloading = true; + update(); + if (image != null) { + final imageBytes = await image.readAsBytes(); + final imageData = base64Encode(imageBytes); + + var requestBody = jsonEncode({ + 'contents': [ + { + 'parts': [ + { + 'inlineData': { + 'mimeType': 'image/jpeg', + 'data': imageData, + }, + }, + { + 'text': + '''Extract the following information from the front face of the Jordanian ID card: +Name +National ID number +Gender +Date of birth +Output the extracted information in the following JSON format''', + }, + ], + }, + ], + 'generationConfig': { + 'temperature': 0.4, + 'topK': 32, + 'topP': 1, + 'maxOutputTokens': 4096, + 'stopSequences': [], + }, + 'safetySettings': [ + { + 'category': 'HARM_CATEGORY_HARASSMENT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_HATE_SPEECH', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_SEXUALLY_EXPLICIT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_DANGEROUS_CONTENT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + ], + }); + + final response = await http.post( + Uri.parse( + 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro-vision:generateContent?key=${AK.geminiApi}'), + headers: {'Content-Type': 'application/json'}, + body: requestBody, + ); + isloading = false; + update(); + if (response.statusCode == 200) { + var responseData = jsonDecode(response.body); + // Process the responseData as needed + + var result = + responseData['candidates'][0]['content']['parts'][0]['text']; + RegExp regex = RegExp(r"```json([^`]*)```"); + String? jsonString = + regex.firstMatch(responseData.toString())?.group(1)?.trim(); + + if (jsonString != null) { + // Convert the JSON object to a String + jsonString = jsonEncode(json.decode(jsonString)); + responseCarLicenseMapJordan = jsonDecode(jsonString); + } else {} + + // Rest of your code... + } else {} + } else {} + } + + Future carLicenseJordan() async { + await pickImage(); + isloading = true; + update(); + if (image != null) { + final imageBytes = await image.readAsBytes(); + final imageData = base64Encode(imageBytes); + + var requestBody = jsonEncode({ + 'contents': [ + { + 'parts': [ + { + 'inlineData': { + 'mimeType': 'image/jpeg', + 'data': imageData, + }, + }, + { + 'text': + '''Extract the following information from the front face of the car license card in Jordan: + +* name +* Address +* Vehicle type +* car_kind +* car_color +* Vehicle category +* car_year +* car_plate +* Registration type +* Usage type +* expire_date_of_license + +Output the extracted information in the following JSON formate and make date format like YYYY-MM-DD''', + }, + ], + }, + ], + 'generationConfig': { + 'temperature': 0.4, + 'topK': 32, + 'topP': 1, + 'maxOutputTokens': 4096, + 'stopSequences': [], + }, + 'safetySettings': [ + { + 'category': 'HARM_CATEGORY_HARASSMENT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_HATE_SPEECH', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_SEXUALLY_EXPLICIT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_DANGEROUS_CONTENT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + ], + }); + + final response = await http.post( + Uri.parse( + 'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-vision-latest:generateContent?key=${AK.geminiApi}'), + headers: {'Content-Type': 'application/json'}, + body: requestBody, + ); + isloading = false; + update(); + if (response.statusCode == 200) { + var responseData = jsonDecode(response.body); + // Process the responseData as needed + + var result = + responseData['candidates'][0]['content']['parts'][0]['text']; + RegExp regex = RegExp(r"```json([^`]*)```"); + String? jsonString = + regex.firstMatch(responseData.toString())?.group(1)?.trim(); + + if (jsonString != null) { + // Convert the JSON object to a String + jsonString = jsonEncode(json.decode(jsonString)); + responseCarLicenseMapJordan = jsonDecode(jsonString); + } else {} + + // Rest of your code... + } else {} + } else {} + } + + Future getTextFromCard(String prompt) async { + await pickImage(); + isloading = true; + update(); + if (image != null) { + final imageBytes = await image.readAsBytes(); + final imageData = base64Encode(imageBytes); + + var requestBody = jsonEncode({ + 'contents': [ + { + 'parts': [ + { + 'inlineData': { + 'mimeType': 'image/jpeg', + 'data': imageData, + }, + }, + { + 'text': prompt, + }, + ], + }, + ], + 'generationConfig': { + "temperature": 1, + "topK": 32, + "topP": 0.1, + "maxOutputTokens": 4096, + "stopSequences": [] + }, + 'safetySettings': [ + { + 'category': 'HARM_CATEGORY_HARASSMENT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_HATE_SPEECH', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_SEXUALLY_EXPLICIT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_DANGEROUS_CONTENT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + ], + }); + + final response = await http.post( + Uri.parse( + 'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-vision-latest:generateContent?key=${AK.geminiApi}'), + headers: {'Content-Type': 'application/json'}, + body: requestBody, + ); + isloading = false; + update(); + if (response.statusCode == 200) { + var responseData = jsonDecode(response.body); + // Process the responseData as needed + + var result = + responseData['candidates'][0]['content']['parts'][0]['text']; + RegExp regex = RegExp(r"```json([^`]*)```"); + String? jsonString = + regex.firstMatch(responseData.toString())?.group(1)?.trim(); + + if (jsonString != null) { + // Convert the JSON object to a String + jsonString = jsonEncode(json.decode(jsonString)); + responseBackCarLicenseMap = jsonDecode(jsonString); + } else {} + + // Rest of your code... + } else {} + } else {} + } + + Future generateBackCarLicenseJordanContent() async { + await pickImage(); + isloading = true; + update(); + if (image != null) { + final imageBytes = await image.readAsBytes(); + final imageData = base64Encode(imageBytes); + + var requestBody = jsonEncode({ + 'contents': [ + { + 'parts': [ + { + 'inlineData': { + 'mimeType': 'image/jpeg', + 'data': imageData, + }, + }, + { + 'text': + 'write json output from extracting car license back face for these key ,vin,fuelType,passengerType,curbWeight,insuranceCompany,policyNumber,notes,insuranceType and output it json .dont add data else this image', + }, + ], + }, + ], + 'generationConfig': { + 'temperature': 0.4, + 'topK': 343, + 'topP': 1, + 'maxOutputTokens': 4096, + 'stopSequences': [], + }, + 'safetySettings': [ + { + 'category': 'HARM_CATEGORY_HARASSMENT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_HATE_SPEECH', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_SEXUALLY_EXPLICIT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_DANGEROUS_CONTENT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + ], + }); + + final response = await http.post( + Uri.parse( + 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro-vision:generateContent?key=${AK.geminiApi}'), + headers: {'Content-Type': 'application/json'}, + body: requestBody, + ); + isloading = false; + update(); + if (response.statusCode == 200) { + var responseData = jsonDecode(response.body); + // Process the responseData as needed + + var result = + responseData['candidates'][0]['content']['parts'][0]['text']; + RegExp regex = RegExp(r"```json([^`]*)```"); + String? jsonString = + regex.firstMatch(responseData.toString())?.group(1)?.trim(); + + if (jsonString != null) { + // Convert the JSON object to a String + jsonString = jsonEncode(json.decode(jsonString)); + responseBackCarLicenseMap = jsonDecode(jsonString); + } else {} + + // Rest of your code... + } else {} + } else {} + } + + Future getFromCarRegistration() async { + await pickImage(); + if (image != null) { + final imageBytes = await image.readAsBytes(); + final imageData = base64Encode(imageBytes); + + var requestBody = jsonEncode({ + 'contents': [ + { + 'parts': [ + { + 'inlineData': { + 'mimeType': 'image/jpeg', + 'data': imageData, + }, + }, + { + 'text': + 'write output json from image for[ vin, make, model, year, expiration_date, color, owner, registration_date ],output json type ', + }, + ], + }, + ], + 'generationConfig': { + 'temperature': 0.4, + 'topK': 32, + 'topP': 1, + 'maxOutputTokens': 4096, + 'stopSequences': [], + }, + 'safetySettings': [ + { + 'category': 'HARM_CATEGORY_HARASSMENT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_HATE_SPEECH', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_SEXUALLY_EXPLICIT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + { + 'category': 'HARM_CATEGORY_DANGEROUS_CONTENT', + 'threshold': 'BLOCK_MEDIUM_AND_ABOVE', + }, + ], + }); + + final response = await http.post( + Uri.parse( + 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro-vision:generateContent?key=${AK.geminiApi}'), + headers: {'Content-Type': 'application/json'}, + body: requestBody, + ); + + if (response.statusCode == 200) { + var responseData = jsonDecode(response.body); + // Process the responseData as needed + var result = + responseData['candidates'][0]['content']['parts'][0]['text']; + RegExp regex = RegExp(r"```json([^`]*)```"); + String? jsonString = + regex.firstMatch(responseData.toString())?.group(1)?.trim(); + + if (jsonString != null) { + // Convert the JSON object to a String + jsonString = jsonEncode(json.decode(jsonString)); + } else {} + + // Rest of your code... + } else {} + } else {} + } + + List prompts = []; + getPrompt() async { + var res = await CRUD() + .get(link: AppLink.getPromptDriverDocumentsEgypt, payload: {}); + if (res != 'failure') { + var d = jsonDecode(res)['message']; + prompts = d; + } else {} + } + + getAIKey(String key) async { + var res = + await CRUD().get(link: AppLink.getapiKey, payload: {"keyName": key}); + if (res != 'failure') { + var d = jsonDecode(res)['message']; + return d[key].toString(); + } else {} + } + + @override + void onInit() { + getPrompt(); + super.onInit(); + } +} diff --git a/lib/controller/functions/geolocation.dart b/lib/controller/functions/geolocation.dart new file mode 100755 index 0000000..2e191bf --- /dev/null +++ b/lib/controller/functions/geolocation.dart @@ -0,0 +1,34 @@ +import 'package:geolocator/geolocator.dart'; + +class GeoLocation { + Future getCurrentLocation() async { + bool serviceEnabled; + LocationPermission permission; + + // Check if location services are enabled. + serviceEnabled = await Geolocator.isLocationServiceEnabled(); + if (!serviceEnabled) { + // Location services are not enabled, so we request the user to enable it. + return Future.error('Location services are disabled.'); + } + + permission = await Geolocator.checkPermission(); + if (permission == LocationPermission.denied) { + permission = await Geolocator.requestPermission(); + if (permission == LocationPermission.denied) { + // Permissions are denied, we cannot fetch the location. + return Future.error('Location permissions are denied'); + } + } + + if (permission == LocationPermission.deniedForever) { + // Permissions are denied forever, we cannot request permissions. + return Future.error( + 'Location permissions are permanently denied, we cannot request permissions.'); + } + + // When we reach here, permissions are granted and we can fetch the location. + return await Geolocator.getCurrentPosition( + desiredAccuracy: LocationAccuracy.high); + } +} diff --git a/lib/controller/functions/launch.dart b/lib/controller/functions/launch.dart new file mode 100755 index 0000000..26a7026 --- /dev/null +++ b/lib/controller/functions/launch.dart @@ -0,0 +1,76 @@ +import 'package:url_launcher/url_launcher.dart'; +import 'dart:io'; + +void showInBrowser(String url) async { + if (await canLaunchUrl(Uri.parse(url))) { + launchUrl(Uri.parse(url)); + } else {} +} + +Future makePhoneCall(String phoneNumber) async { + final Uri launchUri = Uri( + scheme: 'tel', + path: phoneNumber, + ); + await launchUrl(launchUri); +} + +void launchCommunication( + String method, String contactInfo, String message) async { + String url; + + if (Platform.isIOS) { + switch (method) { + case 'phone': + url = 'tel:$contactInfo'; + break; + case 'sms': + url = 'sms:$contactInfo?body=${Uri.encodeComponent(message)}'; + break; + case 'whatsapp': + url = + 'https://api.whatsapp.com/send?phone=$contactInfo&text=${Uri.encodeComponent(message)}'; + break; + case 'email': + url = + 'mailto:$contactInfo?subject=Subject&body=${Uri.encodeComponent(message)}'; + break; + default: + return; + } + } else if (Platform.isAndroid) { + switch (method) { + case 'phone': + url = 'tel:$contactInfo'; + break; + case 'sms': + url = 'sms:$contactInfo?body=${Uri.encodeComponent(message)}'; + break; + case 'whatsapp': + // Check if WhatsApp is installed + final bool whatsappInstalled = + await canLaunchUrl(Uri.parse('whatsapp://')); + if (whatsappInstalled) { + url = + 'whatsapp://send?phone=$contactInfo&text=${Uri.encodeComponent(message)}'; + } else { + // Provide an alternative action, such as opening the WhatsApp Web API + url = + 'https://api.whatsapp.com/send?phone=$contactInfo&text=${Uri.encodeComponent(message)}'; + } + break; + case 'email': + url = + 'mailto:$contactInfo?subject=Subject&body=${Uri.encodeComponent(message)}'; + break; + default: + return; + } + } else { + return; + } + + if (await canLaunchUrl(Uri.parse(url))) { + await launchUrl(Uri.parse(url)); + } else {} +} diff --git a/lib/controller/functions/llama_ai.dart b/lib/controller/functions/llama_ai.dart new file mode 100755 index 0000000..972803b --- /dev/null +++ b/lib/controller/functions/llama_ai.dart @@ -0,0 +1,37 @@ +import 'dart:convert'; + +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/controller/functions/gemeni.dart'; + +class LlamaAi { + Future getCarRegistrationData(String input, prompt) async { + Map exrtatDataFinal = {}; + String oneLine = input.replaceAll('\n', ' '); + // var res = await CRUD().getLlama(link: AppLink.gemini, payload: oneLine); + var res = await CRUD() + .getLlama(link: AppLink.llama, payload: oneLine, prompt: prompt); + + var decod = jsonDecode(res.toString()); + // exrtatDataFinal = jsonDecode(extractDataFromJsonString(decod['choices'])); + extractDataFromJsonString(decod['choices'][0]['message']['content']); + return exrtatDataFinal; + } + + String extractDataFromJsonString(String jsonString) { + // Remove any leading or trailing whitespace from the string + jsonString = jsonString.trim(); + + // Extract the JSON substring from the given string + final startIndex = jsonString.indexOf('{'); + final endIndex = jsonString.lastIndexOf('}'); + final jsonSubstring = jsonString.substring(startIndex, endIndex + 1); + + // Parse the JSON substring into a Map + final jsonData = jsonDecode(jsonSubstring); + + // Return the extracted data + + return jsonEncode(jsonData); + } +} diff --git a/lib/controller/functions/location_background_controller.dart b/lib/controller/functions/location_background_controller.dart new file mode 100755 index 0000000..b225bb5 --- /dev/null +++ b/lib/controller/functions/location_background_controller.dart @@ -0,0 +1,54 @@ +// import 'dart:async'; +// import 'package:background_location/background_location.dart'; +// import 'package:get/get.dart'; +// import 'package:permission_handler/permission_handler.dart'; + +// class LocationBackgroundController extends GetxController { +// @override +// void onInit() { +// super.onInit(); +// requestLocationPermission(); +// configureBackgroundLocation(); +// } + +// Future requestLocationPermission() async { +// var status = await Permission.locationAlways.status; +// if (!status.isGranted) { +// await Permission.locationAlways.request(); +// } +// } + +// Future configureBackgroundLocation() async { +// await BackgroundLocation.setAndroidNotification( +// title: 'Location Tracking Active'.tr, +// message: 'Your location is being tracked in the background.'.tr, +// icon: '@mipmap/launcher_icon', +// ); + +// BackgroundLocation.setAndroidConfiguration(3000); +// BackgroundLocation.startLocationService(); +// BackgroundLocation.getLocationUpdates((location) { +// // Handle location updates here +// }); +// } + +// startBackLocation() async { +// Timer.periodic(const Duration(seconds: 3), (timer) { +// getBackgroundLocation(); +// }); +// } + +// getBackgroundLocation() async { +// var status = await Permission.locationAlways.status; +// if (status.isGranted) { +// await BackgroundLocation.startLocationService( +// distanceFilter: 20, forceAndroidLocationManager: true); +// BackgroundLocation.setAndroidConfiguration( +// Duration.microsecondsPerSecond); // Set interval to 5 seconds + +// BackgroundLocation.getLocationUpdates((location1) {}); +// } else { +// await Permission.locationAlways.request(); +// } +// } +// } diff --git a/lib/controller/functions/location_controller.dart b/lib/controller/functions/location_controller.dart new file mode 100755 index 0000000..9423ece --- /dev/null +++ b/lib/controller/functions/location_controller.dart @@ -0,0 +1,230 @@ +import 'dart:async'; +import 'dart:math'; + +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:location/location.dart'; +import 'package:sefer_driver/constant/table_names.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/links.dart'; +import '../../main.dart'; +import '../../print.dart'; +import '../home/captin/home_captain_controller.dart'; +import '../home/payment/captain_wallet_controller.dart'; +import 'crud.dart'; +import 'encrypt_decrypt.dart'; + +class LocationController extends GetxController { + LocationData? _currentLocation; + late Location location = Location(); + bool isLoading = false; + late double heading = 0; + late double previousTime = 0; + late double latitude; + late double totalDistance = 0; + late double longitude; + late DateTime time; + late double speed = 0; + bool isActive = false; + late LatLng myLocation = LatLng(0, 0); + String totalPoints = '0'; + LocationData? get currentLocation => _currentLocation; + Timer? _locationTimer; + + LatLng? _lastSavedPosition; + + @override + void onInit() async { + super.onInit(); + location = Location(); + await location.changeSettings( + accuracy: LocationAccuracy.high, interval: 5000, distanceFilter: 0); + location.enableBackgroundMode(enable: true); + await getLocation(); + await startLocationUpdates(); + + totalPoints = Get.put(CaptainWalletController()).totalPoints.toString(); + isActive = Get.put(HomeCaptainController()).isActive; + } + + String getLocationArea(double latitude, double longitude) { + final locations = box.read(BoxName.locationName) ?? []; + for (final location in locations) { + final locationData = location as Map; + final minLatitude = + double.tryParse(locationData['min_latitude'].toString()) ?? 0.0; + final maxLatitude = + double.tryParse(locationData['max_latitude'].toString()) ?? 0.0; + final minLongitude = + double.tryParse(locationData['min_longitude'].toString()) ?? 0.0; + final maxLongitude = + double.tryParse(locationData['max_longitude'].toString()) ?? 0.0; + + if (latitude >= minLatitude && + latitude <= maxLatitude && + longitude >= minLongitude && + longitude <= maxLongitude) { + box.write(BoxName.serverChosen, (locationData['server_link'])); + return locationData['name']; + } + } + + box.write(BoxName.serverChosen, AppLink.seferCairoServer); + return 'Cairo'; + } + + int _insertCounter = 0; + double? _lastSpeed; + DateTime? _lastSpeedTime; + + Future startLocationUpdates() async { + if (box.read(BoxName.driverID) != null) { + _locationTimer = + Timer.periodic(const Duration(seconds: 5), (timer) async { + try { + totalPoints = + Get.find().totalPoints.toString(); + isActive = Get.find().isActive; + + if (isActive && double.parse(totalPoints) > -300) { + await getLocation(); + if (myLocation.latitude == 0 && myLocation.longitude == 0) return; + + String area = + getLocationArea(myLocation.latitude, myLocation.longitude); + + final payload = { + 'driver_id': box.read(BoxName.driverID).toString(), + 'latitude': myLocation.latitude.toString(), + 'longitude': myLocation.longitude.toString(), + 'heading': heading.toString(), + 'speed': (speed * 3.6).toStringAsFixed(1), + 'distance': totalDistance.toStringAsFixed(2), + 'status': box.read(BoxName.statusDriverLocation) ?? 'off', + }; + + // ✅ تحديث Ù„Ù„Ø³ÙŠØ±ÙØ± + await CRUD().post( + link: + box.read(BoxName.serverChosen) + '/ride/location/update.php', + payload: payload, + ); + + // ✅ تخزين ÙÙŠ SQLite Ùقط إذا الرحلة On + تحرك أكثر من 10 متر + if ((box.read(BoxName.statusDriverLocation) ?? 'off') == 'on') { + if (_lastSavedPosition == null || + _calculateDistanceInMeters(_lastSavedPosition!, myLocation) >= + 10) { + double currentSpeed = speed; // m/s + double? acceleration = _calculateAcceleration(currentSpeed); + + await sql.insertData({ + 'driver_id': box.read(BoxName.driverID).toString(), + 'latitude': myLocation.latitude, + 'longitude': myLocation.longitude, + 'acceleration': acceleration ?? 0.0, + 'created_at': DateTime.now().toIso8601String(), + 'updated_at': DateTime.now().toIso8601String(), + }, TableName.behavior); + + _lastSavedPosition = myLocation; + } + } + + // ✅ إدخال Ù„Ù„Ø³ÙŠØ±ÙØ± كل دقيقة + _insertCounter++; + // Log.print('_insertCounter: ${_insertCounter}'); + if (_insertCounter == 12) { + _insertCounter = 0; + await CRUD().post( + link: box.read(BoxName.serverChosen) + '/ride/location/add.php', + payload: payload, + ); + } + + // ✅ تحديث الكاميرا + Get.find() + .mapHomeCaptainController + ?.animateCamera( + CameraUpdate.newLatLng( + LatLng( + myLocation.latitude, + myLocation.longitude, + ), + ), + ); + } + } catch (e) { + print('Location update error: $e'); + } + }); + } + } + + void stopLocationUpdates() { + _locationTimer?.cancel(); + } + + Future getLocation() async { + bool serviceEnabled = await location.serviceEnabled(); + if (!serviceEnabled) { + serviceEnabled = await location.requestService(); + if (!serviceEnabled) return; + } + + PermissionStatus permissionGranted = await location.hasPermission(); + if (permissionGranted == PermissionStatus.denied) { + permissionGranted = await location.requestPermission(); + if (permissionGranted != PermissionStatus.granted) return; + } + + Future.delayed(Duration(milliseconds: 500), () async { + try { + LocationData _locationData = await location.getLocation(); + if (_locationData.latitude != null && _locationData.longitude != null) { + myLocation = + LatLng(_locationData.latitude!, _locationData.longitude!); + } else { + myLocation = LatLng(0, 0); + } + + speed = _locationData.speed ?? 0; + heading = _locationData.heading ?? 0; + + update(); + } catch (e) { + print("Error getting location: $e"); + } + }); + } + + double _calculateDistanceInMeters(LatLng start, LatLng end) { + const p = 0.017453292519943295; + final a = 0.5 - + cos((end.latitude - start.latitude) * p) / 2 + + cos(start.latitude * p) * + cos(end.latitude * p) * + (1 - cos((end.longitude - start.longitude) * p)) / + 2; + return 12742 * 1000 * asin(sqrt(a)); // meters + } + + double? _calculateAcceleration(double currentSpeed) { + final now = DateTime.now(); + if (_lastSpeed != null && _lastSpeedTime != null) { + final deltaTime = + now.difference(_lastSpeedTime!).inMilliseconds / 1000.0; // seconds + if (deltaTime > 0) { + final acceleration = (currentSpeed - _lastSpeed!) / deltaTime; + _lastSpeed = currentSpeed; + _lastSpeedTime = now; + return double.parse(acceleration.toStringAsFixed(2)); + } + } + + _lastSpeed = currentSpeed; + _lastSpeedTime = now; + return null; + } +} diff --git a/lib/controller/functions/location_permission.dart b/lib/controller/functions/location_permission.dart new file mode 100755 index 0000000..98436f8 --- /dev/null +++ b/lib/controller/functions/location_permission.dart @@ -0,0 +1,60 @@ +import 'package:get/get.dart'; +import 'package:permission_handler/permission_handler.dart'; + +import '../../constant/box_name.dart'; +import '../../main.dart'; +import '../../print.dart'; +import '../../views/widgets/mydialoug.dart'; +import '../auth/captin/login_captin_controller.dart'; + +class LocationPermissions { + // late Location location; + + // Future locationPermissions() async { + // location = Location(); + // var permissionStatus = await location.requestPermission(); + // if (permissionStatus == PermissionStatus.denied) { + // // The user denied the location permission. + // Get.defaultDialog(title: 'GPS Required Allow !.'.tr, middleText: ''); + // return null; + // } + // } +} + +Future getPermissionLocation() async { + final PermissionStatus status = await Permission.locationAlways.status; + if (!await Permission.locationAlways.serviceStatus.isEnabled) { + Log.print('status.isGranted: ${status.isGranted}'); + // box.write(BoxName.locationPermission, 'true'); + await Permission.locationAlways.request(); + Get.put(LoginDriverController()).update(); + MyDialog().getDialog( + 'Enable Location Permission'.tr, // {en:ar} + 'Allowing location access will help us display orders near you. Please enable it now.' + .tr, // {en:ar} + () async { + Get.back(); + box.write(BoxName.locationPermission, 'true'); + await Permission.locationAlways.request(); + }, + ); + } +} + +Future getPermissionLocation1() async { + PermissionStatus status = await Permission.locationWhenInUse.request(); + + if (status.isGranted) { + // After granting when in use, request "always" location permission + status = await Permission.locationAlways.request(); + + if (status.isGranted) { + print("Background location permission granted"); + } else { + print("Background location permission denied"); + } + } else { + print("Location permission denied"); + await openAppSettings(); + } +} diff --git a/lib/controller/functions/log_out.dart b/lib/controller/functions/log_out.dart new file mode 100755 index 0000000..ca286a2 --- /dev/null +++ b/lib/controller/functions/log_out.dart @@ -0,0 +1,161 @@ +import 'dart:io'; + +import 'package:sefer_driver/views/home/on_boarding_page.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/onbording_page.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/my_textField.dart'; + +import '../../constant/style.dart'; +import 'encrypt_decrypt.dart'; + +class LogOutController extends GetxController { + TextEditingController checkTxtController = TextEditingController(); + final formKey = GlobalKey(); + final formKey1 = GlobalKey(); + final emailTextController = TextEditingController(); + + Future deleteMyAccountDriver(String id) async { + await CRUD().post(link: AppLink.removeUser, payload: {'id': id}).then( + (value) => Get.snackbar('Deleted'.tr, 'Your Account is Deleted', + backgroundColor: AppColor.redColor)); + } + + checkBeforeDelete() async { + var res = await CRUD().post( + link: AppLink.deletecaptainAccounr, + payload: {'id': box.read(BoxName.driverID)}); + return res['message'][0]['id']; + } + + deletecaptainAccount() { + Get.defaultDialog( + backgroundColor: AppColor.yellowColor, + title: 'Are you sure to delete your account?'.tr, + middleText: + 'Your data will be erased after 2 weeks\nAnd you will can\'t return to use app after 1 month ', + titleStyle: AppStyle.title, + content: Column( + children: [ + Container( + width: Get.width, + decoration: AppStyle.boxDecoration, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + 'Your data will be erased after 2 weeks\nAnd you will can\'t return to use app after 1 month' + .tr, + style: AppStyle.title.copyWith(color: AppColor.redColor), + ), + ), + ), + const SizedBox( + height: 20, + ), + Form( + key: formKey, + child: SizedBox( + width: Get.width, + child: MyTextForm( + controller: checkTxtController, + label: 'Enter Your First Name'.tr, + hint: 'Enter Your First Name'.tr, + type: TextInputType.name, + ), + )) + ], + ), + confirm: MyElevatedButton( + title: 'Delete'.tr, + onPressed: () async { + if (checkTxtController.text == (box.read(BoxName.nameDriver))) { + // deletecaptainAccount(); + + var id = await checkBeforeDelete(); + deleteMyAccountDriver(id); + } else { + mySnackeBarError('Your Name is Wrong'.tr); + } + })); + } + + Future logOutPassenger() async { + Get.defaultDialog( + title: 'Are you Sure to LogOut?'.tr, + content: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + MyElevatedButton( + title: 'Cancel'.tr, + onPressed: () => Get.back(), + ), + ElevatedButton( + style: ButtonStyle( + backgroundColor: MaterialStateProperty.all(AppColor.redColor), + ), + onPressed: () async { + // box.remove(BoxName.agreeTerms); + await box.erase(); + await storage.deleteAll(); + Get.offAll(OnBoardingPage()); + }, + child: Text( + 'Sign Out'.tr, + style: + AppStyle.title.copyWith(color: AppColor.secondaryColor), + )) + ], + )); + } + + Future logOutCaptain() async { + Get.defaultDialog( + title: 'Are you Sure to LogOut?'.tr, + titleStyle: AppStyle.title, + content: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + MyElevatedButton( + title: 'Cancel'.tr, + onPressed: () => Get.back(), + ), + ElevatedButton( + style: ButtonStyle( + backgroundColor: MaterialStateProperty.all(AppColor.redColor), + ), + onPressed: () async { + // box.remove(BoxName.agreeTerms); + await box.erase(); + await storage.deleteAll(); + Get.offAll(OnBoardingPage()); + }, + child: Text( + 'Sign Out'.tr, + style: + AppStyle.title.copyWith(color: AppColor.secondaryColor), + )) + ], + )); + } + + deletePassengerAccount() async { + if (formKey1.currentState!.validate()) { + if (box.read(BoxName.email).toString() == emailTextController.text) { + await CRUD().post(link: AppLink.passengerRemovedAccountEmail, payload: { + 'email': box.read(BoxName.email), + }); + } else { + mySnackeBarError( + 'Email you inserted is Wrong.'.tr, + ); + } + } + } +} diff --git a/lib/controller/functions/ocr_controller.dart b/lib/controller/functions/ocr_controller.dart new file mode 100755 index 0000000..1245715 --- /dev/null +++ b/lib/controller/functions/ocr_controller.dart @@ -0,0 +1,651 @@ +import 'dart:convert'; +import 'dart:io'; +import 'dart:typed_data'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:http/http.dart' as http; +import 'package:sefer_driver/constant/api_key.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/info.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/constant/table_names.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/links.dart'; +import '../auth/captin/register_captin_controller.dart'; +import 'launch.dart'; + +// +// class TextExtractionController extends GetxController { +// String extractedText = ''; +// bool isloading = false; +// File? _scannedImage; +// // Convert the extracted text to JSON +// // Convert the extracted text to JSON +// String getTextAsJSON(String text) { +// final lines = text.split('\n'); +// final jsonList = lines.map((line) { +// return { +// 'line_text': line, +// 'num_words': line.trim().split(' ').length, +// }; +// }).toList(); +// +// final json = { +// 'lines': jsonList, +// 'num_lines': lines.length, +// }; +// +// return jsonEncode(json); +// } +// +// // Convert the extracted text to blocks by line +// List getTextBlocks(String text) { +// return text.split('\n'); +// } +// +// // Future pickAndExtractText() async { +// // final pickedImage = await ImagePicker().pickImage( +// // source: ImageSource.camera, +// // preferredCameraDevice: CameraDevice.rear, +// // maxHeight: Get.height * .3, +// // maxWidth: Get.width * .8, +// // imageQuality: 99, +// // ); +// // if (pickedImage != null) { +// // isloading = true; +// // update(); +// // final imagePath = pickedImage.path; +// // final languages = [ +// // 'eng', +// // 'ara' +// // ]; // Specify the languages you want to use for text extraction +// +// // try { +// // final text = await FlutterTesseractOcr.extractText(imagePath, +// // language: +// // languages.join('+'), // Combine multiple languages with '+' +// // args: { +// // "psm": "4", +// // "preserve_interword_spaces": "1", +// // // "rectangle": const Rect.fromLTWH(100, 100, 200, 200), +// // } // Additional options if needed +// // ); +// // isloading = false; +// // final jsonText = getTextAsJSON(text); +// // final textBlocks = getTextBlocks(text); +// // update(); +// // extractedText = +// // textBlocks.toString(); // Convert the extracted text to JSON. +// +// // // Print the JSON to the console. +// // update(); +// // } catch (e) { +// // extractedText = ''; +// // } +// // } +// // } +// } + +// class TextMLGoogleRecognizerController extends GetxController { +// @override +// void onInit() { +// scanText(); +// super.onInit(); +// } +// +// // The ImagePicker instance +// final ImagePicker _imagePicker = ImagePicker(); +// +// // The GoogleMlKit TextRecognizer instance +// final TextRecognizer _textRecognizer = TextRecognizer(); +// +// // The scanned text +// String? scannedText; +// String? jsonOutput; +// final List> lines = []; +// +// Map decode = {}; +// +// Future scanText() async { +// // Pick an image from the camera or gallery +// final XFile? image = +// await _imagePicker.pickImage(source: ImageSource.gallery); +// +// // If no image was picked, return +// if (image == null) { +// return; +// } +// +// // Convert the XFile object to an InputImage object +// final InputImage inputImage = InputImage.fromFile(File(image.path)); +// +// // Recognize the text in the image +// final RecognizedText recognizedText = +// await _textRecognizer.processImage(inputImage); +// scannedText = recognizedText.text; +// Map extractedData = {}; +// // Extract the scanned text line by line +// for (var i = 0; i < recognizedText.blocks.length; i++) { +// final block = recognizedText.blocks[i]; +// for (final line in block.lines) { +// final lineText = line.text; +// +// if (lineText.contains('DL')) { +// final dlNumber = lineText.split('DL')[1].trim(); +// extractedData['dl_number'] = dlNumber; +// } +// if (lineText.contains('USA')) { +// final usa = lineText.split('USA')[1].trim(); +// extractedData['USA'] = usa; +// } +// if (lineText.contains('DRIVER LICENSE')) { +// final driverl = lineText; +// extractedData['DRIVER_LICENSE'] = driverl; +// } +// +// if (lineText.contains('EXP')) { +// final expiryDate = lineText.split('EXP')[1].trim(); +// extractedData['expiry_date'] = expiryDate; +// } +// +// if (lineText.contains('DOB')) { +// final dob = lineText.split('DOB')[1].trim(); +// extractedData['dob'] = dob; +// } +// +// if (lineText.contains("LN")) { +// if ((lineText.indexOf("LN") == 0)) { +// final lastName = lineText.split('LN')[1].trim(); +// extractedData['lastName'] = lastName; +// } +// } +// if (lineText.contains("FN")) { +// final firstName = lineText.split('FN')[1].trim(); +// extractedData['firstName'] = firstName; +// } +// if (lineText.contains("RSTR")) { +// final rstr = lineText.split('RSTR')[1].trim(); +// extractedData['rstr'] = rstr; +// } +// if (lineText.contains("CLASS")) { +// final class1 = lineText.split('CLASS')[1].trim(); +// extractedData['class'] = class1; +// } +// if (lineText.contains("END")) { +// final end = lineText.split('END')[1].trim(); +// extractedData['end'] = end; +// } +// if (lineText.contains("DD")) { +// final dd = lineText.split('DD')[1].trim(); +// extractedData['dd'] = dd; +// } +// if (lineText.contains("EYES")) { +// final eyes = lineText.split('EYES')[1].trim(); +// extractedData['eyes'] = eyes; +// } +// if (lineText.contains("SEX")) { +// final parts = lineText.split("SEX ")[1]; +// extractedData['sex'] = parts[0]; +// } +// if (lineText.contains("HAIR")) { +// final hair = lineText.split('HAIR')[1].trim(); +// extractedData['hair'] = hair; +// } +// +// if (lineText.contains('STREET') || lineText.contains(',')) { +// final address = lineText; +// extractedData['address'] = address; +// } +// +// // Repeat this process for other relevant data fields +// } +// } +// +// // Convert the list of lines to a JSON string +// jsonOutput = jsonEncode(extractedData); +// decode = jsonDecode(jsonOutput!); +// +// update(); +// } +// } + +class ScanDocumentsByApi extends GetxController { + bool isLoading = false; + Map responseMap = {}; + final ImagePicker imagePicker = ImagePicker(); + late Uint8List imagePortrait; + late Uint8List imageSignature; + late Uint8List imageDocumentFrontSide; + XFile? image; + XFile? imagePortraitFile; + XFile? imageFace; + late File tempFile; + late String imagePath; + DateTime now = DateTime.now(); + late String name; + late String licenseClass; + late String documentNo; + late String address; + late String stateCode; + late String height; + late String sex; + late String postalCode; + late String dob; + late String expireDate; + + // /////////////////////// + // late CameraController cameraController; + // late List cameras; + // bool isCameraInitialized = false; + // // final TextRecognizer _textRecognizer = TextRecognizer(); + // String? scannedText; + + // Future initializeCamera(int cameraID) async { + // try { + // cameras = await availableCameras(); + // //update(); + // cameraController = CameraController( + // cameras[cameraID], + // ResolutionPreset.medium, + // enableAudio: false, + // ); + // await cameraController.initialize(); + // isCameraInitialized = true; + // update(); + // } catch (e) { + // if (e is CameraException) { + // switch (e.code) { + // case 'CameraAccessDenied': + // Get.defaultDialog( + // title: 'Camera Access Denied.'.tr, + // middleText: '', + // confirm: + // MyElevatedButton(title: 'Open Settings', onPressed: () {}), + // ); + // break; + // default: + // // Handle other errors here. + // break; + // } + // } + // } + // } + + /// + + Future scanDocumentsByApi() async { + // String? visionApi = await storage.read(key: BoxName.visionApi); + // String? visionApi = AK.visionApi; + // Pick an image from the camera or gallery + image = await imagePicker.pickImage(source: ImageSource.camera); // + + // If no image was picked, return + if (image == null) { + return; + } + + isLoading = true; + update(); + var headers = {'X-BLOBR-KEY': AK.visionApi}; + var request = http.MultipartRequest('POST', + Uri.parse('https://api.faceonlive.com/j2y3q25y1b6maif1/api/iddoc')); + request.files.add(await http.MultipartFile.fromPath('image', image!.path)); + request.headers.addAll(headers); + + http.StreamedResponse response = await request.send(); + + if (response.statusCode == 200) { + String responseString = await response.stream.bytesToString(); + responseMap = jsonDecode(responseString); + var ocrData = responseMap['data']['ocr']; + name = ocrData['name'].toString(); + licenseClass = ocrData['dlClass'].toString(); + documentNo = ocrData['documentNumber'].toString(); + address = ocrData['address'].toString(); + height = ocrData['height'].toString(); + postalCode = ocrData['addressPostalCode'].toString(); + sex = ocrData['sex'].toString(); + stateCode = ocrData['addressJurisdictionCode'].toString(); + expireDate = ocrData['dateOfExpiry'].toString(); + dob = ocrData['dateOfBirth'].toString(); + if (responseMap['data'] != null && + responseMap['data']['image'] != null && + responseMap['data']['image']['portrait'] != null) { + imagePortrait = base64Decode(responseMap['data']['image']['portrait']); + String tempPath = Directory.systemTemp.path; + tempFile = File('$tempPath/image.jpg'); + await tempFile.writeAsBytes(imagePortrait); + + imagePath = tempFile.path; + // imagePortraitFile=File(imagePath) ; + update(); + } else { + // Handle error or provide a default value + } + + if (responseMap['data']['image']['signature'] != null) { + imageSignature = + base64Decode(responseMap['data']['image']['signature']); + } else { + imageSignature = imagePortrait; + // Handle error or provide a default value + } + + if (responseMap['data'] != null && + responseMap['data']['image'] != null && + responseMap['data']['image']['documentFrontSide'] != null) { + imageDocumentFrontSide = + base64Decode(responseMap['data']['image']['documentFrontSide']); + } else { + // Handle error or provide a default value + } + + isLoading = false; + update(); + } else {} + } + + late int times; + Future checkMatchFaceApi() async { + sql.getAllData(TableName.faceDetectTimes).then((value) { + if (value.isEmpty || value == null) { + sql.insertData({'faceDetectTimes': 1}, TableName.faceDetectTimes); + sql.getAllData(TableName.faceDetectTimes).then((value) { + times = value[0]['faceDetectTimes']; + update(); + }); + } else { + if (times < 4) { + times++; + matchFaceApi(); + sql.updateData( + {'faceDetectTimes': times}, TableName.faceDetectTimes, 1); + } else { + Get.defaultDialog( + barrierDismissible: false, + title: 'You have finished all times '.tr, + titleStyle: AppStyle.title, + middleText: 'if you want help you can email us here'.tr, + middleTextStyle: AppStyle.title, + cancel: MyElevatedButton( + title: 'Thanks'.tr, + kolor: AppColor.greenColor, + onPressed: () => Get.back(), + ), + confirm: MyElevatedButton( + title: 'Email Us'.tr, + kolor: AppColor.yellowColor, // + onPressed: () { + launchCommunication('email', 'support@mobile-app.store', + '${'Hi'.tr} ${AppInformation.appName}\n${'I cant register in your app in face detection '.tr}'); + Get.back(); + }, + )); + } + } + }); + } + + Map res = {}; + Future matchFaceApi() async { + // String? visionApi = await storage.read(key: BoxName.visionApi); + imageFace = await imagePicker.pickImage( + source: ImageSource.camera, + preferredCameraDevice: CameraDevice.front, + ); + + // If no image was picked, return + if (image == null) { + return; + } + final imageFile = File(imageFace!.path); + // Uint8List imageBytes = await imageFile.readAsBytes(); + var headers = {'X-BLOBR-KEY': AK.visionApi}; + var request = http.MultipartRequest( + 'POST', + Uri.parse( + 'https://api.faceonlive.com/sntzbspfsdupgid1/api/face_compare')); + request.files + .add(await http.MultipartFile.fromPath('image1', imageFile.path)); + request.files.add(await http.MultipartFile.fromPath('image2', imagePath)); + request.headers.addAll(headers); + + http.StreamedResponse response = await request.send(); + + if (response.statusCode == 200) { + res = jsonDecode(await response.stream.bytesToString()); + + update(); + res['data']['result'].toString().contains('No face detected in image') + ? Get.defaultDialog( + barrierDismissible: false, + title: 'No face detected'.tr, + middleText: ''.tr, + titleStyle: AppStyle.title, + confirm: MyElevatedButton( + kolor: AppColor.yellowColor, + title: 'Back'.tr, + onPressed: () { + Get.back(); + }, + )) // + : Get.defaultDialog( + // barrierDismissible: false, + title: 'Image detecting result is '.tr, + titleStyle: AppStyle.title, + content: Column( + children: [ + Text( + res['data']['result'].toString(), + style: res['data']['result'].toString() == 'Different' + ? AppStyle.title.copyWith(color: AppColor.redColor) + : AppStyle.title.copyWith(color: AppColor.greenColor), + ), + res['data']['result'].toString() == 'Different' + ? Text( + '${'Be sure for take accurate images please\nYou have'.tr} $times ${'from 3 times Take Attention'.tr}', + style: AppStyle.title, + ) + : Text( + 'image verified'.tr, + style: AppStyle.title, + ) + ], + ), + confirm: res['data']['result'].toString() == 'Different' + ? MyElevatedButton( + title: 'Back'.tr, + onPressed: () => Get.back(), + kolor: AppColor.redColor, + ) + : MyElevatedButton( + title: 'Next'.tr, + onPressed: () async { + RegisterCaptainController registerCaptainController = + Get.put(RegisterCaptainController()); + + await registerCaptainController.register(); + await registerCaptainController.addLisence(); + await uploadImagePortrate(); + // Get.to(() => CarLicensePage()); + }, + // { + // await uploadImage( + // tempFile, AppLink.uploadImagePortrate); + // Get.to(() => CarLicensePage()); + // }, + kolor: AppColor.greenColor, + )); + } else {} + } + + // Todo upload images and fields + Future uploadImagePortrate() async { + isLoading = true; + update(); + + var request = http.MultipartRequest( + 'POST', + Uri.parse(AppLink.uploadImagePortrate), + ); + + request.files.add( + http.MultipartFile.fromBytes('image', imagePortrait), + ); + + request.headers.addAll({ + "Content-Type": "multipart/form-data", + 'Authorization': + 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}', + }); + request.fields['driverID'] = box.read(BoxName.driverID).toString(); + + var response = await request.send(); + + var responseData = await response.stream.toBytes(); + var responseString = String.fromCharCodes(responseData); + + isLoading = false; + update(); + + // Print the response string + + return responseString; + } + + @override + void onInit() { + // scanDocumentsByApi(); + // initializeCamera(0); + sql.getAllData(TableName.faceDetectTimes).then((value) { + if (value.isEmpty) { + times = 0; + update(); + // sql.insertData({'faceDetectTimes': 1}, TableName.faceDetectTimes); + } else { + times = value[0]['faceDetectTimes']; + } + }); + super.onInit(); + } +} + +// class PassportDataExtractor extends GetxController { +// @override +// void onInit() { +// extractPassportData(); +// super.onInit(); +// } +// +// final ImagePicker _imagePicker = ImagePicker(); +// late final XFile? image; +// final TextRecognizer _textRecognizer = TextRecognizer(); +// +// Future> extractPassportData() async { +// image = await _imagePicker.pickImage(source: ImageSource.gallery); +// update(); +// if (image == null) { +// throw Exception('No image picked'); +// } +// +// final InputImage inputImage = InputImage.fromFile(File(image!.path)); +// final RecognizedText recognisedText = +// await _textRecognizer.processImage(inputImage); +// +// final Map extractedData = {}; +// final List> extractedTextWithCoordinates = []; +// +// for (TextBlock block in recognisedText.blocks) { +// for (TextLine line in block.lines) { +// final String lineText = line.text; +// final Rect lineBoundingBox = line.boundingBox!; +// +// extractedTextWithCoordinates.add({ +// 'text': lineText, +// 'boundingBox': { +// 'left': lineBoundingBox.left, +// 'top': lineBoundingBox.top, +// 'width': lineBoundingBox.width, +// 'height': lineBoundingBox.height, +// }, +// }); +// +// // if (lineText.contains('Passport Number')) { +// // final String passportNumber = +// // lineText.split('Passport Number')[1].trim(); +// // extractedData['passportNumber'] = passportNumber; +// // } +// // if (lineText.contains('Given Names')) { +// // final String givenNames = lineText.split('Given Names')[1].trim(); +// // extractedData['givenNames'] = givenNames; +// // } +// // if (lineText.contains('Surname')) { +// // final String surname = lineText.split('Surname')[1].trim(); +// // extractedData['surname'] = surname; +// // } +// // if (lineText.contains('Nationality')) { +// // final String nationality = lineText.split('Nationality')[1].trim(); +// // extractedData['nationality'] = nationality; +// // } +// // if (lineText.contains('Date of Birth')) { +// // final String dob = lineText.split('Date of Birth')[1].trim(); +// // extractedData['dateOfBirth'] = dob; +// // } +// // Add more field extraction conditions as needed +// } +// } +// +// extractedData['extractedTextWithCoordinates'] = +// extractedTextWithCoordinates; +// return extractedData; +// } +// } +// +// class PassportDataController extends GetxController { +// PassportDataExtractor passportDataExtractor = PassportDataExtractor(); +// List> extractedTextWithCoordinates = []; +// +// Future extractDataAndDrawBoundingBoxes() async { +// try { +// Map extractedData = +// await passportDataExtractor.extractPassportData(); +// extractedTextWithCoordinates = +// extractedData['extractedTextWithCoordinates']; +// update(); // Notify GetX that the state has changed +// } catch (e) { +// } +// } +// } +// +// class BoundingBoxPainter extends CustomPainter { +// final List> boundingBoxes; +// +// BoundingBoxPainter(this.boundingBoxes); +// +// @override +// void paint(Canvas canvas, Size size) { +// final Paint paint = Paint() +// ..color = Colors.red +// ..style = PaintingStyle.stroke +// ..strokeWidth = 2.0; +// +// for (Map boundingBox in boundingBoxes) { +// double left = boundingBox['left']; +// double top = boundingBox['top']; +// double width = boundingBox['width']; +// double height = boundingBox['height']; +// +// Rect rect = Rect.fromLTWH(left, top, width, height); +// canvas.drawRect(rect, paint); +// } +// } +// +// @override +// bool shouldRepaint(covariant CustomPainter oldDelegate) { +// return false; +// } +// } diff --git a/lib/controller/functions/overlay_permisssion.dart b/lib/controller/functions/overlay_permisssion.dart new file mode 100755 index 0000000..7e79057 --- /dev/null +++ b/lib/controller/functions/overlay_permisssion.dart @@ -0,0 +1,114 @@ +import 'dart:io'; + +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/views/widgets/mydialoug.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_confetti/flutter_confetti.dart'; +import 'package:flutter_overlay_window/flutter_overlay_window.dart'; +import 'package:get/get.dart'; +import 'package:location/location.dart'; + +import '../../constant/box_name.dart'; +import '../../main.dart'; +import '../auth/captin/login_captin_controller.dart'; +import '../home/payment/captain_wallet_controller.dart'; + +Future getPermissionOverlay() async { + if (Platform.isAndroid) { + final bool status = await FlutterOverlayWindow.isPermissionGranted(); + if (status == false) { + MyDialog().getDialog( + 'Allow overlay permission'.tr, + 'To display orders instantly, please grant permission to draw over other apps.' + .tr, + () async { + Get.back(); + await FlutterOverlayWindow.requestPermission(); + }, + ); + } + } +} + +Future showDriverGiftClaim(BuildContext context) async { + if (box.read(BoxName.is_claimed).toString() == '0' || + box.read(BoxName.is_claimed) == null) { + MyDialog().getDialog( + 'You have gift 300 L.E'.tr, 'This for new registration'.tr, () async { + var res = await CRUD().post(link: AppLink.updateDriverClaim, payload: { + 'driverId': box.read(BoxName.driverID), + }); + if (res != 'failure') { + Get.find() + .addDriverWallet('new driver', '300', '300'); + Confetti.launch( + context, + options: + const ConfettiOptions(particleCount: 100, spread: 70, y: 0.6), + ); + box.write(BoxName.is_claimed, '1'); + } + Get.back(); + }); + } +} + +Future closeOverlayIfFound() async { + if (Platform.isAndroid) { + bool isOverlayActive = await FlutterOverlayWindow.isActive(); + if (isOverlayActive) { + await FlutterOverlayWindow.closeOverlay(); + } + } +} + +final location = Location(); +Future getLocationPermission() async { + bool serviceEnabled; + PermissionStatus permissionGranted; + + // Check if location services are enabled + serviceEnabled = await location.serviceEnabled(); + if (!serviceEnabled) { + serviceEnabled = await location.requestService(); + if (!serviceEnabled) { + // Location services are still not enabled, handle the error + return; + } + } + + // Check if the app has permission to access location + permissionGranted = await location.hasPermission(); + if (permissionGranted == PermissionStatus.denied) { + permissionGranted = await location.requestPermission(); + if (permissionGranted != PermissionStatus.granted) { + // Location permission is still not granted, handle the error + permissionGranted = await location.requestPermission(); + return; + } + } + if (permissionGranted.toString() == 'PermissionStatus.granted') { + box.write(BoxName.locationPermission, 'true'); + Get.find().update(); + } + // update(); +} + +Future getOverLay(String myListString) async { + bool isOverlayActive = await FlutterOverlayWindow.isActive(); + if (isOverlayActive) { + await FlutterOverlayWindow.closeOverlay(); + } + await FlutterOverlayWindow.showOverlay( + enableDrag: true, + flag: OverlayFlag.focusPointer, + visibility: NotificationVisibility.visibilityPublic, + positionGravity: PositionGravity.auto, + height: 700, + width: WindowSize.matchParent, + startPosition: const OverlayPosition(0, -150), + ); + + await FlutterOverlayWindow.shareData(myListString); +} diff --git a/lib/controller/functions/package_info.dart b/lib/controller/functions/package_info.dart new file mode 100755 index 0000000..b86dfcb --- /dev/null +++ b/lib/controller/functions/package_info.dart @@ -0,0 +1,360 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; +import 'dart:ui'; +import 'package:device_info_plus/device_info_plus.dart'; +import 'package:jailbreak_root_detection/jailbreak_root_detection.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:package_info_plus/package_info_plus.dart'; +import 'package:url_launcher/url_launcher.dart'; +import '../../constant/info.dart'; +import '../../main.dart'; +import 'encrypt_decrypt.dart'; + +Future checkForUpdate(BuildContext context) async { + final packageInfo = await PackageInfo.fromPlatform(); + final currentVersion = packageInfo.buildNumber; + final version = packageInfo.version; + // print('currentVersion is : $currentVersion'); + // Fetch the latest version from your server + String latestVersion = await getPackageInfo(); + box.write(BoxName.packagInfo, version); + + if (latestVersion.isNotEmpty && latestVersion != currentVersion) { + showUpdateDialog(context); + } +} + +Future getPackageInfo() async { + final response = await CRUD().get(link: AppLink.packageInfo, payload: { + "platform": Platform.isAndroid ? 'android' : 'ios', + "appName": AppInformation.appVersion, + }); + + if (response != 'failure') { + return jsonDecode(response)['message'][0]['version']; + } + return ''; +} + +void showUpdateDialog(BuildContext context) { + final String storeUrl = Platform.isAndroid + ? 'https://play.google.com/store/apps/details?id=com.sefer_driver' + : 'https://apps.apple.com/ae/app/sefer-driver/id6502189302'; + + showGeneralDialog( + context: context, + barrierDismissible: false, + barrierColor: Colors.black.withOpacity(0.5), + pageBuilder: (_, __, ___) { + return BackdropFilter( + filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), + child: Center( + child: AlertDialog( + // Using AlertDialog for a more Material Design look + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(16)), // More rounded corners + elevation: 4, // Add a bit more elevation + contentPadding: EdgeInsets.zero, // Remove default content padding + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.only(top: 20.0), + child: Image.asset( + 'assets/images/logo.png', + height: 72, // Slightly larger logo + width: 72, + ), + ), + const SizedBox(height: 16), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 24.0), + child: Text( + 'Update Available'.tr, + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.titleLarge?.copyWith( + // Use theme's title style + fontWeight: FontWeight.bold, + ), + ), + ), + Padding( + padding: const EdgeInsets.all(24.0), + child: Text( + 'A new version of the app is available. Please update to the latest version.' + .tr, // More encouraging message + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.bodyMedium?.copyWith( + // Use theme's body style + color: Colors.black87, + ), + ), + ), + const Divider(height: 0), + Row( + children: [ + Expanded( + child: TextButton( + // Using TextButton for "Cancel" + onPressed: () => Navigator.pop(context), + style: TextButton.styleFrom( + foregroundColor: Colors.grey, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(16), + ), + ), + ), + child: Text('Cancel'.tr), + ), + ), + const SizedBox( + height: 48, + child: VerticalDivider(width: 0), // Using VerticalDivider + ), + Expanded( + child: ElevatedButton( + // Using ElevatedButton for "Update" + onPressed: () async { + if (await canLaunchUrl(Uri.parse(storeUrl))) { + await launchUrl(Uri.parse(storeUrl)); + } + if (context.mounted) Navigator.pop(context); + }, + style: ElevatedButton.styleFrom( + backgroundColor: AppColor + .primaryColor, // Use theme's primary color + foregroundColor: Theme.of(context) + .colorScheme + .onPrimary, // Use theme's onPrimary color + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + bottomRight: Radius.circular(16), + ), + ), + ), + child: Text('Update'.tr), + ), + ), + ], + ), + ], + ), + ), + ), + ); + }, + transitionBuilder: (_, animation, __, child) { + return ScaleTransition( + scale: CurvedAnimation( + parent: animation, + curve: Curves.easeOutCubic, // More natural curve + ), + child: child, + ); + }, + ); +} + +class DeviceHelper { + static Future getDeviceFingerprint() async { + final DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin(); + var deviceData; + + try { + if (Platform.isAndroid) { + // Fetch Android-specific device information + AndroidDeviceInfo androidInfo = await deviceInfoPlugin.androidInfo; + deviceData = androidInfo.toMap(); // Convert to a map for easier access + // Log.print('deviceData: ${jsonEncode(deviceData)}'); + } else if (Platform.isIOS) { + // Fetch iOS-specific device information + IosDeviceInfo iosInfo = await deviceInfoPlugin.iosInfo; + deviceData = iosInfo.toMap(); // Convert to a map for easier access + } else { + throw UnsupportedError('Unsupported platform'); + } + + // Extract relevant device information + final String deviceId = Platform.isAndroid + ? deviceData['androidId'] ?? deviceData['serialNumber'] ?? 'unknown' + : deviceData['identifierForVendor'] ?? 'unknown'; + + final String deviceModel = deviceData['model'] ?? 'unknown'; + final String osVersion = Platform.isAndroid + ? deviceData['version']['release'] ?? 'unknown' + : deviceData['systemVersion'] ?? 'unknown'; + + // Log the extracted information + + // Generate and return the encrypted fingerprint + final String fingerprint = '${deviceId}_${deviceModel}_$osVersion'; + // print(EncryptionHelper.instance.encryptData(fingerprint)); + return (fingerprint); + } catch (e) { + throw Exception('Failed to generate device fingerprint'); + } + } +} + +class SecurityHelper { + /// Performs security checks and handles potential risks + static Future performSecurityChecks() async { + bool isNotTrust = false; + bool isJailBroken = false; + bool isRealDevice = true; + bool isOnExternalStorage = false; + bool checkForIssues = false; + bool isDevMode = false; + bool isTampered = false; + String bundleId = ""; + + try { + isNotTrust = await JailbreakRootDetection.instance.isNotTrust; + isJailBroken = await JailbreakRootDetection.instance.isJailBroken; + isRealDevice = await JailbreakRootDetection.instance.isRealDevice; + isOnExternalStorage = + await JailbreakRootDetection.instance.isOnExternalStorage; + + List issues = + await JailbreakRootDetection.instance.checkForIssues; + checkForIssues = issues.isNotEmpty; + + isDevMode = await JailbreakRootDetection.instance.isDevMode; + + // Get Bundle ID + PackageInfo packageInfo = await PackageInfo.fromPlatform(); + bundleId = packageInfo.packageName; + if (bundleId.isNotEmpty) { + // Pass the CORRECT bundle ID to isTampered + isTampered = await JailbreakRootDetection.instance.isTampered(bundleId); + } + } catch (e) { + debugPrint("Error during security checks: $e"); + // Consider handling specific exceptions, not just general errors. + } + + // Save values to storage (using GetStorage) + await box.write('isNotTrust', isNotTrust); // Use await for write operations + await box.write('isTampered', isTampered); // Use await + await box.write('isJailBroken', isJailBroken); // Use await + + // debugPrint("Security Check Results:"); + // debugPrint("isNotTrust: $isNotTrust"); + // debugPrint("isJailBroken: $isJailBroken"); + // debugPrint("isRealDevice: $isRealDevice"); + // debugPrint("isOnExternalStorage: $isOnExternalStorage"); + // debugPrint("checkForIssues: $checkForIssues"); + // debugPrint("isDevMode: $isDevMode"); + // debugPrint("isTampered: $isTampered"); + // debugPrint("Bundle ID: $bundleId"); // Print the bundle ID + + // Check for security risks and potentially show a warning + if (isJailBroken || isRealDevice == false || isTampered) { + // print("security_warning".tr); //using easy_localization + // Use a more robust approach to show a warning, like a dialog: + _showSecurityWarning(); + } + } + + /// Deletes all app data + static Future clearAllData() async { + //await storage.deleteAll(); // What's 'storage'? Be specific. Likely GetStorage as well. + await box.erase(); // Clear GetStorage data + exit(0); // This will terminate the app. Be VERY careful with this. + } + + // static void _showSecurityWarning() { + // // Show a dialog, navigate to an error screen, etc. + // // Example using Get.dialog (if you use GetX): + // + // Get.dialog( + // AlertDialog( + // title: Text("Security Warning".tr), // Or use localized string + // content: Text( + // "Potential security risks detected. The application may not function correctly." + // .tr), //Or use localized string + // actions: [ + // TextButton( + // onPressed: () async { + // await storage.deleteAll(); + // await box.erase(); + // Get.back(); // Close the dialog + // // Or, if you really must, exit the app (but give the user a chance!) + // exit(0); + // }, + // child: Text("OK"), // Or use a localized string + // ), + // ], + // ), + // barrierDismissible: false, // Prevent closing by tapping outside + // ); + // } + static void _showSecurityWarning() { + // Use an RxInt to track the remaining seconds. This is the KEY! + RxInt secondsRemaining = 10.obs; + + Get.dialog( + CupertinoAlertDialog( + title: Text("Security Warning".tr), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Obx(() => Text( + "Potential security risks detected. The application will close in @seconds seconds." + .trParams({ + // Use trParams for placeholders + 'seconds': secondsRemaining.value.toString(), + }), + // Wrap the Text widget in Obx + )), + SizedBox(height: 24), // More spacing before the progress bar + Obx(() => SizedBox( + width: double.infinity, // Make progress bar full width + child: CupertinoActivityIndicator( + // in case of loading + radius: 15, + animating: true, + ))), + SizedBox(height: 8), + Obx(() => ClipRRect( + borderRadius: BorderRadius.circular(8), // Rounded corners + child: LinearProgressIndicator( + value: secondsRemaining.value / 10, + backgroundColor: Colors.grey.shade300, // Lighter background + valueColor: AlwaysStoppedAnimation( + CupertinoColors.systemRed), // iOS-style red + minHeight: 8, // Slightly thicker progress bar + ), + )), + ], + ), + ), + barrierDismissible: false, + ); + + Timer.periodic(Duration(seconds: 1), (timer) { + secondsRemaining.value--; + if (secondsRemaining.value <= 0) { + timer.cancel(); + // Get.back(); + _clearDataAndExit(); + } + }); + } + + static Future _clearDataAndExit() async { + await storage.deleteAll(); + await box.erase(); + exit(0); // Exit the app + print('exit'); + } +} diff --git a/lib/controller/functions/remove_account.dart b/lib/controller/functions/remove_account.dart new file mode 100755 index 0000000..aaeeabf --- /dev/null +++ b/lib/controller/functions/remove_account.dart @@ -0,0 +1,8 @@ +// import 'package:ride/controller/functions/crud.dart'; + +// class RemoveAccount { + +// void removeAccount()async{ +// var res=await CRUD().post(link: link) +// } +// } \ No newline at end of file diff --git a/lib/controller/functions/scan_id_card.dart b/lib/controller/functions/scan_id_card.dart new file mode 100755 index 0000000..b0e6336 --- /dev/null +++ b/lib/controller/functions/scan_id_card.dart @@ -0,0 +1,25 @@ +// import 'package:credit_card_scanner/credit_card_scanner.dart'; +// import 'package:get/get.dart'; +// +// class ScanIdCard extends GetxController { +// CardDetails? _cardDetails; +// CardScanOptions scanOptions = const CardScanOptions( +// scanCardHolderName: true, +// enableDebugLogs: true, +// validCardsToScanBeforeFinishingScan: 5, +// possibleCardHolderNamePositions: [ +// CardHolderNameScanPosition.aboveCardNumber, +// ], +// ); +// +// Future scanCard() async { +// final CardDetails? cardDetails = +// await CardScanner.scanCard(scanOptions: scanOptions); +// if (cardDetails == null) { +// return; +// } +// +// _cardDetails = cardDetails; +// update(); +// } +// } diff --git a/lib/controller/functions/secure_storage.dart b/lib/controller/functions/secure_storage.dart new file mode 100755 index 0000000..2a383e6 --- /dev/null +++ b/lib/controller/functions/secure_storage.dart @@ -0,0 +1,88 @@ +import 'dart:convert'; + +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:jwt_decoder/jwt_decoder.dart'; +import 'package:secure_string_operations/secure_string_operations.dart'; +import 'package:sefer_driver/controller/auth/captin/login_captin_controller.dart'; +import 'package:sefer_driver/controller/functions/encrypt_decrypt.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/char_map.dart'; +import '../../constant/info.dart'; +import '../../constant/links.dart'; +import '../../main.dart'; +import '../../print.dart'; +import 'crud.dart'; + +class SecureStorage { + final FlutterSecureStorage _storage = const FlutterSecureStorage(); + + void saveData(String key, value) async { + await _storage.write(key: key, value: value); + } + + Future readData(String boxName) async { + final String? value = await _storage.read(key: boxName); + return value; + } +} + +const List keysToFetch = [ + 'serverPHP', + 'seferAlexandriaServer', + 'seferPaymentServer', + 'seferCairoServer', + 'seferGizaServer', +]; + +class AppInitializer { + List> links = []; + + Future initializeApp() async { + if (box.read(BoxName.jwt) == null) { + await LoginDriverController().getJWT(); + } else { + bool isTokenExpired = JwtDecoder.isExpired(X + .r(X.r(X.r(box.read(BoxName.jwt), cn), cC), cs) + .toString() + .split(AppInformation.addd)[0]); + if (isTokenExpired) { + await LoginDriverController().getJWT(); + } + } + + // await getKey(); + } + + Future getAIKey(String key1) async { + var res = + await CRUD().get(link: AppLink.getapiKey, payload: {"keyName": key1}); + + if (res != 'failure') { + var d = jsonDecode(res)['message']; + final rawValue = d[key1].toString(); + + // ✅ اكتبها ÙÙŠ storage + await storage.write(key: key1, value: rawValue); + + await Future.delayed(Duration.zero); + } + } + + Future getKey() async { + try { + var res = + await CRUD().get(link: AppLink.getLocationAreaLinks, payload: {}); + if (res != 'failure') { + links = List>.from(jsonDecode(res)['message']); + + await box.write(BoxName.locationName, links); + await box.write(BoxName.basicLink, (links[0]['server_link'])); + await box.write(links[2]['name'], (links[2]['server_link'])); + await box.write(links[1]['name'], (links[3]['server_link'])); + await box.write(links[3]['name'], (links[1]['server_link'])); + await box.write(BoxName.paymentLink, (links[4]['server_link'])); + } + } catch (e) {} + } +} diff --git a/lib/controller/functions/security_checks.dart b/lib/controller/functions/security_checks.dart new file mode 100755 index 0000000..cc8c0d1 --- /dev/null +++ b/lib/controller/functions/security_checks.dart @@ -0,0 +1,46 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; + +class SecurityChecks { + static const platform = MethodChannel( + 'com.intaleq_driver/security'); // Choose a unique channel name + + static Future isDeviceCompromised() async { + try { + final bool result = await platform + .invokeMethod('isNativeRooted'); // Invoke the native method + return result; + } on PlatformException catch (e) { + print("Failed to check security status: ${e.message}"); + return true; // Treat platform errors as a compromised device (for safety) + } + } + + static isDeviceRootedFromNative(BuildContext context) async { + bool compromised = await isDeviceCompromised(); + if (compromised) { + showDialog( + barrierDismissible: false, + context: context, + builder: (context) => AlertDialog( + title: Text("Security Warning".tr), + content: Text( + "Your device appears to be compromised. The app will now close." + .tr), + actions: [ + TextButton( + onPressed: () { + SystemNavigator.pop(); // Close the app + }, + child: Text("OK"), + ), + ], + ), + ); + } else { + // Continue with normal app flow + print("Device is secure."); + } + } +} diff --git a/lib/controller/functions/sms_egypt_controller.dart b/lib/controller/functions/sms_egypt_controller.dart new file mode 100755 index 0000000..b85c30e --- /dev/null +++ b/lib/controller/functions/sms_egypt_controller.dart @@ -0,0 +1,104 @@ +import 'dart:convert'; + +import 'package:sefer_driver/constant/api_key.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/info.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/auth/captin/register_captin_controller.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:get/get.dart'; +import 'package:http/http.dart' as http; + +import '../auth/captin/login_captin_controller.dart'; +import 'encrypt_decrypt.dart'; + +class SmsEgyptController extends GetxController { + var headers = {'Content-Type': 'application/json'}; + + Future getSender() async { + var res = await CRUD().get(link: AppLink.getSender, payload: {}); + if (res != 'failure') { + var d = jsonDecode(res)['message'][0]['senderId'].toString(); + return d; + } else { + return "Sefer Egy"; + } + } + + Future sendSmsEgypt(String phone) async { + String sender = await getSender(); + var body = jsonEncode({"receiver": "2$phone"}); + + var res = await http.post( + Uri.parse(AppLink.sendSms), + body: body, + headers: headers, + ); + + if (jsonDecode(res.body)['message'].toString() != "Success") { + await CRUD().post(link: AppLink.updatePhoneInvalidSMS, payload: { + "phone_number": + ('+2${Get.find().phoneController.text}') + }); + box.write(BoxName.phoneDriver, + ('+2${Get.find().phoneController.text}')); + box.write(BoxName.phoneVerified, '1'); + + await Get.put(LoginDriverController()).loginWithGoogleCredential( + box.read(BoxName.driverID).toString(), + (box.read(BoxName.emailDriver).toString()), + ); + } else { + Get.defaultDialog( + title: 'You will receive code in sms message'.tr, + middleText: '', + confirm: MyElevatedButton( + title: 'OK'.tr, + onPressed: () { + Get.back(); + })); + } + } + + Future checkCredit(String phone, otp) async { + var res = await http.post( + Uri.parse(AppLink.checkCredit), + body: { + "username": AppInformation.appName, + "password": AK.smsPasswordEgypt, + }, + headers: headers, + ); + } + + Future sendSmsWithValidaty(String phone, otp) async { + var res = await http.post( + Uri.parse(AppLink.checkCredit), + body: { + "username": AppInformation.appName, + "password": AK.smsPasswordEgypt, + "message": "This is an example SMS message.", + "language": box.read(BoxName.lang) == 'en' ? "e" : 'r', + "sender": "Sefer", //"Kazumi", // todo add sefer sender name + "receiver": "2$phone", + "validity": "10", + "StartTime": DateTime.now().toString() // "1/1/2024 10:00:00" + }, + headers: headers, + ); + } + + Future sendSmsStatus(String smsid) async { + var res = await http.post( + Uri.parse(AppLink.checkCredit), + body: { + "username": AppInformation.appName, + "password": AK.smsPasswordEgypt, + "smsid": smsid //"00b77dfc-5b8f-474d-9def-9f0158b70f98" + }, + headers: headers, + ); + } +} diff --git a/lib/controller/functions/toast.dart b/lib/controller/functions/toast.dart new file mode 100755 index 0000000..de22f81 --- /dev/null +++ b/lib/controller/functions/toast.dart @@ -0,0 +1,35 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/style.dart'; + +class Toast { + static void show(BuildContext context, String message, Color color) { + final snackBar = SnackBar( + clipBehavior: Clip.antiAliasWithSaveLayer, + backgroundColor: color, + elevation: 3, + content: Text( + message, + style: AppStyle.title.copyWith(color: AppColor.secondaryColor), + ), + behavior: SnackBarBehavior.floating, + animation: const AlwaysStoppedAnimation(1.0), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), // Custom border radius + ), + width: Get.width * .8, + // shape: const StadiumBorder( + // side: BorderSide( + // color: AppColor.secondaryColor, + // width: 1.0, + // style: BorderStyle.solid, + // )), + duration: const Duration(seconds: 2), + ); + + ScaffoldMessenger.of(context).showSnackBar( + snackBar, + ); + } +} diff --git a/lib/controller/functions/tts.dart b/lib/controller/functions/tts.dart new file mode 100755 index 0000000..a39050c --- /dev/null +++ b/lib/controller/functions/tts.dart @@ -0,0 +1,52 @@ +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_tts/flutter_tts.dart'; +import 'package:get/get.dart'; + +class TextToSpeechController extends GetxController { + final flutterTts = FlutterTts(); + bool isComplete = false; + // Initialize TTS in initState + @override + void onInit() { + super.onInit(); + initTts(); + } + + // Dispose of TTS when controller is closed + @override + void onClose() { + super.onClose(); + flutterTts.completionHandler; + } + + // Function to initialize TTS engine + Future initTts() async { + String? lang = + WidgetsBinding.instance.platformDispatcher.locale.countryCode; + await flutterTts + .setLanguage(box.read(BoxName.lang).toString()); //'en-US' Set language + // await flutterTts.setLanguage('ar-SA'); //'en-US' Set language + // await flutterTts.setLanguage(lang!); //'en-US' Set language + await flutterTts.setSpeechRate(0.5); // Adjust speech rate + await flutterTts.setVolume(1.0); // Set volume + } + + // Function to speak the given text + Future speakText(String text) async { + try { + await flutterTts.awaitSpeakCompletion(true); + var result = await flutterTts.speak(text); + if (result == 1) { + // TTS operation has started + // You can perform additional operations here, if needed + isComplete = true; + update(); + } + } catch (error) { + mySnackeBarError('Failed to speak text: $error'); + } + } +} diff --git a/lib/controller/functions/twilio_service.dart b/lib/controller/functions/twilio_service.dart new file mode 100755 index 0000000..34259e8 --- /dev/null +++ b/lib/controller/functions/twilio_service.dart @@ -0,0 +1,22 @@ +// import 'package:ride/constant/credential.dart'; +// import 'package:twilio_flutter/twilio_flutter.dart'; +// +// class TwilioSMS { +// TwilioFlutter twilioFlutter = TwilioFlutter( +// accountSid: AppCredintials.accountSIDTwillo, +// authToken: AppCredintials.authTokenTwillo, +// twilioNumber: '+962 7 9858 3052'); +// +// Future sendSMS({ +// required String recipientPhoneNumber, +// required String message, +// }) async { +// try { +// await twilioFlutter.sendSMS( +// toNumber: recipientPhoneNumber, +// messageBody: message, +// ); +// } catch (e) { +// } +// } +// } diff --git a/lib/controller/functions/upload_image.dart b/lib/controller/functions/upload_image.dart new file mode 100755 index 0000000..35b13e5 --- /dev/null +++ b/lib/controller/functions/upload_image.dart @@ -0,0 +1,552 @@ +import 'dart:convert'; +import 'dart:io'; +import 'package:sefer_driver/constant/api_key.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:get/get.dart'; +import 'package:http/http.dart' as http; +import 'package:image_cropper/image_cropper.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:path/path.dart'; +import 'package:image/image.dart' as img; + +import 'package:flutter_image_compress/flutter_image_compress.dart'; +import 'package:path_provider/path_provider.dart' as path_provider; + +import '../../constant/box_name.dart'; +import '../../constant/colors.dart'; +import '../../main.dart'; +import '../../print.dart'; +import 'encrypt_decrypt.dart'; + +class ImageController extends GetxController { + File? myImage; + bool isloading = false; + CroppedFile? croppedFile; + final picker = ImagePicker(); + var image; + + Future detectAndCropDocument(File imageFile) async { + img.Image? image = img.decodeImage(await imageFile.readAsBytes()); + if (image == null) throw Exception('Unable to decode image'); + + int left = image.width, top = image.height, right = 0, bottom = 0; + + // Threshold for considering a pixel as part of the document (adjust as needed) + const int threshold = 240; + + for (int y = 0; y < image.height; y++) { + for (int x = 0; x < image.width; x++) { + final pixel = image.getPixel(x, y); + final luminance = img.getLuminance(pixel); + + if (luminance < threshold) { + left = x < left ? x : left; + top = y < top ? y : top; + right = x > right ? x : right; + bottom = y > bottom ? y : bottom; + } + } + } + + // Add a small padding + left = (left - 5).clamp(0, image.width); + top = (top - 5).clamp(0, image.height); + right = (right + 5).clamp(0, image.width); + bottom = (bottom + 5).clamp(0, image.height); + + return img.copyCrop(image, + x: left, y: top, width: right - left, height: bottom - top); + } + + Future rotateImageIfNeeded(File imageFile) async { + img.Image croppedDoc = await detectAndCropDocument(imageFile); + + // Check if the document is in portrait orientation + bool isPortrait = croppedDoc.height > croppedDoc.width; + + img.Image processedImage; + if (isPortrait) { + // Rotate the image by 90 degrees clockwise + processedImage = img.copyRotate(croppedDoc, angle: 90); + } else { + processedImage = croppedDoc; + } + + // Get temporary directory + final tempDir = await path_provider.getTemporaryDirectory(); + final tempPath = tempDir.path; + + // Create the processed image file + File processedFile = File('$tempPath/processed_image.jpg'); + await processedFile.writeAsBytes(img.encodeJpg(processedImage)); + + return processedFile; + } + + Future rotateImage(File imageFile) async { + // Read the image file + img.Image? image = img.decodeImage(await imageFile.readAsBytes()); + + if (image == null) return imageFile; + + // Rotate the image by 90 degrees clockwise + img.Image rotatedImage = img.copyRotate(image, angle: 90); + + // Get temporary directory + final tempDir = await path_provider.getTemporaryDirectory(); + final tempPath = tempDir.path; + + // Create the rotated image file + File rotatedFile = File('$tempPath/rotated_image.jpg'); + await rotatedFile.writeAsBytes(img.encodeJpg(rotatedImage)); + + return rotatedFile; + } + + choosImage(String link, String imageType) async { + try { + final pickedImage = await picker.pickImage( + source: ImageSource.camera, + preferredCameraDevice: CameraDevice.rear, + ); + + if (pickedImage == null) return; + + image = File(pickedImage.path); + + croppedFile = await ImageCropper().cropImage( + sourcePath: image!.path, + uiSettings: [ + AndroidUiSettings( + toolbarTitle: 'Cropper'.tr, + toolbarColor: AppColor.blueColor, + toolbarWidgetColor: AppColor.yellowColor, + initAspectRatio: CropAspectRatioPreset.original, + lockAspectRatio: false, + ), + IOSUiSettings( + title: 'Cropper'.tr, + ), + ], + ); + + if (croppedFile == null) return; + + myImage = File(croppedFile!.path); + isloading = true; + update(); + + // Rotate the compressed image + File processedImage = await rotateImageIfNeeded(File(croppedFile!.path)); + File compressedImage = await compressImage(processedImage); + + print('link =$link'); + // Log.print('link: ${link}'); +//n8u22456 + await uploadImage( + compressedImage, + { + 'driverID': + box.read(BoxName.driverID) ?? box.read(BoxName.passengerID), + 'imageType': imageType, + }, + link, + ); + } catch (e) { + print('Error in choosImage: $e'); + mySnackeBarError('Image Upload Failed'.tr); + // Get.snackbar('Image Upload Failed'.tr, e.toString(), + // backgroundColor: AppColor.primaryColor); + } finally { + isloading = false; + update(); + } + } + + choosImageNewCAr(String link, String imageType) async { + try { + final pickedImage = await picker.pickImage( + source: ImageSource.camera, + preferredCameraDevice: CameraDevice.rear, + ); + + if (pickedImage == null) return; + + image = File(pickedImage.path); + + croppedFile = await ImageCropper().cropImage( + sourcePath: image!.path, + uiSettings: [ + AndroidUiSettings( + toolbarTitle: 'Cropper'.tr, + toolbarColor: AppColor.blueColor, + toolbarWidgetColor: AppColor.yellowColor, + initAspectRatio: CropAspectRatioPreset.original, + lockAspectRatio: false, + ), + IOSUiSettings( + title: 'Cropper'.tr, + ), + ], + ); + + if (croppedFile == null) return; + + myImage = File(croppedFile!.path); + isloading = true; + update(); + + // Rotate the compressed image + File processedImage = await rotateImageIfNeeded(File(croppedFile!.path)); + File compressedImage = await compressImage(processedImage); + + print('link =$link'); + // Log.print('link: ${link}'); +//n8u22456 + await uploadNewCar( + compressedImage, + { + 'driverID': box.read(BoxName.driverID) + + '_' + + DateTime.now().toIso8601String(), + 'imageType': imageType, + }, + link, + ); + } catch (e) { + print('Error in choosImage: $e'); + // Get.snackbar('Image Upload Failed'.tr, e.toString(), + // backgroundColor: AppColor.primaryColor); + mySnackeBarError('Image Upload Failed'.tr); + } finally { + isloading = false; + update(); + } + } + + // choosFaceFromDriverLicense(String link, String imageType) async { + // final pickedImage = await picker.pickImage( + // source: ImageSource.camera, + // preferredCameraDevice: CameraDevice.rear, + // ); + + // if (pickedImage == null) return; + + // image = File(pickedImage.path); + + // File? processedImage; + + // // For face images, use face detection and cropping + // processedImage = await detectAndCropFace(image!); + // if (processedImage == null) { + // Get.snackbar('Face Detection Failed', 'No face detected in the image.'); + // return; + // } + + // isloading = true; + // update(); + + // File compressedImage = await compressImage(processedImage); + + // try { + // await uploadImage( + // compressedImage, + // { + // 'driverID': box.read(BoxName.driverID).toString(), + // 'imageType': imageType + // }, + // link, + // ); + // } catch (e) { + // Get.snackbar('Image Upload Failed'.tr, e.toString(), + // backgroundColor: AppColor.redColor); + // } finally { + // isloading = false; + // update(); + // } + // } + + choosFace(String link, String imageType) async { + final pickedImage = await picker.pickImage( + source: ImageSource.camera, + preferredCameraDevice: CameraDevice.front, + ); + if (pickedImage != null) { + image = File(pickedImage.path); + isloading = true; + update(); +// Compress the image + File compressedImage = await compressImage(File(pickedImage.path)); + + // Save the picked image directly + // File savedImage = File(pickedImage.path); + print('link =$link'); + try { + await uploadImage( + compressedImage, + { + 'driverID': + box.read(BoxName.driverID) ?? box.read(BoxName.passengerID), + 'imageType': imageType + }, + link, + ); + } catch (e) { + mySnackeBarError('Image Upload Failed'.tr); + // Get.snackbar('Image Upload Failed'.tr, e.toString(), + // backgroundColor: AppColor.redColor); + } finally { + isloading = false; + update(); + } + } + } + + uploadImage(File file, Map data, String link) async { + var request = http.MultipartRequest( + 'POST', + Uri.parse(link), + ); + Log.print('request: ${request}'); + var length = await file.length(); + var stream = http.ByteStream(file.openRead()); + var multipartFile = http.MultipartFile( + 'image', + stream, + length, + filename: basename(file.path), + ); + request.headers.addAll({ + 'Authorization': + 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials.toString()))}', + }); + // Set the file name to the driverID + request.files.add( + http.MultipartFile( + 'image', + stream, + length, + filename: '${box.read(BoxName.driverID)}.jpg', + ), + ); + data.forEach((key, value) { + request.fields[key] = value; + }); + var myrequest = await request.send(); + var res = await http.Response.fromStream(myrequest); + if (res.statusCode == 200) { + Log.print('jsonDecode(res.body): ${jsonDecode(res.body)}'); + return jsonDecode(res.body); + } else { + throw Exception( + 'Failed to upload image: ${res.statusCode} - ${res.body}'); + } + } + + uploadNewCar(File file, Map data, String link) async { + var request = http.MultipartRequest( + 'POST', + Uri.parse(link), + ); + + var length = await file.length(); + var stream = http.ByteStream(file.openRead()); + var multipartFile = http.MultipartFile( + 'image', + stream, + length, + filename: basename(file.path), + ); + request.headers.addAll({ + 'Authorization': + 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials.toString()))}', + }); + // Set the file name to the driverID + request.files.add( + http.MultipartFile( + 'image', + stream, + length, + filename: '${box.read(BoxName.driverID)}.jpg', + ), + ); + data.forEach((key, value) { + request.fields[key] = value; + }); + var myrequest = await request.send(); + var res = await http.Response.fromStream(myrequest); + if (res.statusCode == 200) { + Log.print('jsonDecode(res.body): ${jsonDecode(res.body)}'); + return jsonDecode(res.body); + } else { + throw Exception( + 'Failed to upload image: ${res.statusCode} - ${res.body}'); + } + } + + choosImagePicture(String link, String imageType) async { + final pickedImage = await picker.pickImage( + source: ImageSource.gallery, + // preferredCameraDevice: CameraDevice.rear, + // maxHeight: Get.height * .3, + // maxWidth: Get.width * .9, + // imageQuality: 100, + ); + image = File(pickedImage!.path); + + croppedFile = await ImageCropper().cropImage( + sourcePath: image!.path, + uiSettings: [ + AndroidUiSettings( + toolbarTitle: 'Cropper'.tr, + toolbarColor: AppColor.blueColor, + toolbarWidgetColor: AppColor.yellowColor, + initAspectRatio: CropAspectRatioPreset.original, + lockAspectRatio: false), + IOSUiSettings( + title: 'Cropper'.tr, + ), + ], + ); + myImage = File(pickedImage.path); + isloading = true; + update(); +// Save the cropped image + // File savedCroppedImage = File(croppedFile!.path); + File compressedImage = await compressImage(File(croppedFile!.path)); + print('link =$link'); + try { + await uploadImage( + compressedImage, + { + 'driverID': + (box.read(BoxName.driverID)) ?? (box.read(BoxName.passengerID)), + 'imageType': imageType + }, + link, + ); + } catch (e) { + mySnackeBarError('Image Upload Failed'.tr); + // Get.snackbar('Image Upload Failed'.tr, e.toString(), + // backgroundColor: AppColor.redColor); + } finally { + isloading = false; + update(); + } + } + + uploadImagePicture(File file, Map data, String link) async { + var request = http.MultipartRequest( + 'POST', + Uri.parse(link), //'https://ride.mobile-app.store/uploadImage1.php' + ); + + var length = await file.length(); + var stream = http.ByteStream(file.openRead()); + var multipartFile = http.MultipartFile( + 'image', + stream, + length, + filename: basename(file.path), + ); + request.headers.addAll({ + 'Authorization': + 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials.toString()))}', + }); + // Set the file name to the driverID + request.files.add( + http.MultipartFile( + 'image', + stream, + length, + filename: '${(box.read(BoxName.driverID))}.jpg', + ), + ); + data.forEach((key, value) { + request.fields[key] = value; + }); + var myrequest = await request.send(); + var res = await http.Response.fromStream(myrequest); + if (res.statusCode == 200) { + return jsonDecode(res.body); + } else { + throw Exception( + 'Failed to upload image: ${res.statusCode} - ${res.body}'); + } + } +} + +Future compressImage(File file) async { + final dir = await path_provider.getTemporaryDirectory(); + final targetPath = "${dir.absolute.path}/temp.jpg"; + + var result = await FlutterImageCompress.compressAndGetFile( + file.absolute.path, + targetPath, + quality: 70, + minWidth: 1024, + minHeight: 1024, + ); + + return File(result!.path); +} + +// Future detectAndCropFace(File imageFile) async { +// final inputImage = InputImage.fromFilePath(imageFile.path); +// final options = FaceDetectorOptions( +// enableClassification: false, +// enableLandmarks: false, +// enableTracking: false, +// minFaceSize: 0.15, +// performanceMode: FaceDetectorMode.accurate, +// ); +// final faceDetector = FaceDetector(options: options); + +// try { +// final List faces = await faceDetector.processImage(inputImage); +// final image = img.decodeImage(await imageFile.readAsBytes()); + +// if (image == null) throw Exception('Unable to decode image'); + +// int left, top, width, height; + +// if (faces.isNotEmpty) { +// // Face detected, crop around the face +// final face = faces[0]; +// double padding = 0.2; // 20% padding +// int paddingX = (face.boundingBox.width * padding).round(); +// int paddingY = (face.boundingBox.height * padding).round(); + +// left = (face.boundingBox.left - paddingX).round(); +// top = (face.boundingBox.top - paddingY).round(); +// width = (face.boundingBox.width + 2 * paddingX).round(); +// height = (face.boundingBox.height + 2 * paddingY).round(); +// } else { +// // No face detected, crop the center of the image +// int size = min(image.width, image.height); +// left = (image.width - size) ~/ 2; +// top = (image.height - size) ~/ 2; +// width = size; +// height = size; +// } + +// // Ensure dimensions are within image bounds +// left = left.clamp(0, image.width - 1); +// top = top.clamp(0, image.height - 1); +// width = width.clamp(1, image.width - left); +// height = height.clamp(1, image.height - top); + +// final croppedImage = +// img.copyCrop(image, x: left, y: top, width: width, height: height); + +// // Save the cropped image +// final tempDir = await path_provider.getTemporaryDirectory(); +// final tempPath = tempDir.path; +// final croppedFile = File('$tempPath/cropped_image.jpg'); +// await croppedFile.writeAsBytes(img.encodeJpg(croppedImage, quality: 100)); + +// return croppedFile; +// } finally { +// faceDetector.close(); +// } +// } diff --git a/lib/controller/functions/vibrate.dart b/lib/controller/functions/vibrate.dart new file mode 100755 index 0000000..de2510c --- /dev/null +++ b/lib/controller/functions/vibrate.dart @@ -0,0 +1,15 @@ +import 'package:get/get.dart'; + +import '../../constant/box_name.dart'; +import '../../main.dart'; + +class HomePageController extends GetxController { + late bool isVibrate = box.read(BoxName.isvibrate) ?? true; + + void changeVibrateOption(bool value) { + isVibrate = box.read(BoxName.isvibrate) ?? true; + isVibrate = value; + box.write(BoxName.isvibrate, value); + update(); + } +} diff --git a/lib/controller/home/captin/behavior_controller.dart b/lib/controller/home/captin/behavior_controller.dart new file mode 100644 index 0000000..1dc9de0 --- /dev/null +++ b/lib/controller/home/captin/behavior_controller.dart @@ -0,0 +1,115 @@ +import 'dart:convert'; +import 'dart:math'; + +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; + +import '../../../constant/table_names.dart'; +import '../../../main.dart'; + +class DriverBehaviorController extends GetxController { + Future>> getAllData() async { + return await sql.getAllData(TableName.behavior); + } + + var isLoading = false.obs; + var overallScore = 100.0.obs; + var lastTrips = [].obs; + + Future fetchDriverBehavior() async { + isLoading.value = true; + try { + final response = await CRUD().get( + link: AppLink.get_driver_behavior, + payload: {"driver_id": box.read(BoxName.driverID).toString()}, + ); + + if (response != 'failure') { + final json = jsonDecode(response.body); + + overallScore.value = + double.parse(json['data']['overall_behavior_score'].toString()); + lastTrips.value = json['data']['last_10_trips']; + } else { + // Get.snackbar("Error", json['message'] ?? "Unknown error"); + } + } catch (e) { + Get.snackbar("Error", "Exception: $e"); + } finally { + isLoading.value = false; + } + } + + Future> analyzeData() async { + final data = await getAllData(); + if (data.isEmpty) return {}; + + double maxSpeed = 0; + double totalSpeed = 0; + int hardBrakes = 0; + double totalDistance = 0; + double? prevLat, prevLng; + + for (var item in data) { + double speed = item['speed'] ?? 0; + double lat = item['lat'] ?? 0; + double lng = item['lng'] ?? 0; + double acc = item['acceleration'] ?? 0; + + if (speed > maxSpeed) maxSpeed = speed; + totalSpeed += speed; + + // ✅ Hard brake threshold + if (acc.abs() > 3.0) hardBrakes++; + + // ✅ Distance between points + if (prevLat != null && prevLng != null) { + totalDistance += _calculateDistance(prevLat, prevLng, lat, lng); + } + prevLat = lat; + prevLng = lng; + } + + double avgSpeed = totalSpeed / data.length; + double behaviorScore = 100 - (hardBrakes * 5) - ((maxSpeed > 100) ? 10 : 0); + behaviorScore = behaviorScore.clamp(0, 100); + + return { + 'max_speed': maxSpeed, + 'avg_speed': avgSpeed, + 'hard_brakes': hardBrakes, + 'total_distance': totalDistance, + 'behavior_score': behaviorScore, + }; + } + + Future sendSummaryToServer(String driverId, String tripId) async { + final summary = await analyzeData(); + if (summary.isEmpty) return; + + final body = { + 'driver_id': driverId, + 'trip_id': tripId, + ...summary, + }; + + CRUD().post(link: AppLink.saveBehavior, payload: (body)); + + await clearData(); + } + + Future clearData() async { + await sql.deleteAllData(TableName.behavior); + } + + double _calculateDistance( + double lat1, double lon1, double lat2, double lon2) { + const p = 0.017453292519943295; + final a = 0.5 - + cos((lat2 - lat1) * p) / 2 + + cos(lat1 * p) * cos(lat2 * p) * (1 - cos((lon2 - lon1) * p)) / 2; + return 12742 * asin(sqrt(a)); // distance in km + } +} diff --git a/lib/controller/home/captin/contact_us_controller.dart b/lib/controller/home/captin/contact_us_controller.dart new file mode 100755 index 0000000..8e200b8 --- /dev/null +++ b/lib/controller/home/captin/contact_us_controller.dart @@ -0,0 +1,78 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; + +import '../../../constant/colors.dart'; +import '../../functions/launch.dart'; + +class ContactUsController extends GetxController { + final String phone1 = '+201018805430'; + final String phone2 = '+201080182934'; + final TimeOfDay workStartTime = const TimeOfDay(hour: 12, minute: 0); + final TimeOfDay workEndTime = const TimeOfDay(hour: 19, minute: 0); + + bool _isWithinWorkTime(TimeOfDay now) { + return (now.hour > workStartTime.hour || + (now.hour == workStartTime.hour && + now.minute >= workStartTime.minute)) && + (now.hour < workEndTime.hour || + (now.hour == workEndTime.hour && now.minute <= workEndTime.minute)); + } + + void showContactDialog(BuildContext context) { + TimeOfDay now = TimeOfDay.now(); + + showCupertinoModalPopup( + context: context, + builder: (context) => CupertinoActionSheet( + title: Text('Contact Us'.tr), + message: Text('Choose a contact option'.tr), + actions: [ + if (_isWithinWorkTime(now)) + CupertinoActionSheetAction( + child: Text(phone1), + onPressed: () => makePhoneCall( + phone1, + ), + ), + if (_isWithinWorkTime(now)) + CupertinoActionSheetAction( + child: Text(phone2), + onPressed: () => makePhoneCall(phone2), + ), + if (!_isWithinWorkTime(now)) + CupertinoActionSheetAction( + child: Text( + 'Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.' + .tr), + onPressed: () => Navigator.pop(context), + ), + CupertinoActionSheetAction( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + const Icon( + FontAwesome.whatsapp, + color: AppColor.greenColor, + ), + Text('Send WhatsApp Message'.tr), + ], + ), + onPressed: () => + launchCommunication('whatsapp', phone1, 'Hello'.tr), + ), + CupertinoActionSheetAction( + child: Text('Send Email'.tr), + onPressed: () => + launchCommunication('email', 'support@sefer.live', 'Hello'.tr), + ), + ], + cancelButton: CupertinoActionSheetAction( + child: Text('Cancel'.tr), + onPressed: () => Navigator.pop(context), + ), + ), + ); + } +} diff --git a/lib/controller/home/captin/duration_controller .dart b/lib/controller/home/captin/duration_controller .dart new file mode 100755 index 0000000..3945a41 --- /dev/null +++ b/lib/controller/home/captin/duration_controller .dart @@ -0,0 +1,150 @@ +import 'dart:convert'; + +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:fl_chart/fl_chart.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/models/model/driver/rides_summary_model.dart'; + +class DurationController extends GetxController { + final data = DurationData; + // late AnimationController animationController; + late List rideData; + late List rideCountData; + late List ridePriceDriverData; + Map jsonData1 = {}; + Map jsonData2 = {}; + bool isLoading = false; + String totalDurationToday = ''; + var chartData; + var chartRideCount; + var chartRidePriceDriver; + List monthlyList = []; + + @override + void onInit() async { + super.onInit(); + await fetchData(); + await fetchRideDriver(); + await getStaticDriver(); + } + + getStaticDriver() async { + isLoading = true; + update(); + var res = await CRUD().get( + link: AppLink.driverStatistic, + payload: {'driverID': box.read(BoxName.driverID)}); + if (res == 'failure') { + monthlyList = []; + isLoading = false; + update(); + } else { + monthlyList = jsonDecode(res)['message']; + isLoading = false; + update(); + } + } + + Future fetchData() async { + isLoading = true; + update(); // Notify the observers about the loading state change + + var res = await CRUD().get( + link: AppLink.getTotalDriverDuration, + payload: {'driver_id': box.read(BoxName.driverID)}, + ); + jsonData1 = jsonDecode(res); + var jsonResponse = jsonDecode(res) as Map; + isLoading = false; + final List jsonData = jsonResponse['message']; + rideData = jsonData.map((item) { + return MonthlyDataModel.fromJson(item); + }).toList(); + final List spots = rideData + .map((data) => FlSpot( + data.day.toDouble(), + data.totalDuration.toDouble(), + )) + .toList(); + chartData = spots; + + update(); // Notify the observers about the data and loading state change + } + + Future fetchRideDriver() async { + isLoading = true; + update(); // Notify the observers about the loading state change + + var res = await CRUD().get( + link: AppLink.getRidesDriverByDay, + payload: {'driver_id': box.read(BoxName.driverID)}, + ); + if (res != 'failure') { + jsonData2 = jsonDecode(res); + var jsonResponse = jsonDecode(res) as Map; + isLoading = false; + final List jsonData = jsonResponse['message']; + rideCountData = jsonData.map((item) { + return MonthlyRideModel.fromJson(item); + }).toList(); + ridePriceDriverData = jsonData.map((item) { + return MonthlyPriceDriverModel.fromJson(item); + }).toList(); + + final List spots = rideCountData + .map((data) => FlSpot( + data.day.toDouble(), + data.countRide.toDouble(), + )) + .toList(); + chartRideCount = spots; + final List spotsDriverPrices = ridePriceDriverData + .map((data) => FlSpot( + data.day.toDouble(), + data.pricePerDay.toDouble(), + )) + .toList(); + chartRidePriceDriver = spotsDriverPrices; + + update(); // Notify the observers about the data and loading state change + } else { + Get.defaultDialog( + title: 'No data yet!'.tr, + middleText: '', + confirm: MyElevatedButton( + title: 'OK'.tr, + onPressed: () { + Get.back(); + Get.back(); + })); + } + } + + List parseData(List json) { + return json.map((entry) { + final Map entryMap = entry; + final day = DateTime.parse(entryMap['day']); + final totalDuration = _parseDuration(entryMap['total_duration']); + return DurationData(day, totalDuration); + }).toList(); + } + + Duration _parseDuration(String durationString) { + final parts = durationString.split(':'); + final hours = int.parse(parts[0]); + final minutes = int.parse(parts[1]); + final seconds = int.parse(parts[2]); + return Duration(hours: hours, minutes: minutes, seconds: seconds); + } +} + +class DurationData { + final DateTime day; + final Duration totalDuration; + + DurationData(this.day, this.totalDuration); +} diff --git a/lib/controller/home/captin/help/assurance_controller.dart b/lib/controller/home/captin/help/assurance_controller.dart new file mode 100755 index 0000000..cb30780 --- /dev/null +++ b/lib/controller/home/captin/help/assurance_controller.dart @@ -0,0 +1,58 @@ +import 'dart:convert'; + +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:get/get.dart'; + +class AssuranceHealthController extends GetxController { + bool isLoading = false; + Map tripCount = {}; + + Future getTripCountByCaptain() async { + var res = await CRUD().get(link: AppLink.getTripCountByCaptain, payload: { + "driver_id": box.read(BoxName.driverID).toString(), + }); + if (res != 'failure') { + tripCount = jsonDecode(res)['message']; + update(); + } + } + + Future addDriverHealthAssurance({ + String? driverId, + String? assured, + required String healthInsuranceProvider, + }) async { + // Define the URL to your PHP backend + + // Data to be sent to the backend + Map data = { + "driver_id": box.read(BoxName.driverID).toString(), + "assured": '1', + "health_insurance_provider": healthInsuranceProvider, + }; + + try { + // Send the POST request to your backend + var response = await CRUD() + .post(link: AppLink.addHealthInsuranceProvider, payload: data); + + if (response != 'failure') { + // Handle success (e.g., show a success message) + + mySnackbarSuccess( + "You have successfully opted for health insurance.".tr); + } else { + // Handle failure (e.g., show an error message) + print("Failed to save health assurance data"); + mySnackeBarError("Please enter a health insurance status.".tr); + } + } catch (e) { + // Handle any errors + print("Error: $e"); + } + } +} diff --git a/lib/controller/home/captin/help/help_controller.dart b/lib/controller/home/captin/help/help_controller.dart new file mode 100755 index 0000000..9359afd --- /dev/null +++ b/lib/controller/home/captin/help/help_controller.dart @@ -0,0 +1,103 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../../constant/box_name.dart'; +import '../../../../constant/links.dart'; +import '../../../../constant/style.dart'; +import '../../../../main.dart'; +import '../../../../views/widgets/elevated_btn.dart'; +import '../../../functions/crud.dart'; +import '../../../functions/encrypt_decrypt.dart'; + +class HelpController extends GetxController { + bool isLoading = false; + final formKey = GlobalKey(); + final helpQuestionController = TextEditingController(); + Map helpQuestionDate = {}; + Map helpQuestionRepleyDate = {}; + String status = ''; + String qustion = ''; + late int indexQuestion = 0; + getIndex(int i, String qustion1) async { + indexQuestion = i; + qustion = qustion1; + update(); + } + + void addHelpQuestion() async { + isLoading = true; + update(); + var res = await CRUD().post(link: AppLink.addhelpCenter, payload: { + 'driverID': box.read(BoxName.driverID).toString(), + 'helpQuestion': (helpQuestionController.text) + }); + var d = jsonDecode(res); + isLoading = false; + update(); + if (d['status'].toString() == 'success') { + getHelpQuestion(); + // Get.snackbar('Feedback data saved successfully'.tr, '', + // backgroundColor: AppColor.greenColor, + // snackPosition: SnackPosition.BOTTOM); + } + } + + void getHelpQuestion() async { + isLoading = true; + update(); + var res = await CRUD().get(link: AppLink.gethelpCenter, payload: { + 'driverID': box.read(BoxName.driverID).toString(), + }); + if (res == "failure") { + isLoading = false; + update(); + Get.defaultDialog( + title: 'There is no help Question here'.tr, + titleStyle: AppStyle.title, + middleText: '', + confirm: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + MyElevatedButton( + title: 'Add Question'.tr, + onPressed: () { + Get.back(); + }), + MyElevatedButton( + title: 'Back'.tr, + onPressed: () { + Get.back(); + Get.back(); + }), + ], + )); + } + helpQuestionDate = jsonDecode(res); + isLoading = false; + update(); + } + + Future getHelpRepley(String id) async { + isLoading = true; + update(); + var res = await CRUD().get(link: AppLink.getByIdhelpCenter, payload: { + 'id': id, + }); + if (res == "failure") { + status = 'not yet'; + isLoading = false; + update(); + } + helpQuestionRepleyDate = jsonDecode(res); + isLoading = false; + update(); + } + + @override + void onInit() { + getHelpQuestion(); + super.onInit(); + } +} diff --git a/lib/controller/home/captin/help/maintain_center_controller.dart b/lib/controller/home/captin/help/maintain_center_controller.dart new file mode 100755 index 0000000..1c7a0e5 --- /dev/null +++ b/lib/controller/home/captin/help/maintain_center_controller.dart @@ -0,0 +1,22 @@ +import 'dart:convert'; + +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:get/get.dart'; + +class MaintainCenterController extends GetxController { + bool isLoading = false; + Map tripCount = {}; + + Future getTripCountByCaptain() async { + var res = await CRUD().get(link: AppLink.getTripCountByCaptain, payload: { + "driver_id": box.read(BoxName.driverID).toString(), + }); + if (res != 'failure') { + tripCount = jsonDecode(res)['message']; + update(); + } + } +} diff --git a/lib/controller/home/captin/help/video_controller.dart b/lib/controller/home/captin/help/video_controller.dart new file mode 100755 index 0000000..3c76bfd --- /dev/null +++ b/lib/controller/home/captin/help/video_controller.dart @@ -0,0 +1,69 @@ +import 'dart:convert'; + +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/print.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:get/get.dart'; +import 'package:video_player/video_player.dart'; + +class VideoController extends GetxController { + var videos = []; + var isLoading = true.obs; + final String apiUrl = + '${AppLink.seferCairoServer}/ride/videos_driver/get.php'; + + @override + void onInit() { + fetchVideos(); + super.onInit(); + } + + late VideoPlayerController videoPlayerController; + + // Initialize the video player with the provided URL + Future initializeVideo(String videoUrl) async { + videoPlayerController = + VideoPlayerController.networkUrl(Uri.parse(videoUrl)); + await videoPlayerController.initialize(); + videoPlayerController + .setLooping(true); // Set to true if you want the video to loop + update(); // Update the UI after the video has been initialized + } + + // Play the video + void play() { + videoPlayerController.play(); + update(); + } + + // Pause the video + void pause() { + videoPlayerController.pause(); + update(); + } + + @override + void onClose() { + videoPlayerController + .dispose(); // Dispose of the video player controller when not in use + super.onClose(); + } + + void fetchVideos() async { + try { + var res = await CRUD().get(link: apiUrl, payload: {}); + if (res != 'failure') { + videos = jsonDecode(res)['message']; + // Log.print('videos: ${videos}'); + update(); + } else { + mySnackeBarError(''); + } + } catch (e) { + mySnackeBarError(e.toString()); + } finally { + isLoading(false); + } + } +} diff --git a/lib/controller/home/captin/home_captain_controller.dart b/lib/controller/home/captin/home_captain_controller.dart new file mode 100755 index 0000000..35b8b11 --- /dev/null +++ b/lib/controller/home/captin/home_captain_controller.dart @@ -0,0 +1,454 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/controller/home/captin/map_driver_controller.dart'; +import 'dart:async'; + +import '../../../constant/links.dart'; +import '../../../constant/style.dart'; +import '../../../constant/table_names.dart'; +import '../../../main.dart'; +import '../../../print.dart'; +import '../../../views/home/my_wallet/walet_captain.dart'; +import '../../../views/widgets/elevated_btn.dart'; +import '../../firebase/firbase_messge.dart'; +import '../../functions/crud.dart'; +import '../../functions/location_background_controller.dart'; +import '../../functions/location_controller.dart'; +import '../payment/captain_wallet_controller.dart'; + +class HomeCaptainController extends GetxController { + bool isActive = false; + DateTime? activeStartTime; + Duration activeDuration = Duration.zero; + Timer? activeTimer; + Map data = {}; + BitmapDescriptor carIcon = BitmapDescriptor.defaultMarker; + bool isLoading = true; + late double kazan = 0; + double latePrice = 0; + double heavyPrice = 0; + double comfortPrice = 0, + speedPrice = 0, + deliveryPrice = 0, + mashwariPrice = 0, + fuelPrice = 0; + double naturePrice = 0; + bool isCallOn = false; + String totalMoneyToday = '0'; + double? rating = 5; + String rideId = '0'; + String countRideToday = '0'; + String totalMoneyInSEFER = '0'; + String totalDurationToday = '0'; + Timer? timer; + late LatLng myLocation = const LatLng(32, 36); + String totalPoints = '0'; + String countRefuse = '0'; + bool mapType = false; + bool mapTrafficON = false; + double widthMapTypeAndTraffic = 50; +// Inject the LocationController class + final locationController = Get.put(LocationController()); + // final locationBackController = Get.put(LocationBackgroundController()); + String formatDuration(Duration duration) { + String twoDigits(int n) => n.toString().padLeft(2, "0"); + String twoDigitMinutes = twoDigits(duration.inMinutes.remainder(60)); + String twoDigitSeconds = twoDigits(duration.inSeconds.remainder(60)); + return "${duration.inHours}:$twoDigitMinutes:$twoDigitSeconds"; + } + + void goToWalletFromConnect() { + Get.back(); + Get.back(); + Get.to(() => WalletCaptainRefactored()); + } + + void changeRideId() { + rideId = 'rideId'; + update(); + } + + void addCustomCarIcon() { + ImageConfiguration config = ImageConfiguration( + size: const Size(30, 35), devicePixelRatio: Get.pixelRatio); + BitmapDescriptor.asset( + config, + 'assets/images/car.png', + // mipmaps: false, + ).then((value) { + carIcon = value; + update(); + }); + } + + String stringActiveDuration = ''; + void onButtonSelected() { + // totalPoints = Get.find().totalPoints; + + isActive = !isActive; + if (isActive) { + if (double.parse(totalPoints) > -300) { + locationController.startLocationUpdates(); + HapticFeedback.heavyImpact(); + // locationBackController.startBackLocation(); + activeStartTime = DateTime.now(); + activeTimer = Timer.periodic(const Duration(seconds: 1), (timer) { + activeDuration = DateTime.now().difference(activeStartTime!); + stringActiveDuration = formatDuration(activeDuration); + update(); + }); + } else { + locationController.stopLocationUpdates(); + + activeStartTime = null; + activeTimer?.cancel(); + savePeriod(activeDuration); + activeDuration = Duration.zero; + update(); + } + } else { + locationController.stopLocationUpdates(); + + activeStartTime = null; + activeTimer?.cancel(); + savePeriod(activeDuration); + activeDuration = Duration.zero; + update(); + } + // } + } + + void getRefusedOrderByCaptain() async { + DateTime today = DateTime.now(); + int todayDay = today.day; + + String driverId = box.read(BoxName.driverID).toString(); + + String customQuery = ''' + SELECT COUNT(*) AS count + FROM ${TableName.driverOrdersRefuse} + WHERE driver_id = '$driverId' + AND created_at LIKE '%$todayDay%' + '''; + + try { + List> results = + await sql.getCustomQuery(customQuery); + countRefuse = results[0]['count'].toString(); + update(); + if (int.parse(countRefuse) > 3 || double.parse(totalPoints) <= -3000) { + locationController.stopLocationUpdates(); + activeStartTime = null; + activeTimer?.cancel(); + savePeriod(activeDuration); + activeDuration = Duration.zero; + update(); + + Get.defaultDialog( + // backgroundColor: CupertinoColors.destructiveRed, + barrierDismissible: false, + title: 'You Are Stopped For this Day !'.tr, + content: Text( + 'You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!' + .tr, + style: AppStyle.title, + ), + confirm: MyElevatedButton( + title: 'Ok , See you Tomorrow'.tr, + onPressed: () { + Get.back(); + Get.back(); + })); + } + } catch (e) {} + } + + void changeMapType() { + mapType = !mapType; + // heightButtomSheetShown = isButtomSheetShown == true ? 240 : 0; + update(); + } + + void changeMapTraffic() { + mapTrafficON = !mapTrafficON; + update(); + } + + // late GoogleMapController mapHomeCaptainController; + // void onMapCreated(GoogleMapController controller) { + // mapHomeCaptainController = controller; + // controller.getVisibleRegion(); + // // Animate camera to user location (optional) + // controller.animateCamera( + // CameraUpdate.newLatLng(Get.find().myLocation), + // ); + // } + GoogleMapController? mapHomeCaptainController; // Nullable controller + + void onMapCreated(GoogleMapController controller) { + mapHomeCaptainController = controller; + + // Optional: Check if the controller is still null (just for safety) + if (mapHomeCaptainController != null) { + // Get the visible region + controller.getVisibleRegion(); + + // Animate camera to user location (optional) + controller.animateCamera( + CameraUpdate.newLatLng(Get.find().myLocation), + ); + } else {} + } + + void savePeriod(Duration period) { + final periods = box.read>(BoxName.periods) ?? []; + periods.add(period.inSeconds); + box.write(BoxName.periods, periods); + } + + Duration calculateTotalDuration() { + final periods = box.read>(BoxName.periods) ?? []; + Duration totalDuration = Duration.zero; + for (dynamic periodInSeconds in periods) { + final periodDuration = Duration(seconds: periodInSeconds); + totalDuration += periodDuration; + } + return totalDuration; + } + + void startPeriodicExecution() { + Timer.periodic(const Duration(seconds: 30), (timer) async { + await getCaptainDurationOnToday(); + }); + } + + void stopTimer() { + timer?.cancel(); + } + + getlocation() async { + isLoading = true; + update(); + await Get.find().getLocation(); + isLoading = false; + update(); + } + + Map walletDriverPointsDate = {}; + + Future getCaptainWalletFromBuyPoints() async { + // isLoading = true; + update(); + + var res = await CRUD().get( + link: AppLink.getDriverPaymentPoints, + payload: {'driverID': box.read(BoxName.driverID).toString()}, + ); + isLoading = false; + // update(); + + if (res != 'failure') { + walletDriverPointsDate = jsonDecode(res); + double totalPointsDouble = double.parse( + walletDriverPointsDate['message'][0]['total_amount'].toString()); + totalPoints = totalPointsDouble.toStringAsFixed(0); + update(); + } else { + totalPoints = '0'; + } + } + + @override + void onInit() async { + // await locationBackController.requestLocationPermission(); + Get.put(FirebaseMessagesController()); + addToken(); + await getlocation(); + onButtonSelected(); + getDriverRate(); + addCustomCarIcon(); + getKazanPercent(); + getPaymentToday(); + getCountRideToday(); + getAllPayment(); + startPeriodicExecution(); + getCaptainWalletFromBuyPoints(); + onMapCreated(mapHomeCaptainController!); + // totalPoints = Get.find().totalPoints.toString(); + getRefusedOrderByCaptain(); + // LocationController().getLocation(); + super.onInit(); + } + // void getRefusedOrderByCaptain() async { + // // Get today's date in YYYY-MM-DD format + // String today = DateTime.now().toString().substring(0, 10); + + // String driverId = box.read(BoxName.driverID).toString(); + + // String customQuery = ''' + // SELECT COUNT(*) AS count + // FROM ${TableName.driverOrdersRefuse} + // WHERE driver_id = '$driverId' + // AND DATE(created_at) = '$today' + // '''; + + // try { + // List> results = + // await sql.getCustomQuery(customQuery); + // countRefuse = results[0]['count'].toString(); + // update(); + // if (int.parse(countRefuse) > 3) { + // box.write(BoxName.statusDriverLocation, 'on'); + // locationController.stopLocationUpdates(); + // Get.defaultDialog( + // // backgroundColor: CupertinoColors.destructiveRed, + // barrierDismissible: false, + // title: 'You Are Stopped For this Day !'.tr, + // content: Text( + // 'You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!' + // .tr, + // style: AppStyle.title, + // ), + // confirm: MyElevatedButton( + // title: 'Ok , See you Tomorrow'.tr, + // onPressed: () => Get.back())); + // } else { + // box.write(BoxName.statusDriverLocation, 'off'); + // } + // } catch (e) {} + // } + + addToken() async { + String? fingerPrint = await storage.read(key: BoxName.fingerPrint); + CRUD().post(link: AppLink.addTokensDriver, payload: { + 'token': (box.read(BoxName.tokenDriver)), + 'captain_id': (box.read(BoxName.driverID)).toString(), + 'fingerPrint': (fingerPrint).toString() + }); + + // CRUD().post( + // link: "${AppLink.seferAlexandriaServer}/ride/firebase/addDriver.php", + // payload: { + // 'token': box.read(BoxName.tokenDriver), + // 'captain_id': box.read(BoxName.driverID).toString(), + // 'fingerPrint': (fingerPrint).toString() + // }); + // CRUD().post( + // link: "${AppLink.seferGizaServer}/ride/firebase/addDriver.php", + // payload: { + // 'token': box.read(BoxName.tokenDriver), + // 'captain_id': box.read(BoxName.driverID).toString(), + // 'fingerPrint': (fingerPrint).toString() + // }); + await CRUD().postWallet( + link: "${AppLink.seferPaymentServer}/ride/firebase/addDriver.php", + payload: { + 'token': box.read(BoxName.tokenDriver), + 'captain_id': box.read(BoxName.driverID).toString(), + 'fingerPrint': (fingerPrint).toString() + }); + // MapDriverController().driverCallPassenger(); + // box.write(BoxName.statusDriverLocation, 'off'); + } + + getPaymentToday() async { + var res = await CRUD().get( + link: AppLink.getDriverPaymentToday, + payload: {'driverID': box.read(BoxName.driverID).toString()}); + if (res != 'failure') { + data = jsonDecode(res); + totalMoneyToday = data['message'][0]['todayAmount'].toString(); + + update(); + } else {} + } + + getKazanPercent() async { + var res = await CRUD().get( + link: AppLink.getKazanPercent, + payload: {'country': box.read(BoxName.countryCode).toString()}, + ); + if (res != 'failure') { + var json = jsonDecode(res); + kazan = double.parse(json['message'][0]['kazan']); + naturePrice = double.parse(json['message'][0]['naturePrice']); + heavyPrice = double.parse(json['message'][0]['heavyPrice']); + latePrice = double.parse(json['message'][0]['latePrice']); + comfortPrice = double.parse(json['message'][0]['comfortPrice']); + speedPrice = double.parse(json['message'][0]['speedPrice']); + deliveryPrice = double.parse(json['message'][0]['deliveryPrice']); + mashwariPrice = double.parse(json['message'][0]['freePrice']); + fuelPrice = double.parse(json['message'][0]['fuelPrice']); + } + update(); + } + + double mpg = 0; + calculateConsumptionFuel() { + mpg = fuelPrice / 12; //todo in register car add mpg in box + } + + getCountRideToday() async { + var res = await CRUD().get( + link: AppLink.getCountRide, + payload: {'driver_id': box.read(BoxName.driverID).toString()}); + data = jsonDecode(res); + + countRideToday = data['message'][0]['count'].toString(); + update(); + } + + getDriverRate() async { + var res = await CRUD().get( + link: AppLink.getDriverRate, + payload: {'driver_id': box.read(BoxName.driverID).toString()}); + if (res != 'failure') { + var decod = jsonDecode(res); + if (decod['message'][0]['rating'] != null) { + rating = double.parse(decod['message'][0]['rating'].toString()); + } else { + rating = 5.0; // Set a default value (e.g., 5.0 for full rating) + } + } else { + rating = 5; + } + } + + getAllPayment() async { + var res = await CRUD().get( + link: AppLink.getAllPaymentFromRide, + payload: {'driverID': box.read(BoxName.driverID).toString()}); + data = jsonDecode(res); + + totalMoneyInSEFER = data['message'][0]['total_amount'] ?? '0'; + update(); + } + + void changeToAppliedRide(String status) { + box.write(BoxName.rideStatus, status); + Log.print('rideStatus from homcaptain : ${box.read(BoxName.rideStatus)}'); + update(); + } + + Future getCaptainDurationOnToday() async { + var res = await CRUD().get( + link: AppLink.getTotalDriverDurationToday, + payload: {'driver_id': box.read(BoxName.driverID).toString()}); + + data = jsonDecode(res); + totalDurationToday = data['message'][0]['total_duration']; + update(); + } + + @override + void dispose() { + activeTimer?.cancel(); + stopTimer(); + super.dispose(); + } +} diff --git a/lib/controller/home/captin/map_driver_controller.dart b/lib/controller/home/captin/map_driver_controller.dart new file mode 100755 index 0000000..07ab0a5 --- /dev/null +++ b/lib/controller/home/captin/map_driver_controller.dart @@ -0,0 +1,1411 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; +import 'package:sefer_driver/controller/home/captin/behavior_controller.dart'; +import 'package:sefer_driver/controller/home/captin/home_captain_controller.dart'; +import 'package:sefer_driver/views/widgets/mydialoug.dart'; +import 'package:bubble_head/bubble.dart'; +import 'package:flutter/material.dart'; +import 'package:geolocator/geolocator.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:google_polyline_algorithm/google_polyline_algorithm.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import '../../../constant/api_key.dart'; +import '../../../constant/box_name.dart'; +import '../../../constant/colors.dart'; +import '../../../constant/links.dart'; +import '../../../constant/table_names.dart'; +import '../../../main.dart'; +import '../../../print.dart'; +import '../../../views/Rate/rate_passenger.dart'; +import '../../../views/home/Captin/home_captain/home_captin.dart'; +import '../../firebase/firbase_messge.dart'; +import '../../functions/crud.dart'; +import '../../functions/encrypt_decrypt.dart'; +import '../../functions/location_controller.dart'; +import '../../functions/tts.dart'; + +class MapDriverController extends GetxController { + bool isLoading = true; + final formKey1 = GlobalKey(); + final formKey2 = GlobalKey(); + final formKeyCancel = GlobalKey(); + final messageToPassenger = TextEditingController(); + final sosEmergincyNumberCotroller = TextEditingController(); + final cancelTripCotroller = TextEditingController(); + List data = []; + List dataDestination = []; + LatLngBounds? boundsData; + BitmapDescriptor carIcon = BitmapDescriptor.defaultMarker; + BitmapDescriptor passengerIcon = BitmapDescriptor.defaultMarker; + BitmapDescriptor startIcon = BitmapDescriptor.defaultMarker; + BitmapDescriptor endIcon = BitmapDescriptor.defaultMarker; + final List polylineCoordinates = []; + final List polylineCoordinatesDestination = []; + List polyLines = []; + List polyLinesDestination = []; + Set markers = {}; + late String passengerLocation; + late String passengerDestination; + late String step0; + late String step1; + late String step2; + late String step3; + late String step4; + late String passengerWalletBurc; + late String timeOfOrder; + late String duration; + late String totalCost; + late String distance; + late String passengerName; + late String passengerEmail; + late String totalPricePassenger; + late String passengerPhone; + late String rideId; + late String isHaveSteps; + late String paymentAmount; + late String paymentMethod; + late String passengerId; + late String driverId; + late String tokenPassenger; + late String durationToPassenger; + late String walletChecked; + late String direction; + late String durationOfRideValue; + late String status; + int timeWaitingPassenger = 5; //5 miniute + bool isPassengerInfoWindow = false; + bool isBtnRideBegin = false; + bool isArrivedSend = true; + bool isdriverWaitTimeEnd = false; + bool isRideFinished = false; + bool isRideStarted = false; + bool isPriceWindow = false; + double passengerInfoWindowHeight = Get.height * .38; + double driverEndPage = 100; + double progress = 0; + double progressToPassenger = 0; + double progressInPassengerLocationFromDriver = 0; + bool isRideBegin = false; + int progressTimerToShowPassengerInfoWindowFromDriver = 25; + int remainingTimeToShowPassengerInfoWindowFromDriver = 25; + int remainingTimeToPassenger = 60; + int remainingTimeInPassengerLocatioWait = 60; + bool isDriverNearPassengerStart = false; + GoogleMapController? mapController; + late LatLng myLocation; + int remainingTimeTimerRideBegin = 60; + String stringRemainingTimeRideBegin = ''; + String stringRemainingTimeRideBegin1 = ''; + double progressTimerRideBegin = 0; + late Timer timer; + String? mapAPIKEY; + final zones = []; + String canelString = 'yet'; + LatLng latLngPassengerLocation = LatLng(0, 0); + late LatLng latLngPassengerDestination = LatLng(0, 0); + + void onMapCreated(GoogleMapController controller) async { + myLocation = Get.find().myLocation; + // myLocation = myLocation; + mapController = controller; + controller.getVisibleRegion(); + controller.animateCamera( + CameraUpdate.newLatLng(Get.find().myLocation), + ); + update(); + // Set up a timer or interval to trigger the marker update every 3 seconds. + timer = Timer.periodic(const Duration(seconds: 1), (_) { + updateMarker(); + }); + } + + void changeStatusDriver() { + status = 'On'; + update(); + } + + void changeDriverEndPage() { + remainingTimeTimerRideBegin < 60 ? driverEndPage = 160 : 100; + update(); + } + + takeSnapMap() { + mapController!.takeSnapshot(); + } + + @override + void dispose() { + mapController!.dispose(); + super.dispose(); + } + + Future openGoogleMapFromDriverToPassenger() async { + var endLat = latLngPassengerLocation.latitude; + var endLng = latLngPassengerLocation.longitude; + + var startLat = Get.find().myLocation.latitude; + var startLng = Get.find().myLocation.longitude; + + String url = + 'https://www.google.com/maps/dir/$startLat,$startLng/$endLat,$endLng/&directionsmode=driving'; + if (await canLaunchUrl(Uri.parse(url))) { + await launchUrl(Uri.parse(url)); + } else { + throw 'Could not launch google maps'; + } + } + + void clearPolyline() { + polyLines = []; + polyLinesDestination = []; + polylineCoordinates.clear(); + polylineCoordinatesDestination.clear(); + update(); + } + + void changeRideToBeginToPassenger() { + isRideBegin = true; + passengerInfoWindowHeight = Get.height * .22; + update(); + } + + cancelTripFromDriverAfterApplied() async { + if (formKeyCancel.currentState!.validate()) { + box.write(BoxName.statusDriverLocation, 'off'); + Get.find().sendNotificationToDriverMAP( + "Cancel Trip from driver", + "Trip Cancelled from driver. We are looking for a new driver. Please wait." + .tr, + tokenPassenger, + [], + 'cancel.wav', + ); + await CRUD().post( + link: "${AppLink.seferCairoServer}/ride/rides/update.php", + payload: { + "id": (rideId).toString(), // Convert to String + "status": 'CancelFromDriverAfterApply' + }); + CRUD().postFromDialogue( + link: '${AppLink.seferCairoServer}/driver_order/add.php', + payload: { + 'driver_id': box.read(BoxName.driverID).toString(), + // box.read(BoxName.driverID).toString(), + 'order_id': (rideId).toString(), + 'status': 'CancelFromDriverAfterApply' + }); + await CRUD().post( + link: + "${AppLink.seferCairoServer}/ride/cancelRide/addCancelTripFromDriverAfterApplied.php", + payload: { + "order_id": (rideId).toString(), + "driver_id": box.read(BoxName.driverID).toString(), + "status": 'reject After Applied', + "notes": (cancelTripCotroller.text).toString() + }); + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD() + .post(link: "${AppLink.endPoint}/ride/rides/update.php", payload: { + "id": (rideId).toString(), // Convert to String + "status": 'CancelFromDriverAfterApply' + }); + CRUD().postFromDialogue( + link: '${AppLink.endPoint}/driver_order/add.php', + payload: { + 'driver_id': box.read(BoxName.driverID).toString(), + // box.read(BoxName.driverID).toString(), + 'order_id': (rideId).toString(), + 'status': 'CancelFromDriverAfterApply' + }); + CRUD().post( + link: + "${AppLink.endPoint}/ride/cancelRide/addCancelTripFromDriverAfterApplied.php", + payload: { + "order_id": (rideId).toString(), + "driver_id": box.read(BoxName.driverID).toString(), + "status": 'reject After Applied', + "notes": (cancelTripCotroller.text).toString() + }); + } + + sql.insertData({ + 'order_id': (rideId), + 'created_at': DateTime.now().toString(), + 'driver_id': box.read(BoxName.driverID).toString(), + }, TableName.driverOrdersRefuse); + box.write(BoxName.rideStatus, 'Cancel'); + Log.print('rideStatus from map 240 : ${box.read(BoxName.rideStatus)}'); + Get.find().getRefusedOrderByCaptain(); + Get.offAll(() => HomeCaptain()); + } + } + + void startTimerToShowPassengerInfoWindowFromDriver() async { + if (box.read(BoxName.rideStatus) == 'Begin') { + Log.print('rideStatus from map 248 : ${box.read(BoxName.rideStatus)}'); + isPassengerInfoWindow = false; + } else { + isPassengerInfoWindow = true; + for (int i = 0; i <= int.parse(durationToPassenger); i++) { + await Future.delayed(const Duration(seconds: 1)); + progressToPassenger = i / int.parse(durationToPassenger); + remainingTimeToPassenger = int.parse(durationToPassenger) - i; + if (remainingTimeToPassenger == 0) { + isBtnRideBegin = true; + update(); + } + + int minutes = (remainingTimeToPassenger / 60).floor(); + int seconds = remainingTimeToPassenger % 60; + stringRemainingTimeToPassenger = + '$minutes:${seconds.toString().padLeft(2, '0')}'; + + update(); + } + } + + // update(); + // startTimerToShowDriverToPassengerDuration(); + } + + String stringRemainingTimeToPassenger = ''; + + String stringRemainingTimeWaitingPassenger = ''; + + void startTimerToShowDriverWaitPassengerDuration() async { + for (int i = 0; i <= timeWaitingPassenger * 60; i++) { + await Future.delayed(const Duration(seconds: 1)); + progressInPassengerLocationFromDriver = i / (timeWaitingPassenger * 60); + remainingTimeInPassengerLocatioWait = (timeWaitingPassenger * 60) - i; + if (isRideBegin == true) { + remainingTimeInPassengerLocatioWait = 0; + update(); + } + if (remainingTimeInPassengerLocatioWait == 0) { + isdriverWaitTimeEnd = true; + update(); + } + 'remainingTimeInPassengerLocatioWait $remainingTimeInPassengerLocatioWait'; + + int minutes = (remainingTimeInPassengerLocatioWait / 60).floor(); + int seconds = remainingTimeInPassengerLocatioWait % 60; + stringRemainingTimeWaitingPassenger = + '$minutes:${seconds.toString().padLeft(2, '0')}'; + + update(); + } + } + + void driverGoToPassenger() async { + changeRideToBeginToPassenger(); + box.write(BoxName.rideStatus, 'Applied'); + Log.print('rideStatus from map 304 : ${box.read(BoxName.rideStatus)}'); + update(); + await CRUD().post( + link: "${AppLink.seferCairoServer}/ride/rides/update.php", + payload: { + 'id': (rideId), + 'driverGoToPassengerTime': DateTime.now().toString(), + 'status': 'Applied' + }); + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post(link: "${AppLink.endPoint}/ride/rides/update.php", payload: { + 'id': (rideId), + 'driverGoToPassengerTime': DateTime.now().toString(), + 'status': 'Applied' + }); + } + // Get.find().changeToAppliedRide('Applied'); + + Get.find().sendNotificationToDriverMAP( + 'Driver Is Going To Passenger'.tr, + box.read(BoxName.nameDriver).toString(), //todo name driver + tokenPassenger, + [], + 'start.wav'); + } + + bool isSocialPressed = false; + driverCallPassenger() async { + String scam = await getDriverScam(); + if (scam != 'failure') { + if (int.parse(scam) > 3) { + box.write(BoxName.statusDriverLocation, 'on'); + Get.find().stopLocationUpdates(); + await CRUD().post(link: AppLink.addNotificationCaptain, payload: { + 'driverID': box.read(BoxName.driverID), + 'title': 'scams operations'.tr, + 'body': + 'you have connect to passengers and let them cancel the order'.tr, + }); + } else if (isSocialPressed == true) { + box.write(BoxName.statusDriverLocation, 'off'); + await CRUD().post(link: AppLink.addDriverScam, payload: { + 'driverID': box.read(BoxName.driverID), + 'passengerID': passengerId, + 'rideID': rideId, + 'isDriverCalledPassenger': '$isSocialPressed' + }); + } + } + } + + Future getDriverScam() async { + var res = await CRUD().post(link: AppLink.getDriverScam, payload: { + 'driverID': box.read(BoxName.driverID), + }); + if (res == 'failure') { + box.write(BoxName.statusDriverLocation, 'off'); + return '0'; + } + var d = jsonDecode(res); + return d['message'][0]['count']; + } + + void startRideFromStartApp() { + // if (box.read(BoxName.rideStatus) == 'Begin') { + changeRideToBeginToPassenger(); + isPassengerInfoWindow = false; + isRideStarted = true; + isRideFinished = false; + remainingTimeInPassengerLocatioWait = 0; + timeWaitingPassenger = 0; + box.write(BoxName.statusDriverLocation, 'on'); + update(); + // } + + // rideIsBeginPassengerTimer(); + } + + Position? currentPosition; + startRideFromDriver() async { + double _distance = + await calculateDistanceBetweenDriverAndPassengerLocation(); + + if (_distance < 400) { + changeRideToBeginToPassenger(); + isPassengerInfoWindow = false; + isRideStarted = true; + isRideFinished = false; + remainingTimeInPassengerLocatioWait = 0; + timeWaitingPassenger = 0; + box.write(BoxName.statusDriverLocation, 'on'); + // box.write(BoxName.rideStatus, 'Begin'); // + // todo ride details + // Get.find().changeToAppliedRide('Begin'); + box.write(BoxName.rideStatus, 'Begin'); + Log.print('rideStatus from map 399 : ${box.read(BoxName.rideStatus)}'); + // Get.find().update(); + update(); + await CRUD().post(link: AppLink.updateRides, payload: { + 'id': (rideId), + 'rideTimeStart': DateTime.now().toString(), + 'status': 'Begin', + }); + CRUD().post(link: AppLink.addDriverOrder, payload: { + 'driver_id': box.read(BoxName.driverID).toString(), + 'order_id': (rideId).toString(), + 'status': 'Begin' + }); + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post(link: "${AppLink.endPoint}/rides/update.php", payload: { + 'id': (rideId), + 'rideTimeStart': DateTime.now().toString(), + 'status': 'Begin', + }); + CRUD().post( + link: '${AppLink.endPoint}/rides/driver_order/add.php', + payload: { + 'driver_id': box.read(BoxName.driverID).toString(), + 'order_id': (rideId).toString(), + 'status': 'Begin' + }); + } + Get.find().sendNotificationToDriverMAP( + 'Trip is Begin'.tr, + box.read(BoxName.nameDriver).toString(), + tokenPassenger, + [], + 'start.wav'); + rideIsBeginPassengerTimer(); + + // var d = jsonDecode(res); + + update(); + // Get.back(); + // Start updating location and moving camera + // updateLocation(); + } else { + Get.back(); + MyDialog().getDialog('Your are far from passenger location'.tr, + 'go to your passenger location before\nPassenger cancel trip'.tr, () { + Get.back(); + }); + } + } + + calculateDistanceInMeter(LatLng prev, LatLng current) async { + double distance2 = Geolocator.distanceBetween( + prev.latitude, + prev.longitude, + current.latitude, + current.longitude, + ); + return distance2; + } + + double speedoMeter = 0; + void updateLocation() async { + try { + for (var i = 0; i < remainingTimeTimerRideBegin; i++) { + await Future.delayed(const Duration(seconds: 1)); + + mapController!.animateCamera( + CameraUpdate.newCameraPosition( + CameraPosition( + bearing: Get.find().heading, + target: myLocation, + zoom: 17, // Adjust zoom level as needed + ), + ), + ); + // }); + update(); + } + + // Stop listening after ride finishes + if (!isRideBegin) {} + } catch (error) { + debugPrint('Error listening to GPS: $error'); + // Handle GPS errors gracefully + } + + // Periodically call updateLocation again + await Future.delayed(const Duration(seconds: 1)); + updateLocation(); + } + + calculateDistanceBetweenDriverAndPassengerLocation() async { + Get.put(LocationController()); + var res = await CRUD().get( + link: AppLink.getLatestLocationPassenger, + payload: {'rideId': (rideId)}); + if (res != 'failure') { + var passengerLatestLocationString = jsonDecode(res)['message']; + + double distance2 = Geolocator.distanceBetween( + double.parse(passengerLatestLocationString[0]['lat'].toString()), + double.parse(passengerLatestLocationString[0]['lng'].toString()), + Get.find().myLocation.latitude, + Get.find().myLocation.longitude, + ); + return distance2; + } else { + double distance2 = Geolocator.distanceBetween( + latLngPassengerLocation.latitude, + latLngPassengerLocation.longitude, + Get.find().myLocation.latitude, + Get.find().myLocation.longitude, + ); + return distance2; + } + } + + addWaitingTimeCostFromPassengerToDriverWallet() async { + double distance2 = + await calculateDistanceBetweenDriverAndPassengerLocation(); + + if (distance2 > 60) { + MyDialog().getDialog('Your are far from passenger location'.tr, + 'go to your passenger location before\nPassenger cancel trip'.tr, () { + Get.back(); + }); + } else { + double costOfWaiting5Minute = box.read(BoxName.countryCode) == 'Egypt' + ? (distanceBetweenDriverAndPassengerWhenConfirm * .08) + (5 * 1) + : (distanceBetweenDriverAndPassengerWhenConfirm * .06) + + (5 * .06); //for Eygpt other like jordan .06 per minute + await CRUD().post(link: AppLink.updateRides, payload: { + 'id': (rideId), + 'rideTimeStart': DateTime.now().toString(), + 'status': 'CancelAfterWait', + }); + CRUD().post(link: AppLink.addDriverOrder, payload: { + 'driver_id': box.read(BoxName.driverID).toString(), + 'order_id': (rideId).toString(), + 'status': 'CancelAfterWait' + }); + + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post(link: "${AppLink.endPoint}/rides/update.php", payload: { + 'id': (rideId), + 'rideTimeStart': DateTime.now().toString(), + 'status': 'CancelAfterWait', + }); + CRUD().post(link: "${AppLink.endPoint}/rides/update.php", payload: { + 'driver_id': box.read(BoxName.driverID).toString(), + 'order_id': (rideId).toString(), + 'status': 'CancelAfterWait' + }); + } + var paymentTokenWait = + await generateTokenDriver(costOfWaiting5Minute.toString()); + var res = await CRUD().post(link: AppLink.addDrivePayment, payload: { + 'rideId': (rideId), + 'amount': (costOfWaiting5Minute.toString()), + 'payment_method': 'wait-cancel', + 'passengerID': (passengerId), + 'token': paymentTokenWait, + 'driverID': box.read(BoxName.driverID).toString(), + }); + var paymentTokenWait1 = + await generateTokenDriver(costOfWaiting5Minute.toString()); + var res1 = + await CRUD().post(link: AppLink.addDriversWalletPoints, payload: { + 'paymentID': 'rideId${(rideId)}', + 'amount': (costOfWaiting5Minute).toStringAsFixed(0), + 'paymentMethod': 'wait', + 'token': paymentTokenWait1, + 'driverID': box.read(BoxName.driverID).toString(), + }); + if (res != 'failure') { + Get.snackbar( + 'You will get cost of your work for this trip'.tr, + '${'you gain'.tr} $costOfWaiting5Minute \$${' in your wallet'.tr}', + backgroundColor: AppColor.deepPurpleAccent, + ); + } + var paymentTokenWaitPassenger1 = + await generateTokenPassenger((costOfWaiting5Minute * -1).toString()); + await CRUD().post(link: AppLink.addPassengersWallet, payload: { + 'passenger_id': (passengerId), + 'balance': (costOfWaiting5Minute * -1).toString(), + 'token': paymentTokenWaitPassenger1, + }); + box.write(BoxName.statusDriverLocation, 'off'); + Get.offAll(HomeCaptain()); + } + } + + Future finishRideFromDriver() async { + double distanceToDestination = Geolocator.distanceBetween( + latLngPassengerDestination.latitude, + latLngPassengerDestination.longitude, + Get.find().myLocation.latitude, + Get.find().myLocation.longitude, + ); + final originalDistanceM = double.parse(distance.toString()) * 1000; + + // 2. احسب Ø§Ù„Ù…Ø³Ø§ÙØ© التي قطعها السائق حتى الآن + final movedDistanceM = originalDistanceM - distanceToDestination; + + // 3. عتبة ثلث Ø§Ù„Ù…Ø³Ø§ÙØ© + final oneThirdDistanceM = originalDistanceM / 3; + + // Logging للتتبع + Log.print('originalDistanceM: $originalDistanceM'); + Log.print('distanceToDestinationM: $distanceToDestination'); + Log.print('movedDistanceM: $movedDistanceM'); + Log.print('oneThirdDistanceM: $oneThirdDistanceM'); + + // 4. إذا لم يقطع السائق ثلث Ø§Ù„Ù…Ø³Ø§ÙØ©ØŒ نعرض التأكيد + if (movedDistanceM < oneThirdDistanceM) { + MyDialog().getDialog( + 'Are you sure to exit ride?'.tr, + '', + () { + Get.back(); + finishRideFromDriver1(); + }, + ); + } ///// + + else { + final textToSpeechController = Get.put(TextToSpeechController()); + MyDialog().getDialog( + "You haven't moved sufficiently!".tr, + '', + () => Get.back(), + ); + await textToSpeechController + .speakText("You haven't moved sufficiently!".tr); + } + } + + String paymentToken = ''; + Future generateTokenDriver(String amount) async { + var res = + await CRUD().postWallet(link: AppLink.addPaymentTokenDriver, payload: { + 'driverID': box.read(BoxName.driverID).toString(), + 'amount': amount.toString(), + }); + var d = (res); + return d['message']; + } + + String paymentTokenPassenger = ''; + Future generateTokenPassenger(String amount) async { + var res = await CRUD() + .postWallet(link: AppLink.addPaymentTokenPassenger, payload: { + 'passengerId': passengerId, + 'amount': amount.toString(), + }); + var d = (res); + return d['message']; + } + + void finishRideFromDriver1() async { + isRideFinished = true; + isRideStarted = false; + isPriceWindow = false; + box.write(BoxName.rideStatus, 'Finished'); + Log.print('rideStatus from map 664 : ${box.read(BoxName.rideStatus)}'); + + // Calculate totalCost more concisely + if (price < 20) { + totalCost = (carType == 'Comfort' || + carType == 'Mishwar Vip' || + carType == 'Lady') + ? '30' + : '20'; + } else if (price < double.parse(totalPricePassenger)) { + totalCost = totalPricePassenger; + } else { + totalCost = (carType == 'Comfort' || + carType == 'Mishwar Vip' || + carType == 'Lady') + ? price.toStringAsFixed(2) + : totalPricePassenger; + } + paymentAmount = totalCost; + box.write(BoxName.statusDriverLocation, 'off'); + + // Prepare data for API calls + final nowString = DateTime.now().toString(); + final basePayload = { + 'id': (rideId), + 'rideTimeFinish': nowString, + 'status': 'Finished', + 'price': totalCost, + }; + final driverOrderPayload = { + 'order_id': (rideId.toString()), + 'status': 'Finished' + }; + + // List to hold all asynchronous operations + List> futures = []; + + // API calls that can run in parallel + futures.add(CRUD().post( + link: "${AppLink.seferCairoServer}/ride/rides/update.php", + payload: basePayload, + )); + futures.add(CRUD().post( + link: "${AppLink.seferCairoServer}/ride/driver_order/update.php", + payload: driverOrderPayload, + )); + + if (AppLink.endPoint != AppLink.seferCairoServer) { + futures.add(CRUD().post( + link: "${AppLink.endPoint}/ride/rides/update.php", + payload: basePayload, + )); + futures.add(CRUD().post( + link: "${AppLink.endPoint}/ride/driver_order/update.php", + payload: driverOrderPayload, + )); + } + + // Wallet transactions (can potentially be parallelized if independent) + if (walletChecked == 'true') { + paymentToken = await generateTokenPassenger( + ((-1) * double.parse(paymentAmount)).toString()); + futures + .add(CRUD().postWallet(link: AppLink.addPassengersWallet, payload: { + 'passenger_id': (passengerId), + 'balance': ((-1) * double.parse(paymentAmount)).toString(), + 'token': paymentToken, + })); + } + + paymentToken = await generateTokenDriver(paymentAmount.toString()); + futures.add(CRUD().postWallet(link: AppLink.addDrivePayment, payload: { + 'rideId': (rideId), + 'amount': paymentAmount, + 'payment_method': + walletChecked == 'true' ? "${paymentMethod}Ride" : paymentMethod, + 'passengerID': (passengerId), + 'token': paymentToken, + 'driverID': box.read(BoxName.driverID).toString(), + })); + + if (double.parse(passengerWalletBurc) < 0) { + final paymentToken1 = await generateTokenPassenger( + ((-1) * double.parse(passengerWalletBurc)).toString()); + futures + .add(CRUD().postWallet(link: AppLink.addPassengersWallet, payload: { + 'passenger_id': (passengerId), + 'token': paymentToken1, + 'balance': ((-1) * double.parse(passengerWalletBurc)).toString() + })); + } + + double pointsSubtraction = double.parse(paymentAmount) * (-1) * 0.08; + final paymentToken2 = + await generateTokenDriver((pointsSubtraction).toStringAsFixed(0)); + futures + .add(CRUD().postWallet(link: AppLink.addDriversWalletPoints, payload: { + 'paymentID': 'rideId${(rideId)}', + 'amount': (pointsSubtraction).toStringAsFixed(0), + 'paymentMethod': paymentMethod, + 'token': paymentToken2, + 'driverID': box.read(BoxName.driverID).toString(), + })); + + // Wait for all independent API calls to complete + await Future.wait(futures); + Get.put(DriverBehaviorController()).sendSummaryToServer(driverId, rideId); + + // Send notification (this likely depends on previous steps) + Get.find().sendNotificationToDriverMAP( + "Driver Finish Trip".tr, + '${'you will pay to Driver'.tr} $paymentAmount \$', + tokenPassenger, + [ + box.read(BoxName.driverID), + rideId, + box.read(BoxName.tokenDriver), + paymentAmount.toString() + ], + 'ding.wav'); + + // Navigate to the next screen (likely depends on previous steps being done) + Get.to(() => RatePassenger(), arguments: { + 'passengerId': passengerId, + 'rideId': rideId, + 'price': paymentAmount.toString(), + 'walletChecked': walletChecked + }); + } + // void finishRideFromDriver1() async { + // // if (carType != 'Comfort' || carType != 'Free Ride') { + + // isRideFinished = true; + // isRideStarted = false; + // isPriceWindow = false; + // box.write(BoxName.rideStatus, 'Finished'); + // // Get.find().changeToAppliedRide('Finished'); + // // Get.find().update(); + // totalCost = price < 20 + // ? carType != 'Comfort' && carType != 'Mishwar Vip' && carType != 'Lady' + // ? '20' + // : '30' + // : price < double.parse(totalPricePassenger) + // ? totalPricePassenger + // : carType != 'Comfort' && + // carType != 'Mishwar Vip' && + // carType != 'Lady' + // ? totalPricePassenger + // : price.toStringAsFixed(2); + // paymentAmount = totalCost; + // box.write(BoxName.statusDriverLocation, 'off'); + // // changeRideToBeginToPassenger(); + // await CRUD().post( + // link: "${AppLink.seferCairoServer}/ride/rides/update.php", + // payload: { + // 'id': rideId, + // 'rideTimeFinish': DateTime.now().toString(), + // 'status': 'Finished', + // 'price': totalCost, + // }); + // CRUD().post( + // link: "${AppLink.seferCairoServer}/ride/driver_order/update.php", + // payload: { + // // 'driver_id': box.read(BoxName.driverID).toString(), + // 'order_id': rideId.toString(), + // 'status': 'Finished' + // }); + // if (AppLink.endPoint != AppLink.seferCairoServer) { + // CRUD().post( + // link: "${AppLink.endPoint}/ride/rides/update.php", + // payload: { + // 'id': rideId, + // 'rideTimeFinish': DateTime.now().toString(), + // 'status': 'Finished', + // 'price': totalCost, + // }, + // ); + // CRUD().post( + // link: "${AppLink.endPoint}/ride/driver_order/update.php", + // payload: { + // // 'driver_id': box.read(BoxName.driverID).toString(), + // 'order_id': rideId.toString(), + // 'status': 'Finished' + // }); + // } + // if (walletChecked == 'true') { + // paymentToken = await generateTokenPassenger( + // ((-1) * double.parse(paymentAmount)).toString()); + // await CRUD().post(link: AppLink.addPassengersWallet, payload: { + // 'passenger_id': passengerId, + // 'balance': ((-1) * double.parse(paymentAmount)).toString(), + // 'token': paymentToken, + // }); + // } + // paymentToken = await generateTokenDriver(paymentAmount.toString()); + // await CRUD().post(link: AppLink.addDrivePayment, payload: { + // 'rideId': rideId, + // 'amount': paymentAmount, + // 'payment_method': + // walletChecked == 'true' ? "${paymentMethod}Ride" : paymentMethod, + // 'passengerID': passengerId, + // 'token': paymentToken, + // 'driverID': box.read(BoxName.driverID).toString(), + // }); + // if (double.parse(passengerWalletBurc) < 0) { + // // for zero passenger + // var paymentToken1 = await generateTokenPassenger( + // ((-1) * double.parse(passengerWalletBurc)).toString()); + // await CRUD().post(link: AppLink.addPassengersWallet, payload: { + // 'passenger_id': passengerId, + // 'token': paymentToken1, + // 'balance': ((-1) * double.parse(passengerWalletBurc)).toString() + // }); + // } + + // double pointsSubtraction = 0; + // pointsSubtraction = + // double.parse(paymentAmount) * (-1) * .08; //for 300 from 3000 + // var paymentToken2 = + // await generateTokenDriver((pointsSubtraction).toStringAsFixed(0)); + // var res = await CRUD().post(link: AppLink.addDriversWalletPoints, payload: { + // 'paymentID': 'rideId$rideId', + // 'amount': (pointsSubtraction).toStringAsFixed(0), + // 'paymentMethod': paymentMethod, + // 'token': paymentToken2, + // 'driverID': box.read(BoxName.driverID).toString(), + // }); + // Future.delayed(const Duration(milliseconds: 300)); + // Get.find().sendNotificationToDriverMAP( + // "Driver Finish Trip".tr, + // '${'you will pay to Driver'.tr} $paymentAmount \$', + // tokenPassenger, + // [ + // box.read(BoxName.driverID), + // rideId, + // box.read(BoxName.tokenDriver), + // // carType == 'Comfort' || carType == 'Mishwar Vip' + // // ? price.toStringAsFixed(2) + // // : totalPassenger + // paymentAmount.toString() + // ], + // 'ding.wav'); + // Get.to(() => RatePassenger(), arguments: { + // 'passengerId': passengerId, + // 'rideId': rideId, + // 'price': paymentAmount.toString(), //price + // 'walletChecked': walletChecked + // }); + // // Get.back(); + // } + + void cancelCheckRideFromPassenger() async { + var res = await CRUD().get( + link: "${AppLink.endPoint}/ride/driver_order/getOrderCancelStatus.php", + payload: { + 'order_id': (rideId), + }); //.then((value) { + var response = jsonDecode(res); + canelString = response['data']['status']; + update(); + if (canelString == 'Cancel') { + remainingTimeTimerRideBegin = 0; + remainingTimeToShowPassengerInfoWindowFromDriver = 0; + remainingTimeToPassenger = 0; + isRideStarted = false; + isRideFinished = false; + isPassengerInfoWindow = false; + clearPolyline(); + update(); + MyDialog().getDialog( + 'Order Cancelled'.tr, + 'Order Cancelled by Passenger'.tr, + () { + Get.offAll(HomeCaptain()); + }, + ); + } + } + + int rideTimerFromBegin = 0; + double price = 0; + DateTime currentTime = DateTime.now(); + void rideIsBeginPassengerTimer() async { + int durationOfRide = int.parse(durationOfRideValue); + double latePrice = Get.find().latePrice; + update(); + int infinity = 40000; + if (carType == 'Comfort' || + carType == 'Mishwar Vip' || + carType == 'RayehGaiComfort') { + durationOfRide = infinity; + update(); + } + // if (carType != 'Comfort' || + // carType != 'Mishwar Vip' || + // carType != 'Lady' || + // carType != 'RayehGaiComfort') { + price = double.parse(totalCost); + // update(); + // } + for (int i = 0; i <= durationOfRide; i++) { + await Future.delayed(const Duration(seconds: 1)); + recentDistanceToDash = Get.find().totalDistance; + // rideTimerFromBegin = i; + if (int.parse(duration) + 300 > i) { + price = double.parse(totalCost); + } else { + if (startNameLocation.toLowerCase().contains('airport') || + endNameLocation.toLowerCase().contains('airport') || + startNameLocation.contains('مطار') || + startNameLocation.contains('المطار') || + endNameLocation.contains('مطار') || + endNameLocation.contains('المطار')) { + price = carType == 'Comfort' // || carType == 'Free Ride' + ? price + ((i ~/ 60) - int.parse(duration)) * latePrice + : carType == 'Lady' + ? price + ((i ~/ 60) - int.parse(duration)) * latePrice + : carType == 'RayehGaiComfort' + ? (i ~/ 60) * latePrice + + (recentDistanceToDash * + Get.find().comfortPrice) + : (i ~/ 60) * latePrice + + (recentDistanceToDash * + Get.find().mashwariPrice); + } else if (currentTime.hour >= 21 && currentTime.hour < 0) { + price = carType == 'Comfort' // || carType == 'Free Ride' + ? price + ((i ~/ 60) - int.parse(duration)) * latePrice + : carType == 'Lady' + ? price + ((i ~/ 60) - int.parse(duration)) * latePrice + : carType == 'RayehGaiComfort' + ? (i ~/ 60) * latePrice + + (recentDistanceToDash * + Get.find().comfortPrice) + : (i ~/ 60) * latePrice + + (recentDistanceToDash * + Get.find().mashwariPrice); + } else if (currentTime.hour >= 1 && currentTime.hour < 5) { + if (startNameLocation.contains('club') || + startNameLocation.contains('nightclub') || + startNameLocation.contains('ديسكو') || + startNameLocation.contains('ملهى ليلي') || + startNameLocation.contains('Night club')) { + price = carType == 'Comfort' // || carType == 'Free Ride' + ? (i ~/ 60) * (latePrice + .5) * 2 + + (price) - + int.parse(duration) * (latePrice + .5) * 2 + : carType == 'Lady' + ? (i ~/ 60) * (latePrice + .5) * 2 + + (price) - + int.parse(duration) * (latePrice + .5) * 2 + : carType == 'RayehGaiComfort' + ? (i ~/ 60) * (latePrice + .5) * 2 + (price) + : (i ~/ 60) * (latePrice + .5) * 2 + (price); + } + price = carType == 'Comfort' // || carType == 'Free Ride' + ? (latePrice + 0.5) * ((i ~/ 60) - int.parse(duration)) + price + : carType == 'Lady' + ? (latePrice + 0.5) * ((i ~/ 60) - int.parse(duration)) + + price + : carType == 'RayehGaiComfort' + ? (latePrice + 0.5) * ((i ~/ 60) - int.parse(duration)) + + price + : price; + } else if (currentTime.hour >= 14 && currentTime.hour <= 17) { + price = carType == 'Comfort' // || carType == 'Free Ride' + ? Get.find().heavyPrice * + ((i ~/ 60) - int.parse(duration)) + + price - + (0.5 * int.parse(duration)) + : carType == 'Lady' + ? Get.find().heavyPrice * + ((i ~/ 60) - int.parse(duration)) + + price - + (0.5 * int.parse(duration)) + : carType == 'RayehGaiComfort' + ? (i ~/ 60) * + (Get.find().heavyPrice) + + (recentDistanceToDash * + Get.find().comfortPrice) + : (i ~/ 60) * + (Get.find().heavyPrice) + + (recentDistanceToDash * + Get.find().mashwariPrice); + } else { + price = carType == 'Comfort' // || carType == 'Free Ride' + ? (i ~/ 60) + (price) - int.parse(duration) + : carType == 'Lady' + ? (i ~/ 60) + (price) - int.parse(duration) + : carType == 'RayehGaiComfort' + ? (i ~/ 60) + + (recentDistanceToDash * + Get.find().comfortPrice) + : (i ~/ 60) + + (recentDistanceToDash * + Get.find().mashwariPrice); + } + } + + // $1 for each minute + $4 for each km + price = (price * double.parse(kazan)) + price; // Add 10% tax + speed = Get.find().speed * 3.6; + progressTimerRideBegin = i / durationOfRide; + remainingTimeTimerRideBegin = durationOfRide - i; + remainingTimeTimerRideBegin < 60 ? driverEndPage = 160 : 100; + updateMarker(); + if (remainingTimeTimerRideBegin < 60) { + // to make driver available on last 2 minute in his trip + box.write(BoxName.statusDriverLocation, 'off'); + } + int minutes = (remainingTimeTimerRideBegin / 60).floor(); + int seconds = remainingTimeTimerRideBegin % 60; + stringRemainingTimeRideBegin = + '$minutes:${seconds.toString().padLeft(2, '0')}'; + int minutes1 = (i / 60).floor(); + int seconds1 = i % 60; + stringRemainingTimeRideBegin1 = + '$minutes1:${seconds1.toString().padLeft(2, '0')}'; + update(); + } + } + + double recentDistanceToDash = 0; + double recentAngelToMarker = 0; + double speed = 0; + void updateMarker() async { + // Remove the existing marker with the ID `MyLocation`. + markers.remove(MarkerId('MyLocation')); + + // Add a new marker with the ID `MyLocation` at the current location of the user. + LocationController locationController = Get.find(); + myLocation = locationController.myLocation; + + markers.add( + Marker( + markerId: MarkerId('MyLocation'.tr), + position: myLocation, + draggable: true, + icon: carIcon, + rotation: locationController.heading, + // infoWindow: const InfoWindow( + // title: 'Time', + // ), + ), + ); + + // Animate camera only once after updating the marker + // mapController!.animateCamera( + // CameraUpdate.newLatLng(myLocation), + // ); + update(); + } + + void addCustomCarIcon() { + ImageConfiguration config = ImageConfiguration( + size: const Size(30, 35), devicePixelRatio: Get.pixelRatio); + BitmapDescriptor.asset( + config, + 'assets/images/car.png', + // mipmaps: false, + ).then((value) { + carIcon = value; + update(); + }); + } + + void addCustomStartIcon() async { +// Create the marker with the resized image + + ImageConfiguration config = ImageConfiguration( + size: const Size(30, 30), devicePixelRatio: Get.pixelRatio); + BitmapDescriptor.asset( + config, + 'assets/images/A.png', + ).then((value) { + startIcon = value; + update(); + }); + } + + void addCustomEndIcon() { + ImageConfiguration config = ImageConfiguration( + size: const Size(25, 25), devicePixelRatio: Get.pixelRatio); + BitmapDescriptor.asset( + config, + 'assets/images/b.png', + ).then((value) { + endIcon = value; + update(); + }); + } + + void addCustomPassengerIcon() { + ImageConfiguration config = ImageConfiguration( + size: const Size(30, 30), devicePixelRatio: Get.pixelRatio + // scale: 1.0, + ); + BitmapDescriptor.asset( + config, + 'assets/images/picker.png', + ).then((value) { + passengerIcon = value; + update(); + }); + } + + double distanceBetweenDriverAndPassengerWhenConfirm = 0; + getMap(String origin, destination) async { + isLoading = false; + + update(); + + var url = + ('${AppLink.googleMapsLink}directions/json?&language=${box.read(BoxName.lang)}&avoid=tolls|ferries&destination=$destination&origin=$origin&key=${AK.mapAPIKEY}'); + + var response = await CRUD().getGoogleApi(link: url, payload: {}); + data = response['routes'][0]['legs']; + distanceBetweenDriverAndPassengerWhenConfirm = + (data[0]['distance']['value']) / 1000; + final points = + decodePolyline(response["routes"][0]["overview_polyline"]["points"]); + for (int i = 0; i < points.length; i++) { + double lat = points[i][0].toDouble(); + double lng = points[i][1].toDouble(); + polylineCoordinates.add(LatLng(lat, lng)); + } + if (polyLines.isNotEmpty) { + clearPolyline(); + var polyline = Polyline( + polylineId: PolylineId(response["routes"][0]["summary"]), + points: polylineCoordinates, + width: 10, + color: AppColor.blueColor, + ); + polyLines.add(polyline); + // rideConfirm = false; + update(); + } else { + var polyline = Polyline( + polylineId: PolylineId(response["routes"][0]["summary"]), + points: polylineCoordinates, + width: 10, + color: AppColor.blueColor, + ); + // final dataBounds = response["routes"][0]["bounds"]; + + // updateCameraFromBoundsAfterGetMap(dataBounds); + +// Fit the camera to the bounds + + polyLines.add(polyline); + // rideConfirm = false; + // Define the northeast and southwest coordinates + final bounds = response["routes"][0]["bounds"]; + LatLng northeast = + LatLng(bounds['northeast']['lat'], bounds['northeast']['lng']); + LatLng southwest = + LatLng(bounds['southwest']['lat'], bounds['southwest']['lng']); + +// Create the LatLngBounds object + boundsData = LatLngBounds(northeast: northeast, southwest: southwest); + +// Fit the camera to the bounds + var cameraUpdate = CameraUpdate.newLatLngBounds(boundsData!, 140); + mapController!.animateCamera(cameraUpdate); + update(); + } + } + + getMapDestination(String origin, destination) async { + var url = + ('${AppLink.googleMapsLink}directions/json?&language=${box.read(BoxName.lang)}&avoid=tolls|ferries&destination=$destination&origin=$origin&key=${AK.mapAPIKEY}'); + + var response = await CRUD().getGoogleApi(link: url, payload: {}); + dataDestination = response['routes'][0]['legs']; + final points = + decodePolyline(response["routes"][0]["overview_polyline"]["points"]); + for (int i = 0; i < points.length; i++) { + double lat = points[i][0].toDouble(); + double lng = points[i][1].toDouble(); + polylineCoordinatesDestination.add(LatLng(lat, lng)); + } + if (polyLinesDestination.isNotEmpty) { + // clearPolyline(); + var polyline = Polyline( + polylineId: PolylineId(response["routes"][0]["summary"]), + points: polylineCoordinatesDestination, + width: 10, + color: AppColor.redColor, + ); + polyLinesDestination.add(polyline); + // rideConfirm = false; + update(); + } else { + var polyline = Polyline( + polylineId: PolylineId(response["routes"][0]["summary"]), + points: polylineCoordinatesDestination, + width: 10, + color: AppColor.redColor, + ); + // final dataBounds = response["routes"][0]["bounds"]; + + // updateCameraFromBoundsAfterGetMap(dataBounds); + // polyLinesDestination.add(polyline); + // rideConfirm = false; + // Define the northeast and southwest coordinates + + update(); + } + } + + void updateCameraFromBoundsAfterGetMap(dynamic response) { + final bounds = response["routes"][0]["bounds"]; + LatLng northeast = + LatLng(bounds['northeast']['lat'], bounds['northeast']['lng']); + LatLng southwest = + LatLng(bounds['southwest']['lat'], bounds['southwest']['lng']); + +// Create the LatLngBounds object + LatLngBounds boundsData = + LatLngBounds(northeast: northeast, southwest: southwest); + +// Fit the camera to the bounds + var cameraUpdate = CameraUpdate.newLatLngBounds(boundsData, 140); + mapController!.animateCamera(cameraUpdate); + } + + void changePassengerInfoWindow() { + isPassengerInfoWindow = !isPassengerInfoWindow; + passengerInfoWindowHeight = isPassengerInfoWindow == true ? 200 : 0; + update(); + } + + double mpg = 0; + calculateConsumptionFuel() { + mpg = Get.find().fuelPrice / + 12; //todo in register car add mpg in box + update(); + } + + argumentLoading() async { + passengerLocation = Get.arguments['passengerLocation']; + passengerDestination = Get.arguments['passengerDestination']; + duration = Get.arguments['Duration']; + totalCost = Get.arguments['totalCost']; + passengerId = Get.arguments['passengerId']; + driverId = Get.arguments['driverId']; + distance = Get.arguments['Distance']; + passengerName = Get.arguments['name']; + passengerEmail = Get.arguments['email']; + totalPricePassenger = Get.arguments['totalPassenger']; + passengerPhone = Get.arguments['phone']; + walletChecked = Get.arguments['WalletChecked']; + tokenPassenger = Get.arguments['tokenPassenger']; + direction = Get.arguments['direction']; + durationToPassenger = Get.arguments['DurationToPassenger']; + rideId = Get.arguments['rideId']; + durationOfRideValue = Get.arguments['durationOfRideValue']; + paymentAmount = Get.arguments['paymentAmount']; + paymentMethod = Get.arguments['paymentMethod']; + isHaveSteps = Get.arguments['isHaveSteps']; + step0 = Get.arguments['step0']; + step1 = Get.arguments['step1']; + step2 = Get.arguments['step2']; + step3 = Get.arguments['step3']; + step4 = Get.arguments['step4']; + passengerWalletBurc = Get.arguments['passengerWalletBurc']; + timeOfOrder = Get.arguments['timeOfOrder']; + carType = Get.arguments['carType']; + kazan = Get.arguments['kazan']; + startNameLocation = Get.arguments['startNameLocation']; + endNameLocation = Get.arguments['endNameLocation']; + +// Parse to double + latlng(passengerLocation, passengerDestination); + + String lat = Get.find().myLocation.latitude.toString(); + String lng = Get.find().myLocation.longitude.toString(); + String origin = '$lat,$lng'; + // Set the origin and destination coordinates for the Google Maps directions request. + Future.delayed(const Duration(seconds: 1)); + getMap(origin, passengerLocation); + isHaveSteps == 'haveSteps' + ? ( + await getMapDestination(step0, step1), + await getMapDestination(step1, step2), + step3 == '' ? await getMapDestination(step2, step3) : () {}, + step4 == '' ? await getMapDestination(step3, step4) : () {}, + ) + : await getMapDestination(passengerLocation, passengerDestination); + update(); + } + + latlng(String passengerLocation, passengerDestination) { + double latPassengerLocation = + double.parse(passengerLocation.toString().split(',')[0]); + double lngPassengerLocation = + double.parse(passengerLocation.toString().split(',')[1]); + double latPassengerDestination = + double.parse(passengerDestination.toString().split(',')[0]); + double lngPassengerDestination = + double.parse(passengerDestination.toString().split(',')[1]); + latLngPassengerLocation = + LatLng(latPassengerLocation, lngPassengerLocation); + latLngPassengerDestination = + LatLng(latPassengerDestination, lngPassengerDestination); + } + + late Duration durationToAdd; + int hours = 0; + int minutes = 0; + late String carType; + late String kazan; + late String startNameLocation; + late String endNameLocation; + + Future runGoogleMapDirectly() async { + if (box.read(BoxName.googlaMapApp) == true) { + if (Platform.isAndroid) { + Bubble().startBubbleHead(sendAppToBackground: true); + } + await openGoogleMapFromDriverToPassenger(); + } + } + + @override + void onInit() async { + mapAPIKEY = await storage.read(key: BoxName.mapAPIKEY); + // Get the passenger location from the arguments. + await argumentLoading(); + Get.put(FirebaseMessagesController()); + runGoogleMapDirectly(); + addCustomCarIcon(); + addCustomPassengerIcon(); + addCustomStartIcon(); + addCustomEndIcon(); + // updateMarker(); + // updateLocation(); + startTimerToShowPassengerInfoWindowFromDriver(); + durationToAdd = Duration(seconds: int.parse(duration)); + hours = durationToAdd.inHours; + minutes = (durationToAdd.inMinutes % 60).round(); + calculateConsumptionFuel(); + // cancelCheckRidefromPassenger(); + // checkIsDriverNearPassenger(); + super.onInit(); + } +} diff --git a/lib/controller/home/captin/order_request_controller.dart b/lib/controller/home/captin/order_request_controller.dart new file mode 100755 index 0000000..fbf71d7 --- /dev/null +++ b/lib/controller/home/captin/order_request_controller.dart @@ -0,0 +1,282 @@ +import 'dart:convert'; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter_overlay_window/flutter_overlay_window.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'dart:math' as math; +import '../../../constant/box_name.dart'; +import '../../../print.dart'; +import '../../functions/audio_controller.dart'; +import '../../functions/crud.dart'; +import '../../functions/encrypt_decrypt.dart'; +import '../../functions/location_controller.dart'; +import 'home_captain_controller.dart'; + +class OrderRequestController extends GetxController { + double progress = 0; + double progressSpeed = 0; + int duration = 15; + int durationSpeed = 20; + int remainingTime = 0; + int remainingTimeSpeed = 0; + String countRefuse = '0'; + bool applied = false; + final locationController = Get.put(LocationController()); + BitmapDescriptor startIcon = BitmapDescriptor.defaultMarker; + BitmapDescriptor endIcon = BitmapDescriptor.defaultMarker; + final arguments = Get.arguments; + var myList; + late int hours; + late int minutes; + GoogleMapController? mapController; // Make it nullable + + @override + Future onInit() async { + print('OrderRequestController onInit called'); + await initializeOrderPage(); + bool isOverlayActive = await FlutterOverlayWindow.isActive(); + if (isOverlayActive) { + await FlutterOverlayWindow.closeOverlay(); + } + addCustomStartIcon(); + addCustomEndIcon(); + startTimer( + myList[6].toString(), + myList[16].toString(), + ); + update(); + super.onInit(); + } + + late LatLngBounds bounds; + late List pointsDirection; + late String body; + late double latPassengerLocation; + late double lngPassengerLocation; + late double lngPassengerDestination; + late double latPassengerDestination; + + Future initializeOrderPage() async { + final myListString = Get.arguments['myListString']; + + if (Get.arguments['DriverList'] == null || + Get.arguments['DriverList'].isEmpty) { + myList = jsonDecode(myListString); + Log.print('myList from myListString: ${myList}'); + } else { + myList = Get.arguments['DriverList']; + Log.print('myList from DriverList: ${myList}'); + } + + body = Get.arguments['body']; + Duration durationToAdd = + Duration(seconds: (double.tryParse(myList[4]) ?? 0).toInt()); + hours = durationToAdd.inHours; + minutes = (durationToAdd.inMinutes % 60).round(); + startTimerSpeed(myList[6].toString(), body.toString()); + + // --- Using the provided logic for initialization --- + var cords = myList[0].toString().split(','); + var cordDestination = myList[1].toString().split(','); + + double? parseDouble(String value) { + try { + return double.parse(value); + } catch (e) { + Log.print("Error parsing value: $value"); + return null; // or handle the error appropriately + } + } + + latPassengerLocation = parseDouble(cords[0]) ?? 0.0; + lngPassengerLocation = parseDouble(cords[1]) ?? 0.0; + latPassengerDestination = parseDouble(cordDestination[0]) ?? 0.0; + lngPassengerDestination = parseDouble(cordDestination[1]) ?? 0.0; + + pointsDirection = [ + LatLng(latPassengerLocation, lngPassengerLocation), + LatLng(latPassengerDestination, lngPassengerDestination) + ]; + Log.print('pointsDirection: $pointsDirection'); + + calculateBounds(); + update(); + } + + void onMapCreated(GoogleMapController controller) { + mapController = controller; + animateCameraToBounds(); + } + + void calculateBounds() { + double minLat = math.min(latPassengerLocation, latPassengerDestination); + double maxLat = math.max(latPassengerLocation, latPassengerDestination); + double minLng = math.min(lngPassengerLocation, lngPassengerDestination); + double maxLng = math.max(lngPassengerLocation, lngPassengerDestination); + + bounds = LatLngBounds( + southwest: LatLng(minLat, minLng), + northeast: LatLng(maxLat, maxLng), + ); + Log.print('Calculated Bounds: $bounds'); + } + + void animateCameraToBounds() { + if (mapController != null) { + mapController!.animateCamera(CameraUpdate.newLatLngBounds(bounds, 80.0)); + } else { + Log.print('mapController is null, cannot animate camera.'); + } + } + + getRideDEtailsForBackgroundOrder(String rideId) async { + await CRUD().get(link: AppLink.getRidesDetails, payload: { + 'id': rideId, + }); + } + + void addCustomStartIcon() async { + ImageConfiguration config = const ImageConfiguration(size: Size(30, 30)); + BitmapDescriptor.asset( + config, + 'assets/images/A.png', + ).then((value) { + startIcon = value; + update(); + }); + } + + void addCustomEndIcon() { + ImageConfiguration config = const ImageConfiguration(size: Size(30, 30)); + BitmapDescriptor.asset( + config, + 'assets/images/b.png', + ).then((value) { + endIcon = value; + update(); + }); + } + + void changeApplied() { + applied = true; + update(); + } + + double mpg = 0; + calculateConsumptionFuel() { + mpg = Get.find().fuelPrice / 12; + } + + bool _timerActive = false; + + Future startTimer(String driverID, String orderID) async { + _timerActive = true; + for (int i = 0; i <= duration && _timerActive; i++) { + await Future.delayed(const Duration(seconds: 1)); + progress = i / duration; + remainingTime = duration - i; + update(); + } + if (remainingTime == 0 && _timerActive) { + if (applied == false) { + endTimer(); + refuseOrder(orderID); + } + } + } + + void endTimer() { + _timerActive = false; + } + + void startTimerSpeed(String driverID, orderID) async { + for (int i = 0; i <= durationSpeed; i++) { + await Future.delayed(const Duration(seconds: 1)); + progressSpeed = i / durationSpeed; + remainingTimeSpeed = durationSpeed - i; + update(); + } + if (remainingTimeSpeed == 0) { + if (applied == false) { + Get.back(); + } + } + } + + void refuseOrder( + orderID, + ) async { + await CRUD().postFromDialogue(link: AppLink.addDriverOrder, payload: { + 'driver_id': box.read(BoxName.driverID), + 'order_id': (orderID), + 'status': 'Refused' + }); + await CRUD().post(link: AppLink.updateRides, payload: { + 'id': (orderID), + 'status': 'Refused', + 'driver_id': box.read(BoxName.driverID), + }); + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post(link: '${AppLink.endPoint}/rides/update.php', payload: { + 'id': (orderID), + 'status': 'Refused', + 'driver_id': box.read(BoxName.driverID), + }); + } + update(); + } + + addRideToNotificationDriverString( + orderID, + String startLocation, + String endLocation, + String date, + String time, + String price, + String passengerId, + String status, + String carType, + String passengerRate, + String priceForPassenger, + String distance, + String duration, + ) async { + await CRUD().post(link: AppLink.addWaitingRide, payload: { + 'id': (orderID), + 'start_location': startLocation, + 'end_location': endLocation, + 'date': date, + 'time': time, + 'price': price, + 'passenger_id': (passengerId), + 'status': status, + 'carType': carType, + 'passengerRate': passengerRate, + 'price_for_passenger': priceForPassenger, + 'distance': distance, + 'duration': duration, + }); + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post( + link: '${AppLink.endPoint}/notificationCaptain/addWaitingRide.php', + payload: { + 'id': (orderID), + 'start_location': startLocation, + 'end_location': endLocation, + 'date': date, + 'time': time, + 'price': price, + 'passenger_id': (passengerId), + 'status': status, + 'carType': carType, + 'passengerRate': passengerRate, + 'price_for_passenger': priceForPassenger, + 'distance': distance, + 'duration': duration, + }); + } + } +} diff --git a/lib/controller/home/menu_controller.dart b/lib/controller/home/menu_controller.dart new file mode 100755 index 0000000..b5e0548 --- /dev/null +++ b/lib/controller/home/menu_controller.dart @@ -0,0 +1,14 @@ +import 'package:get/get.dart'; + +class MyMenuController extends GetxController { + bool isDrawerOpen = true; + + void getDrawerMenu() { + if (isDrawerOpen == true) { + isDrawerOpen = false; + } else { + isDrawerOpen = true; + } + update(); + } +} diff --git a/lib/controller/home/payment/captain_wallet_controller.dart b/lib/controller/home/payment/captain_wallet_controller.dart new file mode 100755 index 0000000..1262d6b --- /dev/null +++ b/lib/controller/home/payment/captain_wallet_controller.dart @@ -0,0 +1,363 @@ +import 'dart:convert'; + +import 'package:local_auth/local_auth.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/firebase/firbase_messge.dart'; +import 'package:sefer_driver/controller/firebase/local_notification.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/main.dart'; + +import '../../../views/widgets/mydialoug.dart'; + +class CaptainWalletController extends GetxController { + bool isLoading = false; + final formKeyTransfer = GlobalKey(); + final formKeyAccount = GlobalKey(); + Map walletDate = {}; + Map walletDateVisa = {}; + Map walletDriverPointsDate = {}; + final formKey = GlobalKey(); + String totalAmount = '0'; + double kazan = 0; + String totalAmountVisa = '0'; + String totalPoints = '0'; + final amountFromBudgetController = TextEditingController(); + final newDriverPhoneController = TextEditingController(); + final phoneWallet = TextEditingController(); + final cardBank = TextEditingController(); + final bankCode = TextEditingController(); + + payFromBudget() async { + if (formKey.currentState!.validate()) { + var pointFromBudget = int.parse((amountFromBudgetController.text)); + + // await getPaymentId('fromBudgetToPoints', + // int.parse((amountFromBudgetController.text)) * -1); + var paymentToken3 = + await generateToken((pointFromBudget * -1).toString()); + var paymentID = await getPaymentId( + 'fromBudgetToPoints', (pointFromBudget * -1).toString()); + await CRUD().postWallet(link: AppLink.addDrivePayment, payload: { + 'amount': (pointFromBudget * -1).toString(), + 'rideId': paymentID.toString(), + 'payment_method': 'myBudget', + 'passengerID': 'myBudgetToPoint', + 'token': paymentToken3, + 'driverID': box.read(BoxName.driverID).toString(), + }); + Future.delayed(const Duration(seconds: 1)); + await addDriverWallet( + 'fromBudget', pointFromBudget.toString(), pointFromBudget.toString()); + update(); + Get.back(); + await refreshCaptainWallet(); + NotificationController().showNotification( + 'You have successfully charged your account'.tr, + '$pointFromBudget ${'has been added to your budget'.tr}', + 'tone1', + '', + ); + } + } + + Future refreshCaptainWallet() async { + await getCaptainWalletFromRide(); + await getCaptainWalletFromBuyPoints(); + // await checkAccountCaptainBank(); + } + + List amountToNewDriverMap = []; + bool isNewTransfer = false; + Future detectNewDriverFromMyBudget() async { + if (formKeyTransfer.currentState!.validate()) { + if (int.parse(amountFromBudgetController.text) < + double.parse(totalAmountVisa) && + int.parse(amountFromBudgetController.text) > 10) { + //get new driver details + isNewTransfer = true; + update(); + var res = await CRUD().get( + link: AppLink.getDriverDetails, + payload: {'driver_phone': '+2${newDriverPhoneController.text}'}); + isNewTransfer = false; + update(); + if (res != 'failure') { + var d = jsonDecode(res); + amountToNewDriverMap = d['data']; + // update(); + } else { + mySnackeBarError("This driver is not registered".tr); + } + } else { + mySnackeBarError('Your Budget less than needed'.tr); + } + } + } + + Future getCaptainWalletFromRide() async { + isLoading = true; + update(); + var res = await CRUD().getWallet( + link: AppLink.getAllPaymentFromRide, + payload: {'driverID': box.read(BoxName.driverID).toString()}, + ); + // isLoading = false; + if (res != 'failure') { + walletDate = jsonDecode(res); + totalAmount = walletDate['message'][0]['total_amount'] ?? '0'; + update(); + var res1 = await CRUD().getWallet( + link: AppLink.getAllPaymentVisa, + payload: {'driverID': box.read(BoxName.driverID).toString()}); + walletDateVisa = jsonDecode(res1); + totalAmountVisa = walletDateVisa['message'][0]['diff'].toString(); + + update(); + } else { + totalAmount = "0"; + totalAmountVisa = "0"; + } + } + + Future getCaptainWalletFromBuyPoints() async { + // isLoading = true; + update(); + + var res = await CRUD().getWallet( + link: AppLink.getDriverPaymentPoints, + payload: {'driverID': box.read(BoxName.driverID).toString()}, + ); + isLoading = false; + // update(); + + if (res != 'failure') { + walletDriverPointsDate = jsonDecode(res); + double totalPointsDouble = double.parse( + walletDriverPointsDate['message'][0]['total_amount'].toString()); + totalPoints = totalPointsDouble.toStringAsFixed(0); + } else { + totalPoints = '0'; + } + + update(); + } + + String paymentToken = ''; + Future generateToken(String amount) async { + var res = + await CRUD().postWallet(link: AppLink.addPaymentTokenDriver, payload: { + 'driverID': box.read(BoxName.driverID).toString(), + 'amount': amount.toString(), + }); + var d = (res); + return d['message']; + } + + // late String paymentID; + Future getPaymentId(String paymentMethod, amount) async { + // paymentToken = await generateToken(amount); + var res = + await CRUD().postWallet(link: AppLink.addDriverPaymentPoints, payload: { + 'driverID': box.read(BoxName.driverID).toString(), + 'amount': amount.toString(), + 'payment_method': paymentMethod.toString(), + }); + var d = (res); + // paymentID = d['message'].toString(); + return d['message']; + } + + Future addDriverWallet(String paymentMethod, point, count) async { + paymentToken = await generateToken(count); + var paymentID = await getPaymentId(paymentMethod, point.toString()); + await CRUD().postWallet(link: AppLink.addDriversWalletPoints, payload: { + 'driverID': box.read(BoxName.driverID).toString(), + 'paymentID': paymentID.toString(), + 'amount': point, + 'token': paymentToken, + 'paymentMethod': paymentMethod.toString(), + }); + } + + Future addDriverPayment(String paymentMethod, point, wayPay) async { + paymentToken = await generateToken(point); + var paymentID = await getPaymentId(paymentMethod, point.toString()); + await CRUD().postWallet(link: AppLink.addDrivePayment, payload: { + 'amount': point.toString(), + 'rideId': paymentID.toString(), + 'payment_method': paymentMethod, + 'passengerID': wayPay, + 'token': paymentToken, + 'driverID': box.read(BoxName.driverID).toString(), + }); + } + + Future addDriverWalletFromPromo(String paymentMethod, point) async { + var resPromotion = + await CRUD().postWallet(link: AppLink.addpromotionDriver, payload: { + 'driver_id': box.read(BoxName.driverID).toString(), + 'payment_amount': point, + 'timePromo': paymentMethod, + }); + if (resPromotion != 'failure') { + paymentToken = await generateToken(point); + var paymentID = await getPaymentId(paymentMethod, point.toString()); + var res = + await CRUD().postWallet(link: AppLink.addDrivePayment, payload: { + 'amount': point, + 'rideId': paymentID.toString(), + 'payment_method': paymentMethod.toString(), + 'passengerID': paymentMethod, + 'token': paymentToken, + 'driverID': box.read(BoxName.driverID).toString(), + }); + if (res != 'failure') { + String title = 'wallet_updated'.tr; // Notification title + String message = '${'wallet_credited_message'.tr} $point'; + String tone = 'default_tone'.tr; // Notification tone or sound + String payLoad = + 'wallet_updated'; // Additional data payload for the notification + + Get.find() + .showNotification(title, message, tone, payLoad); + } + } else { + Get.back(); + mySnackeBarError( + "A promotion record for this driver already exists for today.".tr); + } + } + + Future addDriverWalletToInvitor(String paymentMethod, driverID, point) async { + paymentToken = await generateToken(point); + var paymentID = await getPaymentId(paymentMethod, point.toString()); + await CRUD().postWallet(link: AppLink.addDrivePayment, payload: { + 'driverID': driverID, + 'amount': point, + 'token': paymentToken, + 'rideId': paymentID.toString(), + 'payment_method': paymentMethod.toString(), + 'passengerID': paymentMethod, + }); + await addSeferWallet(paymentMethod, + (double.parse(point) * -2).toString()); // deduct 2 from sefer wallet + } + + Future addSeferWallet(String paymentMethod, String point) async { + var seferToken = await generateToken(point.toString()); + await CRUD().postWallet(link: AppLink.addSeferWallet, payload: { + 'amount': point.toString(), + 'paymentMethod': paymentMethod, + 'passengerId': 'driver', + 'token': seferToken, + 'driverId': box.read(BoxName.driverID).toString(), + }); + } + + Future addTransferDriversWallet(String paymentMethod1, paymentMethod2) async { + var paymentID = + await getPaymentId(paymentMethod1, amountFromBudgetController.text); + paymentToken = await generateToken( + (int.parse(amountFromBudgetController.text) * -1).toString()); + + await CRUD().postWallet(link: AppLink.addDrivePayment, payload: { + 'amount': (int.parse(amountFromBudgetController.text) * -1).toString(), + 'rideId': paymentID.toString(), + 'payment_method': paymentMethod1, + 'passengerID': 'To ${amountToNewDriverMap[0]['id']}', + 'token': paymentToken, + 'driverID': box.read(BoxName.driverID).toString(), + }); + + paymentID = await getPaymentId(paymentMethod2, + (int.parse(amountFromBudgetController.text) - 5).toString()); + paymentToken = await generateToken(amountFromBudgetController.text); + var res1 = + await CRUD().postWallet(link: AppLink.addDriversWalletPoints, payload: { + 'driverID': amountToNewDriverMap[0]['id'].toString(), + 'paymentID': paymentID.toString(), + 'amount': ((int.parse(amountFromBudgetController.text) - 5)) + // kazan) // double.parse(kazan) .08 for egypt + .toStringAsFixed( + 0), // this will convert buddget to poitns by kazan .08 + + 'token': paymentToken, + 'paymentMethod': paymentMethod2.toString(), + }); + if (res1 != 'failure') { + Get.find().sendNotificationToDriverMAP( + 'Transfer', + '${'You have transfer to your wallet from'.tr}' + '${box.read(BoxName.nameDriver)}', + amountToNewDriverMap[0]['token'].toString(), + [], + 'order1.wav'); + await addSeferWallet('payout fee', '5'); + + Get.defaultDialog( + title: 'transfer Successful'.tr, + middleText: '', + titleStyle: AppStyle.title, + confirm: MyElevatedButton( + title: 'Ok'.tr, + onPressed: () async { + Get.back(); + Get.back(); + + await refreshCaptainWallet(); + })); + } + } + + //check if account bank is created or not + Future checkAccountCaptainBank() async { + isLoading = true; + update(); + if (box.read(BoxName.accountIdStripeConnect).toString().isEmpty) { + var res = await CRUD().get(link: AppLink.getAccount, payload: { + 'id': box.read(BoxName.driverID).toString(), + }); + var d = jsonDecode(res); + if (d['status'] != 'failure') { + box.write(BoxName.accountIdStripeConnect, + d['message'][0]['accountBank'].toString()); + } + } + isLoading = false; + update(); + } + + getKazanPercent() async { + var res = await CRUD().get( + link: AppLink.getKazanPercent, + payload: {'country': box.read(BoxName.countryCode).toString()}, + ); + if (res != 'failure') { + var json = jsonDecode(res); + kazan = double.parse(json['message'][0]['kazan'].toString()); + // naturePrice = double.parse(json['message'][0]['naturePrice']); + // heavyPrice = double.parse(json['message'][0]['heavyPrice']); + // latePrice = double.parse(json['message'][0]['latePrice']); + // comfortPrice = double.parse(json['message'][0]['comfortPrice']); + // speedPrice = double.parse(json['message'][0]['speedPrice']); + // deliveryPrice = double.parse(json['message'][0]['deliveryPrice']); + // mashwariPrice = double.parse(json['message'][0]['freePrice']); + // fuelPrice = double.parse(json['message'][0]['fuelPrice']); + } + update(); + } + + @override + void onInit() async { + // getKazanPercent(); + + await refreshCaptainWallet(); + super.onInit(); + } +} diff --git a/lib/controller/home/payment/credit_card_Controller.dart b/lib/controller/home/payment/credit_card_Controller.dart new file mode 100755 index 0000000..936fca3 --- /dev/null +++ b/lib/controller/home/payment/credit_card_Controller.dart @@ -0,0 +1,75 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../constant/box_name.dart'; +import '../../functions/digit_obsecur_formate.dart'; +import '../../functions/secure_storage.dart'; + +class CreditCardController extends GetxController { + final GlobalKey formKey = GlobalKey(); + final TextEditingController cardNumberController = TextEditingController(); + final TextEditingController cardHolderNameController = + TextEditingController(); + final TextEditingController expiryDateController = TextEditingController(); + final TextEditingController cvvCodeController = TextEditingController(); + openPayment() async { + String? cardNumber = await SecureStorage().readData(BoxName.cardNumber); + String? cardHolderName = + await SecureStorage().readData(BoxName.cardHolderName); + String? expiryDate = await SecureStorage().readData(BoxName.expiryDate); + String? cvvCode = await SecureStorage().readData(BoxName.cvvCode); + + if (cvvCode != null && cvvCode.isNotEmpty) { + final maskedCardNumber = DigitObscuringFormatter() + .formatEditUpdate( + TextEditingValue.empty, + TextEditingValue(text: cardNumber ?? ''), + ) + .text; + + cardNumberController.text = maskedCardNumber; + cardHolderNameController.text = cardHolderName ?? ''; + expiryDateController.text = expiryDate ?? ''; + cvvCodeController.text = cvvCode; + } + } + + @override + void onInit() async { + super.onInit(); + openPayment(); + // String? cardNumber = await SecureStorage().readData(BoxName.cardNumber); + // String? cardHolderName = + // await SecureStorage().readData(BoxName.cardHolderName); + // String? expiryDate = await SecureStorage().readData(BoxName.expiryDate); + // String? cvvCode = await SecureStorage().readData(BoxName.cvvCode); + + // if (cvvCode != null && cvvCode.isNotEmpty) { + // final maskedCardNumber = DigitObscuringFormatter() + // .formatEditUpdate( + // TextEditingValue.empty, + // TextEditingValue(text: cardNumber ?? ''), + // ) + // .text; + + // cardNumberController.text = maskedCardNumber; + // cardHolderNameController.text = cardHolderName ?? ''; + // expiryDateController.text = expiryDate ?? ''; + // cvvCodeController.text = cvvCode; + // } + } +} + +class CreditCardModel { + String cardNumber; + String cardHolderName; + String expiryDate; + String cvvCode; + + CreditCardModel({ + required this.cardNumber, + required this.cardHolderName, + required this.expiryDate, + required this.cvvCode, + }); +} diff --git a/lib/controller/home/payment/paymob_payout.dart b/lib/controller/home/payment/paymob_payout.dart new file mode 100755 index 0000000..64bb3dd --- /dev/null +++ b/lib/controller/home/payment/paymob_payout.dart @@ -0,0 +1,234 @@ +import 'dart:convert'; + +import 'package:local_auth/local_auth.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:get/get.dart'; + +import '../../../constant/links.dart'; +import '../../../views/widgets/mydialoug.dart'; +import '../../functions/crud.dart'; +import 'captain_wallet_controller.dart'; + +class PaymobPayout extends GetxController { + bool isLoading = false; + String dropdownValue = 'etisalat'; + + int payOutFee = 5; + payToDriverWallet(String amount, String issuer, String msisdn) async { + bool isAvailable = await LocalAuthentication().isDeviceSupported(); + if (isAvailable) { + // Authenticate the user + bool didAuthenticate = await LocalAuthentication().authenticate( + localizedReason: 'Use Touch ID or Face ID to confirm payment', + options: AuthenticationOptions( + biometricOnly: true, + sensitiveTransaction: true, + )); + if (didAuthenticate) { + var dec = await CRUD() + .postWallet(link: AppLink.paymobPayoutDriverWallet, payload: { + "issuer": issuer, + "method": "wallet", + "amount": amount, //9.0, + "full_name": + '${box.read(BoxName.nameDriver)} ${box.read(BoxName.lastNameDriver)}', + "msisdn": msisdn, //"01010101010", + "bank_transaction_type": "cash_transfer" + }); + if (dec['disbursement_status'] == 'successful') { + var paymentToken = await Get.find() + .generateToken( + ((-1) * (double.parse(dec['amount'].toString())) - payOutFee) + .toStringAsFixed(0)); + await CRUD().postWallet(link: AppLink.addDrivePayment, payload: { + 'rideId': DateTime.now().toIso8601String(), + 'amount': + ((-1) * (double.parse(dec['amount'].toString())) - payOutFee) + .toStringAsFixed(0), + 'payment_method': 'payout', + 'passengerID': 'myself', + 'token': paymentToken, + 'driverID': box.read(BoxName.driverID).toString(), + }); + await Get.find() + .addSeferWallet('payout fee myself', payOutFee.toString()); + await updatePaymentToPaid(box.read(BoxName.driverID).toString()); + await sendEmail( + box.read(BoxName.driverID).toString(), + amount, + box.read(BoxName.phoneDriver).toString(), + box.read(BoxName.nameDriver).toString(), + 'Wallet', + box.read(BoxName.emailDriver).toString()); + + mySnackbarSuccess('${'Transaction successful'.tr} ${dec['amount']}'); + + Get.find().refreshCaptainWallet(); + } else if (dec['disbursement_status'] == 'failed') { + mySnackeBarError('Transaction failed'.tr); + } + } else { + MyDialog().getDialog('Authentication failed'.tr, ''.tr, () { + Get.back(); + }); + } + } else { + MyDialog().getDialog('Biometric Authentication'.tr, + 'You should use Touch ID or Face ID to confirm payment'.tr, () { + Get.back(); + }); + } + } + + Future updatePaymentToPaid(String driverID) async { + await CRUD().postWallet(link: AppLink.updatePaymetToPaid, payload: { + 'driverID': driverID.toString(), + }); + } + + Future sendEmail( + String driverId, amount, phone, name, bankCardNumber, email) async { + await CRUD().sendEmail(AppLink.sendEmailToDrivertransaction, { + "driverID": driverId, + "total_amount": amount, + "phone": phone, + "name_arabic": name, + "accountBank": bankCardNumber, + "email": email + }); + } + + getAIKey(String key) async { + var res = + await CRUD().get(link: AppLink.getapiKey, payload: {"keyName": key}); + if (res != 'failure') { + var d = jsonDecode(res)['message']; + return d[key].toString(); + } else {} + } + + payToDriverBankAccount( + String amount, String bankCardNumber, String bankCode) async { + bool isAvailable = await LocalAuthentication().isDeviceSupported(); + if (isAvailable) { + // Authenticate the user + bool didAuthenticate = await LocalAuthentication().authenticate( + localizedReason: 'Use Touch ID or Face ID to confirm payment', + options: AuthenticationOptions( + biometricOnly: true, + sensitiveTransaction: true, + )); + if (didAuthenticate) { + var body = { + "issuer": "bank_card", + "method": "bank_card", + "amount": amount, //9.0, + "full_name": + '${box.read(BoxName.nameDriver)} ${box.read(BoxName.lastNameDriver)}', + "bank_card_number": bankCardNumber, //"1111-2222-3333-4444", + "bank_code": bankCode, //"CIB", + "bank_transaction_type": "cash_transfer" + }; + var dec = await CRUD().postWallet( + link: + 'wl.tripz-egypt.com/v1/main/ride/payMob/paymob_driver/paymob_payout.php', + payload: body, + ); + if (dec['disbursement_status'] == 'successful') { + var paymentToken = await Get.find() + .generateToken( + ((-1) * (double.parse(dec['amount'].toString())) - payOutFee) + .toStringAsFixed(0)); + await CRUD().postWallet(link: AppLink.addDrivePayment, payload: { + 'rideId': DateTime.now().toIso8601String(), + 'amount': + ((-1) * (double.parse(dec['amount'].toString())) - payOutFee) + .toStringAsFixed(0), + 'payment_method': 'payout', + 'passengerID': 'myself', + 'token': paymentToken, + 'driverID': box.read(BoxName.driverID).toString(), + }); + await Get.find() + .addSeferWallet('payout fee myself', payOutFee.toString()); + await updatePaymentToPaid(box.read(BoxName.driverID).toString()); + await sendEmail( + box.read(BoxName.driverID).toString(), + amount, + box.read(BoxName.phoneDriver).toString(), + box.read(BoxName.nameDriver).toString(), + 'Wallet', + box.read(BoxName.emailDriver).toString()); + + mySnackbarSuccess('${'Transaction successful'.tr} ${dec['amount']}'); + Get.find().refreshCaptainWallet(); + } else if (dec['disbursement_status'] == 'failed') { + mySnackeBarError('Transaction failed'.tr); + } + } else { + MyDialog().getDialog('Authentication failed'.tr, ''.tr, () { + Get.back(); + }); + } + } else { + MyDialog().getDialog('Biometric Authentication'.tr, + 'You should use Touch ID or Face ID to confirm payment'.tr, () { + Get.back(); + }); + } + } + + Future payToWalletDriverAll( + String amount, String issuer, String msisdn) async { + bool isAvailable = await LocalAuthentication().isDeviceSupported(); + if (isAvailable) { + // Authenticate the user + bool didAuthenticate = await LocalAuthentication().authenticate( + localizedReason: 'Use Touch ID or Face ID to confirm payment', + options: AuthenticationOptions( + biometricOnly: true, + sensitiveTransaction: true, + )); + if (didAuthenticate) { + await payToDriverWallet(amount, issuer, msisdn); + } else { + MyDialog().getDialog('Authentication failed'.tr, ''.tr, () { + Get.back(); + }); + } + } else { + MyDialog().getDialog('Biometric Authentication'.tr, + 'You should use Touch ID or Face ID to confirm payment'.tr, () { + Get.back(); + }); + } + } + + Future payToBankDriverAll( + String amount, String bankCardNumber, String bankCode) async { + bool isAvailable = await LocalAuthentication().isDeviceSupported(); + if (isAvailable) { + // Authenticate the user + bool didAuthenticate = await LocalAuthentication().authenticate( + localizedReason: 'Use Touch ID or Face ID to confirm payment', + options: AuthenticationOptions( + biometricOnly: true, + sensitiveTransaction: true, + )); + if (didAuthenticate) { + await payToDriverBankAccount(amount, bankCardNumber, bankCode); + } else { + MyDialog().getDialog('Authentication failed'.tr, ''.tr, () { + Get.back(); + }); + } + } else { + MyDialog().getDialog('Biometric Authentication'.tr, + 'You should use Touch ID or Face ID to confirm payment'.tr, () { + Get.back(); + }); + } + } +} diff --git a/lib/controller/home/points_for_rider_controller.dart b/lib/controller/home/points_for_rider_controller.dart new file mode 100755 index 0000000..cbd4856 --- /dev/null +++ b/lib/controller/home/points_for_rider_controller.dart @@ -0,0 +1,147 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:sefer_driver/constant/style.dart'; + +import '../../constant/api_key.dart'; +import '../../constant/links.dart'; +import '../functions/crud.dart'; +import '../functions/location_controller.dart'; + +class PointsForRiderController extends GetxController { + List locations = []; + String hintTextDestinationPoint = 'Search for your destination'.tr; + TextEditingController placeStartController = TextEditingController(); + + void addLocation(String location) { + locations.add(location); + update(); + } + + void getTextFromList(String location) { + locations.add(location); + update(); + Get.back(); + } + + void removeLocation(int index) { + locations.removeAt(index); + update(); + } + + void onReorder(int oldIndex, int newIndex) { + if (newIndex > oldIndex) { + newIndex -= 1; + update(); + } + + final item = locations.removeAt(oldIndex); + locations.insert(newIndex, item); + update(); + } +} + +class LocationModel { + String name; + double lat, lon; + + LocationModel({required this.name, required this.lat, required this.lon}); +} + +class WayPointController extends GetxController { + // A list of text editing controllers for each text field + // final textFields = [TextEditingController()].obs; + List wayPoints = []; + List> placeListResponse = []; + double wayPointHeight = 400; + String hintTextDestinationPoint = 'Search for your destination'.tr; + TextEditingController textSearchCotroller = TextEditingController(); + // A list of places corresponding to each text field + final places = []; + + final hintTextPointList = []; + late LatLng myLocation; + + void addWayPoints() { + String wayPoint = 'Add a Stop'.tr; + + if (wayPoints.length < 5) { + wayPoints.add(wayPoint); + update(); + } else { + Get.defaultDialog( + title: 'This is most WayPoints', + titleStyle: AppStyle.title, + middleText: ''); + } + update(); + } + + void removeTextField(int index) { + wayPoints.removeAt(index); + + update(); + } + + // A method to reorder the text fields and the places + void reorderTextFields(int oldIndex, int newIndex) { + if (newIndex > oldIndex) { + newIndex -= 1; + } + final wayPoint = wayPoints.removeAt(oldIndex); + wayPoints.insert(newIndex, wayPoint); + update(); + } + + void updatePlace(int index, String input) async { + var url = + '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=$input&location=${myLocation.latitude},${myLocation.longitude}&radius=50000&language=en&key=${AK.mapAPIKEY.toString()}'; + var response = await CRUD().getGoogleApi(link: url, payload: {}); + // final place = input; + // if (index == 0) { + List newList = []; + placeListResponse.add(newList); + newList = response['results']; + placeListResponse[index].add(newList); + update(); + // } + + update(); + } + + @override + void onInit() { + Get.put(LocationController()); + addWayPoints(); + myLocation = Get.find().myLocation; + super.onInit(); + } +} + +class PlaceList extends StatelessWidget { + // Get the controller instance + final controller = Get.put(WayPointController()); + + @override + Widget build(BuildContext context) { + // Use the Obx widget to rebuild the widget when the controller changes + return Obx(() { + // Use the ListView widget to display the list of places + return ListView( + // The children of the list are the places + children: [ + // Loop through the places in the controller + for (final place in controller.places) + // Create a text widget for each place + Text( + // Use the place as the text + place, + + // Add some style and padding + style: const TextStyle(fontSize: 18.0), + ), + ], + ); + }); + } +} diff --git a/lib/controller/home/profile/feed_back_controller.dart b/lib/controller/home/profile/feed_back_controller.dart new file mode 100755 index 0000000..48e4d4e --- /dev/null +++ b/lib/controller/home/profile/feed_back_controller.dart @@ -0,0 +1,44 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; + +class FeedBackController extends GetxController { + bool isLoading = false; + final formKey = GlobalKey(); + final feedbackController = TextEditingController(); + + void addFeedBack() async { + isLoading = true; + update(); + var res = await CRUD().post(link: AppLink.addFeedBack, payload: { + 'passengerId': box.read(BoxName.passengerID).toString(), + 'feedBack': feedbackController.text + }); + var d = jsonDecode(res); + if (d['status'].toString() == 'success') { + Get.defaultDialog( + title: 'Success'.tr, + titleStyle: AppStyle.title, + middleText: 'Feedback data saved successfully'.tr, + middleTextStyle: AppStyle.title, + confirm: MyElevatedButton( + kolor: AppColor.greenColor, + title: 'Ok'.tr, + onPressed: () { + Get.back(); + Get.back(); + })); + } + + isLoading = false; + update(); + } +} diff --git a/lib/controller/home/profile/order_history_controller.dart b/lib/controller/home/profile/order_history_controller.dart new file mode 100755 index 0000000..3e09983 --- /dev/null +++ b/lib/controller/home/profile/order_history_controller.dart @@ -0,0 +1,35 @@ +import 'dart:convert'; + +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/main.dart'; + +class OrderHistoryController extends GetxController { + List orderHistoryListPassenger = []; + bool isloading = true; + + @override + void onInit() { + getOrderHistoryByPassenger(); + super.onInit(); + } + + Future getOrderHistoryByPassenger() async { + var res = await CRUD().get(link: AppLink.getRides, payload: { + 'passenger_id': box.read(BoxName.passengerID).toString(), + }); + if (res.toString() == 'failure') { + // Get.snackbar('failure', 'message'); + isloading = false; + update(); + } else { + var jsonDecoded = jsonDecode(res); + + orderHistoryListPassenger = jsonDecoded['data']; + isloading = false; + update(); + } + } +} diff --git a/lib/controller/home/profile/promos_controller.dart b/lib/controller/home/profile/promos_controller.dart new file mode 100755 index 0000000..fa8b3e9 --- /dev/null +++ b/lib/controller/home/profile/promos_controller.dart @@ -0,0 +1,42 @@ +import 'dart:convert'; + +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; + +class PromosController extends GetxController { + List promoList = []; + bool isLoading = true; + late String promos; + @override + void onInit() { + getPromoByToday(); + super.onInit(); + } + + Future getPromoByToday() async { + var res = await CRUD().get(link: AppLink.getPromoBytody, payload: {}); + if (res.toString() == 'failure') { + Get.defaultDialog( + title: 'No Promo for today .'.tr, + middleText: '', + titleStyle: AppStyle.title, + confirm: MyElevatedButton( + title: 'Back'.tr, + onPressed: () { + Get.back(); + Get.back(); + })); + isLoading = false; + update(); + } else { + var jsonDecoded = jsonDecode(res); + + promoList = jsonDecoded['message']; + isLoading = false; + update(); + } + } +} diff --git a/lib/controller/home/splash_screen_controlle.dart b/lib/controller/home/splash_screen_controlle.dart new file mode 100755 index 0000000..12770e0 --- /dev/null +++ b/lib/controller/home/splash_screen_controlle.dart @@ -0,0 +1,98 @@ +import 'dart:async'; + +import 'package:sefer_driver/controller/auth/captin/login_captin_controller.dart'; +import 'package:sefer_driver/views/home/on_boarding_page.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:package_info_plus/package_info_plus.dart'; + +import '../../constant/box_name.dart'; +import '../../main.dart'; +import '../../print.dart'; +import '../../views/auth/captin/login_captin.dart'; + +class SplashScreenController extends GetxController + with GetTickerProviderStateMixin { + late AnimationController _animationController; + late Animation animation; + final progress = 0.0.obs; + Timer? _progressTimer; + + String packageInfo = ''; + + Future _getPackageInfo() async { + final info = await PackageInfo.fromPlatform(); + packageInfo = info.version; + box.write(BoxName.packagInfo, packageInfo); + update(); + } + + @override + void onInit() { + super.onInit(); + _getPackageInfo(); + _animationController = AnimationController( + vsync: this, + duration: const Duration(milliseconds: 1500), // Reduced duration + )..forward(); + + animation = + CurvedAnimation(parent: _animationController, curve: Curves.easeOut); + + startTimer(); + _startProgressTimer(); + } + + void _startProgressTimer() { + Log.print( + 'box.read(BoxName.phoneDriver): ${box.read(BoxName.phoneDriver)}'); + Log.print( + 'box.read(BoxName.phoneVerified): ${box.read(BoxName.phoneVerified)}'); + const totalTime = 3000; // 5 seconds in milliseconds + const interval = 50; // Update every 50ms + int elapsed = 0; + + _progressTimer = + Timer.periodic(const Duration(milliseconds: interval), (timer) async { + elapsed += interval; + progress.value = (elapsed / totalTime).clamp(0.0, 1.0); + + if (elapsed >= totalTime) { + timer.cancel(); + // Get.off(SyrianCardAI()); + box.read(BoxName.onBoarding) == null + ? Get.off(() => OnBoardingPage()) + : box.read(BoxName.phoneDriver) != null && + box.read(BoxName.phoneVerified) == '1' + ? await Get.put(LoginDriverController()) + .loginWithGoogleCredential( + box.read(BoxName.driverID).toString(), + box.read(BoxName.emailDriver).toString()) + : Get.off(() => LoginCaptin()); + } + }); + } + + void startTimer() async { + Timer(const Duration(seconds: 5), () async { + // box.read(BoxName.onBoarding) == null + // ? Get.off(() => OnBoardingPage()) + // : box.read(BoxName.email) != null && + // box.read(BoxName.phone) != null && + // box.read(BoxName.isVerified) == '1' + // // ? Get.off(() => const MapPagePassenger()) + // ? await Get.put(LoginController()).loginUsingCredentials( + // box.read(BoxName.passengerID).toString(), + // box.read(BoxName.email).toString(), + // ) + // : Get.off(() => LoginPage()); + }); + } + + @override + void onClose() { + _progressTimer?.cancel(); + _animationController.dispose(); + super.onClose(); + } +} diff --git a/lib/controller/local/local_controller.dart b/lib/controller/local/local_controller.dart new file mode 100755 index 0000000..b95121a --- /dev/null +++ b/lib/controller/local/local_controller.dart @@ -0,0 +1,112 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../constant/box_name.dart'; +import '../../main.dart'; +import '../themes/themes.dart'; + +class LocaleController extends GetxController { + Locale? language; + String countryCode = ''; + + ThemeData appTheme = lightThemeEnglish; + + void changeLang(String langcode) { + Locale locale; + switch (langcode) { + case "ar": + locale = const Locale("ar"); + appTheme = lightThemeArabic; + box.write(BoxName.lang, 'ar'); + break; + case "en": + locale = const Locale("en"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'en'); + break; + case "tr": + locale = const Locale("tr"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'tr'); + break; + case "fr": + locale = const Locale("fr"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'fr'); + break; + case "it": + locale = const Locale("it"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'it'); + break; + case "de": + locale = const Locale("de"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'de'); + break; + case "el": + locale = const Locale("el"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'el'); + break; + case "es": + locale = const Locale("es"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'es'); + break; + case "fa": + locale = const Locale("fa"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'fa'); + break; + case "zh": + locale = const Locale("zh"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'zh'); + break; + case "ru": + locale = const Locale("ru"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'ru'); + break; + case "hi": + locale = const Locale("hi"); + appTheme = lightThemeEnglish; + box.write(BoxName.lang, 'hi'); + break; + case "ar-ma": + locale = const Locale("ar-ma"); + appTheme = lightThemeArabic; + box.write(BoxName.lang, 'ar-ma'); + break; + case "ar-gulf": + locale = const Locale("ar-gulf"); + appTheme = lightThemeArabic; + box.write(BoxName.lang, 'ar-gulf'); + break; + default: + locale = Locale(Get.deviceLocale!.languageCode); + box.write(BoxName.lang, Get.deviceLocale!.languageCode); + appTheme = lightThemeEnglish; + break; + } + + box.write(BoxName.lang, langcode); + Get.changeTheme(appTheme); + Get.updateLocale(locale); + update(); + } + + @override + void onInit() { + String? storedLang = box.read(BoxName.lang); + if (storedLang == null) { + // Use device language if no language is stored + storedLang = Get.deviceLocale!.languageCode; + box.write(BoxName.lang, storedLang); + } + + changeLang(storedLang); + super.onInit(); + } +} diff --git a/lib/controller/local/phone_intel/countries.dart b/lib/controller/local/phone_intel/countries.dart new file mode 100644 index 0000000..13e4bab --- /dev/null +++ b/lib/controller/local/phone_intel/countries.dart @@ -0,0 +1,7574 @@ +// see: https://en.wikipedia.org/wiki/List_of_country_calling_codes +// for list of country/calling codes + +const List countries = [ + Country( + name: "Afghanistan", + nameTranslations: { + "sk": "Afganistan", + "se": "Afghanistan", + "pl": "Afganistan", + "no": "Afghanistan", + "ja": "アフガニスタン", + "it": "Afghanistan", + "zh": "阿富汗", + "nl": "Afghanistan", + "de": "Afghanistan", + "fr": "Afghanistan", + "es": "Afganistán", + "en": "Afghanistan", + "pt_BR": "Afeganistão", + "sr-Cyrl": "ÐвганиÑтан", + "sr-Latn": "Avganistan", + "zh_TW": "阿富汗", + "tr": "Afganistan", + "ro": "Afganistan", + "ar": "Ø£ÙØºØ§Ù†Ø³ØªØ§Ù†", + "fa": "Ø§ÙØºØ§Ù†Ø³ØªØ§Ù†", + "yue": "阿富汗" + }, + flag: "🇦🇫", + code: "AF", + dialCode: "93", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Ã…land Islands", + nameTranslations: { + "sk": "Alandy", + "se": "Ã…lánda", + "pl": "Wyspy Alandzkie", + "no": "Ã…land", + "ja": "オーランド諸島", + "it": "Isole Ã…land", + "zh": "奥兰群岛", + "nl": "Ã…land", + "de": "Ã…landinseln", + "fr": "ÃŽles Ã…land", + "es": "Islas Ã…land", + "en": "Ã…land Islands", + "pt_BR": "Ilhas Aland", + "sr-Cyrl": "ÐландÑка ОÑтрва", + "sr-Latn": "Alandska Ostrva", + "zh_TW": "奧蘭群島", + "tr": "Ã…land", + "ro": "Insulele Ã…land", + "ar": "جزر أولاند", + "fa": "جزیره اولاند", + "yue": "奧蘭群島" + }, + flag: "🇦🇽", + code: "AX", + dialCode: "358", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Albania", + nameTranslations: { + "sk": "Albánsko", + "se": "Albánia", + "pl": "Albania", + "no": "Albania", + "ja": "アルãƒãƒ‹ã‚¢", + "it": "Albania", + "zh": "阿尔巴尼亚", + "nl": "Albanië", + "de": "Albanien", + "fr": "Albanie", + "es": "Albania", + "en": "Albania", + "pt_BR": "Albânia", + "sr-Cyrl": "Ðлбанија", + "sr-Latn": "Albanija", + "zh_TW": "阿爾巴尼亞", + "tr": "Arnavutluk", + "ro": "Albania", + "ar": "ألبانيا", + "fa": "آلبانی", + "yue": "阿爾巴尼亞" + }, + flag: "🇦🇱", + code: "AL", + dialCode: "355", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Algeria", + nameTranslations: { + "sk": "Alžírsko", + "se": "Algeria", + "pl": "Algieria", + "no": "Algerie", + "ja": "アルジェリア", + "it": "Algeria", + "zh": "阿尔åŠåˆ©äºš", + "nl": "Algerije", + "de": "Algerien", + "fr": "Algérie", + "es": "Argelia", + "en": "Algeria", + "pt_BR": "Argélia", + "sr-Cyrl": "Ðргентина", + "sr-Latn": "Argentina", + "zh_TW": "阿爾åŠåˆ©äºž", + "tr": "Cezayir", + "ro": "Algeria", + "ar": "الجزائر", + "fa": "الجزیره", + "yue": "阿爾åŠåˆ©äºž" + }, + flag: "🇩🇿", + code: "DZ", + dialCode: "213", + minLength: 9, + maxLength: 9, + ), + Country( + name: "American Samoa", + nameTranslations: { + "sk": "Americká Samoa", + "se": "Amerihká Samoa", + "pl": "Samoa AmerykaÅ„skie", + "no": "Amerikansk Samoa", + "ja": "米領サモア", + "it": "Samoa americane", + "zh": "ç¾Žå±žè¨æ‘©äºš", + "nl": "Amerikaans-Samoa", + "de": "Amerikanisch-Samoa", + "fr": "Samoa américaines", + "es": "Samoa Americana", + "en": "American Samoa", + "pt_BR": "Samoa Americana", + "sr-Cyrl": "Ðмеричка Самоа", + "sr-Latn": "AmeriÄka Samoa", + "zh_TW": "美屬薩摩亞", + "tr": "Amerikan Samoası", + "ro": "Samoa Americană", + "ar": "ساموا الأمريكية", + "fa": "ساموا آمریکا", + "yue": "美屬薩摩亞" + }, + flag: "🇦🇸", + code: "AS", + dialCode: "1684", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Andorra", + nameTranslations: { + "sk": "Andorra", + "se": "Andorra", + "pl": "Andora", + "no": "Andorra", + "ja": "アンドラ", + "it": "Andorra", + "zh": "安é“å°”", + "nl": "Andorra", + "de": "Andorra", + "fr": "Andorre", + "es": "Andorra", + "en": "Andorra", + "pt_BR": "Andorra", + "sr-Cyrl": "Ðндора", + "sr-Latn": "Andora", + "zh_TW": "安é“爾", + "tr": "Andora", + "ro": "Andorra", + "ar": "أندورا", + "fa": "آندورا", + "yue": "安é“爾" + }, + flag: "🇦🇩", + code: "AD", + dialCode: "376", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Angola", + nameTranslations: { + "sk": "Angola", + "se": "Angola", + "pl": "Angola", + "no": "Angola", + "ja": "アンゴラ", + "it": "Angola", + "zh": "安哥拉", + "nl": "Angola", + "de": "Angola", + "fr": "Angola", + "es": "Angola", + "en": "Angola", + "pt_BR": "Angola", + "sr-Cyrl": "Ðнгола", + "sr-Latn": "Angola", + "zh_TW": "安哥拉", + "tr": "Angola", + "ro": "Angola", + "ar": "أنغولا", + "fa": "آنگولا", + "yue": "安哥拉" + }, + flag: "🇦🇴", + code: "AO", + dialCode: "244", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Anguilla", + nameTranslations: { + "sk": "Anguilla", + "se": "Anguilla", + "pl": "Anguilla", + "no": "Anguilla", + "ja": "アンギラ", + "it": "Anguilla", + "zh": "安圭拉", + "nl": "Anguilla", + "de": "Anguilla", + "fr": "Anguilla", + "es": "Anguila", + "en": "Anguilla", + "pt_BR": "Anguilla", + "sr-Cyrl": "Ðнгвила", + "sr-Latn": "Angvila", + "zh_TW": "安圭拉", + "tr": "Anguilla", + "ro": "Anguilla", + "ar": "أنغويلا", + "fa": "آنگولیا", + "yue": "安圭拉" + }, + flag: "🇦🇮", + code: "AI", + dialCode: "1264", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Antarctica", + nameTranslations: { + "sk": "Antarktída", + "se": "Antárktis", + "pl": "Antarktyda", + "no": "Antarktis", + "ja": "å—æ¥µ", + "it": "Antartide", + "zh": "å—æžæ´²", + "nl": "Antarctica", + "de": "Antarktis", + "fr": "Antarctique", + "es": "Antártida", + "en": "Antarctica", + "pt_BR": "Antártica", + "sr-Cyrl": "Ðнтарктик", + "sr-Latn": "Antarktik", + "zh_TW": "å—æ¥µ", + "tr": "Antarktika", + "ro": "Antarctica", + "ar": "القارة القطبية الجنوبية", + "fa": "قطب جنوب", + "yue": "å—æžæ´²" + }, + flag: "🇦🇶", + code: "AQ", + dialCode: "672", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Antigua and Barbuda", + nameTranslations: { + "sk": "Antigua a Barbuda", + "se": "Antigua ja Barbuda", + "pl": "Antigua i Barbuda", + "no": "Antigua og Barbuda", + "ja": "アンティグア・ãƒãƒ¼ãƒ–ーダ", + "it": "Antigua e Barbuda", + "zh": "安æç“œå’Œå·´å¸ƒè¾¾", + "nl": "Antigua en Barbuda", + "de": "Antigua und Barbuda", + "fr": "Antigua-et-Barbuda", + "es": "Antigua y Barbuda", + "en": "Antigua & Barbuda", + "pt_BR": "Antigua e Barbuda", + "sr-Cyrl": "Ðнтигва и Барбуда", + "sr-Latn": "Antigva i Barbuda", + "zh_TW": "安æç“œå’Œå·´å¸ƒé”", + "tr": "Antigua ve Barbuda", + "ro": "Antigua ÅŸi Barbuda", + "ar": "أنتيغوا وباربودا", + "fa": "آنتیگوآ Ùˆ باربودا", + "yue": "安æç“œåŒå·´å¸ƒè¾¾" + }, + flag: "🇦🇬", + code: "AG", + dialCode: "1268", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Argentina", + nameTranslations: { + "sk": "Argentína", + "se": "Argentina", + "pl": "Argentyna", + "no": "Argentina", + "ja": "アルゼンãƒãƒ³", + "it": "Argentina", + "zh": "阿根廷", + "nl": "Argentinië", + "de": "Argentinien", + "fr": "Argentine", + "es": "Argentina", + "en": "Argentina", + "pt_BR": "Argentina", + "sr-Cyrl": "Ðргентина", + "sr-Latn": "Argentina", + "zh_TW": "阿根廷", + "tr": "Arjantin", + "ro": "Argentina", + "ar": "الأرجنتين", + "fa": "آرژانتین", + "yue": "阿根廷" + }, + flag: "🇦🇷", + code: "AR", + dialCode: "54", + minLength: 12, + maxLength: 12, + ), + Country( + name: "Armenia", + nameTranslations: { + "sk": "Arménsko", + "se": "Armenia", + "pl": "Armenia", + "no": "Armenia", + "ja": "アルメニア", + "it": "Armenia", + "zh": "亚美尼亚", + "nl": "Armenië", + "de": "Armenien", + "fr": "Arménie", + "es": "Armenia", + "en": "Armenia", + "pt_BR": "Armênia", + "sr-Cyrl": "Јерменија", + "sr-Latn": "Jermenija", + "zh_TW": "亞美尼亞", + "tr": "Ermenistan", + "ro": "Armenia", + "ar": "أرمينيا", + "fa": "ارمنستان", + "yue": "亞美尼亞" + }, + flag: "🇦🇲", + code: "AM", + dialCode: "374", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Aruba", + nameTranslations: { + "sk": "Aruba", + "se": "Aruba", + "pl": "Aruba", + "no": "Aruba", + "ja": "アルãƒ", + "it": "Aruba", + "zh": "阿é²å·´", + "nl": "Aruba", + "de": "Aruba", + "fr": "Aruba", + "es": "Aruba", + "en": "Aruba", + "pt_BR": "Aruba", + "sr-Cyrl": "Ðруба", + "sr-Latn": "Aruba", + "zh_TW": "阿魯巴", + "tr": "Aruba", + "ro": "Aruba", + "ar": "أروبا", + "fa": "آروبا", + "yue": "阿魯巴島" + }, + flag: "🇦🇼", + code: "AW", + dialCode: "297", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Australia", + nameTranslations: { + "sk": "Austrália", + "se": "Austrália", + "pl": "Australia", + "no": "Australia", + "ja": "オーストラリア", + "it": "Australia", + "zh": "澳大利亚", + "nl": "Australië", + "de": "Australien", + "fr": "Australie", + "es": "Australia", + "en": "Australia", + "pt_BR": "Austrália", + "sr-Cyrl": "ÐуÑтралија", + "sr-Latn": "Australija", + "zh_TW": "澳州", + "tr": "Avustralya", + "ro": "Australia", + "ar": "أستراليا", + "fa": "استرالیا", + "yue": "澳洲" + }, + flag: "🇦🇺", + code: "AU", + dialCode: "61", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Austria", + nameTranslations: { + "sk": "Rakúsko", + "se": "Nuortariika", + "pl": "Austria", + "no": "Østerrike", + "ja": "オーストリア", + "it": "Austria", + "zh": "奥地利", + "nl": "Oostenrijk", + "de": "Österreich", + "fr": "Autriche", + "es": "Austria", + "en": "Austria", + "pt_BR": "Ãustria", + "sr-Cyrl": "ÐуÑтрија", + "sr-Latn": "Austrija", + "zh_TW": "奥地利", + "tr": "Avusturya", + "ro": "Austria", + "ar": "النمسا", + "fa": "اتریش", + "yue": "奧地利" + }, + flag: "🇦🇹", + code: "AT", + dialCode: "43", + minLength: 13, + maxLength: 13, + ), + Country( + name: "Azerbaijan", + nameTranslations: { + "sk": "Azerbajdžan", + "se": "Aserbaižan", + "pl": "Azerbejdżan", + "no": "Aserbajdsjan", + "ja": "アゼルãƒã‚¤ã‚¸ãƒ£ãƒ³", + "it": "Azerbaigian", + "zh": "阿塞拜疆", + "nl": "Azerbeidzjan", + "de": "Aserbaidschan", + "fr": "Azerbaïdjan", + "es": "Azerbaiyán", + "en": "Azerbaijan", + "pt_BR": "Azerbaijão", + "sr-Cyrl": "Ðзербејџан", + "sr-Latn": "Azerbejdžan", + "zh_TW": "亞塞拜然", + "tr": "Azerbaycan", + "ro": "Azerbaidjan", + "ar": "أذربيجان", + "fa": "آذربایجان", + "yue": "阿塞拜疆" + }, + flag: "🇦🇿", + code: "AZ", + dialCode: "994", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Bahamas", + nameTranslations: { + "sk": "Bahamy", + "se": "Bahamas", + "pl": "Bahamy", + "no": "Bahamas", + "ja": "ãƒãƒãƒž", + "it": "Bahamas", + "zh": "巴哈马", + "nl": "Bahama's", + "de": "Bahamas", + "fr": "Bahamas", + "es": "Bahamas", + "en": "Bahamas", + "pt_BR": "Bahamas", + "sr-Cyrl": "Бахаме", + "sr-Latn": "Bahame", + "zh_TW": "巴哈馬", + "tr": "Bahama", + "ro": "Bahamas", + "ar": "باهاماس", + "fa": "باهاماس", + "yue": "巴哈馬" + }, + flag: "🇧🇸", + code: "BS", + dialCode: "1242", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Bahrain", + nameTranslations: { + "sk": "Bahrajn", + "se": "Bahrain", + "pl": "Bahrajn", + "no": "Bahrain", + "ja": "ãƒãƒ¼ãƒ¬ãƒ¼ãƒ³", + "it": "Bahrein", + "zh": "å·´æž—", + "nl": "Bahrein", + "de": "Bahrain", + "fr": "Bahreïn", + "es": "Baréin", + "en": "Bahrain", + "pt_BR": "Bahrain", + "sr-Cyrl": "Бахреин", + "sr-Latn": "Bahrein", + "zh_TW": "å·´æž—", + "tr": "Bahreyn", + "ro": "Bahrein", + "ar": "البحرين", + "fa": "بحرین", + "yue": "å·´æž—" + }, + flag: "🇧🇭", + code: "BH", + dialCode: "973", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Bangladesh", + nameTranslations: { + "sk": "Bangladéš", + "se": "Bangladesh", + "pl": "Bangladesz", + "no": "Bangladesh", + "ja": "ãƒãƒ³ã‚°ãƒ©ãƒ‡ã‚·ãƒ¥", + "it": "Bangladesh", + "zh": "孟加拉国", + "nl": "Bangladesh", + "de": "Bangladesch", + "fr": "Bangladesh", + "es": "Bangladés", + "en": "Bangladesh", + "pt_BR": "Bangladesh", + "sr-Cyrl": "Бангладеш", + "sr-Latn": "BangladeÅ¡", + "zh_TW": "孟加拉", + "tr": "BangladeÅŸ", + "ro": "Bangladesh", + "ar": "بنغلاديش", + "fa": "بنگلادش", + "yue": "孟加拉囯" + }, + flag: "🇧🇩", + code: "BD", + dialCode: "880", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Barbados", + nameTranslations: { + "sk": "Barbados", + "se": "Barbados", + "pl": "Barbados", + "no": "Barbados", + "ja": "ãƒãƒ«ãƒãƒ‰ã‚¹", + "it": "Barbados", + "zh": "巴巴多斯", + "nl": "Barbados", + "de": "Barbados", + "fr": "Barbade", + "es": "Barbados", + "en": "Barbados", + "pt_BR": "Barbados", + "sr-Cyrl": "БарбадоÑ", + "sr-Latn": "Barbados", + "zh_TW": "巴巴多斯", + "tr": "Barbados", + "ro": "Barbados", + "ar": "باربادوس", + "fa": "باربادوس", + "yue": "巴巴多斯" + }, + flag: "🇧🇧", + code: "BB", + dialCode: "1246", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Belarus", + nameTranslations: { + "sk": "Bielorusko", + "se": "Vilges-Ruošša", + "pl": "BiaÅ‚oruÅ›", + "no": "Hviterussland", + "ja": "ベラルーシ", + "it": "Bielorussia", + "zh": "白俄罗斯", + "nl": "Belarus", + "de": "Belarus", + "fr": "Biélorussie", + "es": "Bielorrusia", + "en": "Belarus", + "pt_BR": "Bielo-Rússia", + "sr-Cyrl": "БелоруÑија", + "sr-Latn": "Belorusija", + "zh_TW": "白俄羅斯", + "tr": "Belarus", + "ro": "Belarus", + "ar": "بيلاروس", + "fa": "بلاروس", + "yue": "白俄羅斯" + }, + flag: "🇧🇾", + code: "BY", + dialCode: "375", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Belgium", + nameTranslations: { + "sk": "Belgicko", + "se": "Belgia", + "pl": "Belgia", + "no": "Belgia", + "ja": "ベルギー", + "it": "Belgio", + "zh": "比利时", + "nl": "België", + "de": "Belgien", + "fr": "Belgique", + "es": "Bélgica", + "en": "Belgium", + "pt_BR": "Bélgica", + "sr-Cyrl": "Белгија", + "sr-Latn": "Belgija", + "zh_TW": "比利時", + "tr": "Belçika", + "ro": "Belgia", + "ar": "بلجيكا", + "fa": "بلژیک", + "yue": "比利時" + }, + flag: "🇧🇪", + code: "BE", + dialCode: "32", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Belize", + nameTranslations: { + "sk": "Belize", + "se": "Belize", + "pl": "Belize", + "no": "Belize", + "ja": "ベリーズ", + "it": "Belize", + "zh": "伯利兹", + "nl": "Belize", + "de": "Belize", + "fr": "Belize", + "es": "Belice", + "en": "Belize", + "pt_BR": "Belize", + "sr-Cyrl": "Белизе", + "sr-Latn": "Belize", + "zh_TW": "伯利茲", + "tr": "Belize", + "ro": "Belize", + "ar": "بليز", + "fa": "بليز", + "yue": "伯利茲" + }, + flag: "🇧🇿", + code: "BZ", + dialCode: "501", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Benin", + nameTranslations: { + "sk": "Benin", + "se": "Benin", + "pl": "Benin", + "no": "Benin", + "ja": "ベナン", + "it": "Benin", + "zh": "è´å®", + "nl": "Benin", + "de": "Benin", + "fr": "Bénin", + "es": "Benín", + "en": "Benin", + "pt_BR": "Benin", + "sr-Cyrl": "Бенин", + "sr-Latn": "Benin", + "zh_TW": "è²å—", + "tr": "Benin", + "ro": "Benin", + "ar": "بنين", + "fa": "بنين", + "yue": "è²å¯§" + }, + flag: "🇧🇯", + code: "BJ", + dialCode: "229", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Bermuda", + nameTranslations: { + "sk": "Bermudy", + "se": "Bermuda", + "pl": "Bermudy", + "no": "Bermuda", + "ja": "ãƒãƒŸãƒ¥ãƒ¼ãƒ€", + "it": "Bermuda", + "zh": "百慕大", + "nl": "Bermuda", + "de": "Bermuda", + "fr": "Bermudes", + "es": "Bermudas", + "en": "Bermuda", + "pt_BR": "Bermudas", + "sr-Cyrl": "Бермуда", + "sr-Latn": "Bermuda", + "zh_TW": "百慕é”", + "tr": "Bermuda", + "ro": "Insulele Bermude", + "ar": "برمودا", + "fa": "برمودا", + "yue": "百慕大" + }, + flag: "🇧🇲", + code: "BM", + dialCode: "1441", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Bhutan", + nameTranslations: { + "sk": "Bhután", + "se": "Bhutan", + "pl": "Bhutan", + "no": "Bhutan", + "ja": "ブータン", + "it": "Bhutan", + "zh": "ä¸ä¸¹", + "nl": "Bhutan", + "de": "Bhutan", + "fr": "Bhoutan", + "es": "Bután", + "en": "Bhutan", + "pt_BR": "Butão", + "sr-Cyrl": "Бутан", + "sr-Latn": "Butan", + "zh_TW": "ä¸ä¸¹", + "tr": "Bhutan", + "ro": "Bhutan", + "ar": "بوتان", + "fa": "بوتان", + "yue": "ä¸ä¸¹" + }, + flag: "🇧🇹", + code: "BT", + dialCode: "975", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Bolivia, Plurinational State of bolivia", + nameTranslations: { + "sk": "Bolívia", + "se": "Bolivia", + "pl": "Boliwia", + "no": "Bolivia", + "ja": "ボリビア", + "it": "Bolivia", + "zh": "玻利维亚", + "nl": "Bolivia", + "de": "Bolivien", + "fr": "Bolivie", + "es": "Bolivia", + "en": "Bolivia", + "pt_BR": "Bolívia", + "sr-Cyrl": "Боливија", + "sr-Latn": "Bolivija", + "zh_TW": "玻利維亞", + "tr": "Bolivya", + "ro": "Bolivia", + "ar": "بوليÙيا", + "fa": "بولیوی", + "yue": "玻利維亞(多民æ—國家)" + }, + flag: "🇧🇴", + code: "BO", + dialCode: "591", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Bosnia and Herzegovina", + nameTranslations: { + "sk": "Bosna a Hercegovina", + "se": "Bosnia-Hercegovina", + "pl": "BoÅ›nia i Hercegowina", + "no": "Bosnia-Hercegovina", + "ja": "ボスニア・ヘルツェゴビナ", + "it": "Bosnia ed Erzegovina", + "zh": "波斯尼亚和黑塞哥维那", + "nl": "Bosnië en Herzegovina", + "de": "Bosnien und Herzegowina", + "fr": "Bosnie-Herzégovine", + "es": "Bosnia y Herzegovina", + "en": "Bosnia & Herzegovina", + "pt_BR": "Bósnia e Herzegovina", + "sr-Cyrl": "БоÑна и Херцеговина", + "sr-Latn": "Bosna i Hercegovina", + "zh_TW": "波士尼亞和黑塞哥維那", + "tr": "Bosna Hersek", + "ro": "Bosnia È™i HerÈ›egovina", + "ar": "البوسنة والهرسك", + "fa": "بوسنی Ùˆ هرزگوین", + "yue": "波斯尼亞黑塞哥維那" + }, + flag: "🇧🇦", + code: "BA", + dialCode: "387", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Botswana", + nameTranslations: { + "sk": "Botswana", + "se": "Botswana", + "pl": "Botswana", + "no": "Botswana", + "ja": "ボツワナ", + "it": "Botswana", + "zh": "åšèŒ¨ç“¦çº³", + "nl": "Botswana", + "de": "Botsuana", + "fr": "Botswana", + "es": "Botsuana", + "en": "Botswana", + "pt_BR": "Botswana", + "sr-Cyrl": "Боцвана", + "sr-Latn": "Bocvana", + "zh_TW": "åšèŒ¨ç“¦ç´", + "tr": "Botsvana", + "ro": "Botswana", + "ar": "بوتسوانا", + "fa": "بوتسوانا", + "yue": "åšèŒ¨ç“¦ç´" + }, + flag: "🇧🇼", + code: "BW", + dialCode: "267", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Bouvet Island", + nameTranslations: { + "sk": "Bouvetov ostrov", + "se": "Bouvet-sullot", + "pl": "Wyspa Bouveta", + "no": "Bouvetøya", + "ja": "ブーベ島", + "it": "Isola Bouvet", + "zh": "布韦岛", + "nl": "Bouveteiland", + "de": "Bouvetinsel", + "fr": "ÃŽle Bouvet", + "es": "Isla Bouvet", + "en": "Bouvet Island", + "pt_BR": "Ilha Bouvet", + "sr-Cyrl": "ОÑтрво Буве", + "sr-Latn": "Ostrvo Buve", + "zh_TW": "布維特島", + "tr": "Bouvet Adası", + "ro": "Insula Bouvet", + "ar": "جزيرة بوÙيه", + "fa": "جزیره بووه", + "yue": "布维特岛" + }, + flag: "🇧🇻", + code: "BV", + dialCode: "47", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Brazil", + nameTranslations: { + "sk": "Brazília", + "se": "Brasil", + "pl": "Brazylia", + "no": "Brasil", + "ja": "ブラジル", + "it": "Brasile", + "zh": "巴西", + "nl": "Brazilië", + "de": "Brasilien", + "fr": "Brésil", + "es": "Brasil", + "en": "Brazil", + "pt_BR": "Brasil", + "sr-Cyrl": "Бразил", + "sr-Latn": "Brazil", + "zh_TW": "巴西", + "tr": "Brezilya", + "ro": "Brazilia", + "ar": "البرازيل", + "fa": "برزیل", + "yue": "巴西" + }, + flag: "🇧🇷", + code: "BR", + dialCode: "55", + minLength: 11, + maxLength: 11, + ), + Country( + name: "British Indian Ocean Territory", + nameTranslations: { + "sk": "Britské indickooceánske územie", + "se": "British Indian Ocean Territory", + "pl": "Brytyjskie Terytorium Oceanu Indyjskiego", + "no": "Det britiske territoriet i Indiahavet", + "ja": "英領インド洋地域", + "it": "Territorio britannico dell'Oceano Indiano", + "zh": "英属å°åº¦æ´‹é¢†åœ°", + "nl": "Brits Indische Oceaanterritorium", + "de": "Britisches Territorium im Indischen Ozean", + "fr": "Territoire britannique de l'océan Indien", + "es": "Territorio Británico del Océano Ãndico", + "en": "British Indian Ocean Territory", + "pt_BR": "Território Britânico do Oceano Ãndico", + "sr-Cyrl": "БританÑка територија ИндијÑког океана", + "sr-Latn": "Britanska teritorija Indijskog okeana", + "zh_TW": "英屬å°åº¦æ´‹é ˜åœ°", + "tr": "Britanya Hint Okyanusu Toprakları", + "ro": "Teritoriul Britanic din Oceanul Indian", + "ar": "إقليم المحيط الهندي البريطاني", + "fa": "سرزمین دریایی هند - بریتانیا", + "yue": "英屬å°åº¦æ´‹é ˜åœŸ" + }, + flag: "🇮🇴", + code: "IO", + dialCode: "246", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Brunei Darussalam", + nameTranslations: { + "sk": "Brunej", + "se": "Brunei", + "pl": "Brunei", + "no": "Brunei", + "ja": "ブルãƒã‚¤", + "it": "Brunei", + "zh": "文莱", + "nl": "Brunei", + "de": "Brunei Darussalam", + "fr": "Brunéi Darussalam", + "es": "Brunéi", + "en": "Brunei", + "pt_BR": "Brunei", + "sr-Cyrl": "Брунеј", + "sr-Latn": "Brunej", + "zh_TW": "æ±¶èŠ", + "tr": "Bruney", + "ro": "Brunei", + "ar": "بروناي", + "fa": "برونئی", + "yue": "æ–‡èŠé”魯薩蘭國" + }, + flag: "🇧🇳", + code: "BN", + dialCode: "673", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Bulgaria", + nameTranslations: { + "sk": "Bulharsko", + "se": "Bulgária", + "pl": "BuÅ‚garia", + "no": "Bulgaria", + "ja": "ブルガリア", + "it": "Bulgaria", + "zh": "ä¿åŠ åˆ©äºš", + "nl": "Bulgarije", + "de": "Bulgarien", + "fr": "Bulgarie", + "es": "Bulgaria", + "en": "Bulgaria", + "pt_BR": "Bulgária", + "sr-Cyrl": "БугарÑка", + "sr-Latn": "Bugarska", + "zh_TW": "ä¿åŠ åˆ©äºž", + "tr": "Bulgaristan", + "ro": "Bulgaria", + "ar": "بلغاريا", + "fa": "بلغارستان", + "yue": "ä¿åŠ åˆ©äºž" + }, + flag: "🇧🇬", + code: "BG", + dialCode: "359", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Burkina Faso", + nameTranslations: { + "sk": "Burkina Faso", + "se": "Burkina Faso", + "pl": "Burkina Faso", + "no": "Burkina Faso", + "ja": "ブルキナファソ", + "it": "Burkina Faso", + "zh": "布基纳法索", + "nl": "Burkina Faso", + "de": "Burkina Faso", + "fr": "Burkina Faso", + "es": "Burkina Faso", + "en": "Burkina Faso", + "pt_BR": "Burkina Faso", + "sr-Cyrl": "Буркина ФаÑо", + "sr-Latn": "Burkina Faso", + "zh_TW": "布å‰ç´æ³•ç´¢", + "tr": "Burkina Faso", + "ro": "Burkina Faso", + "ar": "بوركينا ÙØ§Ø³Ùˆ", + "fa": "Ø¨ÙˆØ±Ú©ÛŒÙ†Ø§ÙØ§Ø³Ùˆ", + "yue": "å¸ƒåŸºç´æ³•ç´¢" + }, + flag: "🇧🇫", + code: "BF", + dialCode: "226", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Burundi", + nameTranslations: { + "sk": "Burundi", + "se": "Burundi", + "pl": "Burundi", + "no": "Burundi", + "ja": "ブルンジ", + "it": "Burundi", + "zh": "布隆迪", + "nl": "Burundi", + "de": "Burundi", + "fr": "Burundi", + "es": "Burundi", + "en": "Burundi", + "pt_BR": "Burundi", + "sr-Cyrl": "Бурунди", + "sr-Latn": "Burundi", + "zh_TW": "蒲隆地", + "tr": "Burundi", + "ro": "Burundi", + "ar": "بوروندي", + "fa": "بوروندی", + "yue": "蒲隆地" + }, + flag: "🇧🇮", + code: "BI", + dialCode: "257", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Cambodia", + nameTranslations: { + "sk": "Kambodža", + "se": "Kambodža", + "pl": "Kambodża", + "no": "Kambodsja", + "ja": "カンボジア", + "it": "Cambogia", + "zh": "柬埔寨", + "nl": "Cambodja", + "de": "Kambodscha", + "fr": "Cambodge", + "es": "Camboya", + "en": "Cambodia", + "pt_BR": "Camboja", + "sr-Cyrl": "Камбоџа", + "sr-Latn": "Kambodža", + "zh_TW": "柬埔寨", + "tr": "Kamboçya", + "ro": "Cambogia", + "ar": "كمبوديا", + "fa": "کامبوج", + "yue": "柬埔寨" + }, + flag: "🇰🇭", + code: "KH", + dialCode: "855", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Cameroon", + nameTranslations: { + "sk": "Kamerun", + "se": "Kamerun", + "pl": "Kamerun", + "no": "Kamerun", + "ja": "カメルーン", + "it": "Camerun", + "zh": "喀麦隆", + "nl": "Kameroen", + "de": "Kamerun", + "fr": "Cameroun", + "es": "Camerún", + "en": "Cameroon", + "pt_BR": "Camarões", + "sr-Cyrl": "Камерун", + "sr-Latn": "Kamerun", + "zh_TW": "喀麥隆", + "tr": "Kamerun", + "ro": "Camerun", + "ar": "الكاميرون", + "fa": "کامرون", + "yue": "å–€ 麥 隆" + }, + flag: "🇨🇲", + code: "CM", + dialCode: "237", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Canada", + nameTranslations: { + "sk": "Kanada", + "se": "Kanáda", + "pl": "Kanada", + "no": "Canada", + "ja": "カナダ", + "it": "Canada", + "zh": "加拿大", + "nl": "Canada", + "de": "Kanada", + "fr": "Canada", + "es": "Canadá", + "en": "Canada", + "pt_BR": "Canadá", + "sr-Cyrl": "Канада", + "sr-Latn": "Kanada", + "zh_TW": "加拿大", + "tr": "Kanada", + "ro": "Canada", + "ar": "كندا", + "fa": "کانادا", + "yue": "加拿大" + }, + flag: "🇨🇦", + code: "CA", + dialCode: "1", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Cayman Islands", + nameTranslations: { + "sk": "Kajmanie ostrovy", + "se": "Cayman-sullot", + "pl": "Kajmany", + "no": "Caymanøyene", + "ja": "ケイマン諸島", + "it": "Isole Cayman", + "zh": "开曼群岛", + "nl": "Kaaimaneilanden", + "de": "Kaimaninseln", + "fr": "ÃŽles Caïmans", + "es": "Islas Caimán", + "en": "Cayman Islands", + "pt_BR": "Ilhas Cayman", + "sr-Cyrl": "КајманÑка ОÑтрва", + "sr-Latn": "Kajmanska Ostrva", + "zh_TW": "開曼群島", + "tr": "Cayman Adaları", + "ro": "Insulele Cayman", + "ar": "جزر كايمان", + "fa": "جزایر کیمن", + "yue": "開曼群島" + }, + flag: "🇰🇾", + code: "KY", + dialCode: "345", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Central African Republic", + nameTranslations: { + "sk": "Stredoafrická republika", + "se": "Gaska-Afrihká dásseváldi", + "pl": "Republika ÅšrodkowoafrykaÅ„ska", + "no": "Den sentralafrikanske republikk", + "ja": "中央アフリカ共和国", + "it": "Repubblica Centrafricana", + "zh": "中éžå…±å’Œå›½", + "nl": "Centraal-Afrikaanse Republiek", + "de": "Zentralafrikanische Republik", + "fr": "République centrafricaine", + "es": "República Centroafricana", + "en": "Central African Republic", + "pt_BR": "República Centro-Africana", + "sr-Cyrl": "Централноафричка Република", + "sr-Latn": "CentralnoafriÄka Republika", + "zh_TW": "中éžå…±å’Œåœ‹", + "tr": "Orta Afrika Cumhuriyeti", + "ro": "Republica Centrafricană", + "ar": "جمهورية Ø£ÙØ±ÙŠÙ‚يا الوسطى", + "fa": "جمهوری Ø§ÙØ±ÛŒÙ‚ای مرکزی", + "yue": "中éžå…±å’Œåœ‹" + }, + flag: "🇨🇫", + code: "CF", + dialCode: "236", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Chad", + nameTranslations: { + "sk": "ÄŒad", + "se": "TÄad", + "pl": "Czad", + "no": "Tsjad", + "ja": "ãƒãƒ£ãƒ‰", + "it": "Ciad", + "zh": "ä¹å¾—", + "nl": "Tsjaad", + "de": "Tschad", + "fr": "Tchad", + "es": "Chad", + "en": "Chad", + "pt_BR": "Chade", + "sr-Cyrl": "Чад", + "sr-Latn": "ÄŒad", + "zh_TW": "查德", + "tr": "Çad", + "ro": "Ciad", + "ar": "تشاد", + "fa": "چاد", + "yue": "ä¹å¾—" + }, + flag: "🇹🇩", + code: "TD", + dialCode: "235", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Chile", + nameTranslations: { + "sk": "ÄŒile", + "se": "ÄŒiile", + "pl": "Chile", + "no": "Chile", + "ja": "ãƒãƒª", + "it": "Cile", + "zh": "智利", + "nl": "Chili", + "de": "Chile", + "fr": "Chili", + "es": "Chile", + "en": "Chile", + "pt_BR": "Chile", + "sr-Cyrl": "Чиле", + "sr-Latn": "ÄŒile", + "zh_TW": "智利", + "tr": "Åžili", + "ro": "Chile", + "ar": "تشيلي", + "fa": "شیلی", + "yue": "智利" + }, + flag: "🇨🇱", + code: "CL", + dialCode: "56", + minLength: 9, + maxLength: 9, + ), + Country( + name: "China", + nameTranslations: { + "sk": "Čína", + "se": "Kiinná", + "pl": "Chiny", + "no": "Kina", + "ja": "中国", + "it": "Cina", + "zh": "中国", + "nl": "China", + "de": "China", + "fr": "Chine", + "es": "China", + "en": "China", + "pt_BR": "China", + "sr-Cyrl": "Кина", + "sr-Latn": "Kina", + "zh_TW": "中國", + "tr": "Çin", + "ro": "China", + "ar": "الصين", + "fa": "چین", + "yue": "中國" + }, + flag: "🇨🇳", + code: "CN", + dialCode: "86", + minLength: 11, + maxLength: 12, + ), + Country( + name: "Christmas Island", + nameTranslations: { + "sk": "VianoÄný ostrov", + "se": "Juovllat-sullot", + "pl": "Wyspa Bożego Narodzenia", + "no": "Christmasøya", + "ja": "クリスマス島", + "it": "Isola Christmas", + "zh": "圣诞岛", + "nl": "Christmaseiland", + "de": "Weihnachtsinsel", + "fr": "ÃŽle Christmas", + "es": "Isla de Navidad", + "en": "Christmas Island", + "pt_BR": "Ilha do Natal", + "sr-Cyrl": "УÑкршња ОÑтрва", + "sr-Latn": "UskrÅ¡nja Ostrva", + "zh_TW": "è–誕島", + "tr": "Christmas Adası", + "ro": "Insula Crăciunului", + "ar": "جزيرة عيد الميلاد", + "fa": "جزیره کریسمس", + "yue": "è–誕島" + }, + flag: "🇨🇽", + code: "CX", + dialCode: "61", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Cocos (Keeling) Islands", + nameTranslations: { + "sk": "Kokosové ostrovy", + "se": "Cocos-sullot", + "pl": "Wyspy Kokosowe", + "no": "Kokosøyene", + "ja": "ココス(キーリング)諸島", + "it": "Isole Cocos (Keeling)", + "zh": "科科斯(基林)群岛", + "nl": "Cocoseilanden", + "de": "Kokosinseln", + "fr": "ÃŽles Cocos", + "es": "Islas Cocos", + "en": "Cocos (Keeling) Islands", + "pt_BR": "Ilhas Cocos (Keeling)", + "sr-Cyrl": "КокоÑова ОÑтрва", + "sr-Latn": "Kokosova Ostrva", + "zh_TW": "科科斯(基林)群島", + "tr": "Cocos (Keyling) Adaları", + "ro": "Insulele Cocos", + "ar": "جزر كوكوس", + "fa": "جزایر کوکوس", + "yue": "å¯å¯å³¶ï¼ˆåŸºæž—)群島" + }, + flag: "🇨🇨", + code: "CC", + dialCode: "61", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Colombia", + nameTranslations: { + "sk": "Kolumbia", + "se": "Kolombia", + "pl": "Kolumbia", + "no": "Colombia", + "ja": "コロンビア", + "it": "Colombia", + "zh": "哥伦比亚", + "nl": "Colombia", + "de": "Kolumbien", + "fr": "Colombie", + "es": "Colombia", + "en": "Colombia", + "pt_BR": "Colômbia", + "sr-Cyrl": "Колумбија", + "sr-Latn": "Kolumbija", + "zh_TW": "哥倫比亞", + "tr": "Kolombiya", + "ro": "Columbia", + "ar": "كولومبيا", + "fa": "کلمبیا", + "yue": "哥倫比亞" + }, + flag: "🇨🇴", + code: "CO", + dialCode: "57", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Comoros", + nameTranslations: { + "sk": "Komory", + "se": "Komoros", + "pl": "Komory", + "no": "Komorene", + "ja": "コモロ", + "it": "Comore", + "zh": "ç§‘æ‘©ç½—", + "nl": "Comoren", + "de": "Komoren", + "fr": "Comores", + "es": "Comoras", + "en": "Comoros", + "pt_BR": "Comores", + "sr-Cyrl": "Комори", + "sr-Latn": "Komori", + "zh_TW": "ç§‘æ‘©ç¾…", + "tr": "Komor Adaları", + "ro": "Comore", + "ar": "جزر القمر", + "fa": "جزیره کومور", + "yue": "ç§‘æ‘©ç¾…" + }, + flag: "🇰🇲", + code: "KM", + dialCode: "269", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Congo", + nameTranslations: { + "sk": "Konžská republika", + "se": "Kongo-Brazzaville", + "pl": "Kongo", + "no": "Kongo-Brazzaville", + "ja": "コンゴ共和国(ブラザビル)", + "it": "Congo-Brazzaville", + "zh": "刚果(布)", + "nl": "Congo-Brazzaville", + "de": "Kongo-Brazzaville", + "fr": "Congo-Brazzaville", + "es": "Congo", + "en": "Congo - Brazzaville", + "pt_BR": "República do Congo", + "sr-Cyrl": "Република Конго", + "sr-Latn": "Republika Kongo", + "zh_TW": "剛果共和國(布拉柴維爾)", + "tr": "Kongo Cumhuriyeti", + "ro": "Republica Congo", + "ar": "جمهورية الكونغو", + "fa": "جمهوری Ú©Ù†Ú¯Ùˆ", + "yue": "剛果(共和國)" + }, + flag: "🇨🇬", + code: "CG", + dialCode: "242", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Congo, The Democratic Republic of the Congo", + nameTranslations: { + "sk": "Konžská demokratická republika", + "se": "Kongo-Kinshasa", + "pl": "Demokratyczna Republika Konga", + "no": "Kongo-Kinshasa", + "ja": "コンゴ民主共和国(キンシャサ)", + "it": "Congo - Kinshasa", + "zh": "刚果(金)", + "nl": "Congo-Kinshasa", + "de": "Kongo-Kinshasa", + "fr": "Congo-Kinshasa", + "es": "República Democrática del Congo", + "en": "Congo - Kinshasa", + "pt_BR": "República Democrática do Congo", + "sr-Cyrl": "ДемократÑка Република Конго", + "sr-Latn": "Demokratska Republika Kongo", + "zh_TW": "剛果民主共和國(金沙薩)", + "tr": "Kongo Demokratik Cumhuriyeti", + "ro": "Republica Democrată Congo", + "ar": "جمهورية الكونغو الديمقراطية", + "fa": "جمهوری دموکراتیک Ú©Ù†Ú¯Ùˆ", + "yue": "剛果(金)" + }, + flag: "🇨🇩", + code: "CD", + dialCode: "243", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Cook Islands", + nameTranslations: { + "sk": "Cookove ostrovy", + "se": "Cook-sullot", + "pl": "Wyspy Cooka", + "no": "Cookøyene", + "ja": "クック諸島", + "it": "Isole Cook", + "zh": "库克群岛", + "nl": "Cookeilanden", + "de": "Cookinseln", + "fr": "ÃŽles Cook", + "es": "Islas Cook", + "en": "Cook Islands", + "pt_BR": "Ilhas Cook", + "sr-Cyrl": "Кукова ОÑтрва", + "sr-Latn": "Kukova Ostrva", + "zh_TW": "庫克群島", + "tr": "Cook Adaları", + "ro": "Insulele Cook", + "ar": "جزر كوك", + "fa": "جزایر Ú©ÙˆÚ©", + "yue": "庫克群島" + }, + flag: "🇨🇰", + code: "CK", + dialCode: "682", + minLength: 5, + maxLength: 5, + ), + Country( + name: "Costa Rica", + nameTranslations: { + "sk": "Kostarika", + "se": "Costa Rica", + "pl": "Kostaryka", + "no": "Costa Rica", + "ja": "コスタリカ", + "it": "Costa Rica", + "zh": "哥斯达黎加", + "nl": "Costa Rica", + "de": "Costa Rica", + "fr": "Costa Rica", + "es": "Costa Rica", + "en": "Costa Rica", + "pt_BR": "Costa Rica", + "sr-Cyrl": "КоÑта Рика", + "sr-Latn": "Kosta Rika", + "zh_TW": "哥斯大黎加", + "tr": "Kosta Rika", + "ro": "Costa Rica", + "ar": "كوستاريكا", + "fa": "کاستاریکا", + "yue": "哥斯é”黎加" + }, + flag: "🇨🇷", + code: "CR", + dialCode: "506", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Côte d'Ivoire", + nameTranslations: { + "sk": "Pobrežie Slonoviny", + "se": "Elfenbenariddu", + "pl": "Côte d'Ivoire", + "no": "Elfenbenskysten", + "ja": "コートジボワール", + "it": "Costa d'Avorio", + "zh": "科特迪瓦", + "nl": "Ivoorkust", + "de": "Côte d'Ivoire", + "fr": "Côte d'Ivoire", + "es": "Côte d'Ivoire", + "en": "Côte d'Ivoire", + "pt_BR": "Côte d'Ivoire", + "sr-Cyrl": "Обала Слоноваче", + "sr-Latn": "Obala SlonovaÄe", + "zh_TW": "象牙海岸", + "tr": "FildiÅŸi Kıyısı", + "ro": "Coasta de fildeÈ™", + "ar": "ساحل العاج", + "fa": "ساحل عاج", + "yue": "科特迪瓦" + }, + flag: "🇨🇮", + code: "CI", + dialCode: "225", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Croatia", + nameTranslations: { + "sk": "Chorvátsko", + "se": "Kroátia", + "pl": "Chorwacja", + "no": "Kroatia", + "ja": "クロアãƒã‚¢", + "it": "Croazia", + "zh": "克罗地亚", + "nl": "Kroatië", + "de": "Kroatien", + "fr": "Croatie", + "es": "Croacia", + "en": "Croatia", + "pt_BR": "Croácia", + "sr-Cyrl": "ХрватÑка", + "sr-Latn": "Hrvatska", + "zh_TW": "克羅埃西亞", + "tr": "Hırvatistan", + "ro": "CroaÈ›ia", + "ar": "كرواتيا", + "fa": "کرواسی", + "yue": "克羅地亞" + }, + flag: "🇭🇷", + code: "HR", + dialCode: "385", + minLength: 12, + maxLength: 12, + ), + Country( + name: "Cuba", + nameTranslations: { + "sk": "Kuba", + "se": "Kuba", + "pl": "Kuba", + "no": "Cuba", + "ja": "キューãƒ", + "it": "Cuba", + "zh": "å¤å·´", + "nl": "Cuba", + "de": "Kuba", + "fr": "Cuba", + "es": "Cuba", + "en": "Cuba", + "pt_BR": "Cuba", + "sr-Cyrl": "Куба", + "sr-Latn": "Kuba", + "zh_TW": "å¤å·´", + "tr": "Küba", + "ro": "Cuba", + "ar": "كوبا", + "fa": "كوبا", + "yue": "å¤å·´" + }, + flag: "🇨🇺", + code: "CU", + dialCode: "53", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Cyprus", + nameTranslations: { + "sk": "Cyprus", + "se": "Kypros", + "pl": "Cypr", + "no": "Kypros", + "ja": "キプロス", + "it": "Cipro", + "zh": "塞浦路斯", + "nl": "Cyprus", + "de": "Zypern", + "fr": "Chypre", + "es": "Chipre", + "en": "Cyprus", + "pt_BR": "Chipre", + "sr-Cyrl": "Кипар", + "sr-Latn": "Kipar", + "zh_TW": "塞普勒斯", + "tr": "Kıbrıs", + "ro": "Cipru", + "ar": "قبرص", + "fa": "قبرس", + "yue": "塞浦路斯" + }, + flag: "🇨🇾", + code: "CY", + dialCode: "357", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Czech Republic", + nameTranslations: { + "sk": "ÄŒesko", + "se": "ÄŒeahkka", + "pl": "Czechy", + "no": "Tsjekkia", + "ja": "ãƒã‚§ã‚³", + "it": "Cechia", + "zh": "æ·å…‹", + "nl": "Tsjechië", + "de": "Tschechien", + "fr": "Tchéquie", + "es": "Chequia", + "en": "Czechia", + "pt_BR": "Czechia", + "sr-Cyrl": "Чешка", + "sr-Latn": "ÄŒeÅ¡ka", + "zh_TW": "æ·å…‹", + "tr": "Çek Cumhuriyeti", + "ro": "Cehia", + "ar": "جمهورية التشيك", + "fa": "جمهوری Ú†Ú©", + "yue": "æ·å…‹å…±å’Œåœ‹" + }, + flag: "🇨🇿", + code: "CZ", + dialCode: "420", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Denmark", + nameTranslations: { + "sk": "Dánsko", + "se": "Dánmárku", + "pl": "Dania", + "no": "Danmark", + "ja": "デンマーク", + "it": "Danimarca", + "zh": "丹麦", + "nl": "Denemarken", + "de": "Dänemark", + "fr": "Danemark", + "es": "Dinamarca", + "en": "Denmark", + "pt_BR": "Dinamarca", + "sr-Cyrl": "ДанÑка", + "sr-Latn": "Danska", + "zh_TW": "丹麥", + "tr": "Danimarka", + "ro": "Danemarca", + "ar": "الدنمارك", + "fa": "دانمارک", + "yue": "丹麥" + }, + flag: "🇩🇰", + code: "DK", + dialCode: "45", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Djibouti", + nameTranslations: { + "sk": "Džibutsko", + "se": "Djibouti", + "pl": "Dżibuti", + "no": "Djibouti", + "ja": "ジブãƒ", + "it": "Gibuti", + "zh": "å‰å¸ƒæ", + "nl": "Djibouti", + "de": "Dschibuti", + "fr": "Djibouti", + "es": "Yibuti", + "en": "Djibouti", + "pt_BR": "Djibouti", + "sr-Cyrl": "Ðибути", + "sr-Latn": "Džibuti", + "zh_TW": "å‰å¸ƒåœ°", + "tr": "Cibuti", + "ro": "Djibouti", + "ar": "جيبوتي", + "fa": "جیبوتی", + "yue": "å‰å¸ƒæ" + }, + flag: "🇩🇯", + code: "DJ", + dialCode: "253", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Dominica", + nameTranslations: { + "sk": "Dominika", + "se": "Dominica", + "pl": "Dominika", + "no": "Dominica", + "ja": "ドミニカ国", + "it": "Dominica", + "zh": "多米尼克", + "nl": "Dominica", + "de": "Dominica", + "fr": "Dominique", + "es": "Dominica", + "en": "Dominica", + "pt_BR": "Dominica", + "sr-Cyrl": "Доминика", + "sr-Latn": "Dominika", + "zh_TW": "多明尼加", + "tr": "Dominika", + "ro": "Dominica", + "ar": "دومينيكا", + "fa": "دومينيكا", + "yue": "多米尼加" + }, + flag: "🇩🇲", + code: "DM", + dialCode: "1767", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Dominican Republic", + nameTranslations: { + "sk": "Dominikánska republika", + "se": "Dominikána dásseváldi", + "pl": "Dominikana", + "no": "Den dominikanske republikk", + "ja": "ドミニカ共和国", + "it": "Repubblica Dominicana", + "zh": "多米尼加共和国", + "nl": "Dominicaanse Republiek", + "de": "Dominikanische Republik", + "fr": "République dominicaine", + "es": "República Dominicana", + "en": "Dominican Republic", + "pt_BR": "República Dominicana", + "sr-Cyrl": "ДоминиканÑка Република", + "sr-Latn": "Dominikanska Republika", + "zh_TW": "多明尼加共和國", + "tr": "Dominik Cumhuriyeti", + "ro": "Republica Dominicană", + "ar": "جمهورية الدومينيكان", + "fa": "جمهوری دومنیکن", + "yue": "多明尼加共和國" + }, + flag: "🇩🇴", + code: "DO", + dialCode: "1", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Ecuador", + nameTranslations: { + "sk": "Ekvádor", + "se": "Ecuador", + "pl": "Ekwador", + "no": "Ecuador", + "ja": "エクアドル", + "it": "Ecuador", + "zh": "厄瓜多尔", + "nl": "Ecuador", + "de": "Ecuador", + "fr": "Équateur", + "es": "Ecuador", + "en": "Ecuador", + "pt_BR": "Equador", + "sr-Cyrl": "Еквадор", + "sr-Latn": "Ekvador", + "zh_TW": "厄瓜多", + "tr": "Ekvador", + "ro": "Ecuador", + "ar": "الإكوادور", + "fa": "اكوادور", + "yue": "厄瓜多爾" + }, + flag: "🇪🇨", + code: "EC", + dialCode: "593", + minLength: 8, + maxLength: 9, + ), + Country( + name: "Egypt", + nameTranslations: { + "sk": "Egypt", + "se": "Egypt", + "pl": "Egipt", + "no": "Egypt", + "ja": "エジプト", + "it": "Egitto", + "zh": "埃åŠ", + "nl": "Egypt", + "de": "Ägypt", + "fr": "Égypte", + "es": "Egipt", + "en": "Egypt", + "pt_BR": "Egito", + "sr-Cyrl": "Египат", + "sr-Latn": "Egipat", + "zh_TW": "埃åŠ", + "tr": "Mısır", + "ro": "Egipt", + "ar": "مصر", + "fa": "مصر", + "yue": "埃åŠ" + }, + flag: "🇪🇬", + code: "EG", + dialCode: "2", + minLength: 11, + maxLength: 11, + ), + Country( + name: "El Salvador", + nameTranslations: { + "sk": "Salvádor", + "se": "El Salvador", + "pl": "Salwador", + "no": "El Salvador", + "ja": "エルサルãƒãƒ‰ãƒ«", + "it": "El Salvador", + "zh": "è¨å°”瓦多", + "nl": "El Salvador", + "de": "El Salvador", + "fr": "Salvador", + "es": "El Salvador", + "en": "El Salvador", + "pt_BR": "El Salvador", + "sr-Cyrl": "Салвадор", + "sr-Latn": "Salvador", + "zh_TW": "薩爾瓦多", + "tr": "El Salvador", + "ro": "Salvador", + "ar": "Ø§Ù„Ø³Ù„ÙØ§Ø¯ÙˆØ±", + "fa": "ال سالوادور", + "yue": "薩爾瓦多" + }, + flag: "🇸🇻", + code: "SV", + dialCode: "503", + minLength: 11, + maxLength: 11, + ), + Country( + name: "Equatorial Guinea", + nameTranslations: { + "sk": "Rovníková Guinea", + "se": "Ekvatoriála Guinea", + "pl": "Gwinea Równikowa", + "no": "Ekvatorial-Guinea", + "ja": "赤é“ギニア", + "it": "Guinea Equatoriale", + "zh": "赤é“几内亚", + "nl": "Equatoriaal-Guinea", + "de": "Äquatorialguinea", + "fr": "Guinée équatoriale", + "es": "Guinea Ecuatorial", + "en": "Equatorial Guinea", + "pt_BR": "Guiné Equatorial", + "sr-Cyrl": "Екваторијална Гвинеја", + "sr-Latn": "Ekvatorijalna Gvineja", + "zh_TW": "赤é“幾內亞", + "tr": "Ekvator Ginesi", + "ro": "Guineea Ecuatorială", + "ar": "غينيا الاستوائية", + "fa": "گینه استوایی", + "yue": "赤é“幾內亞" + }, + flag: "🇬🇶", + code: "GQ", + dialCode: "240", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Eritrea", + nameTranslations: { + "sk": "Eritrea", + "se": "Eritrea", + "pl": "Erytrea", + "no": "Eritrea", + "ja": "エリトリア", + "it": "Eritrea", + "zh": "厄立特里亚", + "nl": "Eritrea", + "de": "Eritrea", + "fr": "Érythrée", + "es": "Eritrea", + "en": "Eritrea", + "pt_BR": "Eritreia", + "sr-Cyrl": "Еритреја", + "sr-Latn": "Eritreja", + "zh_TW": "厄立特裡亞", + "tr": "Eritre", + "ro": "Eritreea", + "ar": "إريتريا", + "fa": "اریتره", + "yue": "厄立特里亞" + }, + flag: "🇪🇷", + code: "ER", + dialCode: "291", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Estonia", + nameTranslations: { + "sk": "Estónsko", + "se": "Estlánda", + "pl": "Estonia", + "no": "Estland", + "ja": "エストニア", + "it": "Estonia", + "zh": "爱沙尼亚", + "nl": "Estland", + "de": "Estland", + "fr": "Estonie", + "es": "Estonia", + "en": "Estonia", + "pt_BR": "Estônia", + "sr-Cyrl": "ЕÑтонија", + "sr-Latn": "Estonija", + "zh_TW": "愛沙尼亞", + "tr": "Estonya", + "ro": "Estonia", + "ar": "إستونيا", + "fa": "استونی", + "yue": "愛沙尼亞" + }, + flag: "🇪🇪", + code: "EE", + dialCode: "372", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Ethiopia", + nameTranslations: { + "sk": "Etiópia", + "se": "Etiopia", + "pl": "Etiopia", + "no": "Etiopia", + "ja": "エãƒã‚ªãƒ”ã‚¢", + "it": "Etiopia", + "zh": "埃塞俄比亚", + "nl": "Ethiopië", + "de": "Äthiopien", + "fr": "Éthiopie", + "es": "Etiopía", + "en": "Ethiopia", + "pt_BR": "Etiópia", + "sr-Cyrl": "Етиопија", + "sr-Latn": "Etiopija", + "zh_TW": "伊索比亞", + "tr": "Etiyopya", + "ro": "Etiopia", + "ar": "إثيوبيا", + "fa": "اتیوپی", + "yue": "埃塞俄比亞" + }, + flag: "🇪🇹", + code: "ET", + dialCode: "251", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Falkland Islands (Malvinas)", + nameTranslations: { + "sk": "Falklandy", + "se": "Falklandsullot", + "pl": "Falklandy", + "no": "Falklandsøyene", + "ja": "フォークランド諸島", + "it": "Isole Falkland", + "zh": "ç¦å…‹å…°ç¾¤å²›", + "nl": "Falklandeilanden", + "de": "Falklandinseln", + "fr": "ÃŽles Malouines", + "es": "Islas Malvinas", + "en": "Falkland Islands", + "pt_BR": "Ilhas Falkland", + "sr-Cyrl": "ФокландÑка ОÑтрва", + "sr-Latn": "Foklandska Ostrva", + "zh_TW": "ç¦å…‹è˜­ç¾¤å³¶", + "tr": "Falkland Adaları", + "ro": "Insulele Falklands", + "ar": "جزر Ùوكلاند", + "fa": "جزایر ÙØ§Ù„کلند", + "yue": "ç¦å…‹è˜­ç¾¤å³¶ï¼ˆé¦¬çˆ¾ç¶­ç´æ–¯ç¾¤å³¶ï¼‰" + }, + flag: "🇫🇰", + code: "FK", + dialCode: "500", + minLength: 5, + maxLength: 5, + ), + Country( + name: "Faroe Islands", + nameTranslations: { + "sk": "Faerské ostrovy", + "se": "Fearsullot", + "pl": "Wyspy Owcze", + "no": "Færøyene", + "ja": "フェロー諸島", + "it": "Isole Fær Øer", + "zh": "法罗群岛", + "nl": "Faeröer", + "de": "Färöer", + "fr": "ÃŽles Féroé", + "es": "Islas Feroe", + "en": "Faroe Islands", + "pt_BR": "ilhas Faroe", + "sr-Cyrl": "ФарÑка ОÑтрва", + "sr-Latn": "Farska Ostrva", + "zh_TW": "法羅群島", + "tr": "Faroe Adaları", + "ro": "Insulele Feroe", + "ar": "جزر ÙØ§Ø±Ùˆ", + "fa": "جزایر ÙØ§Ø±Ùˆ", + "yue": "法羅群島" + }, + flag: "🇫🇴", + code: "FO", + dialCode: "298", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Fiji", + nameTranslations: { + "sk": "Fidži", + "se": "Fijisullot", + "pl": "Fidżi", + "no": "Fiji", + "ja": "フィジー", + "it": "Figi", + "zh": "æ–æµŽ", + "nl": "Fiji", + "de": "Fidschi", + "fr": "Fidji", + "es": "Fiyi", + "en": "Fiji", + "pt_BR": "Fiji", + "sr-Cyrl": "Фиџи", + "sr-Latn": "Fidži", + "zh_TW": "æ–æ¿Ÿ", + "tr": "Fiji", + "ro": "Fiji", + "ar": "Ùيجي", + "fa": "Ùيجي", + "yue": "æ–æ¿Ÿ" + }, + flag: "🇫🇯", + code: "FJ", + dialCode: "679", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Finland", + nameTranslations: { + "sk": "Fínsko", + "se": "Suopma", + "pl": "Finlandia", + "no": "Finland", + "ja": "フィンランド", + "it": "Finlandia", + "zh": "芬兰", + "nl": "Finland", + "de": "Finnland", + "fr": "Finlande", + "es": "Finlandia", + "en": "Finland", + "pt_BR": "Finlândia", + "sr-Cyrl": "ФинÑка", + "sr-Latn": "Finska", + "zh_TW": "芬蘭", + "tr": "Finlandiya", + "ro": "Finlanda", + "ar": "Ùنلندا", + "fa": "Ùنلاند", + "yue": "芬蘭" + }, + flag: "🇫🇮", + code: "FI", + dialCode: "358", + minLength: 12, + maxLength: 12, + ), + Country( + name: "France", + nameTranslations: { + "sk": "Francúzsko", + "se": "Frankriika", + "pl": "Francja", + "no": "Frankrike", + "ja": "フランス", + "it": "Francia", + "zh": "法国", + "nl": "Frankrijk", + "de": "Frankreich", + "fr": "France", + "es": "Francia", + "en": "France", + "pt_BR": "França", + "sr-Cyrl": "ФранцуÑка", + "sr-Latn": "Francuska", + "zh_TW": "法國", + "tr": "Fransa", + "ro": "FranÈ›a", + "ar": "ÙØ±Ù†Ø³Ø§", + "fa": "ÙØ±Ø§Ù†Ø³Ù‡", + "yue": "法國" + }, + flag: "🇫🇷", + code: "FR", + dialCode: "33", + minLength: 9, + maxLength: 9, + ), + Country( + name: "French Guiana", + nameTranslations: { + "sk": "Francúzska Guyana", + "se": "Frankriikka Guayana", + "pl": "Gujana Francuska", + "no": "Fransk Guyana", + "ja": "ä»é ˜ã‚®ã‚¢ãƒŠ", + "it": "Guyana francese", + "zh": "法属圭亚那", + "nl": "Frans-Guyana", + "de": "Französisch-Guayana", + "fr": "Guyane française", + "es": "Guayana Francesa", + "en": "French Guiana", + "pt_BR": "Guiana Francesa", + "sr-Cyrl": "ФранцуÑка Гвајана", + "sr-Latn": "Francuska Gvajana", + "zh_TW": "法屬蓋亞那", + "tr": "Fransız Guyanası", + "ro": "Guiana Franceză", + "ar": "غويانا Ø§Ù„ÙØ±Ù†Ø³ÙŠØ©", + "fa": "گویان ÙØ±Ø§Ù†Ø³Ù‡", + "yue": "法屬圭亞那" + }, + flag: "🇬🇫", + code: "GF", + dialCode: "594", + minLength: 15, + maxLength: 15, + ), + Country( + name: "French Polynesia", + nameTranslations: { + "sk": "Francúzska Polynézia", + "se": "Frankriikka Polynesia", + "pl": "Polinezja Francuska", + "no": "Fransk Polynesia", + "ja": "ä»é ˜ãƒãƒªãƒã‚·ã‚¢", + "it": "Polinesia francese", + "zh": "法属波利尼西亚", + "nl": "Frans-Polynesië", + "de": "Französisch-Polynesien", + "fr": "Polynésie française", + "es": "Polinesia Francesa", + "en": "French Polynesia", + "pt_BR": "Polinésia Francesa", + "sr-Cyrl": "ФранцуÑка Полинезија", + "sr-Latn": "Francuska Polinezija", + "zh_TW": "法屬玻里尼西亞", + "tr": "Fransız Polinezyası", + "ro": "Polinezia Franceză", + "ar": "بولينزيا Ø§Ù„ÙØ±Ù†Ø³ÙŠØ©", + "fa": "پلی‌نزی ÙØ±Ø§Ù†Ø³Ù‡", + "yue": "法屬波利尼西亞" + }, + flag: "🇵🇫", + code: "PF", + dialCode: "689", + minLength: 6, + maxLength: 6, + ), + Country( + name: "French Southern Territories", + nameTranslations: { + "sk": "Francúzske južné a antarktické územia", + "se": "French Southern Territories", + "pl": "Francuskie Terytoria PoÅ‚udniowe i Antarktyczne", + "no": "De franske sørterritorier", + "ja": "ä»é ˜æ¥µå—諸島", + "it": "Terre australi francesi", + "zh": "法属å—部领地", + "nl": "Franse Gebieden in de zuidelijke Indische Oceaan", + "de": "Französische Süd- und Antarktisgebiete", + "fr": "Terres australes françaises", + "es": "Territorios Australes Franceses", + "en": "French Southern Territories", + "pt_BR": "Territórios Franceses do Sul", + "sr-Cyrl": "ФранцуÑке јужне и антарктичке земље", + "sr-Latn": "Francuske južne i antarktiÄke zemlje", + "zh_TW": "法屬å—部屬地", + "tr": "Fransız Güney ve Antarktika Toprakları", + "ro": "Teritoriile australe È™i antarctice franceze", + "ar": "أراض ÙØ±Ù†Ø³ÙŠØ© جنوبية وأنتارتيكية", + "fa": "سرزمین‌های جنوبی ÙØ±Ø§Ù†Ø³Ù‡", + "yue": "法國å—部領土" + }, + flag: "🇹🇫", + code: "TF", + dialCode: "262", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Gabon", + nameTranslations: { + "sk": "Gabon", + "se": "Gabon", + "pl": "Gabon", + "no": "Gabon", + "ja": "ガボン", + "it": "Gabon", + "zh": "加蓬", + "nl": "Gabon", + "de": "Gabun", + "fr": "Gabon", + "es": "Gabón", + "en": "Gabon", + "pt_BR": "Gabão", + "sr-Cyrl": "Габон", + "sr-Latn": "Gabon", + "zh_TW": "加彭", + "tr": "Gabon", + "ro": "Gabon", + "ar": "الغابون", + "fa": "گابن", + "yue": "加蓬" + }, + flag: "🇬🇦", + code: "GA", + dialCode: "241", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Gambia", + nameTranslations: { + "sk": "Gambia", + "se": "Gámbia", + "pl": "Gambia", + "no": "Gambia", + "ja": "ガンビア", + "it": "Gambia", + "zh": "冈比亚", + "nl": "Gambia", + "de": "Gambia", + "fr": "Gambie", + "es": "Gambia", + "en": "Gambia", + "pt_BR": "Gâmbia", + "sr-Cyrl": "Гамбија", + "sr-Latn": "Gambija", + "zh_TW": "岡比亞", + "tr": "Gambiya", + "ro": "Gambia", + "ar": "غامبيا", + "fa": "گامبیا", + "yue": "岡比亞" + }, + flag: "🇬🇲", + code: "GM", + dialCode: "220", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Georgia", + nameTranslations: { + "sk": "Gruzínsko", + "se": "Georgia", + "pl": "Gruzja", + "no": "Georgia", + "ja": "ジョージア", + "it": "Georgia", + "zh": "æ ¼é²å‰äºš", + "nl": "Georgië", + "de": "Georgien", + "fr": "Géorgie", + "es": "Georgia", + "en": "Georgia", + "pt_BR": "Georgia", + "sr-Cyrl": "Грузија", + "sr-Latn": "Gruzija", + "zh_TW": "喬治亞", + "tr": "Gürcistan", + "ro": "Georgia", + "ar": "جورجيا", + "fa": "گرجستان", + "yue": "格魯å‰äºž" + }, + flag: "🇬🇪", + code: "GE", + dialCode: "995", + minLength: 8, + maxLength: 9, + ), + Country( + name: "Germany", + nameTranslations: { + "sk": "Nemecko", + "se": "Duiska", + "pl": "Niemcy", + "no": "Tyskland", + "ja": "ドイツ", + "it": "Germania", + "zh": "德国", + "nl": "Duitsland", + "de": "Deutschland", + "fr": "Allemagne", + "es": "Alemania", + "en": "Germany", + "pt_BR": "Alemanha", + "sr-Cyrl": "Ðемачка", + "sr-Latn": "NemaÄka", + "zh_TW": "德國", + "tr": "Almanya", + "ro": "Germania", + "ar": "ألمانيا", + "fa": "آلمان", + "yue": "德國" + }, + flag: "🇩🇪", + code: "DE", + dialCode: "49", + minLength: 9, + maxLength: 13, + ), + Country( + name: "Ghana", + nameTranslations: { + "sk": "Ghana", + "se": "Ghana", + "pl": "Ghana", + "no": "Ghana", + "ja": "ガーナ", + "it": "Ghana", + "zh": "加纳", + "nl": "Ghana", + "de": "Ghana", + "fr": "Ghana", + "es": "Ghana", + "en": "Ghana", + "pt_BR": "Gana", + "sr-Cyrl": "Гана", + "sr-Latn": "Gana", + "zh_TW": "迦ç´", + "tr": "Gana", + "ro": "Ghana", + "ar": "غانا", + "fa": "غنا", + "yue": "加ç´" + }, + flag: "🇬🇭", + code: "GH", + dialCode: "233", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Gibraltar", + nameTranslations: { + "sk": "Gibraltár", + "se": "Gibraltar", + "pl": "Gibraltar", + "no": "Gibraltar", + "ja": "ジブラルタル", + "it": "Gibilterra", + "zh": "直布罗陀", + "nl": "Gibraltar", + "de": "Gibraltar", + "fr": "Gibraltar", + "es": "Gibraltar", + "en": "Gibraltar", + "pt_BR": "Gibraltar", + "sr-Cyrl": "Гибралтар", + "sr-Latn": "Gibraltar", + "zh_TW": "直布羅陀", + "tr": "Cebelitarık", + "ro": "Gibraltar", + "ar": "جبل طارق", + "fa": "جبل الطارق", + "yue": "直布羅陀" + }, + flag: "🇬🇮", + code: "GI", + dialCode: "350", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Greece", + nameTranslations: { + "sk": "Grécko", + "se": "Greika", + "pl": "Grecja", + "no": "Hellas", + "ja": "ギリシャ", + "it": "Grecia", + "zh": "希腊", + "nl": "Griekenland", + "de": "Griechenland", + "fr": "Grèce", + "es": "Grecia", + "en": "Greece", + "pt_BR": "Grécia", + "sr-Cyrl": "Грчка", + "sr-Latn": "GrÄka", + "zh_TW": "希臘", + "tr": "Yunanistan", + "ro": "Grecia", + "ar": "اليونان", + "fa": "یونان", + "yue": "希臘" + }, + flag: "🇬🇷", + code: "GR", + dialCode: "30", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Greenland", + nameTranslations: { + "sk": "Grónsko", + "se": "Kalaallit Nunaat", + "pl": "Grenlandia", + "no": "Grønland", + "ja": "グリーンランド", + "it": "Groenlandia", + "zh": "格陵兰", + "nl": "Groenland", + "de": "Grönland", + "fr": "Groenland", + "es": "Groenlandia", + "en": "Greenland", + "pt_BR": "Groenlândia", + "sr-Cyrl": "Гренланд", + "sr-Latn": "Grenland", + "zh_TW": "格陵蘭", + "tr": "Grönland", + "ro": "Groenlanda", + "ar": "جرينلاند", + "fa": "گرینلند", + "yue": "格陵蘭" + }, + flag: "🇬🇱", + code: "GL", + dialCode: "299", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Grenada", + nameTranslations: { + "sk": "Grenada", + "se": "Grenada", + "pl": "Grenada", + "no": "Grenada", + "ja": "グレナダ", + "it": "Grenada", + "zh": "格林纳达", + "nl": "Grenada", + "de": "Grenada", + "fr": "Grenade", + "es": "Granada", + "en": "Grenada", + "pt_BR": "Grenada", + "sr-Cyrl": "Гренада", + "sr-Latn": "Grenada", + "zh_TW": "格林ç´é”", + "tr": "Grenada", + "ro": "Grenada", + "ar": "غرينادا", + "fa": "گرنادا", + "yue": "格林ç´é”" + }, + flag: "🇬🇩", + code: "GD", + dialCode: "1473", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Guadeloupe", + nameTranslations: { + "sk": "Guadeloupe", + "se": "Guadeloupe", + "pl": "Gwadelupa", + "no": "Guadeloupe", + "ja": "グアドループ", + "it": "Guadalupa", + "zh": "瓜德罗普", + "nl": "Guadeloupe", + "de": "Guadeloupe", + "fr": "Guadeloupe", + "es": "Guadalupe", + "en": "Guadeloupe", + "pt_BR": "Guadalupe", + "sr-Cyrl": "Гваделуп", + "sr-Latn": "Gvadelup", + "zh_TW": "瓜地洛普", + "tr": "Guadeloupe", + "ro": "Guadelupa", + "ar": "غوادلوب", + "fa": "گوادلوپ", + "yue": "瓜德罗普" + }, + flag: "🇬🇵", + code: "GP", + dialCode: "590", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Guam", + nameTranslations: { + "sk": "Guam", + "se": "Guam", + "pl": "Guam", + "no": "Guam", + "ja": "グアム", + "it": "Guam", + "zh": "关岛", + "nl": "Guam", + "de": "Guam", + "fr": "Guam", + "es": "Guam", + "en": "Guam", + "pt_BR": "Guam", + "sr-Cyrl": "Гвам", + "sr-Latn": "Gvam", + "zh_TW": "關島", + "tr": "Guam", + "ro": "Guam", + "ar": "غوام", + "fa": "گوام", + "yue": "關島" + }, + flag: "🇬🇺", + code: "GU", + dialCode: "1671", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Guatemala", + nameTranslations: { + "sk": "Guatemala", + "se": "Guatemala", + "pl": "Gwatemala", + "no": "Guatemala", + "ja": "グアテマラ", + "it": "Guatemala", + "zh": "å±åœ°é©¬æ‹‰", + "nl": "Guatemala", + "de": "Guatemala", + "fr": "Guatemala", + "es": "Guatemala", + "en": "Guatemala", + "pt_BR": "Guatemala", + "sr-Cyrl": "Гватемала", + "sr-Latn": "Gvatemala", + "zh_TW": "瓜地馬拉", + "tr": "Guatemala", + "ro": "Guatemala", + "ar": "غواتيمالا", + "fa": "گواتمالا", + "yue": "å±åœ°é¦¬æ‹‰" + }, + flag: "🇬🇹", + code: "GT", + dialCode: "502", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Guernsey", + nameTranslations: { + "sk": "Guernsey", + "se": "Guernsey", + "pl": "Guernsey", + "no": "Guernsey", + "ja": "ガーンジー", + "it": "Guernsey", + "zh": "根西岛", + "nl": "Guernsey", + "de": "Guernsey", + "fr": "Guernesey", + "es": "Guernsey", + "en": "Guernsey", + "pt_BR": "Guernsey", + "sr-Cyrl": "Гернзи", + "sr-Latn": "Gernzi", + "zh_TW": "æ ¹æ¯å³¶", + "tr": "Guernsey", + "ro": "Guernsey", + "ar": "غيرنزي", + "fa": "گرنزی", + "yue": "æ ¼æ©è¥¿å³¶" + }, + flag: "🇬🇬", + code: "GG", + dialCode: "44", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Guinea", + nameTranslations: { + "sk": "Guinea", + "se": "Guinea", + "pl": "Gwinea", + "no": "Guinea", + "ja": "ギニア", + "it": "Guinea", + "zh": "几内亚", + "nl": "Guinee", + "de": "Guinea", + "fr": "Guinée", + "es": "Guinea", + "en": "Guinea", + "pt_BR": "Guiné", + "sr-Cyrl": "Гвинеја", + "sr-Latn": "Gvineja", + "zh_TW": "幾內亞", + "tr": "Gine", + "ro": "Guinea", + "ar": "غينيا", + "fa": "گینه", + "yue": "幾內亞" + }, + flag: "🇬🇳", + code: "GN", + dialCode: "224", + minLength: 8, + maxLength: 9, + ), + Country( + name: "Guinea-Bissau", + nameTranslations: { + "sk": "Guinea-Bissau", + "se": "Guinea-Bissau", + "pl": "Gwinea Bissau", + "no": "Guinea-Bissau", + "ja": "ギニアビサウ", + "it": "Guinea-Bissau", + "zh": "几内亚比ç»", + "nl": "Guinee-Bissau", + "de": "Guinea-Bissau", + "fr": "Guinée-Bissau", + "es": "Guinea-Bisáu", + "en": "Guinea-Bissau", + "pt_BR": "Guiné-bissau", + "sr-Cyrl": "Гвинеја БиÑао", + "sr-Latn": "Gvineja Bisao", + "zh_TW": "幾內亞比索", + "tr": "Gine-Bissau", + "ro": "Guineea-Bissau", + "ar": "غينيا بيساو", + "fa": "گینه بیسائو", + "yue": "幾內亞比紹" + }, + flag: "🇬🇼", + code: "GW", + dialCode: "245", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Guyana", + nameTranslations: { + "sk": "Guyana", + "se": "Guyana", + "pl": "Gujana", + "no": "Guyana", + "ja": "ガイアナ", + "it": "Guyana", + "zh": "圭亚那", + "nl": "Guyana", + "de": "Guyana", + "fr": "Guyana", + "es": "Guyana", + "en": "Guyana", + "pt_BR": "Guiana", + "sr-Cyrl": "Гвајана", + "sr-Latn": "Gvajana", + "zh_TW": "蓋亞那", + "tr": "Guyana", + "ro": "Guyana", + "ar": "غيانا", + "fa": "گویان", + "yue": "圭亞那" + }, + flag: "🇬🇾", + code: "GY", + dialCode: "592", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Haiti", + nameTranslations: { + "sk": "Haiti", + "se": "Haiti", + "pl": "Haiti", + "no": "Haiti", + "ja": "ãƒã‚¤ãƒ", + "it": "Haiti", + "zh": "海地", + "nl": "Haïti", + "de": "Haiti", + "fr": "Haïti", + "es": "Haití", + "en": "Haiti", + "pt_BR": "Haiti", + "sr-Cyrl": "Хаити", + "sr-Latn": "Haiti", + "zh_TW": "海地", + "tr": "Haiti", + "ro": "Haiti", + "ar": "هايتي", + "fa": "هائیتی", + "yue": "海地" + }, + flag: "🇭🇹", + code: "HT", + dialCode: "509", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Heard Island and Mcdonald Islands", + nameTranslations: { + "sk": "Heardov ostrov a Macdonaldove ostrovy", + "se": "Heard- ja McDonald-sullot", + "pl": "Wyspy Heard i McDonalda", + "no": "Heard- og McDonaldøyene", + "ja": "ãƒãƒ¼ãƒ‰å³¶ãƒ»ãƒžã‚¯ãƒ‰ãƒŠãƒ«ãƒ‰è«¸å³¶", + "it": "Isole Heard e McDonald", + "zh": "赫德岛和麦克å”纳群岛", + "nl": "Heard en McDonaldeilanden", + "de": "Heard und McDonaldinseln", + "fr": "ÃŽles Heard et McDonald", + "es": "Islas Heard y McDonald", + "en": "Heard & McDonald Islands", + "pt_BR": "Ilhas Heard e McDonald", + "sr-Cyrl": "ОÑтрва Херд и Макдоналд", + "sr-Latn": "Ostrva Herd i Makdonald", + "zh_TW": "赫德暨麥當勞群島", + "tr": "Heard Adası ve McDonald Adaları", + "ro": "Insula Heard È™i Insulele McDonald", + "ar": "جزيرة هيرد وجزر ماكدونالد", + "fa": "جزیره هرد Ùˆ جزایر مک‌دونالد", + "yue": "赫德岛åŒéº¦å…‹å”纳群岛" + }, + flag: "🇭🇲", + code: "HM", + dialCode: "672", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Holy See (Vatican City State)", + nameTranslations: { + "sk": "Vatikán", + "se": "Vatikána", + "pl": "Watykan", + "no": "Vatikanstaten", + "ja": "ãƒãƒã‚«ãƒ³å¸‚国", + "it": "Città del Vaticano", + "zh": "梵蒂冈", + "nl": "Vaticaanstad", + "de": "Vatikanstadt", + "fr": "État de la Cité du Vatican", + "es": "Ciudad del Vaticano", + "en": "Vatican City", + "pt_BR": "Cidade do Vaticano", + "sr-Cyrl": "Ватикан", + "sr-Latn": "Vatikan", + "zh_TW": "梵蒂岡", + "tr": "Vatikan", + "ro": "Vatican", + "ar": "Ø§Ù„ÙØ§ØªÙŠÙƒØ§Ù†", + "fa": "واتیکان", + "yue": "梵蒂岡城國" + }, + flag: "🇻🇦", + code: "VA", + dialCode: "379", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Honduras", + nameTranslations: { + "sk": "Honduras", + "se": "Honduras", + "pl": "Honduras", + "no": "Honduras", + "ja": "ホンジュラス", + "it": "Honduras", + "zh": "洪都拉斯", + "nl": "Honduras", + "de": "Honduras", + "fr": "Honduras", + "es": "Honduras", + "en": "Honduras", + "pt_BR": "Honduras", + "sr-Cyrl": "ХондураÑ", + "sr-Latn": "Honduras", + "zh_TW": "å®éƒ½æ‹‰æ–¯", + "tr": "Honduras", + "ro": "Honduras", + "ar": "هندوراس", + "fa": "هندوراس", + "yue": "洪都拉斯" + }, + flag: "🇭🇳", + code: "HN", + dialCode: "504", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Hong Kong", + nameTranslations: { + "sk": "Hongkong – OAO Číny", + "se": "Hongkong", + "pl": "SRA Hongkong (Chiny)", + "no": "Hongkong S.A.R. Kina", + "ja": "中è¯äººæ°‘共和国香港特別行政区", + "it": "RAS di Hong Kong", + "zh": "中国香港特别行政区", + "nl": "Hongkong SAR van China", + "de": "Sonderverwaltungsregion Hongkong", + "fr": "R.A.S. chinoise de Hong Kong", + "es": "RAE de Hong Kong (China)", + "en": "Hong Kong SAR China", + "pt_BR": "RAE de Hong Kong China", + "sr-Cyrl": "Хонг Конг", + "sr-Latn": "Hong Kong", + "zh_TW": "香港", + "tr": "Hong Kong", + "ro": "Hong Kong", + "ar": "هونغ كونغ", + "fa": "هنگ Ú©Ù†Ú¯", + "yue": "香港" + }, + flag: "🇭🇰", + code: "HK", + dialCode: "852", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Hungary", + nameTranslations: { + "sk": "MaÄarsko", + "se": "Ungár", + "pl": "WÄ™gry", + "no": "Ungarn", + "ja": "ãƒãƒ³ã‚¬ãƒªãƒ¼", + "it": "Ungheria", + "zh": "匈牙利", + "nl": "Hongarije", + "de": "Ungarn", + "fr": "Hongrie", + "es": "Hungría", + "en": "Hungary", + "pt_BR": "Hungria", + "sr-Cyrl": "МађарÑка", + "sr-Latn": "MaÄ‘arska", + "zh_TW": "匈牙利", + "tr": "Macaristan", + "ro": "Ungaria", + "ar": "المجر", + "fa": "مجارستان", + "yue": "匈牙利" + }, + flag: "🇭🇺", + code: "HU", + dialCode: "36", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Iceland", + nameTranslations: { + "sk": "Island", + "se": "Islánda", + "pl": "Islandia", + "no": "Island", + "ja": "アイスランド", + "it": "Islanda", + "zh": "冰岛", + "nl": "IJsland", + "de": "Island", + "fr": "Islande", + "es": "Islandia", + "en": "Iceland", + "pt_BR": "Islândia", + "sr-Cyrl": "ИÑланд", + "sr-Latn": "Island", + "zh_TW": "冰島", + "tr": "İzlanda", + "ro": "Islanda", + "ar": "آيسلندا", + "fa": "ایسلند", + "yue": "冰島" + }, + flag: "🇮🇸", + code: "IS", + dialCode: "354", + minLength: 7, + maxLength: 9, + ), + Country( + name: "India", + nameTranslations: { + "sk": "India", + "se": "India", + "pl": "Indie", + "no": "India", + "ja": "インド", + "it": "India", + "zh": "å°åº¦", + "nl": "India", + "de": "Indien", + "fr": "Inde", + "es": "India", + "en": "India", + "pt_BR": "Ãndia", + "sr-Cyrl": "Индија", + "sr-Latn": "Indija", + "zh_TW": "å°åº¦", + "tr": "Hindistan", + "ro": "India", + "ar": "الهند", + "fa": "هند", + "yue": "å°åº¦" + }, + flag: "🇮🇳", + code: "IN", + dialCode: "91", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Indonesia", + nameTranslations: { + "sk": "Indonézia", + "se": "Indonesia", + "pl": "Indonezja", + "no": "Indonesia", + "ja": "インドãƒã‚·ã‚¢", + "it": "Indonesia", + "zh": "å°åº¦å°¼è¥¿äºš", + "nl": "Indonesië", + "de": "Indonesien", + "fr": "Indonésie", + "es": "Indonesia", + "en": "Indonesia", + "pt_BR": "Indonésia", + "sr-Cyrl": "Индонезија", + "sr-Latn": "Indonezija", + "zh_TW": "å°å°¼", + "tr": "Endonezya", + "ro": "Indonezia", + "ar": "إندونيسيا", + "fa": "اندونزی", + "yue": "å°å°¼" + }, + flag: "🇮🇩", + code: "ID", + dialCode: "62", + minLength: 10, + maxLength: 13, + ), + Country( + name: "Iran, Islamic Republic of Persian Gulf", + nameTranslations: { + "sk": "Irán", + "se": "Iran", + "pl": "Iran", + "no": "Iran", + "ja": "イラン", + "it": "Iran", + "zh": "伊朗", + "nl": "Iran", + "de": "Iran", + "fr": "Iran", + "es": "Irán", + "en": "Iran", + "pt_BR": "Irã", + "sr-Cyrl": "Иран", + "sr-Latn": "Iran", + "zh_TW": "伊朗", + "tr": "İran", + "ro": "Iran", + "ar": "إيران", + "fa": "ایران", + "yue": "伊朗" + }, + flag: "🇮🇷", + code: "IR", + dialCode: "98", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Iraq", + nameTranslations: { + "sk": "Irak", + "se": "Irak", + "pl": "Irak", + "no": "Irak", + "ja": "イラク", + "it": "Iraq", + "zh": "伊拉克", + "nl": "Irak", + "de": "Irak", + "fr": "Irak", + "es": "Irak", + "en": "Iraq", + "pt_BR": "Iraque", + "sr-Cyrl": "Ирак", + "sr-Latn": "Irak", + "zh_TW": "伊拉克", + "tr": "Irak", + "ro": "Irak", + "ar": "العراق", + "fa": "عراق", + "yue": "伊拉克" + }, + flag: "🇮🇶", + code: "IQ", + dialCode: "964", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Ireland", + nameTranslations: { + "sk": "Ãrsko", + "se": "Irlánda", + "pl": "Irlandia", + "no": "Irland", + "ja": "アイルランド", + "it": "Irlanda", + "zh": "爱尔兰", + "nl": "Ierland", + "de": "Irland", + "fr": "Irlande", + "es": "Irlanda", + "en": "Ireland", + "pt_BR": "Irlanda", + "sr-Cyrl": "ИрÑка", + "sr-Latn": "Irska", + "zh_TW": "愛爾蘭", + "tr": "İrlanda", + "ro": "Irlanda", + "ar": "أيرلندا", + "fa": "ایرلند", + "yue": "愛爾蘭" + }, + flag: "🇮🇪", + code: "IE", + dialCode: "353", + minLength: 7, + maxLength: 9, + ), + Country( + name: "Isle of Man", + nameTranslations: { + "sk": "Ostrov Man", + "se": "Mann-sullot", + "pl": "Wyspa Man", + "no": "Man", + "ja": "マン島", + "it": "Isola di Man", + "zh": "马æ©å²›", + "nl": "Isle of Man", + "de": "Isle of Man", + "fr": "ÃŽle de Man", + "es": "Isla de Man", + "en": "Isle of Man", + "pt_BR": "Ilha de Man", + "sr-Cyrl": "ОÑтрво Мен", + "sr-Latn": "Ostrvo Men", + "zh_TW": "曼島", + "tr": "Man Adası", + "ro": "Insula Man", + "ar": "جزيرة مان", + "fa": "جزیره مان", + "yue": "马伊岛" + }, + flag: "🇮🇲", + code: "IM", + dialCode: "44", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Israel", + nameTranslations: { + "sk": "Izrael", + "se": "Israel", + "pl": "Izrael", + "no": "Israel", + "ja": "イスラエル", + "it": "Israele", + "zh": "以色列", + "nl": "Israël", + "de": "Israel", + "fr": "Israël", + "es": "Israel", + "en": "Israel", + "pt_BR": "Israel", + "sr-Cyrl": "Израел", + "sr-Latn": "Izrael", + "zh_TW": "以色列", + "tr": "İsrail", + "ro": "Israel", + "ar": "إسرائيل", + "fa": "إسرائيل", + "yue": "以色列" + }, + flag: "🇮🇱", + code: "IL", + dialCode: "972", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Campione d'Italia", + nameTranslations: { + "sk": "Taliansko", + "se": "Itália", + "pl": "WÅ‚ochy", + "no": "Italia", + "ja": "イタリア", + "it": "Italia", + "zh": "æ„大利", + "nl": "Italië", + "de": "Italien", + "fr": "Italie", + "es": "Italia", + "en": "Italy", + "pt_BR": "Itália", + "sr-Cyrl": "Италија", + "sr-Latn": "Italija", + "zh_TW": "義大利", + "tr": "İtalya", + "ro": "Italia", + "ar": "إيطاليا", + "fa": "ایتالیا", + "yue": "æ„大利" + }, + flag: "🇮🇹", + code: "IT", + dialCode: "39", + minLength: 9, + maxLength: 10, + ), + Country( + name: "Jamaica", + nameTranslations: { + "sk": "Jamajka", + "se": "Jamaica", + "pl": "Jamajka", + "no": "Jamaica", + "ja": "ジャマイカ", + "it": "Giamaica", + "zh": "牙买加", + "nl": "Jamaica", + "de": "Jamaika", + "fr": "Jamaïque", + "es": "Jamaica", + "en": "Jamaica", + "pt_BR": "Jamaica", + "sr-Cyrl": "Јамајка", + "sr-Latn": "Jamajka", + "zh_TW": "牙買加", + "tr": "Jamaika", + "ro": "Jamaica", + "ar": "جامايكا", + "fa": "جامائیکا", + "yue": "牙買加" + }, + flag: "🇯🇲", + code: "JM", + dialCode: "1876", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Japan", + nameTranslations: { + "sk": "Japonsko", + "se": "Japána", + "pl": "Japonia", + "no": "Japan", + "ja": "日本", + "it": "Giappone", + "zh": "日本", + "nl": "Japan", + "de": "Japan", + "fr": "Japon", + "es": "Japón", + "en": "Japan", + "pt_BR": "Japão", + "sr-Cyrl": "Јапан", + "sr-Latn": "Japan", + "zh_TW": "日本", + "tr": "Japonya", + "ro": "Japonia", + "ar": "اليابان", + "fa": "ژاپن", + "yue": "日本" + }, + flag: "🇯🇵", + code: "JP", + dialCode: "81", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Jersey", + nameTranslations: { + "sk": "Jersey", + "se": "Jersey", + "pl": "Jersey", + "no": "Jersey", + "ja": "ジャージー", + "it": "Jersey", + "zh": "泽西岛", + "nl": "Jersey", + "de": "Jersey", + "fr": "Jersey", + "es": "Jersey", + "en": "Jersey", + "pt_BR": "Jersey", + "sr-Cyrl": "Ðерзи", + "sr-Latn": "Džerzi", + "zh_TW": "澤西", + "tr": "Jersey", + "ro": "Jersey", + "ar": "جيرزي", + "fa": "جرزی", + "yue": "澤西" + }, + flag: "🇯🇪", + code: "JE", + dialCode: "44", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Jordan", + nameTranslations: { + "sk": "Jordánsko", + "se": "Jordánia", + "pl": "Jordania", + "no": "Jordan", + "ja": "ヨルダン", + "it": "Giordania", + "zh": "约旦", + "nl": "Jordanië", + "de": "Jordanien", + "fr": "Jordanie", + "es": "Jordania", + "en": "Jordan", + "pt_BR": "Jordânia", + "sr-Cyrl": "Јордан", + "sr-Latn": "Jordan", + "zh_TW": "ç´„æ—¦", + "tr": "Mavera-i Ürdün", + "ro": "Iordania", + "ar": "الأردن", + "fa": "اردن", + "yue": "ç´„æ—¦" + }, + flag: "🇯🇴", + code: "JO", + dialCode: "962", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Kazakhstan", + nameTranslations: { + "sk": "Kazachstan", + "se": "Kasakstan", + "pl": "Kazachstan", + "no": "Kasakhstan", + "ja": "カザフスタン", + "it": "Kazakistan", + "zh": "哈è¨å…‹æ–¯å¦", + "nl": "Kazachstan", + "de": "Kasachstan", + "fr": "Kazakhstan", + "es": "Kazajistán", + "en": "Kazakhstan", + "pt_BR": "Cazaquistão", + "sr-Cyrl": "КазахÑтан", + "sr-Latn": "Kazahstan", + "zh_TW": "哈薩克", + "tr": "Kazakistan", + "ro": "Kazahstan", + "ar": "كازاخستان", + "fa": "قزاقستان", + "yue": "哈薩克斯å¦" + }, + flag: "🇰🇿", + code: "KZ", + dialCode: "7", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Kenya", + nameTranslations: { + "sk": "Keňa", + "se": "Kenia", + "pl": "Kenia", + "no": "Kenya", + "ja": "ケニア", + "it": "Kenya", + "zh": "肯尼亚", + "nl": "Kenia", + "de": "Kenia", + "fr": "Kenya", + "es": "Kenia", + "en": "Kenya", + "pt_BR": "Quênia", + "sr-Cyrl": "Кенија", + "sr-Latn": "Kenija", + "zh_TW": "肯亞", + "tr": "Kenya", + "ro": "Kenya", + "ar": "كينيا", + "fa": "كنيا", + "yue": "肯雅" + }, + flag: "🇰🇪", + code: "KE", + dialCode: "254", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Kiribati", + nameTranslations: { + "sk": "Kiribati", + "se": "Kiribati", + "pl": "Kiribati", + "no": "Kiribati", + "ja": "キリãƒã‚¹", + "it": "Kiribati", + "zh": "基里巴斯", + "nl": "Kiribati", + "de": "Kiribati", + "fr": "Kiribati", + "es": "Kiribati", + "en": "Kiribati", + "pt_BR": "Kiribati", + "sr-Cyrl": "Кирибати", + "sr-Latn": "Kiribati", + "zh_TW": "å‰é‡Œå·´æ–¯", + "tr": "Kiribati", + "ro": "Kiribati", + "ar": "كيريباتي", + "fa": "کیریباتی", + "yue": "基里巴斯" + }, + flag: "🇰🇮", + code: "KI", + dialCode: "686", + minLength: 5, + maxLength: 5, + ), + Country( + name: "Korea, Democratic People's Republic of Korea", + nameTranslations: { + "sk": "Severná Kórea", + "se": "Davvi-Korea", + "pl": "Korea Północna", + "no": "Nord-Korea", + "ja": "北æœé®®", + "it": "Corea del Nord", + "zh": "æœé²œ", + "nl": "Noord-Korea", + "de": "Nordkorea", + "fr": "Corée du Nord", + "es": "Corea del Norte", + "en": "North Korea", + "pt_BR": "Coreia do Norte", + "sr-Cyrl": "Северна Кореја", + "sr-Latn": "Severna Koreja", + "zh_TW": "北韓", + "tr": "Kuzey Kore", + "ro": "Coreea de Nord", + "ar": "كوريا الشمالية", + "fa": "کره شمالی", + "yue": "æœé®®ï¼ˆæœé®®æ°‘主主義人民共咊囯)" + }, + flag: "🇰🇵", + code: "KP", + dialCode: "850", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Korea, Republic of South Korea", + nameTranslations: { + "sk": "Južná Kórea", + "se": "Mátta-Korea", + "pl": "Korea PoÅ‚udniowa", + "no": "Sør-Korea", + "ja": "韓国", + "it": "Corea del Sud", + "zh": "韩国", + "nl": "Zuid-Korea", + "de": "Südkorea", + "fr": "Corée du Sud", + "es": "Corea del Sur", + "en": "South Korea", + "pt_BR": "Coreia do Sul", + "sr-Cyrl": "Јужна Кореја", + "sr-Latn": "Južna Koreja", + "zh_TW": "å—韓", + "tr": "Güney Kore", + "ro": "Coreea de Sud", + "ar": "كوريا الجنوبية", + "fa": "کره جنوبی", + "yue": "韓國(大韓民國)" + }, + flag: "🇰🇷", + code: "KR", + dialCode: "82", + minLength: 11, + maxLength: 11, + ), + Country( + name: "Kuwait", + nameTranslations: { + "sk": "Kuvajt", + "se": "Kuwait", + "pl": "Kuwejt", + "no": "Kuwait", + "ja": "クウェート", + "it": "Kuwait", + "zh": "ç§‘å¨ç‰¹", + "nl": "Koeweit", + "de": "Kuwait", + "fr": "Koweït", + "es": "Kuwait", + "en": "Kuwait", + "pt_BR": "Kuwait", + "sr-Cyrl": "Кувајт", + "sr-Latn": "Kuvajt", + "zh_TW": "ç§‘å¨ç‰¹", + "tr": "Kuveyt", + "ro": "Kuweit", + "ar": "الكويت", + "fa": "کویت", + "yue": "ç§‘å¨ç‰¹" + }, + flag: "🇰🇼", + code: "KW", + dialCode: "965", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Kyrgyzstan", + nameTranslations: { + "sk": "Kirgizsko", + "se": "Kirgisistan", + "pl": "Kirgistan", + "no": "Kirgisistan", + "ja": "キルギス", + "it": "Kirghizistan", + "zh": "å‰å°”剿–¯æ–¯å¦", + "nl": "Kirgizië", + "de": "Kirgisistan", + "fr": "Kirghizistan", + "es": "Kirguistán", + "en": "Kyrgyzstan", + "pt_BR": "Quirguistão", + "sr-Cyrl": "КиргиÑтан", + "sr-Latn": "Kirgistan", + "zh_TW": "å‰çˆ¾å‰æ–¯", + "tr": "Kırgızistan", + "ro": "Kîrgîzstan", + "ar": "قيرغيزستان", + "fa": "قرقیزستان", + "yue": "å‰çˆ¾å‰æ–¯æ–¯å¦" + }, + flag: "🇰🇬", + code: "KG", + dialCode: "996", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Laos", + nameTranslations: { + "sk": "Laos", + "se": "Laos", + "pl": "Laos", + "no": "Laos", + "ja": "ラオス", + "it": "Laos", + "zh": "è€æŒ", + "nl": "Laos", + "de": "Laos", + "fr": "Laos", + "es": "Laos", + "en": "Laos", + "pt_BR": "Laos", + "sr-Cyrl": "ЛаоÑ", + "sr-Latn": "Laos", + "zh_TW": "寮國", + "tr": "Laos", + "ro": "Laos", + "ar": "لاوس", + "fa": "لائوس", + "yue": "è€æ’¾äººæ°‘民主共和國" + }, + flag: "🇱🇦", + code: "LA", + dialCode: "856", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Latvia", + nameTranslations: { + "sk": "LotyÅ¡sko", + "se": "Látvia", + "pl": "Åotwa", + "no": "Latvia", + "ja": "ラトビア", + "it": "Lettonia", + "zh": "拉脱维亚", + "nl": "Letland", + "de": "Lettland", + "fr": "Lettonie", + "es": "Letonia", + "en": "Latvia", + "pt_BR": "Letônia", + "sr-Cyrl": "Летонија", + "sr-Latn": "Letonija", + "zh_TW": "拉托維亞", + "tr": "Letonya", + "ro": "Letonia", + "ar": "لاتÙيا", + "fa": "لتونی", + "yue": "拉脫維亞" + }, + flag: "🇱🇻", + code: "LV", + dialCode: "371", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Lebanon", + nameTranslations: { + "sk": "Libanon", + "se": "Libanon", + "pl": "Liban", + "no": "Libanon", + "ja": "レãƒãƒŽãƒ³", + "it": "Libano", + "zh": "黎巴嫩", + "nl": "Libanon", + "de": "Libanon", + "fr": "Liban", + "es": "Líbano", + "en": "Lebanon", + "pt_BR": "Líbano", + "sr-Cyrl": "Либан", + "sr-Latn": "Liban", + "zh_TW": "黎巴嫩", + "tr": "Lübnan", + "ro": "Liban", + "ar": "لبنان", + "fa": "لبنان", + "yue": "黎巴嫩" + }, + flag: "🇱🇧", + code: "LB", + dialCode: "961", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Lesotho", + nameTranslations: { + "sk": "Lesotho", + "se": "Lesotho", + "pl": "Lesotho", + "no": "Lesotho", + "ja": "レソト", + "it": "Lesotho", + "zh": "莱索托", + "nl": "Lesotho", + "de": "Lesotho", + "fr": "Lesotho", + "es": "Lesoto", + "en": "Lesotho", + "pt_BR": "Lesoto", + "sr-Cyrl": "ЛеÑото", + "sr-Latn": "Lesoto", + "zh_TW": "賴索托", + "tr": "Lesotho", + "ro": "Lesotho", + "ar": "ليسوتو", + "fa": "لسوتو", + "yue": "èŠç´¢æ‰˜" + }, + flag: "🇱🇸", + code: "LS", + dialCode: "266", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Liberia", + nameTranslations: { + "sk": "Libéria", + "se": "Liberia", + "pl": "Liberia", + "no": "Liberia", + "ja": "リベリア", + "it": "Liberia", + "zh": "利比里亚", + "nl": "Liberia", + "de": "Liberia", + "fr": "Libéria", + "es": "Liberia", + "en": "Liberia", + "pt_BR": "Libéria", + "sr-Cyrl": "Либерија", + "sr-Latn": "Liberija", + "zh_TW": "賴比瑞亞", + "tr": "Liberya", + "ro": "Liberia", + "ar": "ليبيريا", + "fa": "لیبریا", + "yue": "利比里亞" + }, + flag: "🇱🇷", + code: "LR", + dialCode: "231", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Libyan Arab Jamahiriya", + nameTranslations: { + "sk": "Líbya", + "se": "Libya", + "pl": "Libia", + "no": "Libya", + "ja": "リビア", + "it": "Libia", + "zh": "利比亚", + "nl": "Libië", + "de": "Libyen", + "fr": "Libye", + "es": "Libia", + "en": "Libya", + "pt_BR": "Líbia", + "sr-Cyrl": "Либија", + "sr-Latn": "Libija", + "zh_TW": "利比亞", + "tr": "Libya", + "ro": "Libia", + "ar": "ليبيا", + "fa": "لیبی", + "yue": "利比亞" + }, + flag: "🇱🇾", + code: "LY", + dialCode: "218", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Liechtenstein", + nameTranslations: { + "sk": "LichtenÅ¡tajnsko", + "se": "Liechtenstein", + "pl": "Liechtenstein", + "no": "Liechtenstein", + "ja": "リヒテンシュタイン", + "it": "Liechtenstein", + "zh": "列支敦士登", + "nl": "Liechtenstein", + "de": "Liechtenstein", + "fr": "Liechtenstein", + "es": "Liechtenstein", + "en": "Liechtenstein", + "pt_BR": "Liechtenstein", + "sr-Cyrl": "Лихтенштајн", + "sr-Latn": "LihtenÅ¡tajn", + "zh_TW": "列支敦斯登", + "tr": "LihtenÅŸtayn", + "ro": "Liechtenstein", + "ar": "ليختنشتاين", + "fa": "لیختن‌اشتاین", + "yue": "列支敦士登" + }, + flag: "🇱🇮", + code: "LI", + dialCode: "423", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Lithuania", + nameTranslations: { + "sk": "Litva", + "se": "Lietuva", + "pl": "Litwa", + "no": "Litauen", + "ja": "リトアニア", + "it": "Lituania", + "zh": "ç«‹é™¶å®›", + "nl": "Litouwen", + "de": "Litauen", + "fr": "Lituanie", + "es": "Lituania", + "en": "Lithuania", + "pt_BR": "Lituânia", + "sr-Cyrl": "Литванија", + "sr-Latn": "Litvanija", + "zh_TW": "ç«‹é™¶å®›", + "tr": "Litvanya", + "ro": "Lituania", + "ar": "ليتوانيا", + "fa": "لیتوانی", + "yue": "ç«‹é™¶å®›" + }, + flag: "🇱🇹", + code: "LT", + dialCode: "370", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Luxembourg", + nameTranslations: { + "sk": "Luxembursko", + "se": "Luxembourg", + "pl": "Luksemburg", + "no": "Luxemburg", + "ja": "ルクセンブルク", + "it": "Lussemburgo", + "zh": "墿£®å ¡", + "nl": "Luxemburg", + "de": "Luxemburg", + "fr": "Luxembourg", + "es": "Luxemburgo", + "en": "Luxembourg", + "pt_BR": "Luxemburgo", + "sr-Cyrl": "ЛукÑенбург", + "sr-Latn": "Luksenburg", + "zh_TW": "盧森堡", + "tr": "Lüksemburg", + "ro": "Luxemburg", + "ar": "لوكسمبورغ", + "fa": "لوکزامبورگ", + "yue": "盧森堡" + }, + flag: "🇱🇺", + code: "LU", + dialCode: "352", + minLength: 11, + maxLength: 11, + ), + Country( + name: "Macao", + nameTranslations: { + "sk": "Macao – OAO Číny", + "se": "Makáo", + "pl": "SRA Makau (Chiny)", + "no": "Macao S.A.R. Kina", + "ja": "中è¯äººæ°‘共和国マカオ特別行政区", + "it": "RAS di Macao", + "zh": "中国澳门特别行政区", + "nl": "Macau SAR van China", + "de": "Sonderverwaltungsregion Macau", + "fr": "R.A.S. chinoise de Macao", + "es": "RAE de Macao (China)", + "en": "Macao SAR China", + "pt_BR": "RAE de Macau China", + "sr-Cyrl": "Макао", + "sr-Latn": "Makao", + "zh_TW": "澳門", + "tr": "Makao", + "ro": "Macao", + "ar": "ماكاو", + "fa": "ماكائو", + "yue": "澳門" + }, + flag: "🇲🇴", + code: "MO", + dialCode: "853", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Macedonia", + nameTranslations: { + "sk": "Severné Macedónsko", + "se": "North Macedonia", + "pl": "Macedonia Północna", + "no": "Nord-Makedonia", + "ja": "北マケドニア", + "it": "Macedonia del Nord", + "zh": "北马其顿", + "nl": "Noord-Macedonië", + "de": "Nordmazedonien", + "fr": "Macédoine du Nord", + "es": "Macedonia del Norte", + "en": "North Macedonia", + "pt_BR": "Macedônia do Norte", + "sr-Cyrl": "Северна Македонија", + "sr-Latn": "Severna Makedonija", + "zh_TW": "北馬其頓", + "tr": "Kuzey Makedonya", + "ro": "Macedonia de Nord", + "ar": "مقدونيا", + "fa": "مقدونیه", + "yue": "馬其頓(å‰å—斯拉夫共和國)" + }, + flag: "🇲🇰", + code: "MK", + dialCode: "389", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Madagascar", + nameTranslations: { + "sk": "Madagaskar", + "se": "Madagaskar", + "pl": "Madagaskar", + "no": "Madagaskar", + "ja": "マダガスカル", + "it": "Madagascar", + "zh": "马达加斯加", + "nl": "Madagaskar", + "de": "Madagaskar", + "fr": "Madagascar", + "es": "Madagascar", + "en": "Madagascar", + "pt_BR": "Madagáscar", + "sr-Cyrl": "МадагаÑкар", + "sr-Latn": "Madagaskar", + "zh_TW": "馬é”加斯加", + "tr": "Madagaskar", + "ro": "Madagascar", + "ar": "مدغشقر", + "fa": "ماداگاسکار", + "yue": "馬é”加斯加" + }, + flag: "🇲🇬", + code: "MG", + dialCode: "261", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Malawi", + nameTranslations: { + "sk": "Malawi", + "se": "Malawi", + "pl": "Malawi", + "no": "Malawi", + "ja": "マラウイ", + "it": "Malawi", + "zh": "马拉维", + "nl": "Malawi", + "de": "Malawi", + "fr": "Malawi", + "es": "Malaui", + "en": "Malawi", + "pt_BR": "Malawi", + "sr-Cyrl": "Малави", + "sr-Latn": "Malavi", + "zh_TW": "馬拉å¨", + "tr": "Malavi", + "ro": "Malawi", + "ar": "مالاوي", + "fa": "مالاوی", + "yue": "馬拉維" + }, + flag: "🇲🇼", + code: "MW", + dialCode: "265", + minLength: 7, + maxLength: 9, + ), + Country( + name: "Malaysia", + nameTranslations: { + "sk": "Malajzia", + "se": "Malesia", + "pl": "Malezja", + "no": "Malaysia", + "ja": "マレーシア", + "it": "Malaysia", + "zh": "马æ¥è¥¿äºš", + "nl": "Maleisië", + "de": "Malaysia", + "fr": "Malaisie", + "es": "Malasia", + "en": "Malaysia", + "pt_BR": "Malásia", + "sr-Cyrl": "Малезија", + "sr-Latn": "Malezija", + "zh_TW": "馬來西亞", + "tr": "Malezya", + "ro": "Malaezia", + "ar": "ماليزيا", + "fa": "مالزی", + "yue": "馬來西亞" + }, + flag: "🇲🇾", + code: "MY", + dialCode: "60", + minLength: 9, + maxLength: 10, + ), + Country( + name: "Maldives", + nameTranslations: { + "sk": "Maldivy", + "se": "Malediivvat", + "pl": "Malediwy", + "no": "Maldivene", + "ja": "モルディブ", + "it": "Maldive", + "zh": "马尔代夫", + "nl": "Maldiven", + "de": "Malediven", + "fr": "Maldives", + "es": "Maldivas", + "en": "Maldives", + "pt_BR": "Maldivas", + "sr-Cyrl": "Малдиви", + "sr-Latn": "Maldivi", + "zh_TW": "馬爾地夫", + "tr": "Maldivler", + "ro": "Maldive", + "ar": "جزر المالديÙ", + "fa": "مالدیو", + "yue": "馬爾代夫" + }, + flag: "🇲🇻", + code: "MV", + dialCode: "960", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Mali", + nameTranslations: { + "sk": "Mali", + "se": "Mali", + "pl": "Mali", + "no": "Mali", + "ja": "マリ", + "it": "Mali", + "zh": "马里", + "nl": "Mali", + "de": "Mali", + "fr": "Mali", + "es": "Mali", + "en": "Mali", + "pt_BR": "Mali", + "sr-Cyrl": "Мали", + "sr-Latn": "Mali", + "zh_TW": "馬里", + "tr": "Mali", + "ro": "Mali", + "ar": "مالي", + "fa": "مالی", + "yue": "馬里" + }, + flag: "🇲🇱", + code: "ML", + dialCode: "223", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Malta", + nameTranslations: { + "sk": "Malta", + "se": "Málta", + "pl": "Malta", + "no": "Malta", + "ja": "マルタ", + "it": "Malta", + "zh": "马耳他", + "nl": "Malta", + "de": "Malta", + "fr": "Malte", + "es": "Malta", + "en": "Malta", + "pt_BR": "Malta", + "sr-Cyrl": "Малта", + "sr-Latn": "Malta", + "zh_TW": "馬爾他", + "tr": "Malta", + "ro": "Malta", + "ar": "مالطا", + "fa": "مالت", + "yue": "馬耳他" + }, + flag: "🇲🇹", + code: "MT", + dialCode: "356", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Marshall Islands", + nameTranslations: { + "sk": "Marshallove ostrovy", + "se": "Marshallsullot", + "pl": "Wyspy Marshalla", + "no": "Marshalløyene", + "ja": "マーシャル諸島", + "it": "Isole Marshall", + "zh": "马ç»å°”群岛", + "nl": "Marshalleilanden", + "de": "Marshallinseln", + "fr": "ÃŽles Marshall", + "es": "Islas Marshall", + "en": "Marshall Islands", + "pt_BR": "Ilhas Marshall", + "sr-Cyrl": "МаршалÑка ОÑтрва", + "sr-Latn": "MarÅ¡alska Ostrva", + "zh_TW": "馬紹爾群島", + "tr": "Marshall Adaları", + "ro": "Insulele Marshall", + "ar": "جزر مارشال", + "fa": "جزایر مارشال", + "yue": "馬紹爾群島" + }, + flag: "🇲🇭", + code: "MH", + dialCode: "692", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Martinique", + nameTranslations: { + "sk": "Martinik", + "se": "Martinique", + "pl": "Martynika", + "no": "Martinique", + "ja": "マルティニーク", + "it": "Martinica", + "zh": "马æå°¼å…‹", + "nl": "Martinique", + "de": "Martinique", + "fr": "Martinique", + "es": "Martinica", + "en": "Martinique", + "pt_BR": "Martinica", + "sr-Cyrl": "Мартиник", + "sr-Latn": "Martinik", + "zh_TW": "馬ä¸å°¼å…‹", + "tr": "Martinique", + "ro": "Martinica", + "ar": "مارتينيك", + "fa": "مارتینیک", + "yue": "马æå°¼å…‹" + }, + flag: "🇲🇶", + code: "MQ", + dialCode: "596", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Mauritania", + nameTranslations: { + "sk": "Mauritánia", + "se": "Mauretánia", + "pl": "Mauretania", + "no": "Mauritania", + "ja": "モーリタニア", + "it": "Mauritania", + "zh": "毛里塔尼亚", + "nl": "Mauritanië", + "de": "Mauretanien", + "fr": "Mauritanie", + "es": "Mauritania", + "en": "Mauritania", + "pt_BR": "Mauritânia", + "sr-Cyrl": "Мауританија", + "sr-Latn": "Mauritanija", + "zh_TW": "茅利塔尼亞", + "tr": "Moritanya", + "ro": "Mauritania", + "ar": "موريتانيا", + "fa": "موریتانی", + "yue": "毛里塔尼亞" + }, + flag: "🇲🇷", + code: "MR", + dialCode: "222", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Mauritius", + nameTranslations: { + "sk": "Maurícius", + "se": "Mauritius", + "pl": "Mauritius", + "no": "Mauritius", + "ja": "モーリシャス", + "it": "Mauritius", + "zh": "毛里求斯", + "nl": "Mauritius", + "de": "Mauritius", + "fr": "Maurice", + "es": "Mauricio", + "en": "Mauritius", + "pt_BR": "Maurício", + "sr-Cyrl": "МаурицијуÑ", + "sr-Latn": "Mauricijus", + "zh_TW": "模里西斯", + "tr": "Mauritius", + "ro": "Mauritius", + "ar": "موريشيوس", + "fa": "موریس", + "yue": "毛里求斯" + }, + flag: "🇲🇺", + code: "MU", + dialCode: "230", + minLength: 7, + maxLength: 8, + ), + Country( + name: "Mayotte", + nameTranslations: { + "sk": "Mayotte", + "se": "Mayotte", + "pl": "Majotta", + "no": "Mayotte", + "ja": "マヨット", + "it": "Mayotte", + "zh": "马约特", + "nl": "Mayotte", + "de": "Mayotte", + "fr": "Mayotte", + "es": "Mayotte", + "en": "Mayotte", + "pt_BR": "Mayotte", + "sr-Cyrl": "Мајота", + "sr-Latn": "Majota", + "zh_TW": "馬約特", + "tr": "Mayotte", + "ro": "Mayotte", + "ar": "مايوت", + "fa": "مایوت", + "yue": "馬約特" + }, + flag: "🇾🇹", + code: "YT", + dialCode: "262", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Mexico", + nameTranslations: { + "sk": "Mexiko", + "se": "Meksiko", + "pl": "Meksyk", + "no": "Mexico", + "ja": "メキシコ", + "it": "Messico", + "zh": "墨西哥", + "nl": "Mexico", + "de": "Mexiko", + "fr": "Mexique", + "es": "México", + "en": "Mexico", + "pt_BR": "México", + "sr-Cyrl": "МекÑико", + "sr-Latn": "Meksiko", + "zh_TW": "墨西哥", + "tr": "Meksika", + "ro": "Mexic", + "ar": "المكسيك", + "fa": "مکزیک", + "yue": "墨西哥" + }, + flag: "🇲🇽", + code: "MX", + dialCode: "52", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Micronesia, Federated States of Micronesia", + nameTranslations: { + "sk": "Mikronézia", + "se": "Mikronesia", + "pl": "Mikronezja", + "no": "Mikronesiaføderasjonen", + "ja": "ミクロãƒã‚·ã‚¢é€£é‚¦", + "it": "Micronesia", + "zh": "密克罗尼西亚", + "nl": "Micronesia", + "de": "Mikronesien", + "fr": "États fédérés de Micronésie", + "es": "Micronesia", + "en": "Micronesia", + "pt_BR": "Micronésia", + "sr-Cyrl": "Микронезија", + "sr-Latn": "Mikronezija", + "zh_TW": "密克羅尼西亞", + "tr": "Mikronezya", + "ro": "Micronezia", + "ar": "ولايات ميكرونيسيا المتحدة", + "fa": "ایالات ÙØ¯Ø±Ø§Ù„ میکرونزی", + "yue": "密克罗尼西亚(è¯é‚¦ï¼‰" + }, + flag: "🇫🇲", + code: "FM", + dialCode: "691", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Moldova", + nameTranslations: { + "sk": "Moldavsko", + "se": "Moldávia", + "pl": "MoÅ‚dawia", + "no": "Moldova", + "ja": "モルドãƒ", + "it": "Moldavia", + "zh": "摩尔多瓦", + "nl": "Moldavië", + "de": "Republik Moldau", + "fr": "Moldavie", + "es": "Moldavia", + "en": "Moldova", + "pt_BR": "Moldova", + "sr-Cyrl": "Молдавија", + "sr-Latn": "Moldavija", + "zh_TW": "摩爾多瓦", + "tr": "Moldova", + "ro": "Moldova", + "ar": "Ù…ÙˆÙ„Ø¯ÙˆÙØ§", + "fa": "مولداوی", + "yue": "摩爾多瓦(共和國)" + }, + flag: "🇲🇩", + code: "MD", + dialCode: "373", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Monaco", + nameTranslations: { + "sk": "Monako", + "se": "Monaco", + "pl": "Monako", + "no": "Monaco", + "ja": "モナコ", + "it": "Monaco", + "zh": "摩纳哥", + "nl": "Monaco", + "de": "Monaco", + "fr": "Monaco", + "es": "Mónaco", + "en": "Monaco", + "pt_BR": "Mônaco", + "sr-Cyrl": "Монако", + "sr-Latn": "Monako", + "zh_TW": "æ‘©ç´å“¥", + "tr": "Monako", + "ro": "Monaco", + "ar": "موناكو", + "fa": "موناكو", + "yue": "æ‘©ç´å“¥" + }, + flag: "🇲🇨", + code: "MC", + dialCode: "377", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Mongolia", + nameTranslations: { + "sk": "Mongolsko", + "se": "Mongolia", + "pl": "Mongolia", + "no": "Mongolia", + "ja": "モンゴル", + "it": "Mongolia", + "zh": "è’™å¤", + "nl": "Mongolië", + "de": "Mongolei", + "fr": "Mongolie", + "es": "Mongolia", + "en": "Mongolia", + "pt_BR": "Mongólia", + "sr-Cyrl": "Монголија", + "sr-Latn": "Mongolija", + "zh_TW": "è’™å¤", + "tr": "MoÄŸolistan", + "ro": "Mongolia", + "ar": "منغوليا", + "fa": "مغولستان", + "yue": "è’™å¤" + }, + flag: "🇲🇳", + code: "MN", + dialCode: "976", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Montenegro", + nameTranslations: { + "sk": "ÄŒierna Hora", + "se": "Montenegro", + "pl": "Czarnogóra", + "no": "Montenegro", + "ja": "モンテãƒã‚°ãƒ­", + "it": "Montenegro", + "zh": "黑山", + "nl": "Montenegro", + "de": "Montenegro", + "fr": "Monténégro", + "es": "Montenegro", + "en": "Montenegro", + "pt_BR": "Montenegro", + "sr-Cyrl": "Црна Гора", + "sr-Latn": "Crna Gora", + "zh_TW": "蒙特內哥羅", + "tr": "KaradaÄŸ", + "ro": "Muntenegru", + "ar": "الجبل الأسود", + "fa": "مونته‌نگرو", + "yue": "黑山" + }, + flag: "🇲🇪", + code: "ME", + dialCode: "382", + minLength: 12, + maxLength: 12, + ), + Country( + name: "Montserrat", + nameTranslations: { + "sk": "Montserrat", + "se": "Montserrat", + "pl": "Montserrat", + "no": "Montserrat", + "ja": "モントセラト", + "it": "Montserrat", + "zh": "蒙特塞拉特", + "nl": "Montserrat", + "de": "Montserrat", + "fr": "Montserrat", + "es": "Montserrat", + "en": "Montserrat", + "pt_BR": "Montserrat", + "sr-Cyrl": "МонтÑерат", + "sr-Latn": "Montserat", + "zh_TW": "蒙哲臘", + "tr": "Montserrat", + "ro": "Montserrat", + "ar": "مونتسرات", + "fa": "مونتسرات", + "yue": "蒙特塞拉特" + }, + flag: "🇲🇸", + code: "MS", + dialCode: "1664", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Morocco", + nameTranslations: { + "sk": "Maroko", + "se": "Marokko", + "pl": "Maroko", + "no": "Marokko", + "ja": "モロッコ", + "it": "Marocco", + "zh": "摩洛哥", + "nl": "Marokko", + "de": "Marokko", + "fr": "Maroc", + "es": "Marruecos", + "en": "Morocco", + "pt_BR": "Marrocos", + "sr-Cyrl": "Мароко", + "sr-Latn": "Maroko", + "zh_TW": "摩洛哥", + "tr": "Fas", + "ro": "Maroc", + "ar": "المغرب", + "fa": "مراکش", + "yue": "摩洛哥" + }, + flag: "🇲🇦", + code: "MA", + dialCode: "212", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Mozambique", + nameTranslations: { + "sk": "Mozambik", + "se": "Mosambik", + "pl": "Mozambik", + "no": "Mosambik", + "ja": "モザンビーク", + "it": "Mozambico", + "zh": "莫桑比克", + "nl": "Mozambique", + "de": "Mosambik", + "fr": "Mozambique", + "es": "Mozambique", + "en": "Mozambique", + "pt_BR": "Moçambique", + "sr-Cyrl": "Мозамбик", + "sr-Latn": "Mozambik", + "zh_TW": "莫三比克", + "tr": "Mozambik", + "ro": "Mozambic", + "ar": "موزمبيق", + "fa": "موزامبیک", + "yue": "莫桑比克" + }, + flag: "🇲🇿", + code: "MZ", + dialCode: "258", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Myanmar", + nameTranslations: { + "sk": "Mjanmarsko", + "se": "Burma", + "pl": "Mjanma (Birma)", + "no": "Myanmar (Burma)", + "ja": "ミャンマー (ビルマ)", + "it": "Myanmar (Birmania)", + "zh": "缅甸", + "nl": "Myanmar (Birma)", + "de": "Myanmar", + "fr": "Myanmar (Birmanie)", + "es": "Myanmar (Birmania)", + "en": "Myanmar (Burma)", + "pt_BR": "Mianmar (Birmânia)", + "sr-Cyrl": "Мјанмар (Бурма)", + "sr-Latn": "Mjanmar (Burma)", + "zh_TW": "緬甸", + "tr": "Myanmar", + "ro": "Myanmar", + "ar": "ميانمار", + "fa": "میانمار", + "yue": "緬甸" + }, + flag: "🇲🇲", + code: "MM", + dialCode: "95", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Namibia", + nameTranslations: { + "sk": "Namíbia", + "se": "Namibia", + "pl": "Namibia", + "no": "Namibia", + "ja": "ナミビア", + "it": "Namibia", + "zh": "纳米比亚", + "nl": "Namibië", + "de": "Namibia", + "fr": "Namibie", + "es": "Namibia", + "en": "Namibia", + "pt_BR": "Namibia", + "sr-Cyrl": "Ðамибија", + "sr-Latn": "Namibija", + "zh_TW": "ç´ç±³æ¯”亞", + "tr": "Namibya", + "ro": "Namibia", + "ar": "ناميبيا", + "fa": "نامیبیا", + "yue": "ç´ç±³æ¯”亞" + }, + flag: "🇳🇦", + code: "NA", + dialCode: "264", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Nauru", + nameTranslations: { + "sk": "Nauru", + "se": "Nauru", + "pl": "Nauru", + "no": "Nauru", + "ja": "ナウル", + "it": "Nauru", + "zh": "ç‘™é²", + "nl": "Nauru", + "de": "Nauru", + "fr": "Nauru", + "es": "Nauru", + "en": "Nauru", + "pt_BR": "Nauru", + "sr-Cyrl": "Ðауру", + "sr-Latn": "Nauru", + "zh_TW": "諾魯", + "tr": "Nauru", + "ro": "Nauru", + "ar": "ناورو", + "fa": "نائورو", + "yue": "瑙魯" + }, + flag: "🇳🇷", + code: "NR", + dialCode: "674", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Nepal", + nameTranslations: { + "sk": "Nepál", + "se": "Nepal", + "pl": "Nepal", + "no": "Nepal", + "ja": "ãƒãƒ‘ール", + "it": "Nepal", + "zh": "尼泊尔", + "nl": "Nepal", + "de": "Nepal", + "fr": "Népal", + "es": "Nepal", + "en": "Nepal", + "pt_BR": "Nepal", + "sr-Cyrl": "Ðепал", + "sr-Latn": "Nepal", + "zh_TW": "尼泊爾", + "tr": "Nepal", + "ro": "Nepal", + "ar": "نيبال", + "fa": "نپال", + "yue": "尼泊爾" + }, + flag: "🇳🇵", + code: "NP", + dialCode: "977", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Netherlands", + nameTranslations: { + "sk": "Holandsko", + "se": "Vuolleeatnamat", + "pl": "Holandia", + "no": "Nederland", + "ja": "オランダ", + "it": "Paesi Bassi", + "zh": "è·å…°", + "nl": "Nederland", + "de": "Niederlande", + "fr": "Pays-Bas", + "es": "Países Bajos", + "en": "Netherlands", + "pt_BR": "Países Baixos", + "sr-Cyrl": "Холандија", + "sr-Latn": "Holandija", + "zh_TW": "è·è˜­", + "tr": "Hollanda", + "ro": "Olanda", + "ar": "هولندا", + "fa": "هلند", + "yue": "è·è˜­" + }, + flag: "🇳🇱", + code: "NL", + dialCode: "31", + minLength: 9, + maxLength: 9, + ), + Country( + name: "New Caledonia", + nameTranslations: { + "sk": "Nová Kaledónia", + "se": "Ođđa-Kaledonia", + "pl": "Nowa Kaledonia", + "no": "Ny-Caledonia", + "ja": "ニューカレドニア", + "it": "Nuova Caledonia", + "zh": "新喀里多尼亚", + "nl": "Nieuw-Caledonië", + "de": "Neukaledonien", + "fr": "Nouvelle-Calédonie", + "es": "Nueva Caledonia", + "en": "New Caledonia", + "pt_BR": "Nova Caledônia", + "sr-Cyrl": "Ðова Каледонија", + "sr-Latn": "Nova Kaledonija", + "zh_TW": "新喀里多尼亞", + "tr": "Yeni Kaledonya", + "ro": "Noua Caledonie", + "ar": "كاليدونيا الجديدة", + "fa": "کالدونیای جدید", + "yue": "新喀里多尼亚" + }, + flag: "🇳🇨", + code: "NC", + dialCode: "687", + minLength: 6, + maxLength: 6, + ), + Country( + name: "New Zealand", + nameTranslations: { + "sk": "Nový Zéland", + "se": "Ođđa-Selánda", + "pl": "Nowa Zelandia", + "no": "New Zealand", + "ja": "ニュージーランド", + "it": "Nuova Zelanda", + "zh": "新西兰", + "nl": "Nieuw-Zeeland", + "de": "Neuseeland", + "fr": "Nouvelle-Zélande", + "es": "Nueva Zelanda", + "en": "New Zealand", + "pt_BR": "Nova Zelândia", + "sr-Cyrl": "Ðови Зеланд", + "sr-Latn": "Novi Zeland", + "zh_TW": "ç´è¥¿è˜­", + "tr": "Yeni Zelanda", + "ro": "Noua Zeelandă", + "ar": "نيوزيلندا", + "fa": "نیوزلند", + "yue": "ç´è¥¿è˜­" + }, + flag: "🇳🇿", + code: "NZ", + dialCode: "64", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Nicaragua", + nameTranslations: { + "sk": "Nikaragua", + "se": "Nicaragua", + "pl": "Nikaragua", + "no": "Nicaragua", + "ja": "ニカラグア", + "it": "Nicaragua", + "zh": "尼加拉瓜", + "nl": "Nicaragua", + "de": "Nicaragua", + "fr": "Nicaragua", + "es": "Nicaragua", + "en": "Nicaragua", + "pt_BR": "Nicarágua", + "sr-Cyrl": "Ðикарагва", + "sr-Latn": "Nikaragva", + "zh_TW": "尼加拉瓜", + "tr": "Nikaragua", + "ro": "Nicaragua", + "ar": "نيكاراغوا", + "fa": "نیکاراگوئه", + "yue": "尼加拉瓜" + }, + flag: "🇳🇮", + code: "NI", + dialCode: "505", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Niger", + nameTranslations: { + "sk": "Niger", + "se": "Niger", + "pl": "Niger", + "no": "Niger", + "ja": "ニジェール", + "it": "Niger", + "zh": "尼日尔", + "nl": "Niger", + "de": "Niger", + "fr": "Niger", + "es": "Níger", + "en": "Niger", + "pt_BR": "Níger", + "sr-Cyrl": "Ðигер", + "sr-Latn": "Niger", + "zh_TW": "尼日爾", + "tr": "Nijer", + "ro": "Niger", + "ar": "النيجر", + "fa": "نیجر", + "yue": "尼日爾" + }, + flag: "🇳🇪", + code: "NE", + dialCode: "227", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Nigeria", + nameTranslations: { + "sk": "Nigéria", + "se": "Nigeria", + "pl": "Nigeria", + "no": "Nigeria", + "ja": "ナイジェリア", + "it": "Nigeria", + "zh": "尼日利亚", + "nl": "Nigeria", + "de": "Nigeria", + "fr": "Nigéria", + "es": "Nigeria", + "en": "Nigeria", + "pt_BR": "Nigéria", + "sr-Cyrl": "Ðигерија", + "sr-Latn": "Nigerija", + "zh_TW": "奈åŠåˆ©äºž", + "tr": "Nijerya", + "ro": "Nigeria", + "ar": "نيجيريا", + "fa": "نیجریه", + "yue": "尼日利亞" + }, + flag: "🇳🇬", + code: "NG", + dialCode: "234", + minLength: 10, + maxLength: 11, + ), + Country( + name: "Niue", + nameTranslations: { + "sk": "Niue", + "se": "Niue", + "pl": "Niue", + "no": "Niue", + "ja": "ニウエ", + "it": "Niue", + "zh": "纽埃", + "nl": "Niue", + "de": "Niue", + "fr": "Niue", + "es": "Niue", + "en": "Niue", + "pt_BR": "Niue", + "sr-Cyrl": "Ðијуе", + "sr-Latn": "Nijue", + "zh_TW": "ç´åŸƒ", + "tr": "Niue", + "ro": "Niue", + "ar": "نييوي", + "fa": "نیووی", + "yue": "ç´åŸƒ" + }, + flag: "🇳🇺", + code: "NU", + dialCode: "683", + minLength: 4, + maxLength: 4, + ), + Country( + name: "Norfolk Island", + nameTranslations: { + "sk": "Norfolk", + "se": "Norfolksullot", + "pl": "Norfolk", + "no": "Norfolkøya", + "ja": "ノーフォーク島", + "it": "Isola Norfolk", + "zh": "诺ç¦å…‹å²›", + "nl": "Norfolk", + "de": "Norfolkinsel", + "fr": "ÃŽle Norfolk", + "es": "Isla Norfolk", + "en": "Norfolk Island", + "pt_BR": "Ilha Norfolk", + "sr-Cyrl": "ОÑтрво Ðорфок", + "sr-Latn": "Ostrvo Norfok", + "zh_TW": "諾ç¦å…‹å³¶", + "tr": "Norfolk Adası", + "ro": "Insulele Norfolk", + "ar": "جزيرة نورÙولك", + "fa": "جزیره نورÙÚ©", + "yue": "诺ç¦å…‹å²›" + }, + flag: "🇳🇫", + code: "NF", + dialCode: "672", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Northern Mariana Islands", + nameTranslations: { + "sk": "Severné Mariány", + "se": "Davvi-Mariánat", + "pl": "Mariany Północne", + "no": "Nord-Marianene", + "ja": "北マリアナ諸島", + "it": "Isole Marianne settentrionali", + "zh": "北马里亚纳群岛", + "nl": "Noordelijke Marianen", + "de": "Nördliche Marianen", + "fr": "ÃŽles Mariannes du Nord", + "es": "Islas Marianas del Norte", + "en": "Northern Mariana Islands", + "pt_BR": "Ilhas Marianas do Norte", + "sr-Cyrl": "Северна МаријанÑка ОÑтрва", + "sr-Latn": "Severna Marijanska Ostrva", + "zh_TW": "北馬利安ç´ç¾¤å³¶", + "tr": "Kuzey Mariana Adaları", + "ro": "Insulelor Mariane de Nord", + "ar": "جزر ماريانا الشمالية", + "fa": "جزایر ماریانای شمالی", + "yue": "北馬里亞ç´ç¾¤å³¶" + }, + flag: "🇲🇵", + code: "MP", + dialCode: "1670", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Norway", + nameTranslations: { + "sk": "Nórsko", + "se": "Norga", + "pl": "Norwegia", + "no": "Norge", + "ja": "ノルウェー", + "it": "Norvegia", + "zh": "挪å¨", + "nl": "Noorwegen", + "de": "Norwegen", + "fr": "Norvège", + "es": "Noruega", + "en": "Norway", + "pt_BR": "Noruega", + "sr-Cyrl": "Ðорвешка", + "sr-Latn": "NorveÅ¡ka", + "zh_TW": "挪å¨", + "tr": "Norveç", + "ro": "Norvegia", + "ar": "النرويج", + "fa": "نروژ", + "yue": "挪å¨" + }, + flag: "🇳🇴", + code: "NO", + dialCode: "47", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Oman", + nameTranslations: { + "sk": "Omán", + "se": "Oman", + "pl": "Oman", + "no": "Oman", + "ja": "オマーン", + "it": "Oman", + "zh": "阿曼", + "nl": "Oman", + "de": "Oman", + "fr": "Oman", + "es": "Omán", + "en": "Oman", + "pt_BR": "Omã", + "sr-Cyrl": "Оман", + "sr-Latn": "Oman", + "zh_TW": "阿曼", + "tr": "Umman", + "ro": "Oman", + "ar": "عمان", + "fa": "عمان", + "yue": "阿曼" + }, + flag: "🇴🇲", + code: "OM", + dialCode: "968", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Pakistan", + nameTranslations: { + "sk": "Pakistan", + "se": "Pakistan", + "pl": "Pakistan", + "no": "Pakistan", + "ja": "パキスタン", + "it": "Pakistan", + "zh": "巴基斯å¦", + "nl": "Pakistan", + "de": "Pakistan", + "fr": "Pakistan", + "es": "Pakistán", + "en": "Pakistan", + "pt_BR": "Paquistão", + "sr-Cyrl": "ПакиÑтан", + "sr-Latn": "Pakistan", + "zh_TW": "巴基斯å¦", + "tr": "Pakistan", + "ro": "Pakistan", + "ar": "باكستان", + "fa": "پاکستان", + "yue": "巴基斯å¦" + }, + flag: "🇵🇰", + code: "PK", + dialCode: "92", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Palau", + nameTranslations: { + "sk": "Palau", + "se": "Palau", + "pl": "Palau", + "no": "Palau", + "ja": "パラオ", + "it": "Palau", + "zh": "帕劳", + "nl": "Palau", + "de": "Palau", + "fr": "Palaos", + "es": "Palaos", + "en": "Palau", + "pt_BR": "Palau", + "sr-Cyrl": "Палау", + "sr-Latn": "Palau", + "zh_TW": "帛ç‰", + "tr": "Palau", + "ro": "Palau", + "ar": "بالاو", + "fa": "پالائو", + "yue": "帕劳" + }, + flag: "🇵🇼", + code: "PW", + dialCode: "680", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Palestinian Territory, Occupied", + nameTranslations: { + "sk": "Palestínske územia", + "se": "Palestina", + "pl": "Terytoria PalestyÅ„skie", + "no": "Det palestinske omrÃ¥det", + "ja": "パレスãƒãƒŠè‡ªæ²»åŒº", + "it": "Territori palestinesi", + "zh": "å·´å‹’æ–¯å¦é¢†åœŸ", + "nl": "Palestijnse gebieden", + "de": "Palästinensische Autonomiegebiete", + "fr": "Territoires palestiniens", + "es": "Territorios Palestinos", + "en": "Palestinian Territories", + "pt_BR": "Territórios Palestinos", + "sr-Cyrl": "ПалеÑтина", + "sr-Latn": "Palestina", + "zh_TW": "å·´å‹’æ–¯å¦", + "tr": "Filistin", + "ro": "Palestina", + "ar": "Ùلسطين", + "fa": "Ùلسطین", + "yue": "å·´å‹’æ–¯å¦ï¼Œå›½" + }, + flag: "🇵🇸", + code: "PS", + dialCode: "970", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Panama", + nameTranslations: { + "sk": "Panama", + "se": "Panama", + "pl": "Panama", + "no": "Panama", + "ja": "パナマ", + "it": "Panamá", + "zh": "巴拿马", + "nl": "Panama", + "de": "Panama", + "fr": "Panama", + "es": "Panamá", + "en": "Panama", + "pt_BR": "Panamá", + "sr-Cyrl": "Панама", + "sr-Latn": "Panama", + "zh_TW": "巴拿馬", + "tr": "Panama", + "ro": "Panama", + "ar": "بنما", + "fa": "پاناما", + "yue": "巴拿馬" + }, + flag: "🇵🇦", + code: "PA", + dialCode: "507", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Papua New Guinea", + nameTranslations: { + "sk": "Papua-Nová Guinea", + "se": "Papua-Ođđa-Guinea", + "pl": "Papua-Nowa Gwinea", + "no": "Papua Ny-Guinea", + "ja": "パプアニューギニア", + "it": "Papua Nuova Guinea", + "zh": "巴布亚新几内亚", + "nl": "Papoea-Nieuw-Guinea", + "de": "Papua-Neuguinea", + "fr": "Papouasie-Nouvelle-Guinée", + "es": "Papúa Nueva Guinea", + "en": "Papua New Guinea", + "pt_BR": "Papua Nova Guiné", + "sr-Cyrl": "Папуа Ðова Гвинеја", + "sr-Latn": "Papua Nova Gvineja", + "zh_TW": "巴布亞新幾內亞", + "tr": "Papua Yeni Gine", + "ro": "Papua Noua Guinee", + "ar": "بابوا غينيا الجديدة", + "fa": "پاپوآ گینه نو", + "yue": "巴布亚新几内亚" + }, + flag: "🇵🇬", + code: "PG", + dialCode: "675", + minLength: 11, + maxLength: 11, + ), + Country( + name: "Paraguay", + nameTranslations: { + "sk": "Paraguaj", + "se": "Paraguay", + "pl": "Paragwaj", + "no": "Paraguay", + "ja": "パラグアイ", + "it": "Paraguay", + "zh": "巴拉圭", + "nl": "Paraguay", + "de": "Paraguay", + "fr": "Paraguay", + "es": "Paraguay", + "en": "Paraguay", + "pt_BR": "Paraguai", + "sr-Cyrl": "Парагвај", + "sr-Latn": "Paragvaj", + "zh_TW": "巴拉圭", + "tr": "Paraguay", + "ro": "Paraguay", + "ar": "باراغواي", + "fa": "پاراگوئه", + "yue": "巴拉圭" + }, + flag: "🇵🇾", + code: "PY", + dialCode: "595", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Peru", + nameTranslations: { + "sk": "Peru", + "se": "Peru", + "pl": "Peru", + "no": "Peru", + "ja": "ペルー", + "it": "Perù", + "zh": "秘é²", + "nl": "Peru", + "de": "Peru", + "fr": "Pérou", + "es": "Perú", + "en": "Peru", + "pt_BR": "Peru", + "sr-Cyrl": "Перу", + "sr-Latn": "Peru", + "zh_TW": "秘é²", + "tr": "Peru", + "ro": "Peru", + "ar": "بيرو", + "fa": "پرو", + "yue": "秘魯" + }, + flag: "🇵🇪", + code: "PE", + dialCode: "51", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Philippines", + nameTranslations: { + "sk": "Filipíny", + "se": "Filippiinnat", + "pl": "Filipiny", + "no": "Filippinene", + "ja": "フィリピン", + "it": "Filippine", + "zh": "è²å¾‹å®¾", + "nl": "Filipijnen", + "de": "Philippinen", + "fr": "Philippines", + "es": "Filipinas", + "en": "Philippines", + "pt_BR": "Filipinas", + "sr-Cyrl": "Филипини", + "sr-Latn": "Filipini", + "zh_TW": "è²å¾‹è³“", + "tr": "Filipinler", + "ro": "Filipine", + "ar": "الÙلبين", + "fa": "Ùیلیپین", + "yue": "è²å¾‹è³“" + }, + flag: "🇵🇭", + code: "PH", + dialCode: "63", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Pitcairn", + nameTranslations: { + "sk": "Pitcairnove ostrovy", + "se": "Pitcairn", + "pl": "Pitcairn", + "no": "Pitcairnøyene", + "ja": "ピトケアン諸島", + "it": "Isole Pitcairn", + "zh": "皮特凯æ©ç¾¤å²›", + "nl": "Pitcairneilanden", + "de": "Pitcairninseln", + "fr": "ÃŽles Pitcairn", + "es": "Islas Pitcairn", + "en": "Pitcairn Islands", + "pt_BR": "Ilhas Pitcairn", + "sr-Cyrl": "ОÑтрва Питкерн", + "sr-Latn": "Ostrva Pitkern", + "zh_TW": "皮特肯群島", + "tr": "Pitcairn Adaları", + "ro": "Insulele Pitcairn", + "ar": "جزر بيتكيرن", + "fa": "جزایر پیت‌کرن", + "yue": "皮特凱æ©" + }, + flag: "🇵🇳", + code: "PN", + dialCode: "64", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Poland", + nameTranslations: { + "sk": "Poľsko", + "se": "Polen", + "pl": "Polska", + "no": "Polen", + "ja": "ãƒãƒ¼ãƒ©ãƒ³ãƒ‰", + "it": "Polonia", + "zh": "波兰", + "nl": "Polen", + "de": "Polen", + "fr": "Pologne", + "es": "Polonia", + "en": "Poland", + "pt_BR": "Polônia", + "sr-Cyrl": "ПољÑка", + "sr-Latn": "Poljska", + "zh_TW": "波蘭", + "tr": "Polonya", + "ro": "Polonia", + "ar": "بولندا", + "fa": "لهستان", + "yue": "波蘭" + }, + flag: "🇵🇱", + code: "PL", + dialCode: "48", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Portugal", + nameTranslations: { + "sk": "Portugalsko", + "se": "Portugála", + "pl": "Portugalia", + "no": "Portugal", + "ja": "ãƒãƒ«ãƒˆã‚¬ãƒ«", + "it": "Portogallo", + "zh": "è‘¡è„牙", + "nl": "Portugal", + "de": "Portugal", + "fr": "Portugal", + "es": "Portugal", + "en": "Portugal", + "pt_BR": "Portugal", + "sr-Cyrl": "Португалија", + "sr-Latn": "Portugalija", + "zh_TW": "è‘¡è„牙", + "tr": "Portekiz", + "ro": "Portugalia", + "ar": "البرتغال", + "fa": "پرتغال", + "yue": "è‘¡è„牙" + }, + flag: "🇵🇹", + code: "PT", + dialCode: "351", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Puerto Rico", + nameTranslations: { + "sk": "Portoriko", + "se": "Puerto Rico", + "pl": "Portoryko", + "no": "Puerto Rico", + "ja": "プエルトリコ", + "it": "Portorico", + "zh": "波多黎å„", + "nl": "Puerto Rico", + "de": "Puerto Rico", + "fr": "Porto Rico", + "es": "Puerto Rico", + "en": "Puerto Rico", + "pt_BR": "Porto Rico", + "sr-Cyrl": "Порто Рико", + "sr-Latn": "Porto Riko", + "zh_TW": "波多黎å„", + "tr": "Porto Riko", + "ro": "Puerto Rico", + "ar": "بورتوريكو", + "fa": "پورتوریکو", + "yue": "波多黎å„" + }, + flag: "🇵🇷", + code: "PR", + dialCode: "1939", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Qatar", + nameTranslations: { + "sk": "Katar", + "se": "Qatar", + "pl": "Katar", + "no": "Qatar", + "ja": "カタール", + "it": "Qatar", + "zh": "å¡å¡”å°”", + "nl": "Qatar", + "de": "Katar", + "fr": "Qatar", + "es": "Catar", + "en": "Qatar", + "pt_BR": "Catar", + "sr-Cyrl": "Катар", + "sr-Latn": "Katar", + "zh_TW": "å¡é”", + "tr": "Katar", + "ro": "Qatar", + "ar": "قطر", + "fa": "قطر", + "yue": "å¡å¡”爾" + }, + flag: "🇶🇦", + code: "QA", + dialCode: "974", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Romania", + nameTranslations: { + "sk": "Rumunsko", + "se": "Románia", + "pl": "Rumunia", + "no": "Romania", + "ja": "ルーマニア", + "it": "Romania", + "zh": "罗马尼亚", + "nl": "Roemenië", + "de": "Rumänien", + "fr": "Roumanie", + "es": "Rumanía", + "en": "Romania", + "pt_BR": "Romênia", + "sr-Cyrl": "Румунија", + "sr-Latn": "Rumunija", + "zh_TW": "羅馬尼亞", + "tr": "Romanya", + "ro": "România", + "ar": "رومانيا", + "fa": "رومانی", + "yue": "羅馬尼亞" + }, + flag: "🇷🇴", + code: "RO", + dialCode: "40", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Russia", + nameTranslations: { + "sk": "Rusko", + "se": "Ruošša", + "pl": "Rosja", + "no": "Russland", + "ja": "ロシア", + "it": "Russia", + "zh": "ä¿„ç½—æ–¯", + "nl": "Rusland", + "de": "Russland", + "fr": "Russie", + "es": "Rusia", + "en": "Russia", + "pt_BR": "Rússia", + "sr-Cyrl": "РуÑија", + "sr-Latn": "Rusija", + "zh_TW": "ä¿„ç¾…æ–¯", + "tr": "Rusya", + "ro": "Rusia", + "ar": "روسيا", + "fa": "روسیه", + "yue": "俄儸斯è¯é‚¦" + }, + flag: "🇷🇺", + code: "RU", + dialCode: "7", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Rwanda", + nameTranslations: { + "sk": "Rwanda", + "se": "Rwanda", + "pl": "Rwanda", + "no": "Rwanda", + "ja": "ルワンダ", + "it": "Ruanda", + "zh": "墿—ºè¾¾", + "nl": "Rwanda", + "de": "Ruanda", + "fr": "Rwanda", + "es": "Ruanda", + "en": "Rwanda", + "pt_BR": "Ruanda", + "sr-Cyrl": "Руанда", + "sr-Latn": "Ruanda", + "zh_TW": "盧安é”", + "tr": "Ruanda", + "ro": "Rwanda", + "ar": "رواندا", + "fa": "رواندا", + "yue": "ç›§æ—ºé”" + }, + flag: "🇷🇼", + code: "RW", + dialCode: "250", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Reunion", + nameTranslations: { + "sk": "Réunion", + "se": "Réunion", + "pl": "Reunion", + "no": "Réunion", + "ja": "レユニオン", + "it": "Riunione", + "zh": "留尼汪", + "nl": "Réunion", + "de": "Réunion", + "fr": "La Réunion", + "es": "Reunión", + "en": "Réunion", + "pt_BR": "Reunião", + "sr-Cyrl": "Реинион", + "sr-Latn": "Reinion", + "zh_TW": "留尼旺", + "tr": "La Réunion", + "ro": "La Réunion", + "ar": "لا ريونيون", + "fa": "رئونیون", + "yue": "留尼汪" + }, + flag: "🇷🇪", + code: "RE", + dialCode: "262", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Saint Barthelemy", + nameTranslations: { + "sk": "Svätý Bartolomej", + "se": "Saint Barthélemy", + "pl": "Saint-Barthélemy", + "no": "Saint-Barthélemy", + "ja": "サン・ãƒãƒ«ãƒ†ãƒ«ãƒŸãƒ¼", + "it": "Saint-Barthélemy", + "zh": "圣巴泰勒米", + "nl": "Saint-Barthélemy", + "de": "St. Barthélemy", + "fr": "Saint-Barthélemy", + "es": "San Bartolomé", + "en": "St. Barthélemy", + "pt_BR": "São Bartolomeu", + "sr-Cyrl": "Сент Бартелеми", + "sr-Latn": "Sent Bartelemi", + "zh_TW": "è–巴瑟米", + "tr": "Saint Barthélemy", + "ro": "Saint Barthélemy", + "ar": "سان بارتيلمي", + "fa": "سن بارتلمی", + "yue": "è–å·´æ³°å‹’ç±³" + }, + flag: "🇧🇱", + code: "BL", + dialCode: "590", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Saint Helena, Ascension and Tristan Da Cunha", + nameTranslations: { + "sk": "Svätá Helena", + "se": "Saint Helena", + "pl": "Wyspa ÅšwiÄ™tej Heleny", + "no": "St. Helena", + "ja": "セントヘレナ", + "it": "Sant'Elena", + "zh": "圣赫勒拿", + "nl": "Sint-Helena", + "de": "St. Helena", + "fr": "Sainte-Hélène", + "es": "Santa Elena", + "en": "St. Helena", + "pt_BR": "Santa Helena", + "sr-Cyrl": "Света Јелена, ÐÑенÑион и ТриÑтан да Куња", + "sr-Latn": "Sveta Jelena, Asension i Tristan de Kunja", + "zh_TW": "è–凱倫拿島", + "tr": "Saint Helena", + "ro": "Sfânta Elena", + "ar": "سانت هيلانة وأسينشين وتريستان دا كونا", + "fa": "سنت هلن", + "yue": "圣赫勒拿ã€é˜¿æ£®æ¾åŒç‰¹é‡Œæ–¯å¦Â·è¾¾åº“尼亚" + }, + flag: "🇸🇭", + code: "SH", + dialCode: "290", + minLength: 4, + maxLength: 4, + ), + Country( + name: "Saint Kitts and Nevis", + nameTranslations: { + "sk": "Svätý KriÅ¡tof a Nevis", + "se": "Saint Kitts ja Nevis", + "pl": "Saint Kitts i Nevis", + "no": "Saint Kitts og Nevis", + "ja": "セントクリストファー・ãƒãƒ¼ãƒ´ã‚£ã‚¹", + "it": "Saint Kitts e Nevis", + "zh": "圣基茨和尼维斯", + "nl": "Saint Kitts en Nevis", + "de": "St. Kitts und Nevis", + "fr": "Saint-Christophe-et-Niévès", + "es": "San Cristóbal y Nieves", + "en": "St. Kitts & Nevis", + "pt_BR": "São Cristóvão e Nevis", + "sr-Cyrl": "Сент ÐšÐ¸Ñ‚Ñ Ð¸ ÐевиÑ", + "sr-Latn": "Sent Kits i Nevis", + "zh_TW": "è–克里斯多ç¦åŠå°¼ç¶­æ–¯", + "tr": "Saint Kitts ve Nevis", + "ro": "Sfântul Kitts È™i Nevis", + "ar": "سانت كيتس ونيÙيس", + "fa": "سنت کیتس Ùˆ نویس", + "yue": "圣基茨åŒå°¼ç»´æ–¯" + }, + flag: "🇰🇳", + code: "KN", + dialCode: "1869", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Saint Lucia", + nameTranslations: { + "sk": "Svätá Lucia", + "se": "Saint Lucia", + "pl": "Saint Lucia", + "no": "St. Lucia", + "ja": "セントルシア", + "it": "Saint Lucia", + "zh": "圣å¢è¥¿äºš", + "nl": "Saint Lucia", + "de": "St. Lucia", + "fr": "Sainte-Lucie", + "es": "Santa Lucía", + "en": "St. Lucia", + "pt_BR": "Santa Lúcia", + "sr-Cyrl": "Света Луција", + "sr-Latn": "Sveta Lucija", + "zh_TW": "è–露西亞", + "tr": "Saint Lucia", + "ro": "Sfânta Elena", + "ar": "سانت لوسيا", + "fa": "سنت لوسیا", + "yue": "è–盧西亞" + }, + flag: "🇱🇨", + code: "LC", + dialCode: "1758", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Saint Martin", + nameTranslations: { + "sk": "Svätý Martin (fr.)", + "se": "Frankriikka Saint Martin", + "pl": "Saint-Martin", + "no": "Saint-Martin", + "ja": "サン・マルタン", + "it": "Saint Martin", + "zh": "法属圣马ä¸", + "nl": "Saint-Martin", + "de": "St. Martin", + "fr": "Saint-Martin", + "es": "San Martín", + "en": "St. Martin", + "pt_BR": "São Martinho", + "sr-Cyrl": "Свети Мартин", + "sr-Latn": "Sveti Martin", + "zh_TW": "è–馬ä¸", + "tr": "Saint Martin", + "ro": "Sfântul Martin", + "ar": "تجمع سان مارتين", + "fa": "سن مارتن", + "yue": "è–馬ä¸ï¼ˆæ³•國部分)" + }, + flag: "🇲🇫", + code: "MF", + dialCode: "590", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Saint Pierre and Miquelon", + nameTranslations: { + "sk": "Saint Pierre a Miquelon", + "se": "Saint Pierre ja Miquelon", + "pl": "Saint-Pierre i Miquelon", + "no": "Saint-Pierre-et-Miquelon", + "ja": "サンピエール島・ミクロン島", + "it": "Saint-Pierre e Miquelon", + "zh": "圣皮埃尔和密克隆群岛", + "nl": "Saint-Pierre en Miquelon", + "de": "St. Pierre und Miquelon", + "fr": "Saint-Pierre-et-Miquelon", + "es": "San Pedro y Miquelón", + "en": "St. Pierre & Miquelon", + "pt_BR": "São Pedro e Miquelon", + "sr-Cyrl": "Сен Пјер и Микелон", + "sr-Latn": "Sen Pjer i Mikelon", + "zh_TW": "è–皮埃與密克隆群島", + "tr": "Saint Pierre ve Miquelon", + "ro": "Saint Pierre È™i Miquelon", + "ar": "سان بيير وميكلون", + "fa": "سن-پیر Ùˆ میکلون", + "yue": "è–皮埃尔åŒç±³å…‹éš†" + }, + flag: "🇵🇲", + code: "PM", + dialCode: "508", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Saint Vincent and the Grenadines", + nameTranslations: { + "sk": "Svätý Vincent a Grenadíny", + "se": "Saint Vincent ja Grenadine", + "pl": "Saint Vincent i Grenadyny", + "no": "St. Vincent og Grenadinene", + "ja": "セントビンセントåŠã³ã‚°ãƒ¬ãƒŠãƒ‡ã‚£ãƒ¼ãƒ³è«¸å³¶", + "it": "Saint Vincent e Grenadine", + "zh": "åœ£æ–‡æ£®ç‰¹å’Œæ ¼æž—çº³ä¸æ–¯", + "nl": "Saint Vincent en de Grenadines", + "de": "St. Vincent und die Grenadinen", + "fr": "Saint-Vincent-et-les-Grenadines", + "es": "San Vicente y las Granadinas", + "en": "St. Vincent & Grenadines", + "pt_BR": "São Vicente e Granadinas", + "sr-Cyrl": "Свети ВинÑент и Гренадини", + "sr-Latn": "Sveti Vinsent i Grenadini", + "zh_TW": "è–æ–‡æ£®åŠæ ¼ç‘žé‚£ä¸", + "tr": "Saint Vincent ve Grenadinler", + "ro": "Sfântul VincenÈ›iu È™i Grenadinele", + "ar": "سانت Ùينسنت والغرينادين", + "fa": "سنت وینسنت Ùˆ گرنادین‌ها", + "yue": "è–æ–‡æ£®ç‰¹åŒæ ¼æž—çº³ä¸æ–¯" + }, + flag: "🇻🇨", + code: "VC", + dialCode: "1784", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Samoa", + nameTranslations: { + "sk": "Samoa", + "se": "Samoa", + "pl": "Samoa", + "no": "Samoa", + "ja": "サモア", + "it": "Samoa", + "zh": "è¨æ‘©äºš", + "nl": "Samoa", + "de": "Samoa", + "fr": "Samoa", + "es": "Samoa", + "en": "Samoa", + "pt_BR": "Samoa", + "sr-Cyrl": "Самоа", + "sr-Latn": "Samoa", + "zh_TW": "薩摩亞", + "tr": "Samoa", + "ro": "Samoa", + "ar": "ساموا", + "fa": "ساموآ", + "yue": "薩摩亞" + }, + flag: "🇼🇸", + code: "WS", + dialCode: "685", + minLength: 7, + maxLength: 7, + ), + Country( + name: "San Marino", + nameTranslations: { + "sk": "San Maríno", + "se": "San Marino", + "pl": "San Marino", + "no": "San Marino", + "ja": "サンマリノ", + "it": "San Marino", + "zh": "圣马力诺", + "nl": "San Marino", + "de": "San Marino", + "fr": "Saint-Marin", + "es": "San Marino", + "en": "San Marino", + "pt_BR": "San Marino", + "sr-Cyrl": "Сан Марино", + "sr-Latn": "San Marino", + "zh_TW": "è–馬利諾", + "tr": "San Marino", + "ro": "San Marino", + "ar": "سان مارينو", + "fa": "سان مارینو", + "yue": "è–馬力諾" + }, + flag: "🇸🇲", + code: "SM", + dialCode: "378", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Sao Tome and Principe", + nameTranslations: { + "sk": "Svätý Tomáš a Princov ostrov", + "se": "São Tomé ja Príncipe", + "pl": "Wyspy ÅšwiÄ™tego Tomasza i Książęca", + "no": "São Tomé og Príncipe", + "ja": "サントメ・プリンシペ", + "it": "São Tomé e Príncipe", + "zh": "圣多美和普林西比", + "nl": "Sao Tomé en Principe", + "de": "São Tomé und Príncipe", + "fr": "Sao Tomé-et-Principe", + "es": "Santo Tomé y Príncipe", + "en": "São Tomé & Príncipe", + "pt_BR": "São Tomé e Príncipe", + "sr-Cyrl": "Сао Томе и ПринÑипе", + "sr-Latn": "Sao Tome i Prinsipe", + "zh_TW": "è–多美普林西比", + "tr": "São Tomé ve Príncipe", + "ro": "Sao Tome ÅŸi Principe", + "ar": "ساو تومي وبرينسيب", + "fa": "سائوتومه Ùˆ پرنسیپ", + "yue": "è–多美和普林西比" + }, + flag: "🇸🇹", + code: "ST", + dialCode: "239", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Saudi Arabia", + nameTranslations: { + "sk": "Saudská Arábia", + "se": "Saudi-Arábia", + "pl": "Arabia Saudyjska", + "no": "Saudi-Arabia", + "ja": "サウジアラビア", + "it": "Arabia Saudita", + "zh": "沙特阿拉伯", + "nl": "Saoedi-Arabië", + "de": "Saudi-Arabien", + "fr": "Arabie saoudite", + "es": "Arabia Saudí", + "en": "Saudi Arabia", + "pt_BR": "Arábia Saudita", + "sr-Cyrl": "СаудијÑка Ðрабија", + "sr-Latn": "Saudijska Arabija", + "zh_TW": "æ²™çƒåœ°é˜¿æ‹‰", + "tr": "Suudi Arabistan", + "ro": "Arabia Saudită", + "ar": "السعودية", + "fa": "عربستان سعودی", + "yue": "沙地阿拉伯" + }, + flag: "🇸🇦", + code: "SA", + dialCode: "966", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Senegal", + nameTranslations: { + "sk": "Senegal", + "se": "Senegal", + "pl": "Senegal", + "no": "Senegal", + "ja": "ã‚»ãƒã‚¬ãƒ«", + "it": "Senegal", + "zh": "塞内加尔", + "nl": "Senegal", + "de": "Senegal", + "fr": "Sénégal", + "es": "Senegal", + "en": "Senegal", + "pt_BR": "Senegal", + "sr-Cyrl": "Сенегал", + "sr-Latn": "Senegal", + "zh_TW": "塞內加爾", + "tr": "Senegal", + "ro": "Senegal", + "ar": "السنغال", + "fa": "سنگال", + "yue": "塞內加爾" + }, + flag: "🇸🇳", + code: "SN", + dialCode: "221", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Serbia", + nameTranslations: { + "sk": "Srbsko", + "se": "Serbia", + "pl": "Serbia", + "no": "Serbia", + "ja": "セルビア", + "it": "Serbia", + "zh": "塞尔维亚", + "nl": "Servië", + "de": "Serbien", + "fr": "Serbie", + "es": "Serbia", + "en": "Serbia", + "pt_BR": "Sérvia", + "sr-Cyrl": "Србија", + "sr-Latn": "Srbija", + "zh_TW": "塞爾維亞", + "tr": "Sırbistan", + "ro": "Serbia", + "ar": "صربيا", + "fa": "صربستان", + "yue": "塞爾維亞" + }, + flag: "🇷🇸", + code: "RS", + dialCode: "381", + minLength: 12, + maxLength: 12, + ), + Country( + name: "Seychelles", + nameTranslations: { + "sk": "Seychely", + "se": "Seychellsullot", + "pl": "Seszele", + "no": "Seychellene", + "ja": "セーシェル", + "it": "Seychelles", + "zh": "塞舌尔", + "nl": "Seychellen", + "de": "Seychellen", + "fr": "Seychelles", + "es": "Seychelles", + "en": "Seychelles", + "pt_BR": "Seychelles", + "sr-Cyrl": "Сејшели", + "sr-Latn": "SejÅ¡eli", + "zh_TW": "塞席爾", + "tr": "SeyÅŸeller", + "ro": "Seychelles", + "ar": "سيشل", + "fa": "سیشل", + "yue": "塞舌爾" + }, + flag: "🇸🇨", + code: "SC", + dialCode: "248", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Sierra Leone", + nameTranslations: { + "sk": "Sierra Leone", + "se": "Sierra Leone", + "pl": "Sierra Leone", + "no": "Sierra Leone", + "ja": "シエラレオãƒ", + "it": "Sierra Leone", + "zh": "塞拉利昂", + "nl": "Sierra Leone", + "de": "Sierra Leone", + "fr": "Sierra Leone", + "es": "Sierra Leona", + "en": "Sierra Leone", + "pt_BR": "Serra Leoa", + "sr-Cyrl": "Сијера Леоне", + "sr-Latn": "Sijera Leone", + "zh_TW": "ç…å­å±±", + "tr": "Sierra Leone", + "ro": "Sierra Leone", + "ar": "سيراليون", + "fa": "سیرالئون", + "yue": "塞拉利昂" + }, + flag: "🇸🇱", + code: "SL", + dialCode: "232", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Singapore", + nameTranslations: { + "sk": "Singapur", + "se": "Singapore", + "pl": "Singapur", + "no": "Singapore", + "ja": "シンガãƒãƒ¼ãƒ«", + "it": "Singapore", + "zh": "新加å¡", + "nl": "Singapore", + "de": "Singapur", + "fr": "Singapour", + "es": "Singapur", + "en": "Singapore", + "pt_BR": "Cingapura", + "sr-Cyrl": "Сингапур", + "sr-Latn": "Singapur", + "zh_TW": "新加å¡", + "tr": "Singapur", + "ro": "Singapore", + "ar": "سنغاÙورة", + "fa": "سنگاپور", + "yue": "星架å¡" + }, + flag: "🇸🇬", + code: "SG", + dialCode: "65", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Slovakia", + nameTranslations: { + "sk": "Slovensko", + "se": "Slovákia", + "pl": "SÅ‚owacja", + "no": "Slovakia", + "ja": "スロãƒã‚­ã‚¢", + "it": "Slovacchia", + "zh": "斯洛ä¼å…‹", + "nl": "Slowakije", + "de": "Slowakei", + "fr": "Slovaquie", + "es": "Eslovaquia", + "en": "Slovakia", + "pt_BR": "Eslováquia", + "sr-Cyrl": "Словачка", + "sr-Latn": "SlovaÄka", + "zh_TW": "斯洛ä¼å…‹", + "tr": "Slovakya", + "ro": "Slovacia", + "ar": "Ø³Ù„ÙˆÙØ§ÙƒÙŠØ§", + "fa": "اسلواکی", + "yue": "斯洛ä¼å…‹" + }, + flag: "🇸🇰", + code: "SK", + dialCode: "421", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Slovenia", + nameTranslations: { + "sk": "Slovinsko", + "se": "Slovenia", + "pl": "SÅ‚owenia", + "no": "Slovenia", + "ja": "スロベニア", + "it": "Slovenia", + "zh": "斯洛文尼亚", + "nl": "Slovenië", + "de": "Slowenien", + "fr": "Slovénie", + "es": "Eslovenia", + "en": "Slovenia", + "pt_BR": "Eslovênia", + "sr-Cyrl": "Словеније", + "sr-Latn": "Slovenija", + "zh_TW": "斯洛維尼亞", + "tr": "Slovenya", + "ro": "Slovenia", + "ar": "سلوÙينيا", + "fa": "اسلوونی", + "yue": "斯洛文尼亞" + }, + flag: "🇸🇮", + code: "SI", + dialCode: "386", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Solomon Islands", + nameTranslations: { + "sk": "Å alamúnove ostrovy", + "se": "Salomon-sullot", + "pl": "Wyspy Salomona", + "no": "Salomonøyene", + "ja": "ソロモン諸島", + "it": "Isole Salomone", + "zh": "所罗门群岛", + "nl": "Salomonseilanden", + "de": "Salomonen", + "fr": "ÃŽles Salomon", + "es": "Islas Salomón", + "en": "Solomon Islands", + "pt_BR": "Ilhas Salomão", + "sr-Cyrl": "СоломонÑка ОÑтрва", + "sr-Latn": "Solomonska Ostrva", + "zh_TW": "所羅門群島", + "tr": "Solomon Adaları", + "ro": "Insulele Solomon", + "ar": "جزر سليمان", + "fa": "جزایر سلیمان", + "yue": "所羅門群島" + }, + flag: "🇸🇧", + code: "SB", + dialCode: "677", + minLength: 5, + maxLength: 5, + ), + Country( + name: "Somalia", + nameTranslations: { + "sk": "Somálsko", + "se": "Somália", + "pl": "Somalia", + "no": "Somalia", + "ja": "ソマリア", + "it": "Somalia", + "zh": "索马里", + "nl": "Somalië", + "de": "Somalia", + "fr": "Somalie", + "es": "Somalia", + "en": "Somalia", + "pt_BR": "Somália", + "sr-Cyrl": "Сомалија", + "sr-Latn": "Somalija", + "zh_TW": "索馬利亞", + "tr": "Somali", + "ro": "Somalia", + "ar": "الصومال", + "fa": "سومالی", + "yue": "索馬里" + }, + flag: "🇸🇴", + code: "SO", + dialCode: "252", + minLength: 8, + maxLength: 8, + ), + Country( + name: "South Africa", + nameTranslations: { + "sk": "Južná Afrika", + "se": "Mátta-Afrihká", + "pl": "Republika PoÅ‚udniowej Afryki", + "no": "Sør-Afrika", + "ja": "å—アフリカ", + "it": "Sudafrica", + "zh": "å—éž", + "nl": "Zuid-Afrika", + "de": "Südafrika", + "fr": "Afrique du Sud", + "es": "Sudáfrica", + "en": "South Africa", + "pt_BR": "Ãfrica do Sul", + "sr-Cyrl": "Јужноафричка Република", + "sr-Latn": "JužnoafriÄka Republika", + "zh_TW": "å—éž", + "tr": "Güney Afrika", + "ro": "Africa de Sud", + "ar": "جنوب Ø£ÙØ±ÙŠÙ‚يا", + "fa": "Ø¢ÙØ±ÛŒÙ‚ای جنوبی", + "yue": "å—éž" + }, + flag: "🇿🇦", + code: "ZA", + dialCode: "27", + minLength: 9, + maxLength: 9, + ), + Country( + name: "South Sudan", + nameTranslations: { + "sk": "Južný Sudán", + "se": "Máttasudan", + "pl": "Sudan PoÅ‚udniowy", + "no": "Sør-Sudan", + "ja": "å—スーダン", + "it": "Sud Sudan", + "zh": "å—è‹ä¸¹", + "nl": "Zuid-Soedan", + "de": "Südsudan", + "fr": "Soudan du Sud", + "es": "Sudán del Sur", + "en": "South Sudan", + "pt_BR": "Sudão do Sul", + "sr-Cyrl": "Јужни Судан", + "sr-Latn": "Južni Sudan", + "zh_TW": "å—蘇丹", + "tr": "Güney Sudan", + "ro": "Sudanul de Sud", + "ar": "جنوب السودان", + "fa": "سودان جنوبی", + "yue": "å—蘇丹" + }, + flag: "🇸🇸", + code: "SS", + dialCode: "211", + minLength: 9, + maxLength: 9, + ), + Country( + name: "South Georgia and the South Sandwich Islands", + nameTranslations: { + "sk": "Južná Georgia a Južné Sandwichove ostrovy", + "se": "Lulli Georgia ja Lulli Sandwich-sullot", + "pl": "Georgia PoÅ‚udniowa i Sandwich PoÅ‚udniowy", + "no": "Sør-Georgia og Sør-Sandwichøyene", + "ja": "サウスジョージア・サウスサンドウィッãƒè«¸å³¶", + "it": "Georgia del Sud e Sandwich australi", + "zh": "å—ä¹”æ²»äºšå’Œå—æ¡‘å¨å¥‡ç¾¤å²›", + "nl": "Zuid-Georgia en Zuidelijke Sandwicheilanden", + "de": "Südgeorgien und die Südlichen Sandwichinseln", + "fr": "Géorgie du Sud et îles Sandwich du Sud", + "es": "Islas Georgia del Sur y Sandwich del Sur", + "en": "South Georgia & South Sandwich Islands", + "pt_BR": "Geórgia do Sul e Ilhas Sandwich do Sul", + "sr-Cyrl": "Јужна Ðорџија и Јужна Сендвичка ОÑтрва", + "sr-Latn": "Južna Džordžija i Južna SendviÄka Ostrva", + "zh_TW": "å—喬治亞與å—三明治群島 ", + "tr": "Güney Georgia ve Güney Sandwich Adaları", + "ro": "Georgia de Sud È™i Insulele Sandwich de Sud", + "ar": "جورجيا الجنوبية وجزر ساندويتش الجنوبية", + "fa": "جزایر جورجیای جنوبی Ùˆ ساندویچ جنوبی", + "yue": "å—喬治亞州åŒå—æ¡‘å¨å¥‡ç¾¤å³¶" + }, + flag: "🇬🇸", + code: "GS", + dialCode: "500", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Spain", + nameTranslations: { + "sk": "Å panielsko", + "se": "Spánia", + "pl": "Hiszpania", + "no": "Spania", + "ja": "スペイン", + "it": "Spagna", + "zh": "西ç­ç‰™", + "nl": "Spanje", + "de": "Spanien", + "fr": "Espagne", + "es": "España", + "en": "Spain", + "pt_BR": "Espanha", + "sr-Cyrl": "Шпанија", + "sr-Latn": "Å panija", + "zh_TW": "西ç­ç‰™", + "tr": "İspanya", + "ro": "Spania", + "ar": "إسبانيا", + "fa": "اسپانیا", + "yue": "西ç­ç‰™" + }, + flag: "🇪🇸", + code: "ES", + dialCode: "34", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Sri Lanka", + nameTranslations: { + "sk": "Srí Lanka", + "se": "Sri Lanka", + "pl": "Sri Lanka", + "no": "Sri Lanka", + "ja": "スリランカ", + "it": "Sri Lanka", + "zh": "斯里兰å¡", + "nl": "Sri Lanka", + "de": "Sri Lanka", + "fr": "Sri Lanka", + "es": "Sri Lanka", + "en": "Sri Lanka", + "pt_BR": "Sri Lanka", + "sr-Cyrl": "Шри Ланка", + "sr-Latn": "Å ri Lanka", + "zh_TW": "斯里蘭å¡", + "tr": "Sri Lanka", + "ro": "Sri Lanka", + "ar": "سريلانكا", + "fa": "سریلانکا", + "yue": "斯里蘭å¡" + }, + flag: "🇱🇰", + code: "LK", + dialCode: "94", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Sudan", + nameTranslations: { + "sk": "Sudán", + "se": "Davvisudan", + "pl": "Sudan", + "no": "Sudan", + "ja": "スーダン", + "it": "Sudan", + "zh": "è‹ä¸¹", + "nl": "Soedan", + "de": "Sudan", + "fr": "Soudan", + "es": "Sudán", + "en": "Sudan", + "pt_BR": "Sudão", + "sr-Cyrl": "Судан", + "sr-Latn": "Sudan", + "zh_TW": "蘇丹", + "tr": "Sudan", + "ro": "Sudan", + "ar": "السودان", + "fa": "سودان", + "yue": "蘇丹" + }, + flag: "🇸🇩", + code: "SD", + dialCode: "249", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Suriname", + nameTranslations: { + "sk": "Surinam", + "se": "Surinam", + "pl": "Surinam", + "no": "Surinam", + "ja": "スリナム", + "it": "Suriname", + "zh": "è‹é‡Œå—", + "nl": "Suriname", + "de": "Suriname", + "fr": "Suriname", + "es": "Surinam", + "en": "Suriname", + "pt_BR": "Suriname", + "sr-Cyrl": "Суринам", + "sr-Latn": "Surinam", + "zh_TW": "蘇利å—", + "tr": "Surinam", + "ro": "Surinam", + "ar": "سورينام", + "fa": "سورینام", + "yue": "蘇里å—" + }, + flag: "🇸🇷", + code: "SR", + dialCode: "597", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Svalbard and Jan Mayen", + nameTranslations: { + "sk": "Svalbard a Jan Mayen", + "se": "Svalbárda ja Jan Mayen", + "pl": "Svalbard i Jan Mayen", + "no": "Svalbard og Jan Mayen", + "ja": "スãƒãƒ¼ãƒ«ãƒãƒ«è«¸å³¶ãƒ»ãƒ¤ãƒ³ãƒžã‚¤ã‚¨ãƒ³å³¶", + "it": "Svalbard e Jan Mayen", + "zh": "斯瓦尔巴和扬马延", + "nl": "Spitsbergen en Jan Mayen", + "de": "Spitzbergen und Jan Mayen", + "fr": "Svalbard et Jan Mayen", + "es": "Svalbard y Jan Mayen", + "en": "Svalbard & Jan Mayen", + "pt_BR": "Svalbard e Jan Mayen", + "sr-Cyrl": "Свалбард", + "sr-Latn": "Svalbard", + "zh_TW": "斯瓦巴åŠå°–棉", + "tr": "Svalbard ve Jan Mayen", + "ro": "Svalbard È™i Jan Mayen", + "ar": "Ø³ÙØ§Ù„بارد ويان ماين", + "fa": "سوالبارد Ùˆ یان ماین", + "yue": "æ–¯ç“¦å°”å·´å¾·åŒæ‰¬Â·é©¬å»¶" + }, + flag: "🇸🇯", + code: "SJ", + dialCode: "47", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Eswatini", + nameTranslations: { + "sk": "Eswatini", + "se": "Svazieana", + "pl": "Eswatini", + "no": "Eswatini", + "ja": "エスワティニ", + "it": "Swaziland", + "zh": "æ–¯å¨å£«å…°", + "nl": "eSwatini", + "de": "Eswatini", + "fr": "Eswatini", + "es": "Esuatini", + "en": "Eswatini", + "pt_BR": "Eswatini", + "sr-Cyrl": "Свазиланд", + "sr-Latn": "Svaziland", + "zh_TW": "å²ç“¦å¸å°¼", + "tr": "Esvatini", + "ro": "Eswatini", + "ar": "إسواتيني", + "fa": "اسواتینی", + "yue": "æ–¯å¨å£«è˜­" + }, + flag: "🇸🇿", + code: "SZ", + dialCode: "268", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Sweden", + nameTranslations: { + "sk": "Å védsko", + "se": "Ruoŧŧa", + "pl": "Szwecja", + "no": "Sverige", + "ja": "スウェーデン", + "it": "Svezia", + "zh": "瑞典", + "nl": "Zweden", + "de": "Schweden", + "fr": "Suède", + "es": "Suecia", + "en": "Sweden", + "pt_BR": "Suécia", + "sr-Cyrl": "ШведÑка", + "sr-Latn": "Å vedska", + "zh_TW": "瑞典", + "tr": "İsveç", + "ro": "Suedia", + "ar": "السويد", + "fa": "سوئد", + "yue": "瑞典" + }, + flag: "🇸🇪", + code: "SE", + dialCode: "46", + minLength: 7, + maxLength: 13, + ), + Country( + name: "Switzerland", + nameTranslations: { + "sk": "Å vajÄiarsko", + "se": "Å veica", + "pl": "Szwajcaria", + "no": "Sveits", + "ja": "スイス", + "it": "Svizzera", + "zh": "瑞士", + "nl": "Zwitserland", + "de": "Schweiz", + "fr": "Suisse", + "es": "Suiza", + "en": "Switzerland", + "pt_BR": "Suíça", + "sr-Cyrl": "ШвајцарÑка", + "sr-Latn": "Å vajcarska", + "zh_TW": "瑞士", + "tr": "İsviçre", + "ro": "ElveÅ£ia", + "ar": "سويسرا", + "fa": "سوئیس", + "yue": "瑞士" + }, + flag: "🇨🇭", + code: "CH", + dialCode: "41", + minLength: 9, + maxLength: 12, + ), + Country( + name: "Syrian Arab Republic", + nameTranslations: { + "sk": "Sýria", + "se": "Syria", + "pl": "Syria", + "no": "Syria", + "ja": "シリア", + "it": "Siria", + "zh": "å™åˆ©äºš", + "nl": "Syrië", + "de": "Syrien", + "fr": "Syrie", + "es": "Siria", + "en": "Syria", + "pt_BR": "Síria", + "sr-Cyrl": "Сирија", + "sr-Latn": "Sirija", + "zh_TW": "敘利亞", + "tr": "Suriye", + "ro": "Siria", + "ar": "سوريا", + "fa": "سوریه", + "yue": "阿拉伯敘利亞共和國" + }, + flag: "🇸🇾", + code: "SY", + dialCode: "963", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Taiwan", + nameTranslations: { + "sk": "Taiwan", + "se": "Taiwan", + "pl": "Tajwan", + "no": "Taiwan", + "ja": "å°æ¹¾", + "it": "Taiwan", + "zh": "å°æ¹¾", + "nl": "Taiwan", + "de": "Taiwan", + "fr": "Taïwan", + "es": "Taiwán", + "en": "Taiwan", + "pt_BR": "Taiwan", + "sr-Cyrl": "Тајван", + "sr-Latn": "Tajvan", + "zh_TW": "å°ç£", + "tr": "Tayvan", + "ro": "Taiwan", + "ar": "تايوان", + "fa": "تایوان", + "yue": "å°ç£" + }, + flag: "🇹🇼", + code: "TW", + dialCode: "886", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Tajikistan", + nameTranslations: { + "sk": "Tadžikistan", + "se": "Tažikistan", + "pl": "Tadżykistan", + "no": "Tadsjikistan", + "ja": "タジキスタン", + "it": "Tagikistan", + "zh": "å¡”å‰å…‹æ–¯å¦", + "nl": "Tadzjikistan", + "de": "Tadschikistan", + "fr": "Tadjikistan", + "es": "Tayikistán", + "en": "Tajikistan", + "pt_BR": "Tajiquistão", + "sr-Cyrl": "ТаџикиÑтан", + "sr-Latn": "Tadžikistan", + "zh_TW": "å¡”å‰å…‹", + "tr": "Tacikistan", + "ro": "Tadiquistão", + "ar": "طاجيكستان", + "fa": "تاجیکستان", + "yue": "å¡”å‰å…‹æ–¯å¦" + }, + flag: "🇹🇯", + code: "TJ", + dialCode: "992", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Tanzania, United Republic of Tanzania", + nameTranslations: { + "sk": "Tanzánia", + "se": "Tanzánia", + "pl": "Tanzania", + "no": "Tanzania", + "ja": "タンザニア", + "it": "Tanzania", + "zh": "妿¡‘尼亚", + "nl": "Tanzania", + "de": "Tansania", + "fr": "Tanzanie", + "es": "Tanzania", + "en": "Tanzania", + "pt_BR": "Tanzânia", + "sr-Cyrl": "Танзанија", + "sr-Latn": "Tanzanija", + "zh_TW": "å¦å°šå°¼äºž", + "tr": "Tanzanya", + "ro": "Tanzania", + "ar": "تنزانيا", + "fa": "تانزانیا", + "yue": "妿¡‘尼亞,è¯åˆå…±å’Œåœ‹" + }, + flag: "🇹🇿", + code: "TZ", + dialCode: "255", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Thailand", + nameTranslations: { + "sk": "Thajsko", + "se": "Thaieana", + "pl": "Tajlandia", + "no": "Thailand", + "ja": "タイ", + "it": "Thailandia", + "zh": "泰国", + "nl": "Thailand", + "de": "Thailand", + "fr": "Thaïlande", + "es": "Tailandia", + "en": "Thailand", + "pt_BR": "Tailândia", + "sr-Cyrl": "Тајланд", + "sr-Latn": "Tajland", + "zh_TW": "泰國", + "tr": "Tayland", + "ro": "Tailanda", + "ar": "تايلاند", + "fa": "تایلند", + "yue": "泰國" + }, + flag: "🇹🇭", + code: "TH", + dialCode: "66", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Timor-Leste", + nameTranslations: { + "sk": "Východný Timor", + "se": "Nuorta-Timor", + "pl": "Timor Wschodni", + "no": "Øst-Timor", + "ja": "æ±ãƒ†ã‚£ãƒ¢ãƒ¼ãƒ«", + "it": "Timor Est", + "zh": "ä¸œå¸æ±¶", + "nl": "Oost-Timor", + "de": "Timor-Leste", + "fr": "Timor oriental", + "es": "Timor-Leste", + "en": "Timor-Leste", + "pt_BR": "Timor-Leste", + "sr-Cyrl": "ИÑточни Тимор", + "sr-Latn": "IstoÄni Timor", + "zh_TW": "æ±å¸æ±¶", + "tr": "DoÄŸu Timor", + "ro": "Timorul de Est", + "ar": "تيمور الشرقية", + "fa": "تیمور شرقی", + "yue": "æ±å¸æ±¶" + }, + flag: "🇹🇱", + code: "TL", + dialCode: "670", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Togo", + nameTranslations: { + "sk": "Togo", + "se": "Togo", + "pl": "Togo", + "no": "Togo", + "ja": "トーゴ", + "it": "Togo", + "zh": "多哥", + "nl": "Togo", + "de": "Togo", + "fr": "Togo", + "es": "Togo", + "en": "Togo", + "pt_BR": "Ir", + "sr-Cyrl": "Того", + "sr-Latn": "Togo", + "zh_TW": "多哥", + "tr": "Togo", + "ro": "Togo", + "ar": "توغو", + "fa": "توگو", + "yue": "多哥" + }, + flag: "🇹🇬", + code: "TG", + dialCode: "228", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Tokelau", + nameTranslations: { + "sk": "Tokelau", + "se": "Tokelau", + "pl": "Tokelau", + "no": "Tokelau", + "ja": "トケラウ", + "it": "Tokelau", + "zh": "托克劳", + "nl": "Tokelau", + "de": "Tokelau", + "fr": "Tokelau", + "es": "Tokelau", + "en": "Tokelau", + "pt_BR": "Tokelau", + "sr-Cyrl": "Токелау", + "sr-Latn": "Tokelau", + "zh_TW": "托克勞", + "tr": "Tokelau", + "ro": "Tokelau", + "ar": "توكيلاو", + "fa": "توکلائو", + "yue": "托克劳" + }, + flag: "🇹🇰", + code: "TK", + dialCode: "690", + minLength: 4, + maxLength: 4, + ), + Country( + name: "Tonga", + nameTranslations: { + "sk": "Tonga", + "se": "Tonga", + "pl": "Tonga", + "no": "Tonga", + "ja": "トンガ", + "it": "Tonga", + "zh": "汤加", + "nl": "Tonga", + "de": "Tonga", + "fr": "Tonga", + "es": "Tonga", + "en": "Tonga", + "pt_BR": "Tonga", + "sr-Cyrl": "Тонга", + "sr-Latn": "Tonga", + "zh_TW": "æ±åŠ ", + "tr": "Tonga", + "ro": "Tonga", + "ar": "تونغا", + "fa": "تونگا", + "yue": "湯加" + }, + flag: "🇹🇴", + code: "TO", + dialCode: "676", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Trinidad and Tobago", + nameTranslations: { + "sk": "Trinidad a Tobago", + "se": "Trinidad ja Tobago", + "pl": "Trynidad i Tobago", + "no": "Trinidad og Tobago", + "ja": "トリニダード・トãƒã‚´", + "it": "Trinidad e Tobago", + "zh": "特立尼达和多巴哥", + "nl": "Trinidad en Tobago", + "de": "Trinidad und Tobago", + "fr": "Trinité-et-Tobago", + "es": "Trinidad y Tobago", + "en": "Trinidad & Tobago", + "pt_BR": "Trinidad e Tobago", + "sr-Cyrl": "Тринидад и Тобаго", + "sr-Latn": "Trinidad i Tobago", + "zh_TW": "åƒé‡Œé”åŠæ‰˜å·´å“¥", + "tr": "Trinidad ve Tobago", + "ro": "Trinidad ÅŸi Tobago", + "ar": "ترينيداد وتوباغو", + "fa": "ترینیداد Ùˆ توباگو", + "yue": "特立尼é”和多巴哥" + }, + flag: "🇹🇹", + code: "TT", + dialCode: "1868", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Tunisia", + nameTranslations: { + "sk": "Tunisko", + "se": "Tunisia", + "pl": "Tunezja", + "no": "Tunisia", + "ja": "ãƒãƒ¥ãƒ‹ã‚¸ã‚¢", + "it": "Tunisia", + "zh": "çªå°¼æ–¯", + "nl": "Tunesië", + "de": "Tunesien", + "fr": "Tunisie", + "es": "Túnez", + "en": "Tunisia", + "pt_BR": "Tunísia", + "sr-Cyrl": "ТуниÑ", + "sr-Latn": "Tunis", + "zh_TW": "çªå°¼è¥¿äºž", + "tr": "Tunus", + "ro": "Tunisia", + "ar": "تونس", + "fa": "تونس", + "yue": "çªå°¼æ–¯" + }, + flag: "🇹🇳", + code: "TN", + dialCode: "216", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Turkey", + nameTranslations: { + "sk": "Turecko", + "se": "Durka", + "pl": "Turcja", + "no": "Tyrkia", + "ja": "トルコ", + "it": "Turchia", + "zh": "土耳其", + "nl": "Turkije", + "de": "Türkei", + "fr": "Turquie", + "es": "Turquía", + "en": "Turkey", + "pt_BR": "Peru", + "sr-Cyrl": "ТурÑка", + "sr-Latn": "Turska", + "zh_TW": "土耳其", + "tr": "Türkiye", + "ro": "Turcia", + "ar": "تركيا", + "fa": "ترکیه", + "yue": "土耳其" + }, + flag: "🇹🇷", + code: "TR", + dialCode: "90", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Turkmenistan", + nameTranslations: { + "sk": "Turkménsko", + "se": "Turkmenistan", + "pl": "Turkmenistan", + "no": "Turkmenistan", + "ja": "トルクメニスタン", + "it": "Turkmenistan", + "zh": "土库曼斯å¦", + "nl": "Turkmenistan", + "de": "Turkmenistan", + "fr": "Turkménistan", + "es": "Turkmenistán", + "en": "Turkmenistan", + "pt_BR": "Turcomenistão", + "sr-Cyrl": "ТуркмениÑтан", + "sr-Latn": "Turkmenistan", + "zh_TW": "土庫曼", + "tr": "Türkmenistan", + "ro": "Turkmenistan", + "ar": "تركمانستان", + "fa": "ترکمنستان", + "yue": "土庫曼斯å¦" + }, + flag: "🇹🇲", + code: "TM", + dialCode: "993", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Turks and Caicos Islands", + nameTranslations: { + "sk": "Turks a Caicos", + "se": "Turks ja Caicos-sullot", + "pl": "Turks i Caicos", + "no": "Turks- og Caicosøyene", + "ja": "タークス・カイコス諸島", + "it": "Isole Turks e Caicos", + "zh": "特克斯和凯科斯群岛", + "nl": "Turks- en Caicoseilanden", + "de": "Turks- und Caicosinseln", + "fr": "ÃŽles Turques-et-Caïques", + "es": "Islas Turcas y Caicos", + "en": "Turks & Caicos Islands", + "pt_BR": "Ilhas Turks e Caicos", + "sr-Cyrl": "Ð¢ÑƒÑ€ÐºÑ Ð¸ КајкоÑ", + "sr-Latn": "Turks i Kajkos", + "zh_TW": "土克斯åŠé–‹ç§‘斯群島", + "tr": "Turks ve Caicos Adaları", + "ro": "Insulele Turks È™i Caicos", + "ar": "جزر توركس وكايكوس", + "fa": "جزایر تورکس Ùˆ کایکوس", + "yue": "特克斯åŒå‡¯ç§‘斯群岛" + }, + flag: "🇹🇨", + code: "TC", + dialCode: "1649", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Tuvalu", + nameTranslations: { + "sk": "Tuvalu", + "se": "Tuvalu", + "pl": "Tuvalu", + "no": "Tuvalu", + "ja": "ツãƒãƒ«", + "it": "Tuvalu", + "zh": "图瓦å¢", + "nl": "Tuvalu", + "de": "Tuvalu", + "fr": "Tuvalu", + "es": "Tuvalu", + "en": "Tuvalu", + "pt_BR": "Tuvalu", + "sr-Cyrl": "Тувалу", + "sr-Latn": "Tuvalu", + "zh_TW": "圖瓦盧", + "tr": "Tuvalu", + "ro": "Tuvalu", + "ar": "ØªÙˆÙØ§Ù„Ùˆ", + "fa": "تووالو", + "yue": "圖瓦盧" + }, + flag: "🇹🇻", + code: "TV", + dialCode: "688", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Uganda", + nameTranslations: { + "sk": "Uganda", + "se": "Uganda", + "pl": "Uganda", + "no": "Uganda", + "ja": "ウガンダ", + "it": "Uganda", + "zh": "乌干达", + "nl": "Oeganda", + "de": "Uganda", + "fr": "Ouganda", + "es": "Uganda", + "en": "Uganda", + "pt_BR": "Uganda", + "sr-Cyrl": "Уганда", + "sr-Latn": "Uganda", + "zh_TW": "çƒå¹²é”", + "tr": "Uganda", + "ro": "Uganda", + "ar": "أوغندا", + "fa": "اوگاندا", + "yue": "çƒå¹²é”" + }, + flag: "🇺🇬", + code: "UG", + dialCode: "256", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Ukraine", + nameTranslations: { + "sk": "Ukrajina", + "se": "Ukraina", + "pl": "Ukraina", + "no": "Ukraina", + "ja": "ウクライナ", + "it": "Ucraina", + "zh": "乌克兰", + "nl": "Oekraïne", + "de": "Ukraine", + "fr": "Ukraine", + "es": "Ucrania", + "en": "Ukraine", + "pt_BR": "Ucrânia", + "sr-Cyrl": "Украјина", + "sr-Latn": "Ukrajina", + "zh_TW": "çƒå…‹è˜­", + "tr": "Ukrayna", + "ro": "Ucraína", + "ar": "أوكرانيا", + "fa": "اوکراین", + "yue": "çƒå…‹è˜­" + }, + flag: "🇺🇦", + code: "UA", + dialCode: "380", + minLength: 9, + maxLength: 9, + ), + Country( + name: "United Arab Emirates", + nameTranslations: { + "sk": "Spojené arabské emiráty", + "se": "Ovttastuvvan Arábaemiráhtat", + "pl": "Zjednoczone Emiraty Arabskie", + "no": "De forente arabiske emirater", + "ja": "アラブ首長国連邦", + "it": "Emirati Arabi Uniti", + "zh": "阿拉伯è”åˆé…‹é•¿å›½", + "nl": "Verenigde Arabische Emiraten", + "de": "Vereinigte Arabische Emirate", + "fr": "Émirats arabes unis", + "es": "Emiratos Ãrabes Unidos", + "en": "United Arab Emirates", + "pt_BR": "Emirados Ãrabes Unidos", + "sr-Cyrl": "Уједињени ÐрапÑки Емирати", + "sr-Latn": "Ujedinjeni Arapski Emirati", + "zh_TW": "阿拉伯è¯åˆå¤§å…¬åœ‹", + "tr": "BirleÅŸik Arap Emirlikleri", + "ro": "Emiratele Arabe Unite", + "ar": "الإمارات العربية المتحدة", + "fa": "امارات متحده عربی", + "yue": "阿拉伯è¯åˆé…‹é•·åœ‹" + }, + flag: "🇦🇪", + code: "AE", + dialCode: "971", + minLength: 9, + maxLength: 9, + ), + Country( + name: "United Kingdom", + nameTranslations: { + "sk": "Spojené kráľovstvo", + "se": "Stuorra-Británnia", + "pl": "Wielka Brytania", + "no": "Storbritannia", + "ja": "イギリス", + "it": "Regno Unito", + "zh": "英国", + "nl": "Verenigd Koninkrijk", + "de": "Vereinigtes Königreich", + "fr": "Royaume-Uni", + "es": "Reino Unido", + "en": "United Kingdom", + "pt_BR": "Reino Unido", + "sr-Cyrl": "Уједињено КраљевÑтво", + "sr-Latn": "Ujedinjeno Kraljevstvo", + "zh_TW": "英國", + "tr": "Büyük Britanya ve Kuzey İrlanda BirleÅŸik Krallığ", + "ro": "Regatul Unit al Marii Britanii È™i Irlandei de Nord", + "ar": "المملكة المتحدة", + "fa": "بریتانیا", + "yue": "大ä¸åˆ—é¡›åŠåŒ—愛爾蘭è¯åˆçŽ‹åœ‹" + }, + flag: "🇬🇧", + code: "GB", + dialCode: "44", + minLength: 10, + maxLength: 10, + ), + Country( + name: "United States", + nameTranslations: { + "sk": "Spojené Å¡táty", + "se": "Amerihká ovttastuvvan stáhtat", + "pl": "Stany Zjednoczone", + "no": "USA", + "ja": "アメリカåˆè¡†å›½", + "it": "Stati Uniti", + "zh": "美国", + "nl": "Verenigde Staten", + "de": "Vereinigte Staaten", + "fr": "États-Unis", + "es": "Estados Unidos", + "en": "United States", + "pt_BR": "Estados Unidos", + "sr-Cyrl": "Сједињене Ðмеричке Државе", + "sr-Latn": "Sjedinjene AmeriÄke Države", + "zh_TW": "美國", + "tr": "Amerika BirleÅŸik Devletleri", + "ro": "Statele Unite ale Americii", + "ar": "الولايات المتحدة", + "fa": "ایالات متحده آمریکا", + "yue": "美利堅郃眾囯" + }, + flag: "🇺🇸", + code: "US", + dialCode: "1", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Uruguay", + nameTranslations: { + "sk": "Uruguaj", + "se": "Uruguay", + "pl": "Urugwaj", + "no": "Uruguay", + "ja": "ウルグアイ", + "it": "Uruguay", + "zh": "乌拉圭", + "nl": "Uruguay", + "de": "Uruguay", + "fr": "Uruguay", + "es": "Uruguay", + "en": "Uruguay", + "pt_BR": "Uruguai", + "sr-Cyrl": "Уругвај", + "sr-Latn": "Urugvaj", + "zh_TW": "çƒæ‹‰åœ­", + "tr": "Uruguay", + "ro": "Uruguay", + "ar": "الأوروغواي", + "fa": "اروگوئه", + "yue": "çƒæ‹‰åœ­" + }, + flag: "🇺🇾", + code: "UY", + dialCode: "598", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Uzbekistan", + nameTranslations: { + "sk": "Uzbekistan", + "se": "Usbekistan", + "pl": "Uzbekistan", + "no": "Usbekistan", + "ja": "ウズベキスタン", + "it": "Uzbekistan", + "zh": "乌兹别克斯å¦", + "nl": "Oezbekistan", + "de": "Usbekistan", + "fr": "Ouzbékistan", + "es": "Uzbekistán", + "en": "Uzbekistan", + "pt_BR": "Uzbequistão", + "sr-Cyrl": "УзбекиÑтан", + "sr-Latn": "Uzbekistan", + "zh_TW": "çƒçŽ†åˆ¥å…‹", + "tr": "Özbekistan", + "ro": "Uzbekistan", + "ar": "أوزبكستان", + "fa": "ازبکستان", + "yue": "月å³åˆ¥" + }, + flag: "🇺🇿", + code: "UZ", + dialCode: "998", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Vanuatu", + nameTranslations: { + "sk": "Vanuatu", + "se": "Vanuatu", + "pl": "Vanuatu", + "no": "Vanuatu", + "ja": "ãƒãƒŒã‚¢ãƒ„", + "it": "Vanuatu", + "zh": "瓦努阿图", + "nl": "Vanuatu", + "de": "Vanuatu", + "fr": "Vanuatu", + "es": "Vanuatu", + "en": "Vanuatu", + "pt_BR": "Vanuatu", + "sr-Cyrl": "Вануату", + "sr-Latn": "Vanuatu", + "zh_TW": "瓦努阿圖", + "tr": "Vanuatu", + "ro": "Vanuatu", + "ar": "ÙØ§Ù†ÙˆØ§ØªÙˆ", + "fa": "وانواتو", + "yue": "瓦努阿圖" + }, + flag: "🇻🇺", + code: "VU", + dialCode: "678", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Venezuela, Bolivarian Republic of Venezuela", + nameTranslations: { + "sk": "Venezuela", + "se": "Venezuela", + "pl": "Wenezuela", + "no": "Venezuela", + "ja": "ベãƒã‚ºã‚¨ãƒ©", + "it": "Venezuela", + "zh": "委内瑞拉", + "nl": "Venezuela", + "de": "Venezuela", + "fr": "Venezuela", + "es": "Venezuela", + "en": "Venezuela", + "pt_BR": "Venezuela", + "sr-Cyrl": "Венецуела", + "sr-Latn": "Venecuela", + "zh_TW": "委內瑞拉", + "tr": "Venezuela", + "ro": "Venezuela", + "ar": "Ùنزويلا", + "fa": "ونزوئلا", + "yue": "委內瑞拉(玻利瓦爾共和國)" + }, + flag: "🇻🇪", + code: "VE", + dialCode: "58", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Vietnam", + nameTranslations: { + "sk": "Vietnam", + "se": "Vietnam", + "pl": "Wietnam", + "no": "Vietnam", + "ja": "ベトナム", + "it": "Vietnam", + "zh": "è¶Šå—", + "nl": "Vietnam", + "de": "Vietnam", + "fr": "Vietnam", + "es": "Vietnam", + "en": "Vietnam", + "pt_BR": "Vietnã", + "sr-Cyrl": "Вијетнам", + "sr-Latn": "Vijetnam", + "zh_TW": "è¶Šå—", + "tr": "Vietnam", + "ro": "Vietnam", + "ar": "Ùيتنام", + "fa": "ویتنام", + "yue": "è¶Šå—" + }, + flag: "🇻🇳", + code: "VN", + dialCode: "84", + minLength: 11, + maxLength: 11, + ), + Country( + name: "Virgin Islands, British", + nameTranslations: { + "sk": "Britské Panenské ostrovy", + "se": "Brittania Virgin-sullot", + "pl": "Brytyjskie Wyspy Dziewicze", + "no": "De britiske jomfruøyene", + "ja": "英領ヴァージン諸島", + "it": "Isole Vergini Britanniche", + "zh": "英属维尔京群岛", + "nl": "Britse Maagdeneilanden", + "de": "Britische Jungferninseln", + "fr": "ÃŽles Vierges britanniques", + "es": "Islas Vírgenes Británicas", + "en": "British Virgin Islands", + "pt_BR": "Ilhas Virgens Britânicas", + "sr-Cyrl": "БританÑка ДевичанÑка ОÑтрва", + "sr-Latn": "Britanska DeviÄanska Ostrva", + "zh_TW": "英屬維京群島", + "tr": "Britanya Virjin Adaları", + "ro": "Insulele Virgine Britanice", + "ar": "جزر العذراء البريطانية", + "fa": "جزایر ویرجین بریتانیا", + "yue": "維爾京群島(英國)" + }, + flag: "🇻🇬", + code: "VG", + dialCode: "1284", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Virgin Islands, U.S.", + nameTranslations: { + "sk": "Americké Panenské ostrovy", + "se": "AOS Virgin-sullot", + "pl": "Wyspy Dziewicze Stanów Zjednoczonych", + "no": "De amerikanske jomfruøyene", + "ja": "米領ヴァージン諸島", + "it": "Isole Vergini Americane", + "zh": "美属维尔京群岛", + "nl": "Amerikaanse Maagdeneilanden", + "de": "Amerikanische Jungferninseln", + "fr": "ÃŽles Vierges des États-Unis", + "es": "Islas Vírgenes de EE. UU.", + "en": "U.S. Virgin Islands", + "pt_BR": "Ilhas Virgens Americanas", + "sr-Cyrl": "Ðмепичка ДевичанÑка ОÑтрва", + "sr-Latn": "AmeriÄka DeviÄanska Ostrva", + "zh_TW": "美屬維京群島", + "tr": "Amerika BirleÅŸik Devletleri Virjin Adaları", + "ro": "Insulele Virgine Americane", + "ar": "جزر العذراء الأمريكية", + "fa": "جزایر ویرجین ایالات متحده آمریکا", + "yue": "維爾京群島(美國)" + }, + flag: "🇻🇮", + code: "VI", + dialCode: "1340", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Wallis and Futuna", + nameTranslations: { + "sk": "Wallis a Futuna", + "se": "Wallis ja Futuna", + "pl": "Wallis i Futuna", + "no": "Wallis og Futuna", + "ja": "ウォリス・フツナ", + "it": "Wallis e Futuna", + "zh": "瓦利斯和富图纳", + "nl": "Wallis en Futuna", + "de": "Wallis und Futuna", + "fr": "Wallis-et-Futuna", + "es": "Wallis y Futuna", + "en": "Wallis & Futuna", + "pt_BR": "Wallis e Futuna", + "sr-Cyrl": "Ð’Ð°Ð»Ð¸Ñ Ð¸ Футуна", + "sr-Latn": "Valis i Futuna", + "zh_TW": "瓦利斯和富圖那", + "tr": "Wallis ve Futuna", + "ro": "Wallis È™i Futuna", + "ar": "والس ÙˆÙوتونا", + "fa": "والیس Ùˆ Ùوتونا", + "yue": "瓦利斯åŒå¯Œå›¾çº³" + }, + flag: "🇼🇫", + code: "WF", + dialCode: "681", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Yemen", + nameTranslations: { + "sk": "Jemen", + "se": "Jemen", + "pl": "Jemen", + "no": "Jemen", + "ja": "イエメン", + "it": "Yemen", + "zh": "也门", + "nl": "Jemen", + "de": "Jemen", + "fr": "Yémen", + "es": "Yemen", + "en": "Yemen", + "pt_BR": "Iémen", + "sr-Cyrl": "Јемен", + "sr-Latn": "Jemen", + "zh_TW": "葉門", + "tr": "Yemen", + "ro": "Yemen", + "ar": "اليمن", + "fa": "یمن", + "yue": "也門" + }, + flag: "🇾🇪", + code: "YE", + dialCode: "967", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Zambia", + nameTranslations: { + "sk": "Zambia", + "se": "Zambia", + "pl": "Zambia", + "no": "Zambia", + "ja": "ザンビア", + "it": "Zambia", + "zh": "赞比亚", + "nl": "Zambia", + "de": "Sambia", + "fr": "Zambie", + "es": "Zambia", + "en": "Zambia", + "pt_BR": "Zâmbia", + "sr-Cyrl": "Замбија", + "sr-Latn": "Zambija", + "zh_TW": "贊比亞", + "tr": "Zambiya", + "ro": "Zambia", + "ar": "زامبيا", + "fa": "زامبیا", + "yue": "贊比亞" + }, + flag: "🇿🇲", + code: "ZM", + dialCode: "260", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Zimbabwe", + nameTranslations: { + "sk": "Zimbabwe", + "se": "Zimbabwe", + "pl": "Zimbabwe", + "no": "Zimbabwe", + "ja": "ジンãƒãƒ–エ", + "it": "Zimbabwe", + "zh": "津巴布韦", + "nl": "Zimbabwe", + "de": "Simbabwe", + "fr": "Zimbabwe", + "es": "Zimbabue", + "en": "Zimbabwe", + "pt_BR": "Zimbábue", + "sr-Cyrl": "Зимбабве", + "sr-Latn": "Zimbabve", + "zh_TW": "辛巴å¨", + "tr": "Zimbabve", + "ro": "Zimbabwe", + "ar": "زيمبابوي", + "fa": "زیمبابوه", + "yue": "津巴布韋" + }, + flag: "🇿🇼", + code: "ZW", + dialCode: "263", + minLength: 9, + maxLength: 9) +]; + +class Country { + final String name; + final Map nameTranslations; + final String flag; + final String code; + final String dialCode; + final String regionCode; + final int minLength; + final int maxLength; + + const Country({ + required this.name, + required this.flag, + required this.code, + required this.dialCode, + required this.nameTranslations, + required this.minLength, + required this.maxLength, + this.regionCode = "", + }); + + String get fullCountryCode { + return dialCode + regionCode; + } + + String get displayCC { + if (regionCode != "") { + return "$dialCode $regionCode"; + } + return dialCode; + } + + String localizedName(String languageCode) { + return nameTranslations[languageCode] ?? name; + } +} diff --git a/lib/controller/local/phone_intel/country_picker_dialog.dart b/lib/controller/local/phone_intel/country_picker_dialog.dart new file mode 100644 index 0000000..ddc75d4 --- /dev/null +++ b/lib/controller/local/phone_intel/country_picker_dialog.dart @@ -0,0 +1,168 @@ +import 'package:flutter/foundation.dart' show kIsWeb; +import 'package:flutter/material.dart'; +import 'package:sefer_driver/controller/local/phone_intel/helpers.dart'; + +import 'countries.dart'; + +class PickerDialogStyle { + final Color? backgroundColor; + + final TextStyle? countryCodeStyle; + + final TextStyle? countryNameStyle; + + final Widget? listTileDivider; + + final EdgeInsets? listTilePadding; + + final EdgeInsets? padding; + + final Color? searchFieldCursorColor; + + final InputDecoration? searchFieldInputDecoration; + + final EdgeInsets? searchFieldPadding; + + final double? width; + + PickerDialogStyle({ + this.backgroundColor, + this.countryCodeStyle, + this.countryNameStyle, + this.listTileDivider, + this.listTilePadding, + this.padding, + this.searchFieldCursorColor, + this.searchFieldInputDecoration, + this.searchFieldPadding, + this.width, + }); +} + +class CountryPickerDialog extends StatefulWidget { + final List countryList; + final Country selectedCountry; + final ValueChanged onCountryChanged; + final String searchText; + final List filteredCountries; + final PickerDialogStyle? style; + final String languageCode; + + const CountryPickerDialog({ + Key? key, + required this.searchText, + required this.languageCode, + required this.countryList, + required this.onCountryChanged, + required this.selectedCountry, + required this.filteredCountries, + this.style, + }) : super(key: key); + + @override + State createState() => _CountryPickerDialogState(); +} + +class _CountryPickerDialogState extends State { + late List _filteredCountries; + late Country _selectedCountry; + + @override + void initState() { + _selectedCountry = widget.selectedCountry; + _filteredCountries = widget.filteredCountries.toList() + ..sort( + (a, b) => a + .localizedName(widget.languageCode) + .compareTo(b.localizedName(widget.languageCode)), + ); + + super.initState(); + } + + @override + Widget build(BuildContext context) { + final mediaWidth = MediaQuery.of(context).size.width; + final width = widget.style?.width ?? mediaWidth; + const defaultHorizontalPadding = 40.0; + const defaultVerticalPadding = 24.0; + return Dialog( + insetPadding: EdgeInsets.symmetric( + vertical: defaultVerticalPadding, + horizontal: mediaWidth > (width + defaultHorizontalPadding * 2) + ? (mediaWidth - width) / 2 + : defaultHorizontalPadding), + backgroundColor: widget.style?.backgroundColor, + child: Container( + padding: widget.style?.padding ?? const EdgeInsets.all(10), + child: Column( + children: [ + Padding( + padding: + widget.style?.searchFieldPadding ?? const EdgeInsets.all(0), + child: TextField( + cursorColor: widget.style?.searchFieldCursorColor, + decoration: widget.style?.searchFieldInputDecoration ?? + InputDecoration( + suffixIcon: const Icon(Icons.search), + labelText: widget.searchText, + ), + onChanged: (value) { + _filteredCountries = widget.countryList.stringSearch(value) + ..sort( + (a, b) => a + .localizedName(widget.languageCode) + .compareTo(b.localizedName(widget.languageCode)), + ); + if (mounted) setState(() {}); + }, + ), + ), + const SizedBox(height: 20), + Expanded( + child: ListView.builder( + shrinkWrap: true, + itemCount: _filteredCountries.length, + itemBuilder: (ctx, index) => Column( + children: [ + ListTile( + leading: kIsWeb + ? Image.asset( + 'assets/flags/${_filteredCountries[index].code.toLowerCase()}.png', + package: 'intl_phone_field', + width: 32, + ) + : Text( + _filteredCountries[index].flag, + style: const TextStyle(fontSize: 18), + ), + contentPadding: widget.style?.listTilePadding, + title: Text( + _filteredCountries[index] + .localizedName(widget.languageCode), + style: widget.style?.countryNameStyle ?? + const TextStyle(fontWeight: FontWeight.w700), + ), + trailing: Text( + '+${_filteredCountries[index].dialCode}', + style: widget.style?.countryCodeStyle ?? + const TextStyle(fontWeight: FontWeight.w700), + ), + onTap: () { + _selectedCountry = _filteredCountries[index]; + widget.onCountryChanged(_selectedCountry); + Navigator.of(context).pop(); + }, + ), + widget.style?.listTileDivider ?? + const Divider(thickness: 1), + ], + ), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/controller/local/phone_intel/helpers.dart b/lib/controller/local/phone_intel/helpers.dart new file mode 100644 index 0000000..c2b3957 --- /dev/null +++ b/lib/controller/local/phone_intel/helpers.dart @@ -0,0 +1,31 @@ +import 'countries.dart'; + +bool isNumeric(String s) => + s.isNotEmpty && int.tryParse(s.replaceAll("+", "")) != null; + +String removeDiacritics(String str) { + var withDia = + 'ÀÃÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÃÃŒÃÃŽÃìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž'; + var withoutDia = + 'AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz'; + + for (int i = 0; i < withDia.length; i++) { + str = str.replaceAll(withDia[i], withoutDia[i]); + } + + return str; +} + +extension CountryExtensions on List { + List stringSearch(String search) { + search = removeDiacritics(search.toLowerCase()); + return where( + (country) => isNumeric(search) || search.startsWith("+") + ? country.dialCode.contains(search) + : removeDiacritics(country.name.replaceAll("+", "").toLowerCase()) + .contains(search) || + country.nameTranslations.values.any((element) => + removeDiacritics(element.toLowerCase()).contains(search)), + ).toList(); + } +} diff --git a/lib/controller/local/phone_intel/intl_phone_field.dart b/lib/controller/local/phone_intel/intl_phone_field.dart new file mode 100644 index 0000000..b918bc6 --- /dev/null +++ b/lib/controller/local/phone_intel/intl_phone_field.dart @@ -0,0 +1,521 @@ +library intl_phone_field; + +import 'dart:async'; +import 'package:flutter/foundation.dart' show kIsWeb; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import './countries.dart'; +import './phone_number.dart'; +import 'country_picker_dialog.dart'; +import 'helpers.dart'; + +class IntlPhoneField extends StatefulWidget { + /// The TextFormField key. + final GlobalKey? formFieldKey; + + /// Whether to hide the text being edited (e.g., for passwords). + final bool obscureText; + + /// How the text should be aligned horizontally. + final TextAlign textAlign; + + /// How the text should be aligned vertically. + final TextAlignVertical? textAlignVertical; + final VoidCallback? onTap; + + /// {@macro flutter.widgets.editableText.readOnly} + final bool readOnly; + final FormFieldSetter? onSaved; + + /// {@macro flutter.widgets.editableText.onChanged} + /// + /// See also: + /// + /// * [inputFormatters], which are called before [onChanged] + /// runs and can validate and change ("format") the input value. + /// * [onEditingComplete], [onSubmitted], [onSelectionChanged]: + /// which are more specialized input change notifications. + final ValueChanged? onChanged; + + final ValueChanged? onCountryChanged; + + /// An optional method that validates an input. Returns an error string to display if the input is invalid, or null otherwise. + /// + /// A [PhoneNumber] is passed to the validator as argument. + /// The validator can handle asynchronous validation when declared as a [Future]. + /// Or run synchronously when declared as a [Function]. + /// + /// By default, the validator checks whether the input number length is between selected country's phone numbers min and max length. + /// If `disableLengthCheck` is not set to `true`, your validator returned value will be overwritten by the default validator. + /// But, if `disableLengthCheck` is set to `true`, your validator will have to check phone number length itself. + final FutureOr Function(PhoneNumber?)? validator; + + /// {@macro flutter.widgets.editableText.keyboardType} + final TextInputType keyboardType; + + /// Controls the text being edited. + /// + /// If null, this widget will create its own [TextEditingController]. + final TextEditingController? controller; + + /// Defines the keyboard focus for this widget. + /// + /// The [focusNode] is a long-lived object that's typically managed by a + /// [StatefulWidget] parent. See [FocusNode] for more information. + /// + /// To give the keyboard focus to this widget, provide a [focusNode] and then + /// use the current [FocusScope] to request the focus: + /// + /// ```dart + /// FocusScope.of(context).requestFocus(myFocusNode); + /// ``` + /// + /// This happens automatically when the widget is tapped. + /// + /// To be notified when the widget gains or loses the focus, add a listener + /// to the [focusNode]: + /// + /// ```dart + /// focusNode.addListener(() { print(myFocusNode.hasFocus); }); + /// ``` + /// + /// If null, this widget will create its own [FocusNode]. + /// + /// ## Keyboard + /// + /// Requesting the focus will typically cause the keyboard to be shown + /// if it's not showing already. + /// + /// On Android, the user can hide the keyboard - without changing the focus - + /// with the system back button. They can restore the keyboard's visibility + /// by tapping on a text field. The user might hide the keyboard and + /// switch to a physical keyboard, or they might just need to get it + /// out of the way for a moment, to expose something it's + /// obscuring. In this case requesting the focus again will not + /// cause the focus to change, and will not make the keyboard visible. + /// + /// This widget builds an [EditableText] and will ensure that the keyboard is + /// showing when it is tapped by calling [EditableTextState.requestKeyboard()]. + final FocusNode? focusNode; + + /// {@macro flutter.widgets.editableText.onSubmitted} + /// + /// See also: + /// + /// * [EditableText.onSubmitted] for an example of how to handle moving to + /// the next/previous field when using [TextInputAction.next] and + /// [TextInputAction.previous] for [textInputAction]. + final void Function(String)? onSubmitted; + + /// If false the widget is "disabled": it ignores taps, the [TextFormField]'s + /// [decoration] is rendered in grey, + /// [decoration]'s [InputDecoration.counterText] is set to `""`, + /// and the drop down icon is hidden no matter [showDropdownIcon] value. + /// + /// If non-null this property overrides the [decoration]'s + /// [Decoration.enabled] property. + final bool enabled; + + /// The appearance of the keyboard. + /// + /// This setting is only honored on iOS devices. + /// + /// If unset, defaults to the brightness of [ThemeData.brightness]. + final Brightness? keyboardAppearance; + + /// Initial Value for the field. + /// This property can be used to pre-fill the field. + final String? initialValue; + + final String languageCode; + + /// 2 letter ISO Code or country dial code. + /// + /// ```dart + /// initialCountryCode: 'IN', // India + /// initialCountryCode: '+225', // Côte d'Ivoire + /// ``` + final String? initialCountryCode; + + /// List of Country to display see countries.dart for format + final List? countries; + + /// The decoration to show around the text field. + /// + /// By default, draws a horizontal line under the text field but can be + /// configured to show an icon, label, hint text, and error text. + /// + /// Specify null to remove the decoration entirely (including the + /// extra padding introduced by the decoration to save space for the labels). + final InputDecoration decoration; + + /// The style to use for the text being edited. + /// + /// This text style is also used as the base style for the [decoration]. + /// + /// If null, defaults to the `subtitle1` text style from the current [Theme]. + final TextStyle? style; + + /// Disable view Min/Max Length check + final bool disableLengthCheck; + + /// Won't work if [enabled] is set to `false`. + final bool showDropdownIcon; + + final BoxDecoration dropdownDecoration; + + /// The style use for the country dial code. + final TextStyle? dropdownTextStyle; + + /// {@macro flutter.widgets.editableText.inputFormatters} + final List? inputFormatters; + + /// The text that describes the search input field. + /// + /// When the input field is empty and unfocused, the label is displayed on top of the input field (i.e., at the same location on the screen where text may be entered in the input field). + /// When the input field receives focus (or if the field is non-empty), the label moves above (i.e., vertically adjacent to) the input field. + final String searchText; + + /// Position of an icon [leading, trailing] + final IconPosition dropdownIconPosition; + + /// Icon of the drop down button. + /// + /// Default is [Icon(Icons.arrow_drop_down)] + final Icon dropdownIcon; + + /// Whether this text field should focus itself if nothing else is already focused. + final bool autofocus; + + /// Autovalidate mode for text form field. + /// + /// If [AutovalidateMode.onUserInteraction], this FormField will only auto-validate after its content changes. + /// If [AutovalidateMode.always], it will auto-validate even without user interaction. + /// If [AutovalidateMode.disabled], auto-validation will be disabled. + /// + /// Defaults to [AutovalidateMode.onUserInteraction]. + final AutovalidateMode? autovalidateMode; + + /// Whether to show or hide country flag. + /// + /// Default value is `true`. + final bool showCountryFlag; + + /// Message to be displayed on autoValidate error + /// + /// Default value is `Invalid Mobile Number`. + final String? invalidNumberMessage; + + /// The color of the cursor. + final Color? cursorColor; + + /// How tall the cursor will be. + final double? cursorHeight; + + /// How rounded the corners of the cursor should be. + final Radius? cursorRadius; + + /// How thick the cursor will be. + final double cursorWidth; + + /// Whether to show cursor. + final bool? showCursor; + + /// The padding of the Flags Button. + /// + /// The amount of insets that are applied to the Flags Button. + /// + /// If unset, defaults to [EdgeInsets.zero]. + final EdgeInsetsGeometry flagsButtonPadding; + + /// The type of action button to use for the keyboard. + final TextInputAction? textInputAction; + + /// Optional set of styles to allow for customizing the country search + /// & pick dialog + final PickerDialogStyle? pickerDialogStyle; + + /// The margin of the country selector button. + /// + /// The amount of space to surround the country selector button. + /// + /// If unset, defaults to [EdgeInsets.zero]. + final EdgeInsets flagsButtonMargin; + + /// Enable the autofill hint for phone number. + final bool disableAutoFillHints; + + /// If null, default magnification configuration will be used. + final TextMagnifierConfiguration? magnifierConfiguration; + + const IntlPhoneField({ + Key? key, + this.formFieldKey, + this.initialCountryCode, + this.languageCode = 'en', + this.disableAutoFillHints = false, + this.obscureText = false, + this.textAlign = TextAlign.left, + this.textAlignVertical, + this.onTap, + this.readOnly = false, + this.initialValue, + this.keyboardType = TextInputType.phone, + this.controller, + this.focusNode, + this.decoration = const InputDecoration(), + this.style, + this.dropdownTextStyle, + this.onSubmitted, + this.validator, + this.onChanged, + this.countries, + this.onCountryChanged, + this.onSaved, + this.showDropdownIcon = true, + this.dropdownDecoration = const BoxDecoration(), + this.inputFormatters, + this.enabled = true, + this.keyboardAppearance, + @Deprecated('Use searchFieldInputDecoration of PickerDialogStyle instead') + this.searchText = 'Search country', + this.dropdownIconPosition = IconPosition.leading, + this.dropdownIcon = const Icon(Icons.arrow_drop_down), + this.autofocus = false, + this.textInputAction, + this.autovalidateMode = AutovalidateMode.onUserInteraction, + this.showCountryFlag = true, + this.cursorColor, + this.disableLengthCheck = false, + this.flagsButtonPadding = EdgeInsets.zero, + this.invalidNumberMessage = 'Invalid Mobile Number', + this.cursorHeight, + this.cursorRadius = Radius.zero, + this.cursorWidth = 2.0, + this.showCursor = true, + this.pickerDialogStyle, + this.flagsButtonMargin = EdgeInsets.zero, + this.magnifierConfiguration, + }) : super(key: key); + + @override + State createState() => _IntlPhoneFieldState(); +} + +class _IntlPhoneFieldState extends State { + late List _countryList; + late Country _selectedCountry; + late List filteredCountries; + late String number; + + String? validatorMessage; + + @override + void initState() { + super.initState(); + _countryList = widget.countries ?? countries; + filteredCountries = _countryList; + number = widget.initialValue ?? ''; + if (widget.initialCountryCode == null && number.startsWith('+')) { + number = number.substring(1); + // parse initial value + _selectedCountry = countries.firstWhere( + (country) => number.startsWith(country.fullCountryCode), + orElse: () => _countryList.first); + + // remove country code from the initial number value + number = number.replaceFirst( + RegExp("^${_selectedCountry.fullCountryCode}"), ""); + } else { + _selectedCountry = _countryList.firstWhere( + (item) => item.code == (widget.initialCountryCode ?? 'US'), + orElse: () => _countryList.first); + + // remove country code from the initial number value + if (number.startsWith('+')) { + number = number.replaceFirst( + RegExp("^\\+${_selectedCountry.fullCountryCode}"), ""); + } else { + number = number.replaceFirst( + RegExp("^${_selectedCountry.fullCountryCode}"), ""); + } + } + + if (widget.autovalidateMode == AutovalidateMode.always) { + final initialPhoneNumber = PhoneNumber( + countryISOCode: _selectedCountry.code, + countryCode: '+${_selectedCountry.dialCode}', + number: widget.initialValue ?? '', + ); + + final value = widget.validator?.call(initialPhoneNumber); + + if (value is String) { + validatorMessage = value; + } else { + (value as Future).then((msg) { + validatorMessage = msg; + }); + } + } + } + + Future _changeCountry() async { + filteredCountries = _countryList; + await showDialog( + context: context, + useRootNavigator: false, + builder: (context) => StatefulBuilder( + builder: (ctx, setState) => CountryPickerDialog( + languageCode: widget.languageCode.toLowerCase(), + style: widget.pickerDialogStyle, + filteredCountries: filteredCountries, + searchText: widget.searchText, + countryList: _countryList, + selectedCountry: _selectedCountry, + onCountryChanged: (Country country) { + _selectedCountry = country; + widget.onCountryChanged?.call(country); + setState(() {}); + }, + ), + ), + ); + if (mounted) setState(() {}); + } + + @override + Widget build(BuildContext context) { + return TextFormField( + key: widget.formFieldKey, + initialValue: (widget.controller == null) ? number : null, + autofillHints: widget.disableAutoFillHints + ? null + : [AutofillHints.telephoneNumberNational], + readOnly: widget.readOnly, + obscureText: widget.obscureText, + textAlign: widget.textAlign, + textAlignVertical: widget.textAlignVertical, + cursorColor: widget.cursorColor, + onTap: widget.onTap, + controller: widget.controller, + focusNode: widget.focusNode, + cursorHeight: widget.cursorHeight, + cursorRadius: widget.cursorRadius, + cursorWidth: widget.cursorWidth, + showCursor: widget.showCursor, + onFieldSubmitted: widget.onSubmitted, + magnifierConfiguration: widget.magnifierConfiguration, + decoration: widget.decoration.copyWith( + prefixIcon: _buildFlagsButton(), + counterText: !widget.enabled ? '' : null, + ), + style: widget.style, + onSaved: (value) { + widget.onSaved?.call( + PhoneNumber( + countryISOCode: _selectedCountry.code, + countryCode: + '+${_selectedCountry.dialCode}${_selectedCountry.regionCode}', + number: value!, + ), + ); + }, + onChanged: (value) async { + final phoneNumber = PhoneNumber( + countryISOCode: _selectedCountry.code, + countryCode: '+${_selectedCountry.fullCountryCode}', + number: value, + ); + + if (widget.autovalidateMode != AutovalidateMode.disabled) { + validatorMessage = await widget.validator?.call(phoneNumber); + } + + widget.onChanged?.call(phoneNumber); + }, + validator: (value) { + if (value == null || !isNumeric(value)) return validatorMessage; + if (!widget.disableLengthCheck) { + return value.length >= _selectedCountry.minLength && + value.length <= _selectedCountry.maxLength + ? null + : widget.invalidNumberMessage; + } + + return validatorMessage; + }, + maxLength: widget.disableLengthCheck ? null : _selectedCountry.maxLength, + keyboardType: widget.keyboardType, + inputFormatters: widget.inputFormatters, + enabled: widget.enabled, + keyboardAppearance: widget.keyboardAppearance, + autofocus: widget.autofocus, + textInputAction: widget.textInputAction, + autovalidateMode: widget.autovalidateMode, + ); + } + + Container _buildFlagsButton() { + return Container( + margin: widget.flagsButtonMargin, + child: DecoratedBox( + decoration: widget.dropdownDecoration, + child: InkWell( + borderRadius: widget.dropdownDecoration.borderRadius as BorderRadius?, + onTap: widget.enabled ? _changeCountry : null, + child: Padding( + padding: widget.flagsButtonPadding, + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const SizedBox( + width: 4, + ), + if (widget.enabled && + widget.showDropdownIcon && + widget.dropdownIconPosition == IconPosition.leading) ...[ + widget.dropdownIcon, + const SizedBox(width: 4), + ], + if (widget.showCountryFlag) ...[ + kIsWeb + ? Image.asset( + 'assets/flags/${_selectedCountry.code.toLowerCase()}.png', + package: 'intl_phone_field', + width: 32, + ) + : Text( + _selectedCountry.flag, + style: const TextStyle(fontSize: 18), + ), + const SizedBox(width: 8), + ], + FittedBox( + child: Text( + '+${_selectedCountry.dialCode}', + style: widget.dropdownTextStyle, + ), + ), + if (widget.enabled && + widget.showDropdownIcon && + widget.dropdownIconPosition == IconPosition.trailing) ...[ + const SizedBox(width: 4), + widget.dropdownIcon, + ], + const SizedBox(width: 8), + ], + ), + ), + ), + ), + ); + } +} + +enum IconPosition { + leading, + trailing, +} diff --git a/lib/controller/local/phone_intel/phone_number.dart b/lib/controller/local/phone_intel/phone_number.dart new file mode 100644 index 0000000..912cb07 --- /dev/null +++ b/lib/controller/local/phone_intel/phone_number.dart @@ -0,0 +1,79 @@ +import 'countries.dart'; + +class NumberTooLongException implements Exception {} + +class NumberTooShortException implements Exception {} + +class InvalidCharactersException implements Exception {} + +class PhoneNumber { + String countryISOCode; + String countryCode; + String number; + + PhoneNumber({ + required this.countryISOCode, + required this.countryCode, + required this.number, + }); + + factory PhoneNumber.fromCompleteNumber({required String completeNumber}) { + if (completeNumber == "") { + return PhoneNumber(countryISOCode: "", countryCode: "", number: ""); + } + + try { + Country country = getCountry(completeNumber); + String number; + if (completeNumber.startsWith('+')) { + number = completeNumber.substring(1 + country.dialCode.length + country.regionCode.length); + } else { + number = completeNumber.substring(country.dialCode.length + country.regionCode.length); + } + return PhoneNumber( + countryISOCode: country.code, countryCode: country.dialCode + country.regionCode, number: number); + } on InvalidCharactersException { + rethrow; + // ignore: unused_catch_clause + } on Exception catch (e) { + return PhoneNumber(countryISOCode: "", countryCode: "", number: ""); + } + } + + bool isValidNumber() { + Country country = getCountry(completeNumber); + if (number.length < country.minLength) { + throw NumberTooShortException(); + } + + if (number.length > country.maxLength) { + throw NumberTooLongException(); + } + return true; + } + + String get completeNumber { + return countryCode + number; + } + + static Country getCountry(String phoneNumber) { + if (phoneNumber == "") { + throw NumberTooShortException(); + } + + final validPhoneNumber = RegExp(r'^[+0-9]*[0-9]*$'); + + if (!validPhoneNumber.hasMatch(phoneNumber)) { + throw InvalidCharactersException(); + } + + if (phoneNumber.startsWith('+')) { + return countries + .firstWhere((country) => phoneNumber.substring(1).startsWith(country.dialCode + country.regionCode)); + } + return countries.firstWhere((country) => phoneNumber.startsWith(country.dialCode + country.regionCode)); + } + + @override + String toString() => 'PhoneNumber(countryISOCode: $countryISOCode, countryCode: $countryCode, number: $number)'; +} diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart new file mode 100755 index 0000000..25c7695 --- /dev/null +++ b/lib/controller/local/translations.dart @@ -0,0 +1,8633 @@ +import 'package:get/get.dart'; + +class MyTranslation extends Translations { + @override + Map> get keys => { + "ar": { + "Order": "طلب", + "OrderVIP": "طلب VIP", + "Cancel Trip": "إلغاء الرحلة", + "Passenger Cancel Trip": "الراكب ألغى الرحلة", + "VIP Order": "طلب VIP", + "The driver accepted your trip": "السائق قبل رحلتك", + "message From passenger": "رسالة من الراكب", + "Cancel": "إلغاء", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "تم إلغاء الرحلة. سيتم Ø¥Ø¶Ø§ÙØ© ØªÙƒÙ„ÙØ© الرحلة إلى Ù…Ø­ÙØ¸ØªÙƒ.", + "token change": "تغيير الرمز", + "face detect": "كش٠الوجه", + "Face Detection Result": "نتيجة كش٠الوجه", + "similar": "مشابه", + "not similar": "غير مشابه", + "Hi ,I will go now": "مرحبًا، سأذهب الآن", + "Passenger come to you": "الراكب قادم إليك", + "Call Income": "مكالمة واردة", + "Call Income from Passenger": "مكالمة واردة من الراكب", + "Criminal Document Required": "مطلوب وثيقة جنائية", + "You should have upload it .": "يجب عليك تحميلها.", + "Call End": "انتهاء المكالمة", + "The order has been accepted by another driver.": + "تم قبول الطلب من قبل سائق آخر.", + "The order Accepted by another Driver": + "تم قبول الطلب من قبل سائق آخر", + "We regret to inform you that another driver has accepted this order.": + "نأس٠لإعلامك بأن سائقًا آخر قد قبل هذا الطلب.", + "Driver Applied the Ride for You": "السائق قدم الطلب لك", + "Applied": "تم التقديم", + "Hi ,I Arrive your site": "مرحبًا، لقد وصلت إلى موقعك", + "Please go to Car Driver": "يرجى الذهاب إلى سائق السيارة", + "Ok I will go now.": "حسنًا، سأذهب الآن.", + "Accepted Ride": "تم قبول الرحلة", + "Driver Accepted the Ride for You": "السائق قبل الرحلة لك", + "Promo": "عرض ترويجي", + "Show latest promo": "عرض أحدث عرض ترويجي", + "Trip Monitoring": "مراقبة الرحلة", + "Driver Is Going To Passenger": "السائق ÙÙŠ طريقه إليك", + "Please stay on the picked point.": + "يرجى البقاء ÙÙŠ نقطة الالتقاط المحددة.", + "message From Driver": "رسالة من السائق", + "Trip is Begin": "بدأت الرحلة", + "Cancel Trip from driver": "إلغاء الرحلة من السائق", + "We will look for a new driver.\nPlease wait.": + "هنبحث عن سائق جديد.\nمن ÙØ¶Ù„Ùƒ انتظر.", + "The driver canceled your ride.": "السائق ألغى رحلتك.", + "Driver Finish Trip": "السائق أنهى الرحلة", + "you will pay to Driver": "Ù‡ØªØ¯ÙØ¹ للسائق", + "Don’t forget your personal belongings.": "متنساش حاجاتك الشخصية.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "من ÙØ¶Ù„Ùƒ تأكد إن معاك كل حاجاتك الشخصية وإن أي مبلغ متبقي، لو موجود، تم Ø¥Ø¶Ø§ÙØªÙ‡ Ù„Ù…Ø­ÙØ¸ØªÙƒ قبل ما تمشي. شكرًا لاستخدامك تطبيق انطلق", + "Finish Monitor": "إنهاء المراقبة", + "Trip finished": "الرحلة انتهت", + "Call Income from Driver": "مكالمة واردة من السائق", + "Driver Cancelled Your Trip": "السائق ألغى رحلتك", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Ù‡ØªØ¯ÙØ¹ للسائق Ù‡ØªØ¯ÙØ¹ ØªÙƒÙ„ÙØ© وقت السائق Ø´ÙˆÙ Ù…Ø­ÙØ¸Ø© Intaleq بتاعتك", + "Order Applied": "تم تطبيق الطلب", + + //firebase above + "Driver Portal": "بوابة السائق", + "Sign in to start your journey": "سجّل الدخول لبدء رحلتك", + "Sign in with a provider for easy access": + "سجّل الدخول عبر أحد المزودين للوصول بسهولة", + "Sign In with Google": "تسجيل الدخول باستخدام جوجل", + "Sign in with Apple": "تسجيل الدخول باستخدام آبل", + "Or": "أو", + "Create Account with Email": "إنشاء حساب بالبريد الإلكتروني", + "Need help? Contact Us": "هل تحتاج للمساعدة؟ تواصل معنا", + "Create Driver Account": "إنشاء حساب سائق", + "Driver Login": "تسجيل دخول السائق", + "Email": "البريد الإلكتروني", + "Enter your email": "أدخل بريدك الإلكتروني", + "Please enter a valid email": "الرجاء إدخال بريد إلكتروني صالح", + "Password": "كلمة المرور", + "Enter your password": "أدخل كلمة المرور", + "Password must be at least 6 characters": + "يجب أن تتكون كلمة المرور من 6 أحر٠على الأقل", + "Create Account": "إنشاء حساب", + "Login": "تسجيل الدخول", + "Back to other sign-in options": "العودة إلى خيارات التسجيل الأخرى", + "Driver Agreement": "Ø§ØªÙØ§Ù‚ية السائق", + "To become a driver, you must review and agree to the ": + "لتصبح سائقًا، يجب عليك مراجعة والمواÙقة على ", + "Terms of Use": "شروط الاستخدام", + " and acknowledge our Privacy Policy.": + " والإقرار بسياسة الخصوصية الخاصة بنا.", + "I Agree": "أنا أواÙÙ‚", + "Continue": "متابعة", + "Privacy Policy": "سياسة الخصوصية", + "Location Access Required": "مطلوب الوصول إلى الموقع", + "We need access to your location to match you with nearby passengers and provide accurate navigation.": + "نحتاج للوصول إلى موقعك لمطابقتك مع الركاب القريبين وتوÙير توجيه دقيق.", + "Please allow location access \"all the time\" to receive ride requests even when the app is in the background.": + "الرجاء السماح بالوصول إلى الموقع \"طوال الوقت\" لاستقبال طلبات الرحلات حتى عندما يكون التطبيق ÙÙŠ الخلÙية.", + "Allow Location Access": "السماح بالوصول إلى الموقع", + "Open Settings": "ÙØªØ­ الإعدادات", + "payment_success": "تمت العملية بنجاح", + "transaction_id": "رقم العملية", + "amount_paid": "المبلغ المدÙوع", + "bonus_added": "البونص المضاÙ", + "points": "نقطة", + "transaction_failed": "ÙØ´Ù„ العملية", + "connection_failed": "ÙØ´Ù„ الاتصال", + "server_error": "خطأ ÙÙŠ الخادم", + "server_error_message": "حدث خطأ أثناء الاتصال بالخادم", + + "cancel": "إلغاء", "Syria": "â€Ø³ÙˆØ±ÙŠØ§", + "Security Warning": "تحذير أمني", + "Potential security risks detected. The application will close in @seconds seconds.": + "تم اكتشا٠مخاطر أمنية محتملة. سيتم إغلاق التطبيق خلال @seconds ثانية.", + 'please order now': " â€Ø§Ù„رجاء الطلب مرة أخرى", + 'Session expired. Please log in again.': + 'انتهت الجلسة. يرجى تسجيل الدخول مرة أخرى.', + "Security Warning": "âš ï¸ ØªØ­Ø°ÙŠØ± أمني", + "Potential security risks detected. The application may not function correctly.": + "تم اكتشا٠ثغرات أمنية على هذا الجهاز. Ù„Ù„Ø­ÙØ§Ø¸ على أمان بياناتك، سيتم حذ٠جميع البيانات وإغلاق التطبيق.", + "How to use Intaleq": "كيÙية استخدام Intaleq", + "What are the order details we provide to you?": + "ما هي ØªÙØ§ØµÙŠÙ„ الطلب التي Ù†ÙˆÙØ±Ù‡Ø§ لك؟", + "Intaleq Wallet Features:\n\nTransfer money multiple times.\nTransfer to anyone.\nMake purchases.\nCharge your account.\nCharge a friend's Intaleq account.\nStore your money with us and receive it in your bank as a monthly salary.": + "ميزات Ù…Ø­ÙØ¸Ø© Intaleq:\n\nتحويل الأموال عدة مرات.\nالتحويل إلى أي شخص.\nإجراء عمليات شراء.\nشحن حسابك.\nشحن حساب Intaleq لصديق.\nقم بتخزين أموالك معنا واستلامها ÙÙŠ بنكك كراتب شهري.", + "What is the feature of our wallet?": "ما هي مميزات Ù…Ø­ÙØ¸ØªÙ†Ø§ØŸ", + "What is Types of Trips in Intaleq?": + "ما هي أنواع الرحلات ÙÙŠ IntaleqØŸ", + '''Types of Trips in Intaleq: + +Comfort: For cars newer than 2017 with air conditioning. +Lady: For girl drivers. +Speed: For fixed salary and endpoints. +Mashwari: For flexible trips where passengers choose the car and driver with prior arrangements. +Raih Gai: For same-day return trips longer than 50km. +''': """أنواع الرحلات ÙÙŠ Intaleq: + +راحة: للسيارات الأحدث من 2017 مع تكيي٠الهواء. +للسائقات الإناث. +سبيد: براتب ثابت ونقاط نهاية محددة. +مشاوير: للرحلات المرنة حيث يختار الركاب السيارة والسائق Ø¨Ø§ØªÙØ§Ù‚ مسبق. +رحّي غاي: للرحلات ذات العودة ÙÙŠ Ù†ÙØ³ اليوم التي تزيد عن 50 كم. +""", + "I will go now": "هروح دلوقتي", + "Yes": "أيوة", + "No,I want": "لا، أنا عاوز", + "Your fee is": "المبلغ بتاعك هو", + "Do you want to pay Tips for this Driver": + "عاوز ØªØ¯ÙØ¹ إكرامية للسائق ده؟", + "Tip is": "الإكرامية هي", + "No i want": "لا، أنا عاوز", + "Call Passenger": "اتصل بالراكب", + "Send Message": "إرسال رسالة", + "Open in Maps": "ÙØªØ­ ÙÙŠ الخرائط", + "Duration": "المدة", + "Distance": "Ø§Ù„Ù…Ø³Ø§ÙØ©", + "Passenger": "الراكب", + "Cost": "Ø§Ù„ØªÙƒÙ„ÙØ©", + // "Order": "طلب", + "Car Type": "نوع السيارة", + "Start the Ride": "ابدأ الرحلة", + // "Accepted Ride": "تم قبول الرحلة", + "Is the Passenger in your Car?": "هل الراكب ÙÙŠ سيارتك؟", + "Don't start trip if passenger not in your car": + "لا تبدأ الرحلة إذا لم يكن الراكب ÙÙŠ سيارتك", + "your ride is Accepted": "تم قبول رحلتك", + // "Driver Accepted the Ride for You": "السائق قبل الرحلة لك", + "I Arrive": "لقد وصلت", + // "Trip is Begin": "بدأت الرحلة", + "You are not near the passenger location": + "أنت لست بالقرب من موقع الراكب", + // "Driver Finish Trip": "السائق أنهى الرحلة", + "Please go to the pickup location exactly": + "يرجى الذهاب إلى موقع الالتقاط بالضبط", + "You Can Cancel the Trip and get Cost From": + "يمكنك إلغاء الرحلة واسترداد Ø§Ù„ØªÙƒÙ„ÙØ© من", + "Are you sure to cancel?": "هل أنت متأكد من الإلغاء؟", + // "Driver Cancelled Your Trip": "السائق ألغى رحلتك", + "You will need to pay the cost to the driver, or it will be deducted from your next trip": + "سيتم Ø¯ÙØ¹ Ø§Ù„ØªÙƒÙ„ÙØ© للسائق أو خصمها من رحلتك القادمة", + "Select a quick message": "اختر رسالة سريعة", + "Where are you, sir?": "أين أنت يا سيدي؟", + "I've been trying to reach you but your phone is off.": + "كنت أحاول الوصول إليك لكن هاتÙÙƒ مغلق.", + "Please don't be late, I'm waiting for you at the specified location.": + "يرجى عدم التأخير، أنا ÙÙŠ انتظارك ÙÙŠ الموقع المحدد.", + "Please don't be late": "يرجى عدم التأخير", + "Type something": "اكتب شيئًا", + "Passenger Information": "معلومات الراكب", + "Name": "الاسم", + "wallet_updated": "تم تحديث Ø§Ù„Ù…Ø­ÙØ¸Ø©", + "wallet_credited_message": "تم Ø¥Ø¶Ø§ÙØ©", + "default_tone": "النغمة Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ©", + "No orders available": "لا توجد طلبات Ù…ØªÙˆÙØ±Ø©", + "Phone": "رقم الهاتÙ", + "A promotion record for this driver already exists for today.": + "يوجد Ø¨Ø§Ù„ÙØ¹Ù„ سجل ترويج لهذا السائق لهذا اليوم.", + "Gender": "الجنس", + "time Selected": "الوقت المختار", + "Ride Status": "حالة الرحلة", + "If you need any help or have questions, this is the right place to do that. You are welcome!": + "إذا كنت بحاجة إلى أي مساعدة أو لديك أي أسئلة، Ùهذا هو المكان المناسب لذلك. أهلاً وسهلاً بك!", + "ID Mismatch": "عدم تطابق الرقم التعريÙÙŠ", + // "face detect": "كش٠الوجه", + "Would you like to proceed with health insurance?": + "هل ترغب ÙÙŠ الاستمرار مع التأمين الصحي؟", + "Confirmation": "تأكيد", + "Enter Health Insurance Provider": "أدخل مزود التأمين الصحي", + // "Yes": "نعم", + "No": "لا", + "You need to complete 500 trips": "يجب عليك إكمال 500 رحلة", + "Please enter a valid insurance provider": + "الرجاء إدخال مزود تأمين صالح", + "Opted out": "اختيار عدم الاستمرار", + "You have chosen not to proceed with health insurance.": + "لقد اخترت عدم الاستمرار مع التأمين الصحي.", + "Do you have a disease for a long time?": + "هل لديك مرض منذ ÙØªØ±Ø© طويلة؟", + "When you complete 500 trips, you will be eligible for exclusive health insurance offers.": + "عند إكمال 500 رحلة، ستكون مؤهلاً للحصول على عروض حصرية للتأمين الصحي.", + "We have partnered with health insurance providers to offer you special health coverage. Complete 500 trips and receive a 20% discount on health insurance premiums.": + "لقد عقدنا شراكة مع مزودي التأمين الصحي لتقديم تغطية صحية خاصة لك. أكمل 500 رحلة واحصل على خصم 20% على أقساط التأمين الصحي.", + "Show health insurance providers near me": + "اعرض مزودي التأمين الصحي القريبين مني", + "Health Insurance": "التأمين الصحي", + "An error occurred while saving driver data": + "حدث خطأ أثناء Ø­ÙØ¸ بيانات السائق", + // "Face Detection Result": "نتيجة كش٠الوجه", + "false": "خطأ", + "true": "صحيح", + "Failed to save driver data": "ÙØ´Ù„ Ø­ÙØ¸ بيانات السائق", + // "similar": "مشابه", + // "not similar": "غير مشابه", + "error": "خطأ", + "error_processing_document": "خطأ ÙÙŠ معالجة المستند", + "expected": "متوقع", + "detected": "تم الكش٠عنه", + "car_license_front": "الجانب الأمامي لرخصة السيارة", + "car_license_back": "الجانب الخلÙÙŠ لرخصة السيارة", + "id_card_front": "الجانب الأمامي لبطاقة الهوية", + "id_card_back": "الجانب الخلÙÙŠ لبطاقة الهوية", + "driver_license": "رخصة القيادة", + "unknown_document": "وثيقة غير Ù…Ø¹Ø±ÙˆÙØ©", + "incorrect_document_title": "وثيقة غير صحيحة", + "incorrect_document_message": + "الرجاء تحميل {expected} الصحيحة. تم الكش٠عن {detected}.", + "minute": "دقيقة", + "kilometer": "كم", + "You have successfully charged your account": "تم شحن حسابك بنجاح", + "has been added to your budget": "تمت Ø¥Ø¶Ø§ÙØªÙ‡ إلى ميزانيتك", + "id_front": "هوية_أمامية", + "id_back": "هوية_خلÙية", + "car_back": "سيارة_خلÙية", + "car_front": "سيارة_أمامية", + "ID Documents Front": "الوثيقه الشخصية - الأمامية", + "Vehicle Details Front": "ØªÙØ§ØµÙŠÙ„ المركبة - الأمامية", + "Vehicle Details Back": "ØªÙØ§ØµÙŠÙ„ المركبة - الخلÙية", + "Criminal Record": "السجل الجنائي", + "ID Documents Back": "الوثيقه الشخصية - الخلÙية", + "Driver's License": "رخصة القيادة", + "No, still Waiting.": "لا، ما زلت ÙÙŠ انتظار.", + "you can show video how to setup": + "يمكنك عرض Ùيديو حول كيÙية الإعداد", + "don't start trip if not": "لا تبدأ الرحلة إذا لم", + "you are not moved yet !": "أنت لم تتحرك بعد!", + "Update Available": "تحديث Ù…ØªÙˆÙØ±", + "A new version of the app is available. Please update to the latest version.": + "ØªØªÙˆÙØ± نسخة جديدة من التطبيق. يرجى التحديث إلى أحدث إصدار.", + "We use location to get accurate and nearest passengers for you": + "نستخدم الموقع للحصول على أقرب الركاب وأكثرهم دقة لك", + "This ride is already applied by another driver.": + "هذه الرحلة قام بقبولها سائق آخر Ø¨Ø§Ù„ÙØ¹Ù„.", + "My location is correct. You can search for me using the navigation app": + "موقعي صحيح. يمكنك البحث عني باستخدام تطبيق الملاحة", + "Hello, I'm at the agreed-upon location": + "مرحباً، أنا ÙÙŠ المكان المتÙÙ‚ عليه", + // "message From Driver": "رسالة من السائق", + "How much longer will you be?": "â€Ù‚دامك قد إيه", + "Phone number is verified before": "تم التحقق من رقم الهات٠مسبقاً", + "Change Ride": "تغيير الرحلة", + "Authentication failed": "ÙØ´Ù„ المصادقة", + "Biometric Authentication": "المصادقة البيومترية", + "You should use Touch ID or Face ID to confirm payment": + "يجب عليك استخدام Touch ID أو Face ID لتأكيد Ø§Ù„Ø¯ÙØ¹", + "Cost Of Trip IS": "ØªÙƒÙ„ÙØ© الرحلة هي", + "You must be recharge your Account": + "رصيد حسابك غير كاÙÙ. يرجى إعادة الشحن للمتابعة", + "Ahli United Bank": "البنك الأهلي المتحد", + "Citi Bank N.A. Egypt": "سيتي بنك مصر", + "MIDBANK": "بنك ميد", + "Banque Du Caire": "بنك القاهرة", + "HSBC Bank Egypt S.A.E": "اتش اس بي سي", + "Credit Agricole Egypt S.A.E": "كريدي أجريكول مصر", + "Egyptian Gulf Bank": "البنك المصري الخليجي", + "The United Bank": "البنك المتحد", + "Qatar National Bank Alahli": "البنك الأهلي القطري", + "Arab Bank PLC": "البنك العربي", + "Emirates National Bank of Dubai": "بنك الإمارات دبي الوطني", + "Al Ahli Bank of Kuwait – Egypt": "البنك الأهلي الكويتي - مصر", + "National Bank of Kuwait – Egypt": "البنك الوطني الكويتي - مصر", + "Arab Banking Corporation - Egypt S.A.E": + "الشركة العربية المصرÙية - مصر", + "First Abu Dhabi Bank": "بنك أبوظبي الأول", + "Abu Dhabi Islamic Bank – Egypt": "مصر٠أبوظبي الإسلامي - مصر", + "Commercial International Bank - Egypt S.A.E": + "البنك التجاري الدولي - مصر", + "Housing And Development Bank": "بنك الإسكان والتعمير", + "Banque Misr": "بنك مصر", + "Arab African International Bank": "البنك العربي Ø§Ù„Ø£ÙØ±ÙŠÙ‚ÙŠ الدولي", + "Egyptian Arab Land Bank": "البنك المصري العربي", + "Export Development Bank of Egypt": "بنك التنمية والتصدير المصري", + "Faisal Islamic Bank of Egypt": "البنك الإسلامي المصري", + "Blom Bank": "بلوم بنك", + "Abu Dhabi Commercial Bank – Egypt": "بنك أبوظبي التجاري - مصر", + "Alex Bank Egypt": "بنك الإسكندرية", + "Societe Arabe Internationale De Banque": "البنك العربي الدولي", + "National Bank of Egypt": "البنك الأهلي المصري", + "Al Baraka Bank Egypt B.S.C.": "بنك البركة مصر", + "Egypt Post": "البريد المصري", + "Nasser Social Bank": "بنك ناصر الاجتماعي", + "Industrial Development Bank": "بنك التنمية الصناعية والعمال", + "Suez Canal Bank": "بنك قناة السويس", + "Mashreq Bank": "بنك المشرق", + "Arab Investment Bank": "البنك العربي للاستثمار", + "General Authority For Supply Commodities": + "الهيئة العامة للسلع التموينية", + "Arab International Bank": "البنك العربي الدولي", + "Agricultural Bank of Egypt": "البنك الزراعي المصري", + "National Bank of Greece": "البنك الوطني اليوناني", + "Central Bank Of Egypt": "البنك المركزي المصري", + "ATTIJARIWAFA BANK Egypt": "البنك التجاري ÙˆÙØ§ مصر", + "Morning Promo": "بونص الصباح", + "Show my Cars": "عرض سياراتي", + "Add criminal page": "Ø¥Ø¶Ø§ÙØ© الÙيش الجنائي", + "Add new car": "Ø¥Ø¶Ø§ÙØ© سيارة جديدة", + "You have gift 300 L.E": "لديك هدية بقيمة 300 جنيه.", + // "VIP Order": "طلب VIP", + "VIP Order Accepted": "تم قبول طلب VIP.", + // "The driver accepted your trip": "السائق قبل رحلتك.", + "this is count of your all trips in the morning promo today from 7:00am-10:00am": + "هذا عدد جميع رحلاتك ÙÙŠ بونص الصباح اليوم من الساعة 7:00 صباحًا حتى 10:00 صباحًا", + "Morning Promo Rides": "رحلات عرض الصباح", + "Are you sure to make this car as default": + "هل أنت متأكد من تعيين هذه السيارة ÙƒØ§ÙØªØ±Ø§Ø¶ÙŠØ©ØŸ", + "Sign In by Google": "تسجيل الدخول باستخدام جوجل", + "Not updated": "لم يتم التحديث", + "Updated": "تم التحديث", + "Remaining time": "الوقت المتبقي", + "Add bank Account": "Ø¥Ø¶Ø§ÙØ© حساب بنكي", + "Are you sure to exit ride?": "هل أنت متأكد من إنهاء الرحلة؟", + "Today": "اليوم", + "seconds": "ثواني", + "You will cancel registration": "ستقوم بإلغاء التسجيل", + "Create new Account": "إنشاء حساب جديد", + "You haven't moved sufficiently!": "أنت لم تتحرك بما Ùيه Ø§Ù„ÙƒÙØ§ÙŠØ©!", + "This for new registration": "للتسجيل الجديد", + "You have received a gift token!": "لقد حصلت على رمز هدية!", + "Afternoon Promo": "بونص الظهر", + "for ": "Ù„ ", + "You dont have invitation code": "ليس لديك رمز دعوة.", + "this is count of your all trips in the Afternoon promo today from 3:00pm-6:00 pm": + "هذا عدد جميع رحلاتك ÙÙŠ بونص بعد الظهر اليوم من الساعة 3:00 مساءً حتى 6:00 مساءً", + "Afternoon Promo Rides": "رحلات بونص بعد الظهر", + "Heading your way now. Please be ready.": + "ÙÙŠ طريقي إليك الآن. يرجى الاستعداد.", + "Alert": "تنبيه", + "Insert Wallet phone number": "أدخل رقم Ù‡Ø§ØªÙ Ø§Ù„Ù…Ø­ÙØ¸Ø©", + "You have successfully opted for health insurance.": + "لقد اخترت التأمين الصحي بنجاح.", + "Please enter a health insurance status.": + "يرجى إدخال حالة التأمين الصحي", + "Intaleq Driver": "انطلق السائق", + "The 300 points equal 300 L.E for you \nSo go and gain your money": + "300 نقطة تساوي 300 جنيه لك \nلذا اذهب واحصل على أموالك", + "Info": "معلومات", + "You dont have money in your Wallet": "ليس لديك أموال ÙÙŠ Ù…Ø­ÙØ¸ØªÙƒ", + "You dont have money in your Wallet or you should less transfer 5 LE to activate": + "ليس لديك أموال ÙÙŠ Ù…Ø­ÙØ¸ØªÙƒ أو يجب عليك تحويل 5 جنيهات على الأقل Ù„ØªÙØ¹ÙŠÙ„ الحساب", + "Rejected Orders Count": "عدد الطلبات المرÙوضة", + "This is the total number of rejected orders per day after accepting the orders": + "هذا هو العدد الإجمالي للطلبات المرÙوضة يوميًا بعد قبول الطلبات", + "Invite": "دعوة", + "Drivers": "السائقين", + "Passengers": "الركاب", + "Your Driver Referral Code": "رمز الإحالة الخاص بالسائق", + "DRIVER123": "سائق123", + "Share this code with other drivers. Both of you will receive rewards!": + "شارك هذا الرمز مع السائقين الآخرين. سيحصل كل منكما على Ù…ÙƒØ§ÙØ¢Øª!", + "Share Code": "مشاركة الرمز", + "Invite another driver and both get a gift after he completes 100 trips!": + "ادع سائقًا آخر وسيحصل كلاكما على هدية بعد أن يكمل 100 رحلة!", + "Enter phone": "أدخل رقم الهاتÙ", + "Send Invite": "إرسال دعوة", + "Show Invitations": "عرض الدعوات", + "We need access to your location to match you with nearby passengers and ensure accurate navigation.": + "نحتاج إلى الوصول إلى موقعك لمطابقتك مع الركاب القريبين وضمان التنقل الدقيق.", + "Please allow location access at all times to receive ride requests and ensure smooth service.": + "يرجى السماح بالوصول إلى الموقع ÙÙŠ جميع الأوقات لتلقي طلبات الرحلات وضمان خدمة سلسة.", + "No invitation found yet!": "لم يتم العثور على دعوات حتى الآن!", + "Trip": "رحلة", + "Your Passenger Referral Code": "رمز الإحالة الخاص بالراكب", + "Intaleq123": "انطلق123", + "Share this code with passengers and earn rewards when they use it!": + "شارك هذا الرمز مع الركاب واكسب Ù…ÙƒØ§ÙØ¢Øª عند استخدامه!", + "Your Rewards": "Ù…ÙƒØ§ÙØ¢ØªÙƒ", + "Total Invites": "إجمالي الدعوات", + "Active Users": "المستخدمون النشطون", + "Total Earnings": "إجمالي الأرباح", + "Choose from contact": "اختر من جهات الاتصال", + // "Cancel": "إلغاء", + "Open App": "Ø§ÙØªØ­ التطبيق", + // "Ok I will go now.": "حسنًا، سأذهب الآن.", + "Hi, I will go now": "مرحبًا، سأذهب الآن.", + // "Add new car": "أض٠سيارة جديدة", + "Rate Our App": "قيّم تطبيقنا", + "How would you rate our app?": "كي٠تقيم تطبيقنا؟", + "write comment here": "اكتب تعليقك هنا", + "Submit Rating": "إرسال التقييم", + "Rating submitted successfully": "تم إرسال التقييم بنجاح", + "Open the app to stay updated and ready for upcoming tasks.": + "Ø§ÙØªØ­ التطبيق لتبقى على اطلاع واستعداد للمهام القادمة.", + "No invitation found": "لم يتم العثور على دعوة", + "Please upload this license.": "يرجى تحميل هذه الرخصة.", + "If your car license has the new design, upload the front side with two images.": + "إذا كانت رخصة سيارتك ذات التصميم الجديد، يرجى تحميل الوجه الأمامي بصورتين.", + "If you need assistance, contact us": + "إذا كنت بحاجة إلى المساعدة، تواصل معنا", + "Please make sure to read the license carefully.": + "يرجى التأكد من قراءة الرخصة بعناية", + "Videos Tutorials": "Ùيديوهات تعليمية", + "Approaching your area. Should be there in 3 minutes.": + "اقترب من منطقتك. يجب أن أكون هناك خلال 3 دقائق.", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "هناك حركة مرور ÙƒØ«ÙŠÙØ© هنا. هل يمكنك اقتراح نقطة استلام بديلة؟", + "This ride is already taken by another driver.": + "تم حجز هذه الرحلة من قبل سائق آخر.", + "Type Any thing": "اكتب أي شيء", + "Price: ": "السعر ", + "Add Question": "أض٠سؤالاً", + "Please enter a valid card 16-digit number.": + "الرجاء إدخال رقم بطاقة صحيح مكون من 16 رقمًا.", + "Insert card number": "أدخل رقم البطاقة", + "Bank account added successfully": "تمت Ø¥Ø¶Ø§ÙØ© الحساب البنكي بنجاح", + "Updated successfully": "تم التحديث بنجاح", + "Create Wallet to receive your money": "أنشئ Ù…Ø­ÙØ¸Ø© لاستقبال أموالك", + "Insert Account Bank": "أدخل رقم حسابك البنكي", + "Insert Card Bank Details to Receive Your Visa Money Weekly": + "أدخل ØªÙØ§ØµÙŠÙ„ بطاقتك البنكية لاستقبال راتبك عبر Ùيزا كل أسبوع", + "Select Name of Your Bank": "اختر اسم بنكك", + "You don't have enough money in your Intaleq wallet": + "لا يوجد رصيد كاÙÙ ÙÙŠ Ù…Ø­ÙØ¸Ø© Intaleq الخاصة بك ", + "You have transferred to your wallet from": "لقد حولت إلى Ù…Ø­ÙØ¸ØªÙƒ من", + "Transfer": "تحويل", + "amount": "المبلغ", + "This driver is not registered": "هذا السائق غير مسجل", + "insert amount": "أدخل المبلغ", + "phone number of driver": "رقم هات٠السائق", + "Transfer budget": "نقل الميزانية", + "Comfort": "كمÙورت", + "Speed": "سبيد", + "Lady": "ليدي", + "Permission denied": "تم Ø±ÙØ¶ الإذن", + "Contact permission is required to pick a contact": + "مطلوب إذن الوصول إلى جهات الاتصال لاختيار جهة اتصال", + "No contact selected": "لم يتم تحديد جهة اتصال", + "Please select a contact": "يرجى تحديد جهة اتصال", + "No phone number": "لا يوجد رقم هاتÙ", + "The selected contact does not have a phone number": + "جهة الاتصال المحددة لا تحتوي على رقم هاتÙ", + "Error": "خطأ", + "An error occurred while picking a contact": + "حدث خطأ أثناء اختيار جهة اتصال", + "Are you sure you want to cancel this trip?": + "هل أنت متأكد من أنك تريد إلغاء هذه الرحلة؟", + // "Cancel Trip from driver": "إلغاء الرحلة من السائق", + "Why do you want to cancel this trip?": + "لماذا تريد إلغاء هذه الرحلة؟", + "Write the reason for canceling the trip": "اكتب سبب الإلغاء:", + "Trip Cancelled from driver. We are looking for a new driver. Please wait.": + "تم إلغاء الرحلة من قبل السائق. نحن نبحث عن سائق جديد. من ÙØ¶Ù„Ùƒ انتظر.", + "Delivery": "توصيل", + "Mashwari": "â€Ù…شواري", + "Total Net": "صاÙÙŠ الإجمالي", + "Special Order": "طلب خاص", + "Intaleq Order": "طلب سريع", + "No data yet!": "لا توجد بيانات حتى الآن!", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "لقد Ø±ÙØ¶Øª 3 رحلات اليوم وهذا هو السبب \nأراك غدًا!", + "fromBudget": "من الميزانية", + "You must restart the app to change the language.": + "يجب إعادة تشغيل التطبيق لتغيير اللغة", + "hours before trying again.": "ساعة قبل المحاولة مرة أخرى", + "Transaction failed": "ÙØ´Ù„ المعاملة", + "Wallet Type": "نوع Ø§Ù„Ù…Ø­ÙØ¸Ø©", + "Enter your wallet number": "أدخل رقم Ù…Ø­ÙØ¸ØªÙƒ", + "The Amount is less than": "المبلغ أقل من", + "Cash Out": "صرÙ", + "Do you want to collect your earnings?": "هل تريد استلام أموالك؟", + "Total wallet is ": "إجمالي Ø§Ù„Ù…Ø­ÙØ¸Ø© هو ", + "Remainder": "â€Ø§Ù„باقي", + "Call Page": "ØµÙØ­Ø© المكالمة", + // "Call End": "إنهاء المكالمة", + "Call Left": "مكالمات متبقية", + "Rayeh Gai": "رايح جاي ", + "cost is ": " Ø§Ù„ØªÙƒÙ„ÙØ© هي ", + "Total budgets on month": "إجمالي الميزانيات لهذا الشهر", + "Counts of budgets on days": "عدد الميزانيات حسب الأيام", + "Wallet Added": "تم Ø¥Ø¶Ø§ÙØ© Ø§Ù„Ù…Ø­ÙØ¸Ø©", + "The price must be over than ": "يجب أن يكون السعر أكثر من ", + "Total Cost": "إجمالي Ø§Ù„ØªÙƒÙ„ÙØ©", + "This Trip Cancelled": "تم إلغاء هذه الرحلة", + "Total price from ": "إجمالي السعر من ", + "Wallet Add": "Ø¥Ø¶Ø§ÙØ© إلى Ø§Ù„Ù…Ø­ÙØ¸Ø©", + "Press here": "اضغط هنا", + "Would the passenger like to settle the remaining fare using their wallet?": + "هل يرغب الراكب بسداد باقي الأجرة باستخدام Ù…Ø­ÙØ¸ØªÙ‡ØŸ", + "How much Passenger pay?": "كم ÙŠØ¯ÙØ¹ الراكب؟", + "passenger amount to me": "مبلغ الراكب لي", + "Please wait": "الرجاء الانتظار", + "minutes before trying again.": " دقيقة قبل المحاولة مرة أخرى.", + "Total rides on month": "إجمالي الرحلات ÙÙŠ الشهر", + "Counts of rides on days": "عدد الرحلات حسب الأيام", + "You should restart app to change language": + "يجب إعادة تشغيل التطبيق لتغيير اللغة", + "No data yet": "لا توجد بيانات حتى الآن", + "Question": "Ø§Ø³ØªÙØ³Ø§Ø±", + "Enter your Question here": "اسأل هنا", + "History Page": "سجل الرحلات ", + "Finished": "مكتملة", + "Trip Detail": "ØªÙØ§ØµÙŠÙ„ الرحلة", + "you must insert token code ": "يجب إدخال رمز التحقق", + "Invite code already used": "تم استخدام رمز الدعوة Ø¨Ø§Ù„ÙØ¹Ù„", + "Price is": "السعر", + "Times of Trip": "أوقات الرحلة", + "Time to Passenger is": "الوقت للوصول للراكب", + "TimeStart is": "وقت البداية", + "Time Finish is": "وقت الانتهاء", + "Status is": "الحالة", + "Total Orders": "إجمالي الطلبات", + "Completed": "مكتملة", + "Canceled Orders": "الطلبات الملغاة", + "Rejected Orders": "الطلبات المرÙوضة", + "Percent Rejected": "نسبة المرÙوضة", + "Percent Canceled": "نسبة الملغاة", + "Percent Completed": "نسبة المكتملة", + "Statistic": "إحصائية", + "Value": "القيمة", + "You Have in": "لديك ÙÙŠ", + "Total Budget is ": "رصيد â€Ø§Ù„تشغيل هو", + "Ride Today : ": "â€Ø±Ø­Ù„ات اليوم ", + "You Earn today is ": "ما كسبته اليوم هو", + "registration_date": "تاريخ_التسجيل", + "Total Budget from trips by\nCredit card is ": + "إجمالي الميزانية من الرحلات عن طريق\nبطاقة الائتمان هي ", + "This amount for all trip I get from Passengers and Collected For me in": + "هذا المبلغ لجميع الرحلات التي أحصل عليها من الركاب والمجموعة لي ÙÙŠ", + "Total Budget from trips is ": "إجمالي الميزانية من الرحلات هو ", + "You can purchase a budget to enable online access through the options listed below.": + "يمكنك â€Ø¥Ø¶Ø§ÙØ© رصيد من هذه القائمة", + "You can buy points from your budget": + "يمكنك سداد المديونية من حسابك", + "expiration_date": "تاريخ الانتهاء", + "rating_count": "عدد التقييمات", + "rating_driver": "تقييم السائق", + "age": "سن/عمر", + "vin": "رقم تعري٠المركبة", + "car_color": "اللون", + "car_plate": "لوحة السيارة", + "car_model": "طراز السيارة:", + "education": "التعليم", + "gender": "الجنس", + "birthdate": "تاريخ ميلاد", + "Approve Driver Documents": "المواÙقة على مستندات الشريك السائق", + "Total Budget is": "الميزانية الإجمالية", + "You will receive code in sms message": + "ستتلقى الرمز ÙÙŠ رسالة نصية قصيرة", + "Please enter": "الرجاء إدخال", + "We need your phone number to contact you and to help you receive orders.": + "نحتاج إلى رقم هاتÙÙƒ للاتصال بك ولمساعدتك ÙÙŠ تلقي الطلبات.", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "لا يتطابق الاسم الكامل ÙÙŠ سجلك الجنائي مع الاسم الموجود ÙÙŠ رخصة القيادة. يرجى التحقق وتقديم المستندات الصحيحة.", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "الرقم الوطني الموجود ÙÙŠ رخصة القيادة الخاصة بك لا يتطابق مع الرقم الموجود ÙÙŠ مستند هويتك. يرجى التحقق وتقديم المستندات الصحيحة.", + "Capture an Image of Your Criminal Record": + "التقط صورة لسجلك الجنائي", + "IssueDate": "تاريخ الإصدار", + "Capture an Image of Your car license front": + "التقط صورة لرخصة سيارتك من الأمام", + "Capture an Image of Your ID Document front": + "التقاط صورة لوثيقة هويتك من الأمام", + "NationalID": "الرقم الوطني", + "reject your order.": "Ø±ÙØ¶ طلبك.", + "Order Under Review": "الطلب قيد المراجعة", + "is reviewing your order. They may need more information or a higher price.": + "يتم مراجعة طلبك. قد يحتاجون إلى مزيد من المعلومات أو سعر أعلى.", + "FullName": "الاسم الكامل", + "If you want order to another person": "إذا كنت تريد الطلب لشخص آخر", + // "We will look for a new driver.\nPlease wait.": + // "سنبحث عن سائق جديد.\nمن ÙØ¶Ù„Ùƒ انتظر.", + "No, I want to cancel this trip": "لا، أريد إلغاء هذه الرحلة", + "Attention": "تنبيه", + // "Trip Cancelled. The cost of the trip will be added to your wallet.": + // "تم إلغاء الرحلة. سيتم Ø¥Ø¶Ø§ÙØ© ØªÙƒÙ„ÙØ© الرحلة إلى Ù…Ø­ÙØ¸ØªÙƒ.", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "تم إلغاء الرحلة. سيتم خصم ØªÙƒÙ„ÙØ© الرحلة من Ù…Ø­ÙØ¸ØªÙƒ.", + "You will be charged for the cost of the driver coming to your location.": + "سيتم خصم ØªÙƒÙ„ÙØ© قدوم السائق إلى موقعك.", + "Location Tracking Active": "تعقب الموقع نشط", + "Your location is being tracked in the background.": + "يتم تتبع موقعك ÙÙŠ الخلÙية.", + "Maintenance Center": "â€Ù…ركز الصيانة", + "When you complete 600 trips, you will be eligible to receive offers for maintenance of your car.": + "عندما تكمل 600 رحلة، ستكون مؤهلاً للحصول على عروض لصيانة سيارتك.", + // "The driver canceled your ride.": "ألغى السائق رحلتك.", + "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": + "لم نجد أي سائقين بعد. ضع ÙÙŠ اعتبارك زيادة رسوم رحلتك لجعل عرضك أكثر جاذبية للسائقين.", + "Allow Location Access": "السماح بالوصول إلى الموقع", + "Show My Trip Count": "عرض عدد رحلاتي", + "Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "انطلق هو التطبيق الأكثر أمانًا لمشاركة الركوب الذي يقدم العديد من الميزات لكل من السائقين والركاب. نحن نقدم أقل عمولة بنسبة 8% Ùقط، مما يضمن حصولك على Ø£ÙØ¶Ù„ قيمة لرحلاتك. يتضمن تطبيقنا التأمين Ù„Ø£ÙØ¶Ù„ السائقين، الصيانة المنتظمة للسيارات مع Ø£ÙØ¶Ù„ المهندسين، والخدمات على الطريق لضمان تجربة محترمة وعالية الجودة لجميع المستخدمين.", + "You can contact us during working hours from 12:00 - 19:00.": + "يمكنك الاتصال بنا خلال ساعات العمل من 12:00 - 7:00.", + "Show maintenance center near my location": + "أظهر مركز الصيانة بالقرب من موقعي", + "How do I request a ride?": "كي٠أطلب رحلة؟", + "Step-by-step instructions on how to request a ride through the Intaleq app.": + "تعليمات خطوة بخطوة حول كيÙية طلب رحلة من خلال تطبيق Intaleq.", + "What types of vehicles are available?": + "ما هي أنواع المركبات المتاحة؟", + "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "ØªÙˆÙØ± Intaleq مجموعة متنوعة من خيارات المركبات لتناسب احتياجاتك، بما ÙÙŠ ذلك الاقتصادية والمريحة ÙˆØ§Ù„ÙØ®Ù…Ø©. اختر الخيار الذي يناسب ميزانيتك وعدد الركاب.", + "How can I pay for my ride?": "كي٠يمكنني Ø§Ù„Ø¯ÙØ¹ لرحلتي؟", + "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "ØªÙˆÙØ± Intaleq طرق Ø¯ÙØ¹ متعددة لراحتك. اختر بين Ø§Ù„Ø¯ÙØ¹ نقدًا أو بطاقة ائتمان/خصم أثناء تأكيد الرحلة.", + "Can I cancel my ride?": "هل يمكنني إلغاء رحلتي؟", + "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": + "نعم، يمكنك إلغاء رحلتك ÙÙŠ ظل ظرو٠معينة (مثل قبل تعيين السائق). اطلع على سياسة الإلغاء ÙÙŠ Intaleq للحصول على Ø§Ù„ØªÙØ§ØµÙŠÙ„.", + "Driver Registration & Requirements": "تسجيل السائقين والمتطلبات", + "How can I register as a driver?": "كي٠يمكنني التسجيل كسائق؟", + "What are the requirements to become a driver?": + "ما هي المتطلبات للعمل كسائق؟", + "Types of Trips in Intaleq:": "أنواع الرحلات ÙÙŠ انطلق:", + "Comfort: For cars newer than 2017 with air conditioning.": + "كمÙورت: للسيارات الأحدث من 2017 ÙˆØ§Ù„Ù…ÙƒÙŠÙØ©.", + "Lady: For girl drivers.": "ليدي: للسائقات النساء.", + "Intaleq: For fixed salary and endpoints.": + "انطلق: للرحلات ذات الرواتب الثابتة والنقاط النهائية المحددة.", + "Mashwari: For flexible trips where passengers choose the car and driver with prior arrangements.": + "مشواري: للرحلات المرنة حيث يختار الركاب السيارة والسائق مسبقًا.", + "Raih Gai: For same-day return trips longer than 50km.": + "رايح جاي: للرحلات ذهاب وعودة ÙÙŠ Ù†ÙØ³ اليوم Ù„Ù…Ø³Ø§ÙØ§Øª تزيد عن 50 كم.", + "What is Types of Trips in Intaleq?": "أنواع الرحلات ÙÙŠ انطلق", + "Intaleq Wallet Features:": "مميزات Ù…Ø­ÙØ¸Ø© انطلق:", + "Transfer money multiple times.": "تحويل الأموال عدة مرات.", + "Transfer to anyone.": "تحويل لأي شخص.", + "Make purchases.": "الشراء.", + "Charge your account.": "شحن حسابك.", + "Charge a friend's Intaleq account.": "شحن حساب صديقك ÙÙŠ انطلق.", + "Store your money with us and receive it in your bank as a monthly salary.": + "Ø§Ù„Ø§Ø­ØªÙØ§Ø¸ بأموالك معنا واستلامها ÙÙŠ حسابك البنكي كراتب شهري.", + "No Rides Available": "لا توجد رحلات متاحة حالياً", + "What are the order details we provide to you?": + "ما هي ØªÙØ§ØµÙŠÙ„ الطلب التي نقدمها لك؟", + "What is the feature of our wallet?": "ما هي ميزة Ù…Ø­ÙØ¸ØªÙ†Ø§ØŸ", + "How to use Intaleq": "كي٠تستخدم Intaleq", + "Visit our website or contact Intaleq support for information on driver registration and requirements.": + "ØªÙØ¶Ù„ بزيارة موقعنا الإلكتروني أو اتصل بدعم Intaleq للحصول على معلومات حول تسجيل السائقين والمتطلبات.", + "How do I communicate with the other party (passenger/driver)?": + "كي٠أتواصل مع الطر٠الآخر (الراكب/السائق)ØŸ", + "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "ØªÙˆÙØ± Intaleq ميزة الدردشة داخل التطبيق لتتيح لك التواصل مع سائقك أو راكبك أثناء الرحلة.", + "What safety measures does Intaleq offer?": + "ما هي تدابير السلامة التي تقدمها IntaleqØŸ", + "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "تÙولي Intaleq أهمية كبيرة لسلامتك. نحن نقدم ميزات مثل التحقق من هوية السائق ØŒ وتتبع الرحلات داخل التطبيق ØŒ وخيارات الاتصال ÙÙŠ حالات الطوارئ.", + "Frequently Questions": "الأسئلة الشائعة", + "Contact Us": "اتصل بنا", + "Choose a contact option": "اختر خيار الاتصال", + "You can change the vibration feedback for all buttons": + "يمكنك تغيير اهتزاز الرج لجميع الأزرار", + "About Us": "نبذة عنا", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "ساعات العمل من 12:00 - 19:00.\nيمكنك إرسال رسالة عبر واتساب أو بريد إلكتروني.", + "Most Secure Methods": "أساليب الأمان الأكثر ÙØ§Ø¹Ù„ية", + "In-App VOIP Calls": "مكالمات VOIP داخل التطبيق", + "Recorded Trips for Safety": "تسجيل الرحلات من أجل السلامة", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nكما أننا نضع توÙير التكالي٠ÙÙŠ أولوية اهتماماتنا، ونقدم أسعاراً Ù…Ù†Ø§ÙØ³Ø© لجعل رحلاتك ÙÙŠ متناول اليد.", + "Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "Intaleq: تطبيق مشاركة الرحلات يضع سلامتك وادخارك ÙÙŠ المقدمة Intaleq هو تطبيق مشاركة رحلات مصمم مع وضع سلامتك وتوÙيرك ÙÙŠ الاعتبار. نربطك بسائقين موثوقين ÙÙŠ منطقتك، ونضمن لك تجربة انطلق مريحة وخالية من الضغوط.Ùيما يلي بعض الميزات الرئيسية التي تميزنا:", + "Send WhatsApp Message": "إرسال رسالة واتساب", + "Send Email": "إرسال بريد إلكتروني", + "You should complete 600 trips": "يجب عليك إكمال 600 رحلة", + "We have maintenance offers for your car. You can use them after completing 600 trips to get a 20% discount on car repairs. Enjoy using our Intaleq app and be part of our Intaleq family.": + "لدينا عروض صيانة لسيارتك. يمكنك استخدامها بعد إكمال 600 رحلة للحصول على خصم 20% على إصلاحات السيارة. استمتع باستخدام تطبيق Intaleq وكن جزءًا من عائلتنا.", + "Enable Location Permission": "تمكين إذن الموقع", + "Allowing location access will help us display orders near you. Please enable it now.": + "سيساعدنا السماح بالوصول إلى الموقع ÙÙŠ عرض الطلبات القريبة منك. يرجى تمكينه الآن.", + "Allow overlay permission": "السماح Ø¨Ø¥Ø°Ù†â€Ø§Ù„ظهور Ùوق التطبيقات", + "To display orders instantly, please grant permission to draw over other apps.": + "لعرض الطلبات على الÙور، يرجى منح إذن لرسم Ùوق التطبيقات الأخرى.", + "InspectionResult": "نتيجة Ø§Ù„ÙØ­Øµ", + // "Criminal Record": "ØµØ­ÙŠÙØ© الحالة الجنائية", + "The email or phone number is already registered.": + "البريد الإلكتروني أو رقم الهات٠مسجل Ø¨Ø§Ù„ÙØ¹Ù„.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "لتصبح شريكاً سائقاً لمشاركة الرحلات ÙÙŠ تطبيق انطلق، يجب عليك تحميل رخصة القيادة ووثيقة الهوية ووثيقة تسجيل السيارة. سيقوم نظام الذكاء الاصطناعي لدينا بمراجعة مصداقيتها والتحقق منها على الÙور ÙÙŠ غضون 2-3 دقائق Ùقط. إذا تمت المواÙقة على مستنداتك، يمكنك بدء العمل كشريك سائق ÙÙŠ تطبيق انطلق. يرجى ملاحظة أن تقديم المستندات المزورة يعد جريمة خطيرة وقد يؤدي إلى الإنهاء الÙوري والعواقب القانونية.", + "Documents check": "التحقق من المستندات", + // "Driver's License": "رخصة القيادة", + "License Type": "نوع الترخيص", + "National Number": "الرقم القومي:", + "Name (Arabic)": "الاسم (عربي)", + "Name (English)": "الإنجليزية", + "Address": "العنوان", + "Issue Date": "تاريخ الإصدار", + "Expiry Date": "تاريخ انهاء الصلاحية", + "License Categories": "ÙØ¦Ø§Øª الترخيص", + // "driver_license": "رخصة القيادة", + "Capture an Image of Your Driver License": + "التقط صورة لرخصة القيادة الخاصة بك", + // "ID Documents Back": "ظهر وثائق الهوية", + "National ID": "الهوية الوطنية", + "Occupation": "المهنة", + "Your driver’s license and/or car tax has expired. Please renew them before proceeding.": + "لقد انتهت صلاحية رخصة القيادة Ùˆ/أو ضريبة السيارة الخاصة بك. يرجى تجديدها قبل المتابعة.", + "Your driver’s license has expired. Please renew it before proceeding.": + "لقد انتهت صلاحية رخصة القيادة الخاصة بك. يرجى تجديدها قبل المتابعة.", + // "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + // "الرقم الوطني على رخصة القيادة الخاصة بك لا يتطابق مع الرقم الموجود على مستند هويتك. يرجى التحقق وتقديم المستندات الصحيحة.", + "Religion": "الدين", + "You have 500": "لديك 500", + "You have got a gift for invitation": "لقد حصلت على هدية للدعوة", + "You have got a gift": "لقد حصلت على هدية", + "Share the app with another new driver": + "شارك التطبيق مع سائق جديد آخر", + "for your first registration!": "للتسجيل الأول!", + "Get it Now!": "احصل عليه الآن!", + "before": "قبل", + "Intaleq": "انطلق", + "Code not approved": "الرمز غير مواÙÙ‚ عليه", + "300 LE": "300 جنيه مصري", + "Do you have an invitation code from another driver?": + "هل لديك كود دعوة من سائق آخر؟", + "Paste the code here": "الصق الكود هنا", + "No, I don't have a code": "لا، لا أملك كودا", + "Code approved": "تمت المواÙقة على الكود", + "Install our app:": "قم بتثبيت تطبيقنا:", + // "Invite another driver and both get a gift after he completes 100 trips!": + // "ادع صديقًا ليكون سائقًا واحصلا على هدية بعد إكماله 100 مشوار!", + "Share App": "شارك التطبيق", + "You deserve the gift": "أنت تستحق الهدية", + "complete, you can claim your gift": " يمكنك المطالبة بهديتك", + "When": "â€Ø¹Ù†Ø¯Ù…ا يكمل", + "Enter driver's phone": "أدخل رقم هات٠السائق", + // "Send Invite": "أرسل الدعوة", + // "Show Invitations": "عرض الدعوات", + "The period of this code is 1 hour": + "ÙØªØ±Ø© صلاحية هذا الكود هي ساعة واحدة", + "Intaleq DRIVER CODE": "كود سائق انطلق", + "Use this code in registration": "استخدم هذا الكود عند التسجيل", + "To get a gift for both": "للحصول على هدية لكليكما", + "Invite a Driver": "ادع سائقًا", + "As a new driver, you're eligible for a special offer!": + "Ø¨ØµÙØªÙƒ سائقًا جديدًا، ÙØ£Ù†Øª مؤهل للحصول على عرض خاص!", + "Welcome Offer!": "عرض ترحيبي!", + "Please enter a phone number": "من ÙØ¶Ù„Ùƒ أدخل رقم هاتÙ", + "Invite sent successfully": "تم إرسال الدعوة بنجاح", + "Failed to send invite": "ÙØ´Ù„ إرسال الدعوة", + "An error occurred": "حدث خطأ", + "Air Condition Trip": "رحلة تكيي٠", + "Passenger name: ": "اسم الراكب: ", + // "Criminal Document Required": "الÙيش الجنائي مطلوب", + "Criminal Document": "الÙيش الجنائي", + "Marital Status": "الحالة الاجتماعية", + "Full Name (Marital)": "الاسم الكامل (الزوجي)", + "Payment Method": "طريقة Ø§Ù„Ø¯ÙØ¹", + "Expiration Date": "تاريخ الانتهاء", + "Capture an Image of Your ID Document Back": + "التقاط صورة للجهة الخلÙية من وثيقة الهوية الخاصة بك", + // "ID Documents Front": "الوجه الأمامي لوثائق الهوية", + "First Name": "الاسم الأول", + "Press to hear": "اضغط للاستماع", + "CardID": "التقاط صورة للجهة الخلÙية من وثيقة الهوية الخاصة بك", + "Full Name": "الاسم الكامل", + // "Vehicle Details Front": "ØªÙØ§ØµÙŠÙ„ المركبة الأمامية", + "Plate Number": "رقم اللوحة", + "Owner Name": "اسم المالك", + // "Vehicle Details Back": "ØªÙØ§ØµÙŠÙ„ المركبة الخلÙية", + "Make": "â€Ù†ÙˆØ¹ السيارة", + "Model": "طراز السيارة:", + "Year": "السنة", + "Chassis": "الشاسيه", + "Color": "اللون", + "Displacement": "سعه المحرك", + "Fuel": "الوقود", + "Tax Expiry Date": "تاريخ انهاء الصلاحية", + "Inspection Date": "تاريخ Ø§Ù„ÙØ­Øµ", + "Capture an Image of Your car license back": + "التقاط صورة لرخصة سيارتك مرة أخرى", + "Capture an Image of Your Driver’s License": + "التقط صورة لرخصة القيادة الخاصة بك", + "Sign in with Google for easier email and name entry": + "سجّل الدخول باستخدام جوجل لتسهيل إدخال البريد الإلكتروني والاسم", + "You will choose allow all the time to be ready receive orders": + "ستختار السماح طوال الوقت بتلقي الطلبات الجاهزة", + "Welcome to Intaleq!": "مرحبًا بك ÙÙŠ انطلق!", + "Get to your destination quickly and easily.": + "الوصول إلى وجهتك بسرعة وسهولة.", + "Enjoy a safe and comfortable ride.": "استمتع بمشوار آمن ومريح.", + "Choose Language": "اختر لغة", + "Login": "تسجيل الدخول", + "Pay with Wallet": "Ø§Ù„Ø¯ÙØ¹ باستخدام Ø§Ù„Ù…Ø­ÙØ¸Ø©", + "Invalid MPIN": "رمز MPIN غير صالح", + "Invalid OTP": "رمز التحقق غير صالح", + "Enter your email address": "أدخل عنوان بريدك الإلكتروني", + "Please enter Your Email.": "ÙŠÙØ±Ø¬Ù‰ إدخال...", + "Enter your phone number": "أدخل رقم هاتÙÙƒ", + "Please enter your phone number.": "الرجاء إدخال رقم هاتÙÙƒ.", + "Please enter Your Password.": "إدخال كلمة المرور الخاصة بك", + "Submit": "إرسال", + "if you dont have account": "إذا لم يكن لديك حساب", + "Register": "سجل", + "Accept Ride's Terms & Review Privacy Notice": + "اقبل شروط الرحلة وراجع إشعار الخصوصية", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "من خلال تحديد \"أواÙÙ‚\" أدناه، Ùقد راجعت شروط الاستخدام وأواÙÙ‚ عليها وأقر بإشعار الخصوصية.عمري 18 سنة على الأقل.", + "I Agree": "أواÙÙ‚", + "First name": "الاسم الأول", + "Enter your first name": "أدخل اسمك الأول", + "Please enter your first name.": "â€â€Ø§Ù„رجاء إدخال اسمك.", + "Last name": "اسم العائلة", + "Enter your last name": "أدخل اسم العائلة", + "Please enter your last name.": "â€â€Ø§Ù„رجاء إدخال اسمك.", + "City": "المدينة", + "Please enter your City.": "ÙŠÙØ±Ø¬Ù‰ إدخال...", + "Male": "ذكر", + "Female": "أنثى", + "Verify Email": "التحقق من صحة البريد الإلكتروني", + "We sent 5 digit to your Email provided": + "أرسلنا 5 أرقام إلى بريدك الإلكتروني المقدم", + "5 digit": "PIN(5-أرقام)", + "Send Verification Code": "رمز التحقق", + "Your Ride Duration is": "مدة مشوارك هي", + "You will be thier in": "سو٠تكون لهم ÙÙŠ", + "You trip distance is": "Ù…Ø³Ø§ÙØ© مشوارك هي", + "Fee is": "الرسوم هي", + "To :": "إلى:", + "Add Promo": "Ø¥Ø¶Ø§ÙØ© عرض ترويجي", + "Confirm Selection": "تأكيد التحديد", + "distance is": "Ø§Ù„Ù…Ø³Ø§ÙØ© هي", + "duration is": "المدة هي", + "I don't need a ride anymore": "لا أحتاج إلى مشوار بعد الآن", + "I was just trying the application": "كنت أجرب التطبيق Ùقط", + "No driver accepted my request": "لم يقبل أي شريك سائق طلبي", + "I added the wrong pick-up/drop-off location": + "Ø£Ø¶ÙØª موقع الالتقاء/النزول غير الصحيح", + "I don't have a reason": "ليس لدي سبب", + "Other": "أخرى", + "Can we know why you want to cancel Ride ?": + "هل يمكننا Ù…Ø¹Ø±ÙØ© سبب رغبتك ÙÙŠ إلغاء الرحلة ØŸ", + "Cancel Ride": "إلغاء!", + "Add Payment Method": "أض٠طريقة Ø¯ÙØ¹", + "Your Wallet balance is": "رصيد Ù…Ø­ÙØ¸ØªÙƒ هو", + "Ride Wallet": "Ù…Ø­ÙØ¸Ø© الرحلات", + // "Payment Method": "طريقة Ø§Ù„Ø¯ÙØ¹", + "Type here Place": "اكتب هنا المكان", + "Are You sure to ride to": "هل أنت متأكد من إجراء مشوار إلى", + "Confirm": "تأكيد", + "Back": "عودة", + "You are Delete": "أنت تحذÙ", + "Deleted": "محذوÙ", + "You Dont Have Any places yet !": "ليس لديك أي أماكن حتى الآن !", + "Favorite Places": "الأماكن Ø§Ù„Ù…ÙØ¶Ù„Ø©", + "From : Current Location": "الموقع الحالي:", + "Where to": "أين؟", + "Notifications": "الإشعارات", + "Profile": "المل٠الشخصي", + "go to your passenger location before\nPassenger cancel trip": + "اذهب إلى موقع الراكب قبل أن يلغي الراكب الرحلة", + "Home": "Ø§Ù„ØµÙØ­Ø© الرئيسية", + "My Cared": "ماي كيرت", + "Add Card": "أض٠بطاقة", + "Add Credit Card": "أض٠بطاقة ائتمان", + "Please enter the cardholder name": "يرجى إدخال اسم حامل البطاقة", + "Please enter the expiry date": "يرجى إدخال تاريخ انتهاء الصلاحية", + "Please enter the CVV code": "يرجى إدخال رمز التحقق من البطاقة", + "Go To Favorite Places": "الانتقال إلى الأماكن Ø§Ù„Ù…ÙØ¶Ù„Ø©", + "Go to this Target": "انتقل إلى هذا الهدÙ", + "My Profile": "â€Ù…Ù„ÙÙŠ", + "Sign Out": "تسجيل الخروج", + "Home Page": "Ø§Ù„ØµÙØ­Ø© الرئيسية", + "Are you want to go to this site": "هل تريد الذهاب إلى هذا الموقع", + "MyLocation": "موقعي", + "my location": "موقعي", + "Target": "الهدÙ", + "Update": "تحديث", + "Are you sure to exit ride ?": "هل أنت متأكد من الإنهاء", + "You Should choose rate figure": "يجب عليك اختيار الرقم الصحيح", + "Login Captin": "كابتن تسجيل الدخول", + "Register Captin": "تسجيل الكابتن", + "Send Verfication Code": "إرسال رمز التحقق", + "End Ride": "â€Ø¥Ù†Ù‡Ø§Ø¡ الرحلة", + "Minute": "الدقيقة", + "Go to passenger Location": "انتقل إلى موقع الراكب ", + "Duration of the Ride is": "مدة المشوار هي", + "Distance of the Ride is": "Ù…Ø³Ø§ÙØ© المشوار هي", + "Name of the Passenger is": "اسم الراكب هو", + "Hello this is Captain": "مرحبًا، أنا الكابتن", + // "Start the Ride": "ابدأ المشوار", + "Please Wait If passenger want To Cancel!": + "يرجى الانتظار إذا أراد الراكب الإلغاء!", + "Total Duration:": "المدة الإجمالية:", + "Active Duration:": "â€Ù…دة النشاط الحالي", + "Waiting for Captin ...": "ÙÙŠ انتظار الكابتن ...", + "Age is": "العمر هو", + "Rating is": "التقييم هو", + "to arrive you.": "للوصول إليك.", + "Order History": "سجل تاريخ الأمر", + "My Wallet": "Ù…Ø­ÙØ¸ØªÙŠ", + "Tariff": "Ø§Ù„ØªØ¹Ø±ÙŠÙØ©", + "Settings": "الإعدادات", + "Feed Back": "ردود Ø§Ù„ÙØ¹Ù„", + "Promos": "العروض الترويجية", + "Please enter a valid 16-digit card number": + "الرجاء إدخال رقم أمر شراء صالح.", + "Add Phone": "الهاتÙ", + // "Please enter a phone number": "الرجاء إدخال رقم الهاتÙ", + "You dont Add Emergency Phone Yet!": + "لم تقم Ø¨Ø¥Ø¶Ø§ÙØ© هات٠الطوارئ بعد!", + "You will arrive to your destination after": "ستصل إلى وجهتك بعد", + "You can cancel Ride now": "يمكنك إلغاء المشوار الآن", + "You Can cancel Ride After Captain did not come in the time": + "يمكنك إلغاء المشوار بعد عدم وصول الكابتن ÙÙŠ الوقت المناسب", + "If you in Car Now. Press Start The Ride": + "إذا كنت ÙÙŠ السيارة الآن. اضغط على بدء المشوار", + "You Dont Have Any amount in": "ليس لديك أي مبلغ ÙÙŠ", + "Wallet!": "Ù…Ø­ÙØ¸Ø©!", + "You Have": "لديك", + "Save Credit Card": "Ø§Ø­ØªÙØ¸ ببطاقة الائتمان", + "Show Promos": "عرض العروض", + "10 and get 4% discount": "١٠ واحصل على خصم ٤٪", + "20 and get 6% discount": "٢٠ واحصل على خصم ٦٪", + "40 and get 8% discount": "40 واحصل على خصم 8%", + "100 and get 11% discount": "١٠٠ واحصل على خصم ١١٪", + "Pay with Your PayPal": "Ø§Ø¯ÙØ¹ باستخدام PayPal", + "You will choose one of above !": + "سو٠تختار واحدة من الخيارات أعلاه!", + // "Cancel": "إلغاء", + "Delete My Account": "حذ٠حسابي", + "Edit Profile": "تعديل المل٠الشخصي", + // "Name": "الاسم", + "Update Gender": "تحديث الجنس", + "Education": "التعليم", + "Update Education": "تحديث التعليم", + "Employment Type": "نوع Ø§Ù„ÙˆØ¸ÙŠÙØ©", + "SOS Phone": "SOS الهاتÙ", + "High School Diploma": "شهادة الثانوية العامة", + "Associate Degree": "درجة الدبلوم المشترك", + "Bachelor's Degree": "درجة البكالوريوس", + "Master's Degree": "درجة الماجستير", + "Doctoral Degree": "درجة الدكتوراه", + "Promos For today": "العروض الترويجية لليوم", + "Copy this Promo to use it in your Ride!": + "انسخ هذا العرض الترويجي لاستخدامه ÙÙŠ رحلتك!", + "To change some Settings": "لتغيير بعض الإعدادات", + "To change Language the App": "لتغيير لغة التطبيق", + "Order Request Page": "ØµÙØ­Ø© طلب الطلبية", + "Routs of Trip": "طرق الرحلة", + "Passenger Name is": "اسم Ø§Ù„Ù…Ø³Ø§ÙØ±", + "Total From Passenger is": "إجمالي من الراكب هو", + "Duration To Passenger is": "المدة إلى الراكب", + "Distance To Passenger is": "Ù…Ø³Ø§ÙØ© إلى الراكب تكون", + "Total For You is": "المجموع بالنسبة لك هو", + "Distance is": "Ø§Ù„Ù…Ø³Ø§ÙØ©", + "KM": "كيلومتر", + "Duration of Trip is": "مدة الرحلة هي", + "Minutes": "دقائق", + "Apply Order": "تطبيق الطلب", + "Refuse Order": "Ø±ÙØ¶ الطلب", + "Rate Captain": "تقييم الكابتن", + "Enter your Note": "أدخل ملاحظتك", + "Type something...": "اكتب شيئًا...", + "Submit rating": "تقديم التقييم", + "Rate Passenger": "تقييم الراكب", + "Ride Summary": "ملخص الرحلة", + "welcome_message": "رسالة الترحيب", + "app_description": "وصÙ_التطبيق", + "get_to_destination": "الوصول إلى الوجهة", + "get_a_ride": "احصل على رحلة", + "safe_and_comfortable": "آمن ومريح", + "committed_to_safety": "ملتزم بالسلامة", + // "Driver Applied the Ride for You": "سائق قدم الرحلة من أجلك", + // "Show latest promo": "أظهر أحدث عرض ترويجي", + // "Cancel Trip": "إلغاء الرحلة", + // "Passenger Cancel Trip": "الرحلة ألغيت من قبل Ø§Ù„Ù…Ø³Ø§ÙØ±", + // "Please stay on the picked point.": "يرجى البقاء على النقطة المحددة.", + // "Hi ,I will go now": "مرحبًا، سأذهب الآن", + // "Passenger come to you": "الراكب يأتي إليك", + // "Hi ,I Arrive your site": "مرحبًا، لقد وصلت إلى موقعك.", + // "you will pay to Driver": "Ø³ÙˆÙ ØªØ¯ÙØ¹ للسائق", + "Driver Cancel Your Trip": "ألغ٠رحلتك، سائق.", + // "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + // "Ø³ÙˆÙ ØªØ¯ÙØ¹ للسائق Ø³ØªØ¯ÙØ¹ ØªÙƒÙ„ÙØ© وقت السائق انظر إلى Ù…Ø­ÙØ¸ØªÙƒ Intaleq", + // "I will go now": "سأذهب الآن", + "You Have Tips": "لديك نصائح", + "tips": "نصائح", + "Total is": "المجموع هو", + // "No,I want": "لا ØŒ أريد", + // "Your fee is": "رسومك هي", + // "Do you want to pay Tips for this Driver": + // "هل ترغب ÙÙŠ Ø¯ÙØ¹ البقشيش لهذا السائق؟", + // "Tip is": "â€Ø¥ÙƒØ±Ø§Ù…ÙŠ", + "Camera Access Denied.": "تم Ø±ÙØ¶ الوصول إلى الكاميرا.", + "Open Settings": "Ø§ÙØªØ­ الإعدادات", + "GPS Required Allow !.": "GPS مطلوب تمكينه!", + "Your Account is Deleted": "تم حذ٠حسابك", + "Are you sure to delete your account?": + "هل أنت متأكد من رغبتك ÙÙŠ حذ٠حسابك؟", + "Your data will be erased after 2 weeks": + "سيتم محو بياناتك بعد مرور أسبوعين", + "And you will can't return to use app after 1 month": + "وستتمكن من العودة لاستخدام التطبيق بعد شهر واحد", + "Enter Your First Name": "أدخل اسمك الأول", + "Are you Sure to LogOut?": "هل أنت متأكد من تسجيل الخروج؟", + "Email Wrong": "البريد الإلكتروني خاطئ", + "Email you inserted is Wrong.": "البريد الإلكتروني الذي أدخلته خاطئ.", + "You have finished all times": "لقد انتهيت من كل الأوقات", + "if you want help you can email us here": + "إذا كنت ترغب ÙÙŠ المساعدة يمكنك مراسلتنا عبر البريد الإلكتروني هنا", + "Thanks": "شكرًا", + "Email Us": "أرسل لنا بريدًا إلكترونيًا", + "I cant register in your app in face detection": + "لا أستطيع التسجيل ÙÙŠ تطبيقك باستخدام كش٠الوجه", + "Hi": "مرحبا", + "No face detected": "لم يتم الكش٠عن وجه", + "Image detecting result is": "نتيجة كش٠الصورة هي", + "from 3 times Take Attention": "من 3 مرات خذ انتباهك", + "Be sure for take accurate images please": + "تأكد من التقاط صور دقيقة من ÙØ¶Ù„Ùƒ", + "You have": "لديك", + "image verified": "الصورة موثقة", + "Next": "التالي", + "There is no help Question here": "لا يوجد سؤال مساعدة هنا", + // "Call End": "انتهاء المكالمة", + "You dont have Points": "ليس لديك رصيد تشغيل", + "You Are Stopped For this Day !": "تم إيقاÙÙƒ لهذا اليوم!", + "You must be charge your Account": "يجب عليك شحن حسابك", + "You Refused 3 Rides this Day that is the reason": + "Ø±ÙØ¶Øª 3 رحلات هذا اليوم وهذا هو السبب", + "See you Tomorrow!": "أراك غدًا!", + "Recharge my Account": "قم بإعادة شحن حسابي", + "Ok , See you Tomorrow": "حسنًا، أراك غدًا", + "You are Stopped": "أنت متوقÙ", + "Connected": "متصل", + "Not Connected": "غير متصل", + "Your are far from passenger location": "أنت بعيد عن موقع الركاب", + "go to your passenger location before": + "انتقل إلى موقع الراكب الخاص بك قبل", + "Passenger cancel trip": "الراكب قام بإلغاء الرحلة", + "You will get cost of your work for this trip": + "ستحصل على ØªÙƒÙ„ÙØ© عملك لهذه الرحلة", + "in your wallet": "ÙÙŠ Ù…Ø­ÙØ¸ØªÙƒ", + "you gain": "تكسب", + "Account": "الحساب", + "Wallet": "Ø§Ù„Ù…Ø­ÙØ¸Ø©", + "Maintenance Offer": "عرض الصيانة", + // "Enter your Question here": "أدخل سؤالك هنا", + "Ineligible for Offer": "غير مؤهل للحصول على العرض", + "You should complete 500 trips to unlock this feature.": + "يجب عليك إكمال 500 رحلة Ù„ØªÙØ¹ÙŠÙ„ هذه الميزة.", + "Thank You!": "شكراً لك!", + "Your rating has been submitted.": "تم إرسال تقييمك.", + "General": "عام", + "Language": "اللغة", + "You can change the language of the app": "يمكنك تغيير لغة التطبيق", + "Change Country": "تغيير الدولة", + // "Don't start trip if passenger not in your car": + // "لا تبدأ الرحلة إذا لم يكن الراكب ÙÙŠ سيارتك", + "You can change the Country to get all features": + "يمكنك تغيير الدولة للحصول على جميع الميزات", + "Slide to End Trip": "â€Ø§Ø³Ø­Ø¨ لإنهاء الرحلة", + "App Preferences": "ØªÙØ¶ÙŠÙ„ات التطبيق", + "For Egypt": "للمصريين", + "Non Egypt": "لغير المصريين", + "Google Map App": "تطبيق خرائط جوجل", + "If you want to make Google Map App run directly when you apply order": + "إذا كنت تريد تشغيل تطبيق خرائط جوجل مباشرة عند تطبيق الطلب", + "Vibration": "الاهتزاز", + "Help & Support": "المساعدة والدعم", + "Please select a rating before submitting.": + "يرجى تحديد تقييم قبل الإرسال.", + "Please check back later for available rides.": + "يرجى التحقق مرة أخرى لاحقًا للحصول على الرحلات المتاحة.", + "Please enter your question": "يرجى إدخال سؤالك", + "Submit Question": "إرسال السؤال", + "Your Questions": "أسئلتك", + "No questions asked yet.": "لم يتم طرح أي أسئلة بعد.", + "Activities": "الأنشطة", + "History of Trip": "سجل الرحلات", + "Available for rides": "متاح للرحلات", + "Support": "الدعم", + "Helping Center": "مركز المساعدة", + "More": "المزيد", + "Order Cancelled": "الطلب ملغى", + "Order Cancelled by Passenger": "تم إلغاء الطلب من قبل الراكب", + "Success": "â€ØªÙ…ام", + "Feedback data saved successfully": "تم Ø­ÙØ¸ بيانات التقييم بنجاح", + "No Promo for today .": "لا ترويج لليوم.", + "Select your destination": "اختر وجهتك", + "Search for your Start point": "ابحث عن نقطة البداية الخاصة بك", + "Search for waypoint": "ابحث عن نقطة الوايبوينت", + "Current Location": "الموقع الحالي", + "Add Location 1": "أض٠الموقع 1", + "You must Verify email !.": "يجب التحقق من البريد الإلكتروني!", + "Cropper": "القص", + "Saved Sucssefully": "تم Ø§Ù„Ø­ÙØ¸ بنجاح", + "Select Date": "اختر التاريخ", + "Birth Date": "تاريخ الميلاد", + "Ok": "حسنا", + "the 500 points equal 30 JOD": "الـ 500 نقطة تساوي 30 دينار أردني", + "the 500 points equal 30 JOD for you": + "الـ500 نقطة تعادل 30 دينار أردني لك", + "token updated": "الرمز تم تحديثه", + "Add Location 2": "أض٠الموقع Ù¢", + "Add Location 3": "أض٠الموقع Ù£", + "Add Location 4": "أض٠الموقع Ù¤", + "Waiting for your location": "ÙÙŠ انتظار موقعك", + "Search for your destination": "ابحث عن وجهتك", + "Hi! This is": "مرحبًا! هذا", + "I am using": "أنا استخدم", + "to ride with": "للركوب مع", + "as the driver.": "كسائق.", + "is driving a": "يقود", + "with license plate": "بوجود لوحة ترخيص", + "I am currently located at": "أنا حاليا موجود ÙÙŠ", + "Please go to Car now": "الرجاء الذهاب إلى السيارة الآن", + "If you need to reach me, please contact the driver directly at": + "إذا كنت بحاجة للتواصل معي، يرجى التواصل مع السائق مباشرة على", + "No Car or Driver Found in your area.": + "لم يتم العثور على سيارة أو سائق ÙÙŠ منطقتك.", + "Please Try anther time": "يرجى المحاولة مرة أخرى", + "There no Driver Aplly your order sorry for that": + "لا يوجد سائق يمكنه تنÙيذ طلبك، نأس٠لذلك.", + "Trip Cancelled": "تم إلغاء الرحلة", + "The Driver Will be in your location soon .": + "سيكون السائق ÙÙŠ موقعك قريبًا.", + "The distance less than 500 meter.": "Ø§Ù„Ù…Ø³Ø§ÙØ© أقل من 500 متر.", + "Promo End !": "انتهاء العرض!", + "There is no notification yet": "لا توجد إشعارات بعد", + "Use Touch ID or Face ID to confirm payment": + "استخدم معر٠اللمس أو معر٠الوجه لتأكيد Ø§Ù„Ø¯ÙØ¹", + "Contact us for any questions on your order.": + "اتصل بنا لأي Ø§Ø³ØªÙØ³Ø§Ø± حول طلبك.", + "Pyament Cancelled .": "تم إلغاء Ø§Ù„Ø¯ÙØ¹.", + "type here": "اكتب هنا", + "Scan Driver License": "ÙØ­Øµ رخصة القيادة", + "Please put your licence in these border": + "يرجى وضع رخصتك ÙÙŠ هذه الحدود", + "Camera not initialized yet": "الكاميرا لم تÙهيأ بعد", + "Take Image": "خذ صورة", + "AI Page": "ØµÙØ­Ø© الذكاء الاصطناعي", + "Take Picture Of ID Card": "خذ صورة لبطاقة الهوية", + "Take Picture Of Driver License Card": "خذ صورة لبطاقة رخصة القيادة.", + "We are process picture please wait": + "نحن نقوم بمعالجة الصور، يرجى الانتظار.", + "There is no data yet.": "لا توجد بيانات بعد.", + "Name :": "الاسم:", + "Drivers License Class:": "رخصة القيادة Ø§Ù„ÙØ¦Ø©:", + "Document Number:": "رقم الوثيقة:", + "Address:": "العنوان:", + "Height:": "الطول:", + "Expiry Date:": "تاريخ الانتهاء:", + "Date of Birth:": "تاريخ الميلاد:", + "You can't continue with us .": "لا يمكنك الاستمرار معنا.", + "You should renew Driver license": "يجب عليك تجديد رخصة القيادة", + "Detect Your Face": "اكتشا٠وجهك", + "Go to next step": "انتقل إلى الخطوة التالية", + "scan Car License.": "ÙØ­Øµ رخصة السيارة.", + "Name in arabic": "الاسم بالعربية", + "Drivers License Class": "رخصة القيادة Ø§Ù„ÙØ¦Ø©", + "Date of Birth": "تاريخ الميلاد", + "Age": "العمر", + "Lets check Car license": "دعونا نتحقق من رخصة السيارة", + "Car Kind": "نوع السيارة", + "Car Plate": "لوحة السيارة", + "Lets check License Back Face": "دعونا نتحقق من رخصة الوجه الخلÙÙŠ", + "Car License Card": "بطاقة ترخيص السيارة", + "No image selected yet": "لم يتم اختيار صورة بعد", + "Made :": "صنع:", + "model :": "الموديل:", + "VIN :": "رقم الهيكل:", + "year :": "سنة:", + "ÙExpire Date": "تاريخ الانتهاء", + "Login Driver": "تسجيل الدخول للسائق", + "Password must br at least 6 character.": + "يجب أن تكون كلمة المرور على الأقل 6 أحرÙ.", + "if you don't have account": "إذا لم يكن لديك حساب", + "Here recorded trips audio": "هنا تسجيلات رحلات صوتية", + "Register as Driver": "التسجيل كشريك سائق", + "Privacy Notice": "إشعار الخصوصية", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the": + "من خلال اختيار \"أواÙÙ‚\" أدناه، قمت بمراجعة الشروط والأحكام وأواÙÙ‚ عليها وأقر بها", + ". I am at least 18 years of age.": ". أنا عمري على الأقل 18 عامًا.", + "Log Out Page": "ØµÙØ­Ø© تسجيل الخروج", + "Log Off": "سجل الخروج", + "Register Driver": "سجل السائق", + "Verify Email For Driver": "تحقق من البريد الإلكتروني للسائق", + "Admin DashBoard": "لوحة تحكم المشرÙ", + "Your name": "اسمك", + "your ride is applied": "تم تطبيق مشوارك", + "Your password": "كلمة السر الخاصة بك", + "LE": "جنيه مصري", + "JOD": "الدينار الأردني", + "m": "m", + "We search nearst Driver to you": "نحن نبحث عن أقرب شريك سائق إليك", + "please wait till driver accept your order": + "انتظر من ÙØ¶Ù„Ùƒ حتى يقبل السائق طلبك", + "No accepted orders? Try raising your trip fee to attract riders.": + "لا توجد طلبات مقبولة ØŸ حاول زيادة رسوم رحلتك لجذب الركاب.", + "You should select one": "يجب عليك اختيار واحد", + "The driver accept your order for": "قبل الشريك السائق طلبك مقابل", + "Increase Fee": "زيادة الرسوم", + "No, thanks": "لا، شكرًا", + "The driver on your way": "الشريك السائق ÙÙŠ طريقه إليك", + "Total price from": "السعر الإجمالي من", + "Order Details Intaleq": "ØªÙØ§ØµÙŠÙ„ الطلب السرعة", + // "Order Applied": "تم تطبيق الطلب", + "accepted your order": "تم قبول طلبك", + // "We regret to inform you that another driver has accepted this order.": + // "يؤسÙنا إبلاغك بأن شريكاً سائقاً آخر قد قبل هذا الطلب.", + "Selected file:": "المل٠المحدد:", + "Your trip cost is": "تبلغ ØªÙƒÙ„ÙØ© رحلتك", + "this will delete all files from your device": + "سيقوم هذا بحذ٠جميع Ø§Ù„Ù…Ù„ÙØ§Øª من جهازك", + "you have a negative balance of": "لديك رصيد سلبي قدره", + "in your": "Ùيك", + "Exclusive offers and discounts always with the Intaleq app": + "عروض وخصومات حصرية دائمًا مع تطبيق انطلق", + // "Please go to Car Driver": "من ÙØ¶Ù„Ùƒ اذهب إلى سائق السيارة", + "wallet due to a previous trip.": "Ø§Ù„Ù…Ø­ÙØ¸Ø© بسبب رحلة سابقة.", + // "Submit Question": "إرسال السؤال", + "Please enter your Question.": "الرجاء إدخال سؤالك.", + "Help Details": "ØªÙØ§ØµÙŠÙ„ المساعدة", + "No trip yet found": "لم يتم العثور على رحلة بعد", + "No Response yet.": "لا توجد استجابة حتى الآن.", + "You Earn today is": "كسبك اليوم هو", + // "You Have in": "لديك ÙÙŠ", + "Total points is": "â€Ø§Ù„رصيد التشغيل", + "Total Connection Duration:": "إجمالي مدة الاتصال:", + "H and": "H Ùˆ", + "Passenger name :": "اسم Ø§Ù„Ù…Ø³Ø§ÙØ±:", + // "Cost Of Trip IS": "ØªÙƒÙ„ÙØ© الرحلة هي", + "Arrival time": "وقت الوصول", + "arrival time to reach your point": "وقت الوصول للوصول إلى وجهتك", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "للرحلات السريعة والتوصيل، يتم حساب السعر بشكل ديناميكي. أما بالنسبة للرحلات المريحة، يعتمد السعر على الوقت ÙˆØ§Ù„Ù…Ø³Ø§ÙØ©.", + "Hello this is Driver": "مرحباً، أنا الشريك السائق", + "Please wait for the passenger to enter the car before starting the trip.": + "يرجى الانتظار حتى يدخل الراكب السيارة قبل بدء الرحلة.", + "No ,still Waiting.": "لا ØŒ ما زلت ÙÙŠ انتظارك.", + "I arrive you": "لقد وصلت إليك", + "I Arrive your site": "لقد وصلت إليك", + "please go to picker location exactly": + "الرجاء الانتقال إلى موقع الاختيار بالضبط", + "You Can Cancel Trip And get Cost of Trip From": + "يمكنك إلغاء المشوار والحصول على ØªÙƒÙ„ÙØ© المشوار من", + // "Yes": "نعم", + "Insert Emergincy Number": "أدخل رقم الطوارئ", + "Best choice for comfort car and flexible route and stops point": + "Ø£ÙØ¶Ù„ خيار للسيارة المريحة والطريق المرن ونقطة التوقÙ", + "Insert": "إدراج", + "Total weekly is ": " â€Ù…جموع التحصيل الأسبوعي ", + "you can buy ": "â€ÙŠÙ…كنك شراء", + "Which method you will pay": "â€Ø£ÙŠ Ø·Ø±ÙŠÙ‚Ø© Ø§Ù„Ø¯ÙØ¹ ØªÙØ¶Ù„", + "This is for delivery or a motorcycle.": + "هذا للتوصيل أو دراجة نارية.", + "by ": "†ب", + "Weekly Budget": "â€Ø§Ù„تقرير الأسبوعي", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "ينتقل هذا المشوار مباشرة من نقطة البداية إلى وجهتك بسعر ثابت. يجب على الشريك السائق اتباع المسار المخطط له", + "You can decline a request without any cost": + "يمكنك Ø±ÙØ¶ الطلب دون أي ØªÙƒÙ„ÙØ©", + "Perfect for adventure seekers who want to experience something new and exciting": + "مثالي للباحثين عن المغامرة الذين يرغبون ÙÙŠ تجربة شيء جديد ومثير", + "My current location is:": "موقعي الحالي هو:", + "and I have a trip on": "ولدي رحلة ÙÙŠ", + "App with Passenger": "تطبيق مع الراكب", + "You will be pay the cost to driver or we will get it from you on next trip": + "سيتم Ø¯ÙØ¹ Ø§Ù„ØªÙƒÙ„ÙØ© للشريك السائق أو سنحصل عليها منك ÙÙŠ المشوار التالي", + "Trip has Steps": "الرحلة لها خطوات", + "Distance from Passenger to destination is": + "Ù…Ø³Ø§ÙØ© الراكب إلى الوجهة هي", + "price is": "السعر هو", + "This ride type does not allow changes to the destination or additional stops": + "لا يسمح نوع المشوار هذا بإجراء تغييرات على الوجهة أو نقاط توقّÙ٠إضاÙية", + "This price may be changed": "قد يتم تغيير هذا السعر", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "لا توجد بطاقة SIMØŒ لا توجد مشكلة! اتصل بالشريك السائق مباشرة من خلال تطبيقنا. نحن نستخدم التكنولوجيا المتقدمة لضمان خصوصيتك.", + "This ride type allows changes, but the price may increase": + "يسمح نوع الرحلة هذا بالتغييرات، لكن قد ÙŠØ±ØªÙØ¹ السعر", + // "message From Driver": "â€Ø±Ø³Ø§Ù„Ø© من السائق", + // "message From passenger": "رسالة من الراكب", + "Select one message": "اختر رسالة واحدة", + "I'm waiting for you": "أنا ÙÙŠ انتظارك", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "لاحظنا أن السرعة تتجاوز 100 كم/ساعة. يرجى إبطاء السرعة Ø­ÙØ§Ø¸Ù‹Ø§ على سلامتك. إذا شعرت بعدم الأمان، يمكنك مشاركة ØªÙØ§ØµÙŠÙ„ رحلتك مع جهة اتصال أو الاتصال بالشرطة باستخدام الزر الأحمر للاستغاثة.", + "Warning: Intaleqing detected!": "تحذير: تم اكتشا٠السرعة الزائدة!", + "Please help! Contact me as soon as possible.": + "من ÙØ¶Ù„Ùƒ ساعدني! تواصل معي ÙÙŠ أقرب وقت ممكن.", + "Email": "البريد الإلكتروني", + "Please enter your Email.": "يرجى إدخال بريدك الإلكتروني", + "Email must be correct.": "البريد الإلكتروني يجب أن يكون صحيحاً", + "Password": "كلمة المرور", + "Please enter your Password.": "يرجى إدخال كلمة المرور", + "Password must be at least 6 characters.": + "يجب أن تكون كلمة المرور مكونة من 6 أحر٠على الأقل", + "Phone Number": "رقم الهاتÙ", + // "Please enter your phone number.": "يرجى إدخال رقم هاتÙÙƒ", + "Phone number must be valid.": "يجب أن يكون رقم الهات٠صحيحاً", + "Share Trip Details": "شارك ØªÙØ§ØµÙŠÙ„ الرحلة", + "Car Plate is": "لوحة السيارة", + "L.E": "ج.Ù…", + "the 300 points equal 300 L.E for you": + "الـ 300 نقطة تعادل 300 جنيه مصري بالنسبة لك", + "So go and gain your money": "انطلق واكسب مالك", + "the 300 points equal 300 L.E": "الـ 300 نقطة تساوي 300 جنيه مصري", + "The payment was not approved. Please try again.": + "لم يتم المواÙقة على Ø§Ù„Ø¯ÙØ¹. يرجى المحاولة مرة أخرى.", + "Payment Failed": "تعذرت عملية Ø§Ù„Ø¯ÙØ¹", + // "Error": "خطأ", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "Ù…Ùنْ Ø®Ùلَال اخْتÙيَار 'Ø£ÙوَاÙÙÙ‚' Ø£ÙŽØ¯Ù’Ù†ÙŽØ§Ù‡ÙØŒ Ù‚Ùمْت٠بÙÙ…ÙØ±ÙŽØ§Ø¬ÙŽØ¹ÙŽØ© وَقَبÙول Ø´ÙØ±Ùوط Ø§Ù„Ø§Ø³Ù’ØªÙØ®Ù’دَام ÙˆÙŽØ£ÙÙ‚ÙØ±ÙÙ‘ Ø¨ÙØ¥Ùشْعَار Ø§Ù„Ø®ÙØµÙوصÙيَّة. أَنَا عَلَى الأَقَل 18 عَامًا.", + "If you need any help or have question this is right site to do that and your welcome": + "إذا كنت بحاجة إلى أي مساعدة أو لديك أي أسئلة، Ùهذا هو الموقع المناسب للقيام بذلك، ومرحباً بك", + "Helping Page": "â€Ù…ركز المساعدة", + "No ride yet": "â€Ù„ا يوجد رحلات Ù…ØªÙˆÙØ±Ø©", + "An error occurred during the payment process.": + "حدث خطأ أثناء عملية Ø§Ù„Ø¯ÙØ¹.", + "The payment was approved.": "تمت المواÙقة على Ø§Ù„Ø¯ÙØ¹.", + "Payment Successful": "تم Ø§Ù„Ø¯ÙØ¹ بنجاح", + "No ride found yet": "لم يتم العثور على رحلة بعد", + "Accept Order": "قبول الطلب", + "Bottom Bar Example": "مثال على الشريط السÙلي", + "Driver phone": "هات٠الشريك السائق", + "Statistics": "الإحصائيات", + "is ON for this month": " لهذا الشهر ", + "Origin": "الأصل", + "Destination": "مكان الوصول", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "ال300 نقطة تعادل 300 ج.Ù… لك، ÙØ§Ø°Ù‡Ø¨ واكسب مالك.", + "Driver Name": "اسم السائق", + "Driver Car Plate": "لوحة سيارة السائق", + // "Available for rides": "â€Ø§Ù„رحلات Ø§Ù„Ù…ØªÙˆÙØ±Ø©", + "Scan Id": "ÙØ­Øµ الهوية", + "Camera not initilaized yet": "الكاميرا لم تÙهيأ بعد", + "Scan ID MklGoogle": "ÙØ­Øµ الهوية MklGoogle", + // "Language": "اللغة", + "Jordan": "الأردن", + "USA": "الولايات المتحدة الأمريكية", + "Egypt": "مصر", + "Turkey": "تركيا", + "Saudi Arabia": "السعودية", + "Qatar": "قطر", + "Bahrain": "البحرين", + "Kuwait": "الكويت", + "But you have a negative salary of": "لكن لديك راتب سالب من", + "Promo Code": "الرمز الترويجي", + "Your trip distance is": "Ù…Ø³Ø§ÙØ© رحلتك هي", + "Enter promo code": "أدخÙÙ„ الرمز الترويجي", + "You have promo!": "لديك عرض ترويجي!", + "Cost Duration": "مدة Ø§Ù„ØªÙƒÙ„ÙØ©", + "Duration is": "المدة هي", + "Leave": "اترك", + "Join": "انضم", + "You Should be select reason.": "يجب عليك اختيار السبب.", + "\$": "\$", + "Waiting for Driver ...": "ÙÙŠ انتظار الشريك السائق ...", + "Latest Recent Trip": "أحدث مشوار", + "from your list": "من قائمتك", + "Do you want to change Work location": "هل ترغب ÙÙŠ تغيير موقع العمل؟", + "Do you want to change Home location": "هل ترغب ÙÙŠ تغيير موقع المنزل", + "We Are Sorry That we dont have cars in your Location!": + "نحن نأس٠لعدم ØªÙˆÙØ± السيارات ÙÙŠ موقعك!", + "Choose from Map": "اختر من الخريطة", + "Pick your ride location on the map - Tap to confirm": + "اختر موقع ركوبك على الخريطة - اضغط لتأكيد", + "To Work": "للعمل", "welcome_to_intaleq": "أهلاً بك ÙÙŠ انطلق", + "welcome to intaleq": "أهلاً بك ÙÙŠ انطلق", + "login or register subtitle": + "أدخل رقم هاتÙÙƒ للدخول أو إنشاء حساب جديد", + "phone number label": "رقم الهاتÙ", + "phone number required": "يرجى إدخال رقم الهاتÙ", + "send otp button": "إرسال رمز التحقق", + "verify your number title": "التحقق من الرقم", + "otp sent subtitle": "تم إرسال رمز تحقق من 5 أرقام إلى\n@phoneNumber", + "verify and continue button": "تحقق ومتابعة", + "enter otp validation": "الرجاء إدخال رمز التحقق المكون من 5 أرقام", + "one last step title": "خطوة أخيرة", + "complete profile subtitle": "أكمل بياناتك الشخصية للبدء", + "first name label": "الاسم الأول", + "first name required": "يرجى إدخال الاسم الأول", + "last name label": "الاسم الأخير", + "last name required": "يرجى إدخال الاسم الأخير", + "email optional label": "البريد الإلكتروني (اختياري)", + "complete registration button": "إكمال التسجيل", + "otp sent success": "تم إرسال رمز التحقق إلى واتساب.", + "failed to send otp": "ÙØ´Ù„ إرسال الرمز.", + "server error try again": "حدث خطأ بالخادم، يرجى المحاولة لاحقاً.", + "an error occurred": "حدث خطأ غير متوقع: @error", + "otp verification failed": "رمز التحقق غير صحيح.", + "registration failed": "ÙØ´Ù„ت عملية التسجيل.", + "welcome user": "أهلاً بك، @firstName!", + "Driver Wallet": "Ù…Ø­ÙØ¸Ø© السائق", + "The 30000 points equal 30000 S.P for you \nSo go and gain your money": + "الـ 30000 نقطة تساوي 30000 Ù„.س لك \nلذا اذهب واكسب أموالك", + "OK": "مواÙÙ‚", + "Total Points is": "إجمالي النقاط هو", + "Charge your Account": "اشحن حسابك", + 'L.S': 'Ù„.س', + "Total Amount:": "المبلغ الإجمالي:", + "Intaleq Wallet": "Ù…Ø­ÙØ¸Ø© انطلق", + "Current Balance": "الرصيد الحالي", + "S.P.": "Ù„.س.", + "Your total balance:": "رصيدك الإجمالي:", + "Payment Method:": "طريقة Ø§Ù„Ø¯ÙØ¹:", + "e.g., 0912345678": "مثال: 0912345678", + + "Your balance is less than the minimum withdrawal amount of {minAmount} S.P.": + "رصيدك أقل من الحد الأدنى للسحب وهو {minAmount} Ù„.س.", + "This amount for all trip I get from Passengers": + "هذا المبلغ عن كل رحلة أحصل عليها من الركاب", + "SAFAR Wallet": "Ù…Ø­ÙØ¸Ø© Ø³ÙØ±", + "Pay from my budget": "Ø§Ø¯ÙØ¹ من رصيدي", + "You have in account": "لديك ÙÙŠ الحساب", + "Pay": "Ø¯ÙØ¹", + "Your Budget less than needed": "رصيدك أقل من المطلوب", + + "You do not have enough money in your SAFAR wallet": + "ليس لديك ما يكÙÙŠ من المال ÙÙŠ Ù…Ø­ÙØ¸Ø© Ø³ÙØ± الخاصة بك", + "You can purchase a budget to enable online access through the options listed below": + "يمكنك شراء رصيد Ù„ØªÙØ¹ÙŠÙ„ الوصول عبر الإنترنت من خلال الخيارات المذكورة أدناه", + "this is count of your all trips in the morning promo today from 7:00am to 10:00am": + "هذا هو عدد جميع رحلاتك ÙÙŠ عرض الصباح اليوم من الساعة 7:00 صباحًا حتى 10:00 صباحًا", + "this is count of your all trips in the Afternoon promo today from 3:00pm to 6:00 pm": + "هذا هو عدد جميع رحلاتك ÙÙŠ عرض الظهيرة اليوم من الساعة 3:00 مساءً حتى 6:00 مساءً", + "Payment History": "سجل المدÙوعات", + "Insert Payment Details": "أدخل ØªÙØ§ØµÙŠÙ„ Ø§Ù„Ø¯ÙØ¹", + "Insert your mobile wallet details to receive your money weekly": + "أدخل ØªÙØ§ØµÙŠÙ„ Ù…Ø­ÙØ¸ØªÙƒ الإلكترونية لاستلام أموالك أسبوعيًا", + "Insert mobile wallet number": "أدخل رقم Ø§Ù„Ù…Ø­ÙØ¸Ø© الإلكترونية", + "syriatel": "سيريتل", + "mtn": "إم تي إن", + "Payment details added successfully": "تمت Ø¥Ø¶Ø§ÙØ© ØªÙØ§ØµÙŠÙ„ Ø§Ù„Ø¯ÙØ¹ بنجاح", + "Your Journey Begins Here": "رحلتك تبدأ هنا", + "Are you want to go this site": "هل تريد الذهاب إلى هذا الموقع", + "Closest & Cheapest": "الأقرب والأرخص", + "Work Saved": "â€â€ØªÙ… Ø­ÙØ¸:", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "انطلق هو تطبيق طلب المشاوير الآمن والموثوق به والذي يمكن الوصول إليه.", + "With Intaleq, you can get a ride to your destination in minutes.": + "مع انطلق، يمكنك إجراء مشوار إلى وجهتك ÙÙŠ غضون دقائق.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "يلتزم انطلق بالسلامة، ويتم ÙØ­Øµ جميع قادتنا بعناية ÙˆÙØ­Øµ الخلÙية الجنائية.", + "To Home": "إلى Ø§Ù„ØµÙØ­Ø© الرئيسية", + "Home Saved": "â€â€ØªÙ… Ø­ÙØ¸:", + "Destination selected": "تم تحديد الوجهة", + "Now select start pick": "الآن اختر بدء الاختيار", + "Pick from map": "اختر من الخريطة", + "Click here point": "انقر هنا", + "No Car in your site. Sorry!": "لا توجد سيارة ÙÙŠ موقعك. عذرًا!", + "Nearest Car for you about": "أقرب سيارة لك حوالي", + "N/A": "لا توجد معلومات", + "From :": "من:", + "Get Details of Trip": "احصل على ØªÙØ§ØµÙŠÙ„ الرحلة", + "If you want add stop click here": + "إذا كنت ترغب ÙÙŠ Ø¥Ø¶Ø§ÙØ© ØªÙˆÙ‚ÙØŒ انقر هنا", + "Driver": "سائق", + "Where you want go": "أين تريد أن تذهب؟", + "My Card": "بطاقتي", + "Start Record": "بدء التسجيل", + // "Wallet": "Ù…Ø­ÙØ¸Ø©", + // "History of Trip": "â€Ø£Ø±Ø´ÙŠÙ الرحلات", + // "Helping Center": "مركز المساعدة", + "Record saved": "تم Ø­ÙØ¸ السجل", + "Trips recorded": "رحلات مسجلة", + "Select Your Country": "اختر بلدك", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "لضمان حصولك على أدق المعلومات لموقعك، يرجى تحديد بلدك أدناه. سيساعد هذا ÙÙŠ تخصيص تجربة التطبيق والمحتوى لبلدك.", + "Are you sure to delete recorded files": + "هل أنت متأكد من Ø­Ø°Ù Ø§Ù„Ù…Ù„ÙØ§Øª المسجلة", + "Select recorded trip": "اختر مشوارًا مسجلاً", + "Card Number": "رقم البطاقة", + "Hi, Where to": "مرحبًا، إلى أين؟", + "Pick your destination from Map": "اختر وجهتك من الخريطة", + "Add Stops": "Ø£Ø¶Ù ØªÙˆÙ‚ÙØ§Øª", + "Get Direction": "احصل على الاتجاه", + "Add Location": "أض٠الموقع", + "Switch Rider": "تبديل الراكب", + "You will arrive to your destination after timer end.": + "سو٠تصل إلى وجهتك بعد انتهاء المؤقت.", + "You can cancel trip": "يمكنك إلغاء الرحلة", + "The driver waitting you in picked location .": + "الشريك السائق ÙÙŠ انتظارك ÙÙŠ الموقع Ø§Ù„Ù…ÙØ­Ø¯Ù‘َد .", + "Pay with Your": "Ø§Ø¯ÙØ¹ باستخدام", + "Pay with Credit Card": "Ø§Ø¯ÙØ¹ ببطاقة الائتمان", + "Payment History": "سجل Ø§Ù„Ø¯ÙØ¹Ø§Øª", + "Show Promos to Charge": "إظهار العروض الترويجية للشحن", + "Point": "نقطة", + "Driver Wallet": "Ù…Ø­ÙØ¸Ø© الشريك السائق", + "Total Points is": "â€Ø±ØµÙŠØ¯ التشغيل", + "Total Budget from trips is": "الميزانية الإجمالية من الرحلات هي", + "Total Amount:": "المبلغ الإجمالي:", + "Total Budget from trips by": "الميزانية الإجمالية من الرحلات حسب", + "Credit card is": "بطاقة الائتمان", + "This amount for all trip I get from Passengers": + "هذا المبلغ لجميع الرحلات التي أحصل عليها من الركاب", + "Pay from my budget": "Ø§Ø¯ÙØ¹ من ميزانيتي", + // "This amount for all trip I get from Passengers and Collected For me in": + // "هذا المبلغ لجميع الرحلات التي أحصل عليها من الركاب والتي تم جمعها من أجلي ÙÙŠ", + // "You can buy points from your budget": + // "يمكنك شراء النقاط من ميزانيتك", + // "insert amount": "أدخل المبلغ", + "You can buy Points to let you online": + "يمكنك شراء النقاط لتمكينك من الدخول عبر الإنترنت", + "by this list below": "من خلال هذه القائمة أدناه", + // "Create Wallet to receive your money": "أنشئ Ù…Ø­ÙØ¸Ø© لاستقبال أموالك", + "Enter your feedback here": "أدخل ملاحظاتك هنا", + "Please enter your feedback.": "الرجاء إدخال نص ملاحظاتك", + "Feedback": "التغذية الراجعة", + "Click here to Show it in Map": "انقر هنا لعرضه على الخريطة", + "Canceled": "تم الإلغاء", + "Type your Email": "اكتب بريدك الإلكتروني", + "No I want": "لا، أريد", + "Email is": "البريد الإلكتروني", + "Phone Number is": "رقم الهات٠هو", + "Date of Birth is": "تاريخ الميلاد هو", + "Sex is": "الجنس هو", + "Car Details": "ØªÙØ§ØµÙŠÙ„ السيارة", + "VIN is": "رقم الهيكل", + "Color is": "اللون هو", + "Make is": "الصنع هو", + "Model is": "النموذج من:", + "Year is": "السنة", + "Edit Your data": "تعديل بياناتك", + "write vin for your car": "اكتب رقم الهيكل الخاص بسيارتك", + "VIN": "رقم هيكل السيارة", + "write Color for your car": "اكتب لون سيارتك", + "write Make for your car": "اكتب صنع لسيارتك", + "write Model for your car": "اكتب نموذج سيارتك", + "write Year for your car": "اكتب سنة لسيارتك", + "write Expiration Date for your car": + "اكتب تاريخ انتهاء الصلاحية لسيارتك", + "Tariffs": "ØªØ¹Ø±ÙŠÙØ§Øª", + "Minimum fare": "الحد الأدنى للأجرة", + "Maximum fare": "أقصى سعر", + "Flag-down fee": "رسوم التوقÙ", + "Including Tax": "بما ÙÙŠ ذلك الضريبة", + "BookingFee": "رسوم الحجز", + "Morning": "الصباح", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "من الساعة 07:30 حتى الساعة 10:30 (الخميس، الجمعة، السبت، الاثنين)", + "Evening": "مساء", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "من الساعة 12:00 حتى الساعة 15:00 (الخميس، الجمعة، السبت، الاثنين)", + "Night": "الليل", + "You have in account": "لديك ÙÙŠ الحساب", + "Select Country": "اختر البلد", + "Ride Today :": "اطلب مشواراً اليوم :", + "After this period": "بعد هذه Ø§Ù„ÙØªØ±Ø©", + "You can't cancel!": "لا يمكنك الإلغاء!", + "from 23:59 till 05:30": "من 23:59 حتى 05:30", + "Rate Driver": "قيم السائق", + "Total Cost is": "Ø§Ù„ØªÙƒÙ„ÙØ© الإجمالية هي", + "Write note": "اكتب ملاحظة", + "Time to arrive": "الوقت المتوقع للوصول", + "Ride Summaries": "ملخصات الرحلات", + // "Total Cost": "Ø§Ù„ØªÙƒÙ„ÙØ© الإجمالية", + "Average of Hours of": "متوسط ساعات العمل", + // "is ON for this month": "قيد التشغيل لهذا الشهر", + "Days": "أيام", + "Total Hours on month": "إجمالي عدد الساعات ÙÙŠ الشهر", + "Counts of Hours on days": "عدد الساعات ÙÙŠ الأيام", + "OrderId": "رقم الطلب", + "created time": "وقت الإنشاء", + "Intaleq Over": "السرعة Ùوق", + "I will slow down": "سأبطئ", + "Map Passenger": "خريطة الراكب", + "Be Slowly": "كن بطيئًا", + // "If you want to make Google Map App run directly when you apply order": + // "إذا كنت تريد تشغيل تطبيق خرائط جوجل مباشرة عند تطبيق الأمر", + "Your Budget less than needed": "ميزانيتك أقل من المطلوب", + // "You can change the Country to get all features": + // "يمكنك تغيير البلد للحصول على جميع الميزات", + // "Change Country": "غير البلد" + }, + "tr": { + "Order": "SipariÅŸ", + "OrderVIP": "VIP SipariÅŸ", + "Cancel Trip": "YolculuÄŸu İptal Et", + "Passenger Cancel Trip": "Yolcu YolculuÄŸu İptal Etti", + "VIP Order": "VIP SipariÅŸ", + "The driver accepted your trip": "Sürücü yolculuÄŸunuzu kabul etti", + "message From passenger": "Yolcudan mesaj", + "Cancel": "İptal", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "Yolculuk İptal Edildi. Yolculuk ücreti cüzdanınıza eklenecektir.", + "token change": "token deÄŸiÅŸikliÄŸi", + "face detect": "yüz algılama", + "Face Detection Result": "Yüz Algılama Sonucu", + "similar": "benzer", + "not similar": "benzer deÄŸil", + "Hi ,I will go now": "Merhaba, ÅŸimdi gideceÄŸim", + "Passenger come to you": "Yolcu size geliyor", + "Call Income": "Gelen Arama", + "Call Income from Passenger": "Yolcudan Gelen Arama", + "Criminal Document Required": "Adli Belge Gerekli", + "You should have upload it .": "Yüklemeniz gerekiyor.", + "Call End": "Arama Sonu", + "The order has been accepted by another driver.": + "SipariÅŸ baÅŸka bir sürücü tarafından kabul edildi.", + "The order Accepted by another Driver": + "SipariÅŸ baÅŸka bir Sürücü tarafından Kabul Edildi", + "We regret to inform you that another driver has accepted this order.": + "BaÅŸka bir sürücünün bu sipariÅŸi kabul ettiÄŸini bildirmekten üzgünüz.", + "Driver Applied the Ride for You": + "Sürücü Sizin İçin YolculuÄŸa BaÅŸvurdu", + "Applied": "BaÅŸvuruldu", + "Hi ,I Arrive your site": "Merhaba, konumunuza geldim", + "Please go to Car Driver": "Lütfen Araç Sürücüsüne gidin", + "Ok I will go now.": "Tamam, ÅŸimdi gideceÄŸim.", + "Accepted Ride": "Kabul Edilen Yolculuk", + "Driver Accepted the Ride for You": + "Sürücü Sizin İçin YolculuÄŸu Kabul Etti", + "Promo": "Promosyon", + "Show latest promo": "En son promosyonu göster", + "Trip Monitoring": "Yolculuk İzleme", + "Driver Is Going To Passenger": "Sürücü Yolcuya Gidiyor", + "Please stay on the picked point.": "Lütfen seçilen noktada kalın.", + "message From Driver": "Sürücüden mesaj", + "Trip is Begin": "Yolculuk BaÅŸladı", + "Cancel Trip from driver": "Sürücüden Yolculuk İptali", + "We will look for a new driver.\nPlease wait.": + "Yeni bir sürücü arayacağız.\nLütfen bekleyin.", + "The driver canceled your ride.": "Sürücü yolculuÄŸunuzu iptal etti.", + "Driver Finish Trip": "Sürücü YolculuÄŸu Bitirdi", + "you will pay to Driver": "Sürücüye ödeme yapacaksınız", + "Don’t forget your personal belongings.": + "KiÅŸisel eÅŸyalarınızı unutmayın.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Lütfen ayrılmadan önce tüm kiÅŸisel eÅŸyalarınızın yanınızda olduÄŸundan ve varsa kalan ücretin cüzdanınıza eklendiÄŸinden emin olun. Intaleq uygulamasını seçtiÄŸiniz için teÅŸekkür ederiz", + "Finish Monitor": "İzlemeyi Bitir", + "Trip finished": "Yolculuk bitti", + "Call Income from Driver": "Sürücüden Gelen Arama", + "Driver Cancelled Your Trip": "Sürücü YolculuÄŸunuzu İptal Etti", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Sürücüye ödeme yapacaksınız, sürücü zamanının maliyetini ödeyeceksiniz, Intaleq Cüzdanınıza bakın", + "Order Applied": "SipariÅŸ Uygulandı", + //firbase + }, + "fr": { + "Order": "Commande", + "OrderVIP": "Commande VIP", + "Cancel Trip": "Annuler le trajet", + "Passenger Cancel Trip": "Passager a annulé le trajet", + "VIP Order": "Commande VIP", + "The driver accepted your trip": + "Le chauffeur a accepté votre trajet", + "message From passenger": "Message du passager", + "Cancel": "Annuler", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "Trajet annulé. Le coût du trajet sera ajouté à votre portefeuille.", + "token change": "changement de jeton", + "face detect": "détection faciale", + "Face Detection Result": "Résultat de la détection faciale", + "similar": "similaire", + "not similar": "non similaire", + "Hi ,I will go now": "Salut, je vais y aller maintenant", + "Passenger come to you": "Le passager vient vers vous", + "Call Income": "Appel entrant", + "Call Income from Passenger": "Appel entrant du passager", + "Criminal Document Required": "Document judiciaire requis", + "You should have upload it .": "Vous auriez dû le télécharger.", + "Call End": "Fin d'appel", + "The order has been accepted by another driver.": + "La commande a été acceptée par un autre chauffeur.", + "The order Accepted by another Driver": + "La commande acceptée par un autre chauffeur", + "We regret to inform you that another driver has accepted this order.": + "Nous regrettons de vous informer qu'un autre chauffeur a accepté cette commande.", + "Driver Applied the Ride for You": + "Le chauffeur a postulé pour le trajet pour vous", + "Applied": "Appliqué", + "Hi ,I Arrive your site": "Salut, je suis arrivé à votre emplacement", + "Please go to Car Driver": + "Veuillez vous rendre au chauffeur de la voiture", + "Ok I will go now.": "Ok, j'y vais maintenant.", + "Accepted Ride": "Trajet accepté", + "Driver Accepted the Ride for You": + "Le chauffeur a accepté le trajet pour vous", + "Promo": "Promo", + "Show latest promo": "Afficher la dernière promo", + "Trip Monitoring": "Surveillance du trajet", + "Driver Is Going To Passenger": + "Le chauffeur se dirige vers le passager", + "Please stay on the picked point.": + "Veuillez rester au point de prise en charge indiqué.", + "message From Driver": "Message du chauffeur", + "Trip is Begin": "Le trajet commence", + "Cancel Trip from driver": "Annulation du trajet par le chauffeur", + "We will look for a new driver.\nPlease wait.": + "Nous allons chercher un nouveau chauffeur.\nVeuillez patienter.", + "The driver canceled your ride.": + "Le chauffeur a annulé votre trajet.", + "Driver Finish Trip": "Le chauffeur a terminé le trajet", + "you will pay to Driver": "vous paierez le chauffeur", + "Don’t forget your personal belongings.": + "N'oubliez pas vos effets personnels.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Veuillez vous assurer que vous avez tous vos effets personnels et que tout montant restant, le cas échéant, a été ajouté à votre portefeuille avant de partir. Merci d'avoir choisi l'application Intaleq", + "Finish Monitor": "Terminer la surveillance", + "Trip finished": "Trajet terminé", + "Call Income from Driver": "Appel entrant du chauffeur", + "Driver Cancelled Your Trip": "Le chauffeur a annulé votre trajet", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "vous paierez le chauffeur, vous paierez le coût du temps du chauffeur, consultez votre portefeuille Intaleq", + "Order Applied": "Commande appliquée", + //firbase + + "registration_date": "Date d'enregistrement", + "expiration_date": "Date d'expiration", + "rating_count": "Nombre d'évaluations", + "rating_driver": "Note du chauffeur", + "age": "Âge", + "vin": + "Parce que je suis les fonctions. J'ai mémorisé les numéros d'identification.", + "car_color": "- La couleur.", + "car_plate": "Le numéro d'immatriculation ?", + "car_model": "Modèle de voiture :", + "education": "Les études", + "gender": "sexe", + "birthdate": "Date de naissance", + "Approve Driver Documents": "Approuver les documents du chauffeur", + "Total Budget is": "BUDGET TOTAL", + "You will recieve code in sms message": + "Vous recevrez le code par SMS", + "Please enter": "Emplacement du fichier d'agenda pour KAlarm", + "We need your phone number to contact you and to help you receive orders.": + "Nous avons besoin de votre numéro de téléphone pour vous contacter et vous aider à recevoir des commandes.", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "Le nom complet sur votre casier judiciaire ne correspond pas au nom sur votre permis de conduire. Veuillez vérifier et fournir les documents corrects.", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "Le numéro national de votre permis de conduire ne correspond pas à celui de votre pièce d'identité. Veuillez vérifier et fournir les documents corrects.", + "Capture an Image of Your Criminal Record": + "Prenez une photo de votre casier judiciaire", + "IssueDate": "Date de délivrance ", + "Capture an Image of Your car license front": + "Prenez une photo de votre permis de conduire de face", + "Capture an Image of Your ID Document front": + "Prenez une photo de votre pièce d'identité de face", + "NationalID": "Numéro national", + "FullName": "Nom complet", + "InspectionResult": "Résultats de l'examen", + "Criminal Record": "Casier judiciaire", + "The email or phone number is already registered.": + "L'adresse e-mail ou le numéro de téléphone est déjà enregistré.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "Pour devenir chauffeur de covoiturage dans l'app Voyages, vous devez télécharger votre permis de conduire, votre pièce d'identité et votre document d'immatriculation du véhicule. Notre système d'IA examinera et vérifiera immédiatement son authenticité en seulement 2 à 3 minutes. Si vos documents sont approuvés, vous pouvez commencer à travailler en tant que chauffeur dans l'application Voyages. Veuillez noter que la fourniture de documents falsifiés est une infraction grave et peut entraîner une résiliation immédiate et des conséquences juridiques.", + "Documents check": "Vérification des documents", + "Driver's License": "Permis de conduire", + "License Type": "Type de licence", + "National Number": "Numéro d’identité national :", + "Name (Arabic)": "Nom (arabe)", + "Name (English)": "Anglais", + "Address": "Adresse", + "Issue Date": "Date de délivrance ", + "Expiry Date": "Date d'expiration", + "License Categories": "Autorisation", + "driver_license": "Permis de conduire", + "Capture an Image of Your Driver License": + "Prenez une photo de votre permis de conduire", + "ID Documents Back": "B. Pièces d'identité", + "National ID": "Carte d'identité nationale", + "Occupation": "Profession :", + "Gender": "sexe", + "Religion": "la religion", + "Marital Status": "État civil ", + "Full Name (Marital)": "Nom complet", + "Expiration Date": "Date d'expiration", + "Capture an Image of Your ID Document Back": + "Prenez une photo du verso de votre pièce d'identité", + "ID Documents Front": "Recto des documents d'identification", + "First Name": "Prénom...", + "CardID": "Prenez une photo du verso de votre pièce d'identité", + "Full Name": "Nom complet", + "Vehicle Details Front": "Détails du véhicule avant", + "Plate Number": "Plaque d'immatriculation", + "Owner Name": "Le nom du propriétaire est Dr.", + "Vehicle Details Back": "Détails du véhicule", + "Make": "Make", + "Model": "Modèle de voiture :", + "Year": "Année", + "Chassis": "Châssis", + "Color": "- La couleur.", + "Displacement": "À remplacer", + "Fuel": "Carburant !", + "Tax Expiry Date": "Date d'expiration", + "Inspection Date": "DATE D'EXAMEN:", + "Capture an Image of Your car license back": + "Prenez à nouveau une photo de votre permis de conduire", + "Capture an Image of Your Driver’s License": + "Prenez une photo de votre permis de conduire", + "Sign in with Google for easier email and name entry": + "Connectez-vous avec Google pour saisir facilement votre adresse e-mail et votre nom", + "You will choose allow all the time to be ready receive orders": + "Vous choisirez d'autoriser les commandes prêtes à l'emploi tout le temps", + "Welcome to Intaleq!": "Bienvenue dans", + "Get to your destination quickly and easily.": + "Accédez à votre destination rapidement et facilement.", + "Enjoy a safe and comfortable ride.": + "Profitez d'une course sûre et confortable.", + "Choose Language": "Choisissez la langue", + "Login": "Se connecter", + "Pay with Wallet": "Payer avec un portefeuille", + "Invalid MPIN": "Code MPIN invalide", + "Invalid OTP": "Code de vérification", + "Enter your email address": "Saisissez votre adresse e-mail", + "Please enter Your Email.": "Veuillez saisir...", + "Enter your phone number": "Quel est ton nom ?", + "Please enter your phone number.": + "Veuillez saisir votre numéro de téléphone.", + "Please enter Your Password.": "Veuillez entrer votre mot de passe", + "Submit": "Envoyé", + "if you dont have account": "Que voulez-vous dire ?", + "Register": "C'est parti !", + "Accept Ride's Terms & Review Privacy Notice": + "Acceptez les conditions de la course et consultez l'avis de confidentialité", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "En sélectionnant « J'accepte » ci-dessous, j'ai examiné et accepté les Conditions d'utilisation et j'accepte la Déclaration de confidentialité.Au moins un an", + "I Agree": " Je suis d'accord", + "First name": "Prénom...", + "Enter your first name": "Saisissez votre nom", + "Please enter your first name.": "Veuillez saisir votre nom.", + "Last name": "Nom de famille", + "Enter your last name": "NOM:", + "Please enter your last name.": "Veuillez saisir votre nom.", + "City": "Ville", + "Please enter your City.": "Veuillez saisir...", + "Male": "Homme", + "Female": "Femme", + "Verify Email": "27\":\"E-mail validé.\":", + "We sent 5 digit to your Email provided": + "Nous avons envoyé 5 chiffres à l'adresse e-mail que vous avez fournie", + "5 digit": "Broche(5chiffres)", + "Send Verification Code": "Code de vérification", + "Your Ride Duration is": "La durée de votre course est de", + "You will be thier in": "Vous les aurez dans", + "You trip distance is": "La distance de votre course est de", + "Fee is": "Les frais sont", + "To :": "À :", + "Add Promo": "Ajouter une promotion", + "Confirm Selection": "Confirmer la sélection", + "distance is": "La distance est", + "duration is": "La durée est", + "I don't need a ride anymore": "J'en ai plus besoin.", + "I was just trying the application": "J'essayais juste l'application", + "No driver accepted my request": + "Aucun chauffeur n'a accepté ma commande", + "I added the wrong pick-up/drop-off location": + "Vous avez ajouté le mauvais lieu de prise en charge/destination", + "I don't have a reason": "J'en sais rien.", + "Other": "Autre …", + "Can we know why you want to cancel Ride ?": + "Peut-on savoir pourquoi vous souhaitez annuler la course ?", + "Cancel Ride": "Avorter!", + "Add Payment Method": "Ajouter un mode de paiement", + "Your Wallet balance is": "Le solde de votre portefeuille est", + "Ride Wallet": "Portefeuille de voyage", + "Payment Method": "Mode de paiement", + "Type here Place": "C'est ici !", + "Are You sure to ride to": "Êtes-vous sûr de vouloir rouler jusqu'à", + "Confirm": "Valider", + "Back": "Répondez.", + "You are Delete": "Vous supprimez", + "Deleted": "Supprimé", + "You Dont Have Any places yet !": + "Vous n'avez pas encore de places !", + "Favorite Places": "C'est votre genre d'endroit ?", + "From : Current Location": "Utiliser la position actuelle", + "Where to": "Où?", + "Notifications": "Notifications", + "Profile": "Profil personnel", + "Home": "Accueil", + "My Cared": "MyCurt", + "Add Card": "Ajouter une carte", + "Add Credit Card": "C'est de la MasterCard.", + "Please enter the cardholder name": + "Veuillez saisir le nom du titulaire de la carte", + "Please enter the expiry date": "la date de péremption", + "Please enter the CVV code": + "Veuillez saisir le code de vérification de la carte", + "Go To Favorite Places": "Accéder aux lieux favoris", + "Go to this Target": "Atteindre cet objectif", + "My Profile": "Aperçu du profil", + "Sign Out": "Se Déconnecter", + "Home Page": "Accueil", + "Are you want to go to this site": "Voulez-vous aller à cet endroit", + "MyLocation": "Ma position", + "my location": "Ma position", + "Target": "Objectif", + "Update": "Mise à jour", + "You Should choose rate figure": "Vous devez choisir le bon numéro", + "Login Captin": "Se connecter", + "Register Captin": "Inscription du capitaine", + "Send Verfication Code": "Code de vérification", + "End Ride": "Embarquez !", + "Minute": "Minute", + "Go to passenger Location now": + "Accéder à l'emplacement du passager maintenant", + "Duration of the Ride is": "La durée de la course est de", + "Distance of the Ride is": "La distance parcourue est de", + "Name of the Passenger is": "Le nom du passager est", + "Hello this is Captain": "Bonjour, je suis le capitaine", + "Start the Ride": "Commencer la course", + "Please Wait If passenger want To Cancel!": + "Veuillez patienter si le passager souhaite annuler !", + "Total Duration:": "durée totale de la formation", + "Active Duration:": "Durée de l'étape active", + "Waiting for Captin ...": "J'attends le capitaine.", + "Age is": "C'est l'âge...", + "Rating is": "- L'évaluation est...", + "to arrive you.": "pour vous joindre.", + "Order History": "Enregistrer l'historique des commandes", + "My Wallet": "Ma portefeuille", + "Tariff": "Tarif", + "Settings": "Paramètres", + "Feed Back": "- Les réflexes sont normaux.", + "Promos": "Promotions", + "Please enter a valid 16-digit card number": + "Veuillez saisir un numéro de bon de commande valide.", + "Add Phone": "Téléphone", + "Please enter a phone number": + "Veuillez saisir un numéro de téléphone.", + "You dont Add Emergency Phone Yet!": + "Vous n'avez pas encore ajouté de téléphone d'urgence !", + "You will arrive to your destination after": + "Vous arriverez à destination après", + "You can cancel Ride now": "Vous pouvez annuler la course maintenant", + "You Can cancel Ride After Captain did not come in the time": + "Vous pouvez annuler la course lorsque le capitaine n'est pas arrivé à temps", + "If you in Car Now. Press Start The Ride": + "Si vous êtes dans la voiture en ce moment. Appuyez sur Commencer la course.", + "You Dont Have Any amount in": "Vous n'avez aucun montant en", + "Wallet!": "Ho !", + "You Have": "- Euh...", + "Save Credit Card": "- La carte.", + "Show Promos": "Presentations ", + "10 and get 4% discount": "10 et obtenez 4 % de réduction", + "20 and get 6% discount": "20 et obtenez 6 % de réduction", + "40 and get 8% discount": "40 et obtenez 8 % de réduction", + "100 and get 11% discount": "100 % et obtenez 11 % de réduction", + "Pay with Your PayPal": "Payer avec PayPal", + "You will choose one of above !": + "Vous choisirez l'une des options ci-dessus !", + "Cancel": "Annuler", + "Delete My Account": "Supprimer mon compte", + "Edit Profile": "Modifier le profil", + "Name": "Nom", + "Update Gender": "Mettre à jour le sexe", + "Education": "Les études", + "Update Education": ":: Moderniser l'enseignement;", + "Employment Type": "Catégorie de personnel", + "SOS Phone": "Mobile", + "High School Diploma": "BACCALAUREAT DE L'ENSEIGNEMENT", + "Associate Degree": "Diplôme conjoint", + "Bachelor's Degree": "Grade de bachelier", + "Master's Degree": "Master", + "Doctoral Degree": "Docteur en philosophie.", + "Promos For today": "Promotions", + "Copy this Promo to use it in your Ride!": + "Copiez cette promotion pour l'utiliser lors de votre voyage !", + "To change some Settings": "Pour modifier certains paramètres", + "To change Language the App": + "Pour modifier la langue de l'application", + "Order Request Page": "Page de demande de commande", + "Rouats of Trip": "Tripp.", + "Passenger Name is": "Voyageur.", + "Total From Passenger is": "Le total du passager est", + "Duration To Passenger is": "Durée jusqu'au passager", + "Distance To Passenger is": "distance par rapport au passager est", + "Total For You is": "Le total pour vous est de", + "Distance is": "Distance", + "KM": "Km", + "Duration of Trip is": "La durée de la course est de", + "Minutes": "Minutes", + "Apply Order": "Appliquer la commande", + "Refuse Order": "- Demande rejetée.", + "Rate Captain": "Cote de capitaine", + "Enter your Note": "J'ai eu votre mot.", + "Type something...": "Écrire quelque chose...", + "Submit rating": "Fournir une évaluation", + "Rate Passenger": "Note du passager", + "Ride Summary": "Résumé de la course", + "welcome_message": "Insérer « & #160; Bonjour monde & #160; »", + "app_description": "ApplicationDescription", + "get_to_destination": + "Destination atteinte. Déblocage des contrôles manuels.", + "get_a_ride": "Commandez une course", + "safe_and_comfortable": "Sûr et confortable", + "committed_to_safety": "Engagé pour la sécurité", + "Driver Applied the Ride for You": + "Un chauffeur qui a effectué la course pour vous", + "Show latest promo": "Afficher la dernière promotion", + "Cancel Trip": "Le vol est annulé.", + "Passenger Cancel Trip": "Le passager annule la course", + "Please stay on the picked point.": + "Veuillez rester au point sélectionné.", + "Trip is Begin": "Votre initiation a commencé.", + "Hi ,I will go now": "Bonjour, j'y vais maintenant", + "Passenger come to you": "Votre passager vient vous voir", + "Hi ,I Arrive your site": + "Bonjour, vous avez atteint votre position.", + "Driver Finish Trip": "Fin de la course du chauffeur", + "you will pay to Driver": "Sérieux ? Probablement avec mon argent.", + "Driver Cancel Your Trip": "Annulez votre course, chauffeur.", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Vous paierez le chauffeur Vous paierez le coût du temps du chauffeur Regardez votre portefeuille Intaleq", + "I will go now": "- J'y vais.", + "You Have Tips": "Astuces", + "tips": "Des paroles sages ?", + "Total is": "Chiffre total est de 15", + "No,I want": "- Je n'en ai pas envie.", + "Your fee is": "Vos frais sont de", + "Do you want to pay Tips for this Driver": + "Souhaitez-vous laisser un pourboire à ce chauffeur ?", + "Tip is": "Monconseil", + "Camera Access Denied.": "Accès à la caméra refusé.", + "Open Settings": + "|||UNTRANSLATED_CONTENT_START|||Ø§ÙØªØ­ الإعدادات|||UNTRANSLATED_CONTENT_END|||", + "GPS Required Allow !.": "Le GPS doit être activé !", + "Your Account is Deleted": "Votre compte a été supprimé", + "Are you sure to delete your account?": + "Voulez-vous vraiment supprimer votre compte ?", + "Your data will be erased after 2 weeks": + "Vos données seront effacées après 2 semaines", + "And you will can't return to use app after 1 month": + "Vous pourrez revenir à l'application après un mois", + "Enter Your First Name": "Saisissez votre nom", + "Are you Sure to LogOut?": "Voulez-vous vraiment vous déconnecter?", + "Email Wrong": "Email ", + "Email you inserted is Wrong.": + "L'adresse e-mail que vous avez saisie est incorrecte.", + "You have finished all times": "J'en ai assez !", + "if you want help you can email us here": + "Si vous souhaitez de l'aide, vous pouvez nous envoyer un e-mail ici", + "Thanks": "Merci.", + "Email Us": "Envoyez-nous un e-mail", + "I cant register in your app in face detection": + "Je ne peux pas m'inscrire à votre application avec la détection de visage", + "Hi": "-C'est un plaisir. -Hello.", + "No face detected": "Aucun scanner n'a été détécté", + "Image detecting result is": + "Le résultat de la détection d'image est", + "from 3 times Take Attention": "que 3 fois attirent votre attention", + "Be sure for take accurate images please": + "Assurez-vous de prendre des photos précises s'il vous plaît", + "You have": "- Euh...", + "image verified": "La photo est notariée", + "Next": "Suivant", + "There is no help Question here": "Ouais, pas d'aide ici.", + "Call End": "Terminer l'appel", + "You dont have Points": "- Vous n'avez pas...", + "You Are Stopped For this Day !": + "Vous avez été mis en pause pour la journée !", + "You must be charge your Account": + "Vous devez recharger votre compte", + "You Refused 3 Rides this Day that is the reason": + "Vous avez refusé 3 courses aujourd'hui et c'est pourquoi", + "See you Tomorrow!": "Je te verrais demain.", + "Recharge my Account": "Recharger mon compte", + "Ok , See you Tomorrow": "D'accord, on se voit demain.", + "You are Stopped": "Vous êtes arrêté", + "Connected": "Online", + "Not Connected": "Offiline", + "Your are far from passenger location": + "Vous êtes loin de l'emplacement des passagers", + "go to your passenger location before": + "Accédez à l'emplacement de votre passager avant le", + "Passenger cancel trip": "Le passager a annulé la course", + "You will get cost of your work for this trip": + "Vous obtiendrez le coût de votre entreprise pour cette course", + "in your wallet": "Elle est dans ton portefeuille.", + "you gain": "Vous gagnerez", + "Order Cancelled": "Commande annulée", + "Order Cancelled by Passenger": "Demande annulée par le passager", + "Success": "Je l'ai.", + "Feedback data saved successfully": + "Données d'évaluation enregistrées avec succès", + "No Promo for today .": "Pas de promotion pour aujourd'hui.", + "Select your destination": "Sélectionnez la destination;", + "Search for your Start point": "Trouvez votre point de départ", + "Search for waypoint": "Rechercher un point WIPOINT", + "Current Location": "Utiliser la position actuelle", + "Add Location 1": "Emplacement & #160;: %1", + "You must Verify email !.": "Relever le courriel", + "Cropper": "Récolte", + "Saved Sucssefully": "Bien reçu.", + "Select Date": "Choisir une nouvelle date", + "Birth Date": "Date de naissance", + "Ok": "D'accord.", + "the 500 points equal 30 JOD": "500 points équivaut à 30 JOD", + "the 500 points equal 30 JOD for you": + "500 points équivaut à 30 JOD pour vous", + "token updated": "Code mis à jour", + "Add Location 2": "Ajouter un emplacement 2", + "Add Location 3": "Ajouter un emplacement 3", + "Add Location 4": "Ajouter un emplacement 4", + "Waiting for your location": "En attente de votre localisation", + "Search for your destination": "Trouvez votre destination", + "Hi! This is": "Bienvenue \"moi\": c' est ça.", + "I am using": "Du matériel que j'utilisais.", + "to ride with": "pour rouler avec", + "as the driver.": "On dirait un chauffeur.", + "is driving a": "- Je vais le tenter comme ça. - Conduire.", + "with license plate": "Avec une plaque d'immatriculation", + "I am currently located at": "Je suis actuellement en", + "Please go to Car now": "S'il te plaît, va-t-en maintenant.", + "If you need to reach me, please contact the driver directly at": + "Si vous avez besoin de me joindre, veuillez contacter directement le chauffeur au", + "No Car or Driver Found in your area.": + "Aucune voiture ou chauffeur trouvé dans votre région.", + "Please Try anther time": "Réessayer", + "There no Driver Aplly your order sorry for that": + "Aucun chauffeur ne peut répondre à votre demande, nous sommes désolés.", + "Trip Cancelled": "Course annulée", + "The Driver Will be in your location soon .": + "Votre chauffeur arrivera bientôt chez vous.", + "The distance less than 500 meter.": + "La distance est inférieure à 500 mètres.", + "Promo End !": "- C'est seulement jusqu'au spectacle.", + "There is no notification yet": "Aucune notification pour le moment", + "Use Touch ID or Face ID to confirm payment": + "Utilisez Touch ID ou Face ID pour confirmer le paiement", + "Contact us for any questions on your order.": + "Contactez-nous pour toute question concernant votre commande.", + "Pyament Cancelled .": "Le paiement a été annulé.", + "type here": "Tapez ici", + "Scan Driver License": "Permis de conduire", + "Please put your licence in these border": + "Veuillez placer votre licence dans ces limites", + "Camera not initialized yet": "Caméra pas encore configurée", + "Take Image": + "Prends une photo, parce que demain matin, ces lettres partiront.", + "AI Page": "Tu dis que ton système \"IA\"", + "Take Picture Of ID Card": + "Prenez une photo de votre pièce d'identité", + "Take Picture Of Driver License Card": + "Prenez une photo de votre permis de conduire.", + "We are process picture please wait": + "Nous traitons les images, veuillez patienter.", + "There is no data yet.": "Aucune donnée trouvée", + "Name :": "Nom :", + "Drivers License Class:": "Catégorie de permis de conduire :", + "Document Number:": "Numéro du document", + "Address:": "Adresse:", + "Height:": "& Hauteur & #160;:", + "Expiry Date:": "Expiration & #160;:", + "Date of Birth:": "Anniversaire & #160;: @title: group", + "You can't continue with us .": "Ça ne peut pas durer.", + "You should renew Driver license": + "Vous devez renouveler votre permis de conduire", + "Detect Your Face": "Découvrez votre visage", + "Go to next step": "\"", + "scan Car License.": "Vérification de l'immatriculation du véhicule.", + "Name in arabic": "Full Name AR", + "Drivers License Class": "Permis de conduire", + "Date of Birth": "Date de naissance", + "Age": "l’âge", + "Lets check Car license": "Vérifions le permis de conduire", + "Car Kind": "Type de véhicule", + "Car Plate": "Le numéro d'immatriculation ?", + "Lets check License Back Face": + "Vérifions la licence de face arrière", + "Car License Card": "Carte d'immatriculation du véhicule", + "No image selected yet": "Aucune photo sélectionnée pour le moment", + "Made :": "Make", + "model :": "Mod.", + "VIN :": "Structure :", + "year :": "Année", + "ÙExpire Date": "Date d'expiration", + "Login Driver": "Se connecter", + "Password must br at least 6 character.": + "Le mot de passe doit comporter au moins 6 caractères.", + "if you don't have account": "Que voulez-vous dire ?", + "Here recorded trips audio": + "Voici les enregistrements audio du voyage", + "Register as Driver": "Inscrivez-vous en tant que chauffeur", + "Privacy Notice": "Avis de confidentialité", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the": + "En sélectionnant « J'accepte » ci-dessous, j'ai lu, j'accepte et j'accepte les conditions générales", + ". I am at least 18 years of age.": ". J'ai au moins 18 ans.", + "Log Out Page": "Se Déconnecter", + "Log Off": "Signe.", + "Register Driver": "Le chauffeur...", + "Verify Email For Driver": "Consultez l'e-mail du chauffeur", + "Admin DashBoard": "Tableau de bord d'administration", + "Your name": "Ton... nom.", + "your ride is applied": "Votre course a été appliquée", + "Your password": "Renouveler votre mot de passe", + "LE": "Livre égyptienne", + "JOD": "Monnaie: Dinar jordanien", + "m": "%1 km", + "We search nearst Driver to you": + "Nous recherchons le chauffeur le plus proche", + "please wait till driver accept your order": + "Veuillez attendre que le chauffeur accepte votre demande", + "No accepted orders? Try raising your trip fee to attract riders.": + "Aucune Essayez d'augmenter les frais de course pour attirer des passagers.", + "You should select one": "Vous devez en choisir un", + "The driver accept your order for": + "Votre chauffeur a accepté votre demande de", + "Increase Fee": "Augmenter les frais", + "No, thanks": "Non merci", + "The driver on your way": "Votre chauffeur est en route", + "Total price from": "P.T", + "Order Details Intaleq": "Détails du commande", + "Order Applied": "Commande appliquée", + "accepted your order": "- Retenue.", + "We regret to inform you that another driver has accepted this order.": + "Nous sommes désolés de vous informer qu'un autre chauffeur a accepté cette demande.", + "Selected file:": "Ouvre un fichier existant", + "Your trip cost is": "Les frais de votre course", + "this will delete all files from your device": + "Cela supprimera tous les fichiers de votre appareil", + "you have a negative balance of": "Vous avez un solde négatif de", + "in your": "En toi.", + "Exclusive offers and discounts always with the Intaleq app": + "Offres exclusives et réductions toujours avec l'application de voyage", + "Please go to Car Driver": + "Veuillez vous rendre chez le conducteur de la voiture", + "wallet due to a previous trip.": + "Portefeuille en raison d'une course précédente.", + "Submit Question": "Envoyer la question", + "Please enter your Question.": "Veuillez saisir votre question.", + "Help Details": "Détails de l'aide", + "No trip yet found": "Aucune campagne trouvée", + "No Response yet.": "Il n'y a pas de réponses.", + "You Earn today is": "- On est euh...", + "You Have in": "Vous avez à", + "Total points is": "Le score total est de", + "Total Connection Duration:": "Durée totale de connexion :", + "H and": "H et", + "Passenger name :": "Le voyageur.", + "Cost Of Trip IS": "Coûts des vols par avion spécial", + "Arrival time": "On arrive dans 7 minutes.", + "arrival time to reach your point": + "Heure d'arrivée pour atteindre votre destination", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Pour les courses et livraisons rapides, le prix est calculé de manière dynamique. Pour des courses confortables, le prix est basé sur la durée et la distance.", + "Hello this is Driver": "Bonjour, je suis le chauffeur", + "Is the Passenger in your Car ?": + "Le passager est-il dans votre véhicule ?", + "Please wait for the passenger to enter the car before starting the trip.": + "Veuillez attendre que le passager entre dans le véhicule avant de commencer la course.", + "No ,still Waiting.": "Non , je t'attends toujours.", + "I arrive you": "Elle t'a eue.", + "I Arrive your site": "Elle t'a eue.", + "You are not in near to passenger location": + "Vous n'êtes pas près de l'emplacement du passager", + "please go to picker location exactly": + "Veuillez vous rendre à l'emplacement exact de la sélection", + "You Can Cancel Trip And get Cost of Trip From": + "Vous pouvez annuler la course et obtenir le coût de la course auprès de", + "Are you sure to cancel?": "Voulez-vous vraiment annuler ?", + "Yes": "Oui", + "Insert Emergincy Number": "Saisir le numéro d'urgence", + "Best choice for comfort car and flexible route and stops point": + "Le meilleur choix pour une voiture confortable, un itinéraire flexible et un point d'arrêt", + "Insert": "En cours d' utilisation", + "This is for delivery or a motorcycle.": + "C'est pour la livraison ou une moto.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "Cette course va directement de votre point de départ à votre destination pour un tarif forfaitaire. Le chauffeur doit suivre l'itinéraire prévu", + "You can decline a request without any cost": + "Vous pouvez refuser la demande sans frais", + "Perfect for adventure seekers who want to experience something new and exciting": + "Idéal pour les chercheurs d'aventure qui veulent essayer quelque chose de nouveau et d'excitant", + "My current location is:": "Mon emplacement actuel est :", + "and I have a trip on": "et j'ai un voyage à", + "App with Passenger": "Postuler avec le passager", + "You will be pay the cost to driver or we will get it from you on next trip": + "Le coût sera payé au chauffeur ou nous l'obtiendrons de votre part lors de la prochaine course", + "Trip has Steps": "La course comporte des étapes", + "Distance from Passenger to destination is": + "La distance entre le passager et la destination est", + "price is": "C'est cent dollars.", + "This ride type does not allow changes to the destination or additional stops": + "Ce type de course ne permet pas de modifier la destination ou d'effectuer des arrêts supplémentaires", + "This price may be changed": "Ce prix peut changer", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "Pas de carte SIM, pas de problème ! Contactez directement votre chauffeur via notre application. Nous utilisons une technologie de pointe pour garantir votre confidentialité.", + "This ride type allows changes, but the price may increase": + "Ce type de course peut être modifié, mais le prix peut augmenter", + "message From passenger": "Estafette.", + "Select one message": "Message un.", + "My location is correct. You can search for me using the navigation app": + "Ma position est correcte. Vous pouvez me rechercher à l'aide de l'application de navigation", + "I'm waiting for you": "- Quand vous voulez.", + "Hello, I'm at the agreed-upon location": + "Bonjour, je suis à l'endroit convenu", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "Nous avons remarqué que la vitesse dépasse 100 km/h. Veuillez ralentir pour votre propre sécurité. Si vous ne vous sentez pas en sécurité, vous pouvez communiquer les détails de votre course à un contact ou appeler la police à l'aide du bouton de détresse rouge.", + "Warning: Intaleqing detected!": + "Avertissement : survitesse détectée !", + "Please help! Contact me as soon as possible.": + "Aide-moi s'il te plaît. Contactez-moi dès que possible.", + "Share Trip Details": "Partagez les détails de la", + "Car Plate is": "Le numéro d'immatriculation ?", + "the 3000 points equal 3000 L.E for you": + "3000 points équivaut à 3000 EGP pour vous", + "So go and gain your money": "Gagnez de l'argent", + "the 3000 points equal 3000 L.E": "3000 points équivaut à 3000 EGP", + "The payment was not approved. Please try again.": + "Paiement non approuvé. Réessayer", + "Payment Failed": "Échec du paiement", + "Error": "ⵜⴰⵣⴳâµâµœ", + "An error occurred during the payment process.": + "Une erreur s'est produite lors de votre paiement.", + "The payment was approved.": "Paiement approuvé.", + "Payment Successful": "Paiement réussi", + "No ride found yet": "Aucune campagne trouvée", + "Accept Order": "Commande acceptée", + "reject your order.": "Votre Ordre.", + "Bottom Bar Example": "Exemple de barre inférieure", + "Driver phone": "Téléphone du chauffeur", + "Statistics": "& Statistiques", + "Origin": "ORIGINE", + "Destination": "- Destination ?", + "Driver Name": "Nom de pilote & #160;:", + "Driver Car Plate": "Plaque d'immatriculation du conducteur", + "Available for rides": "Disponible pour les courses", + "Scan Id": "Contrôle d'identité", + "Camera not initilaized yet": "Caméra pas encore configurée", + "Scan ID MklGoogle": "Vérification d'identité MklGoogle", + "Language": "Langue ", + "Jordan": "Jordanie", + "USA": "Etats Unis d'Amérique", + "Egypt": "Egypte", + "Turkey": "Turquie", + "Saudi Arabia": "Arabie Saoudite", + "Qatar": "Qatar", + "Bahrain": "Bahreïn", + "Kuwait": "Koweït", + "But you have a negative salary of": + "Mais vous avez un salaire négatif de", + "Promo Code": "Code promo", + "Your trip distance is": "La distance de votre course est de", + "Enter promo code": "Code promo", + "You have promo!": "Vous avez une promotion !", + "Cost Duration": "Durée du coût", + "Duration is": "La durée est", + "Leave": "Quitter", + "Join": "Joindre", + "You Should be select reason.": "Vous devez choisir une raison.", + "\$": "\$", + "Waiting for Driver ...": "En attente du chauffeur ...", + "Latest Recent Trip": "J'ai des choses à faire!", + "from your list": "À partir de votre liste", + "Do you want to change Work location": + "Souhaitez-vous changer de lieu de travail ?", + "Do you want to change Home location": + "Souhaitez-vous changer l'emplacement de la maison", + "We Are Sorry That we dont have cars in your Location!": + "Nous sommes désolés que les voitures ne soient pas disponibles chez vous !", + "Choose from Map": "Sélectionner sur la carte", + "Pick your ride location on the map - Tap to confirm": + "Sélectionnez votre lieu de prise en charge sur la carte - appuyez pour confirmer", + "To Work": "Pour le boulot", + "Are you want to go this site": "Voulez-vous aller à cet endroit", + "Closest & Cheapest": "Le plus proche et le moins cher", + "Work Saved": "Enregistré :", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq est une application de covoiturage sûre, fiable et accessible.", + "With Intaleq, you can get a ride to your destination in minutes.": + "En voyageant, vous pouvez vous rendre à destination en quelques minutes.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Safar s'engage pour la sécurité, et tous nos commandants sont soigneusement contrôlés et leurs antécédents vérifiés.", + "To Home": "RETOUR À LA PAGE D'ACCUEIL", + "Home Saved": "Enregistré :", + "Destination selected": "Destination sélectionnée", + "Now select start pick": + "Maintenant, choisissez Démarrer la sélection", + "Pick from map": "Sélectionner sur la carte", + "Click here point": "Cliquez ici", + "No Car in your site. Sorry!": + "Il n'y a pas de voiture dans votre région. Ex... Excusez moi.", + "Nearest Car for you about": + "La voiture la plus proche de chez vous est d'environ", + "N/A": "Aucune information", + "From :": "Du :", + "Get Details of Trip": "Obtenir les détails de la course", + "If you want add stop click here": + "Si vous souhaitez ajouter un arrêt, cliquez ici", + "Driver": "ⴰⵎâµâ´·â´°âµ€", + "Where you want go": "D'où viens-tu ?", + "My Card": "Ma carte.", + "Start Record": "Début de la campagne d'enregistrement", + "Wallet": "Un portefeuille.", + "History of Trip": "2.1 Histoire du vol", + "Helping Center": "Centre d'aide", + "Record saved": "Sauvegarde de l'historique effectuée !", + "Trips recorded": "Voyages enregistrés", + "Select Your Country": "Selectionnez votre pays", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "Pour vous assurer d'avoir les informations les plus précises pour votre emplacement, veuillez sélectionner votre pays ci-dessous. Cela vous aidera à personnaliser l'expérience et le contenu de l'application pour votre pays.", + "Are you sure to delete recorded files": + "Êtes-vous sûr de vouloir supprimer les fichiers enregistrés", + "Select recorded trip": "Choisissez une course enregistrée", + "Card Number": "N  de pièce d'identité:", + "Hi, Where to": "Bonjour, oùallez-vous ?", + "Pick your destination from Map": "Sélectionner sur la carte", + "Add Stops": "Ajouter des arrêts", + "Get Direction": "Obtenir une direction", + "Add Location": "Ajouter l'emplacement correctement", + "Switch Rider": "Changer de passager", + "You will arrive to your destination after timer end.": + "Vous arriverez à destination après l'expiration de la minuterie.", + "You can cancel trip": "Vous pouvez annuler la course", + "The driver waitting you in picked location .": + "Votre chauffeur vous attend à l'endroit désigné .", + "Pay with Your": "Payer avec", + "Pay with Credit Card": "- La carte.", + "Payment History": "Historique des paiements", + "Show Promos to Charge": "Afficher les promotions d'expédition", + "Point": "Points", + "Driver Wallet": "Portefeuille chauffeur", + "Total Points is": "Le score total est de", + "Total Budget from trips is": "Le budget total des voyages est de", + "Total Amount:": "Montant total", + "Total Budget from trips by": "Budget total des voyages par", + "Credit card is": "Votre carte de crédit.", + "This amount for all trip I get from Passengers": + "Ce montant s'applique à toutes les courses que je reçois de la part de passagers.", + "Pay from my budget": "Payer sur mon budget", + "This amount for all trip I get from Passengers and Collected For me in": + "Ce montant s'applique à toutes les courses que je reçois de la part de passagers collectés pour moi à", + "You can buy points from your budget": + "Vous pouvez acheter des points à partir de votre budget", + "insert amount": "Entrez le montant", + "You can buy Points to let you online": + "Vous pouvez acheter des points pour vous permettre d'accéder en ligne", + "by this list below": "Grâce à cette liste ci-dessous", + "Create Wallet to receive your money": + "Créez un portefeuille pour recevoir votre argent", + "Enter your feedback here": "Saisissez vos commentaires ici", + "Please enter your feedback.": + "Veuillez saisir le texte de vos notes", + "Feedback": "Feedback:", + "Click here to Show it in Map": + "Cliquez ici pour le voir sur la carte", + "Canceled": "Annulé", + "Type your Email": "Votre e-mail", + "No I want": "- Je n'en ai pas envie.", + "Email is": "Email ", + "Phone Number is": "C'est le 92.38.09.06.", + "Date of Birth is": "Année de naissance", + "Sex is": "Le sexe est cardio.", + "Car Details": "Détails du véhicule", + "VIN is": "Structure", + "Color is": "- Sa couleur?", + "Make is": "Make is", + "Model is": "Formulaire de :", + "Year is": "Année", + "Edit Your data": "Modifiez vos informations", + "write vin for your car": + "Notez le numéro de châssis de votre véhicule", + "VIN": + "|||UNTRANSLATED_CONTENT_START|||رقم هيكل السيارة|||UNTRANSLATED_CONTENT_END|||", + "write Color for your car": "Tapez la couleur de votre voiture", + "write Make for your car": "Écrivez une marque pour votre voiture", + "write Model for your car": "Tapez votre modèle de voiture", + "write Year for your car": "Saisissez une année pour votre voiture", + "write Expiration Date for your car": "la date de péremption", + "Tariffs": "Définitions ", + "Minimum fare": "Prix minimum", + "Maximum fare": "Prix maximum", + "Flag-down fee": "Frais d'escale", + "Including Tax": "Incluant...", + "BookingFee": "Frais de réservation", + "Morning": "- Bonjour.", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "07h30 - 10h30 (jeudi, vendredi, samedi, lundi)", + "Evening": "- Bonsoir.", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "12h00 - 15h00 (jeudi, vendredi, samedi, lundi)", + "Night": "la nuit", + "You have in account": "Vous avez dans le compte", + "Select Country": "Sélectionner un pays.", + "Ride Today :": "Commandez une course aujourd'hui :", + "After this period": "Après cette période", + "You can't cancel!": "- Vous pouvez plus...", + "from 23:59 till 05:30": "23:59 - 05:30", + "Rate Driver": "Le chauffeur...", + "Total Cost is": "Coût total", + "Write note": "J'écris une lettre de menace.", + "Time to arrive": "Bobby, Qu'elle est notre e. t. a.?", + "Ride Summaries": "Résumés des courses", + "Total Cost": "Coût total", + "Average of Hours of": "Nombre moyen d'heures de travail", + "is ON for this month": "En cours ce mois-ci", + "Days": "Quelques mois, semaines... quelques jours.", + "Total Hours on month": "Nombre total d'heures", + "Counts of Hours on days": "Heures en jours", + "OrderId": "Commande N°", + "created time": "Date de création", + "Intaleq Over": "Et c'est là qu'on l'aura.", + "I will slow down": "Je vais ralentir.", + "Map Passenger": "Carte du passager", + "Be Slowly": "Soyez lent", + "If you want to make Google Map App run directly when you apply order": + "Si vous souhaitez lancer Google Maps directement lorsque vous appliquez la commande", + "You can change the language of the app": + "Vous pouvez modifier la langue de l'application", + "Your Budget less than needed": "Votre budget est sous-estimé", + "You can change the Country to get all features": + "Vous pouvez modifier le pays pour obtenir toutes les fonctionnalités", + "Change Country": "Non-pays" + }, + "it": { + "Order": "Ordine", + "OrderVIP": "Ordine VIP", + "Cancel Trip": "Annulla Viaggio", + "Passenger Cancel Trip": "Passeggero Annulla Viaggio", + "VIP Order": "Ordine VIP", + "The driver accepted your trip": + "L'autista ha accettato il tuo viaggio", + "message From passenger": "Messaggio dal passeggero", + "Cancel": "Annulla", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "Viaggio Annullato. Il costo del viaggio sarà aggiunto al tuo portafoglio.", + "token change": "cambio token", + "face detect": "rilevamento facciale", + "Face Detection Result": "Risultato Rilevamento Facciale", + "similar": "simile", + "not similar": "non simile", + "Hi ,I will go now": "Ciao, vado ora", + "Passenger come to you": "Il passeggero sta venendo da te", + "Call Income": "Chiamata in Entrata", + "Call Income from Passenger": "Chiamata in Entrata dal Passeggero", + "Criminal Document Required": "Documento Penale Richiesto", + "You should have upload it .": "Avresti dovuto caricarlo.", + "Call End": "Fine Chiamata", + "The order has been accepted by another driver.": + "L'ordine è stato accettato da un altro autista.", + "The order Accepted by another Driver": + "Ordine Accettato da un altro Autista", + "We regret to inform you that another driver has accepted this order.": + "Siamo spiacenti di informarti che un altro autista ha accettato questo ordine.", + "Driver Applied the Ride for You": + "L'Autista Ha Applicato la Corsa per Te", + "Applied": "Applicato", + "Hi ,I Arrive your site": "Ciao, sono arrivato al tuo sito", + "Please go to Car Driver": "Per favore vai dall'Autista", + "Ok I will go now.": "Ok, vado ora.", + "Accepted Ride": "Corsa Accettata", + "Driver Accepted the Ride for You": + "L'Autista Ha Accettato la Corsa per Te", + "Promo": "Promo", + "Show latest promo": "Mostra l'ultima promo", + "Trip Monitoring": "Monitoraggio Viaggio", + "Driver Is Going To Passenger": + "L'Autista Sta Andando dal Passeggero", + "Please stay on the picked point.": + "Per favore rimani nel punto di prelievo selezionato.", + "message From Driver": "Messaggio dall'Autista", + "Trip is Begin": "Il Viaggio è Iniziato", + "Cancel Trip from driver": "Annulla Viaggio dall'autista", + "We will look for a new driver.\nPlease wait.": + "Cercheremo un nuovo autista.\nPer favore aspetta.", + "The driver canceled your ride.": + "L'autista ha annullato la tua corsa.", + "Driver Finish Trip": "L'Autista Ha Finito il Viaggio", + "you will pay to Driver": "pagherai l'Autista", + "Don’t forget your personal belongings.": + "Non dimenticare i tuoi effetti personali.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Assicurati di avere con te tutti i tuoi effetti personali e che eventuali tariffe rimanenti, se applicabili, siano state aggiunte al tuo portafoglio prima di partire. Grazie per aver scelto l'app Intaleq", + "Finish Monitor": "Termina Monitoraggio", + "Trip finished": "Viaggio finito", + "Call Income from Driver": "Chiamata in Entrata dall'Autista", + "Driver Cancelled Your Trip": "L'Autista Ha Annullato il Tuo Viaggio", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "pagherai l'Autista pagherai il costo del tempo dell'autista guarda il tuo Portafoglio Intaleq", + "Order Applied": "Ordine Applicato", + //firebase + + "registration_date": "Data di registrazione", + "expiration_date": "Data di scadenza", + "rating_count": "Recensioni", + "rating_driver": "Valutazione del conducente", + "age": "Età", + "vin": + "Perche' mi affido alla tecnologia. Numero di telaio memorizzato.", + "car_color": "- E' il colore...", + "car_plate": "Colore? Numero di targa?", + "car_model": "Modello dell'auto:", + "education": "Istruzione", + "gender": "Sesso", + "birthdate": "Compleanno", + "Approve Driver Documents": + "Approva i documenti dell'autista partner", + "Total Budget is": "Budget totale", + "You will recieve code in sms message": + "Riceverai il codice in un SMS", + "Please enter": "Inserisci un nome di calendario. @option: check", + "We need your phone number to contact you and to help you receive orders.": + "Abbiamo bisogno del tuo numero di telefono per contattarti e aiutarti a ricevere gli ordini.", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "Il nome completo sulla tua fedina penale non corrisponde al nome sulla tua patente di guida. Controlla e fornisci i documenti corretti.", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "Il numero nazionale sulla patente di guida non corrisponde al numero sul documento d'identità. Controlla e fornisci i documenti corretti.", + "Capture an Image of Your Criminal Record": + "Scatta una foto della tua fedina penale", + "IssueDate": "Data emissione", + "Capture an Image of Your car license front": + "Scatta una foto della tua patente di guida dalla parte anteriore", + "Capture an Image of Your ID Document front": + "Scatta una foto del tuo documento d'identità dalla parte anteriore", + "NationalID": "Numero nazionale", + "FullName": "Nome completo", + "InspectionResult": "Risultato del test", + "Criminal Record": "Fedina Penale ", + "The email or phone number is already registered.": + "L'e-mail o il numero di telefono sono già registrati.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "Per diventare un autista partner in condivisione nell'app Viaggi, devi caricare la patente di guida, il documento di identità e il documento di immatricolazione del veicolo. Il nostro sistema di intelligenza artificiale esaminerà e verificherà immediatamente la sua autenticità in soli 2-3 minuti. Se i tuoi documenti sono stati approvati, puoi iniziare a lavorare come autista partner nell'app Viaggi. Si prega di notare che fornire documenti falsi è un reato grave e può comportare la risoluzione immediata e conseguenze legali.", + "Documents check": "Verifica del documento", + "Driver's License": "La patente di guida.", + "License Type": "Passa?", + "National Number": "N. ID nazionale: ", + "Name (Arabic)": "Nome (arabo)", + "Name (English)": "- Inglese...", + "Address": "Indirizzo ", + "Issue Date": "Data emissione", + "Expiry Date": "Data di scadenza", + "License Categories": "Passa?", + "driver_license": "La patente di guida.", + "Capture an Image of Your Driver License": + "Scatta una foto della tua patente di guida", + "ID Documents Back": "Comparsa di documenti di identità", + "National ID": "Documento d'identità", + "Occupation": "Professione ", + "Gender": "Sesso", + "Religion": "La religione.", + "Marital Status": "Stato Civile", + "Full Name (Marital)": "Nome completo", + "Expiration Date": "Data di scadenza", + "Capture an Image of Your ID Document Back": + "Scatta una foto del retro del tuo documento d'identità", + "ID Documents Front": "Fronte dei documenti di identificazione", + "First Name": "Nome", + "CardID": "Scatta una foto del retro del tuo documento d'identità", + "Full Name": "Nome completo", + "Vehicle Details Front": "Dettagli del veicolo anteriore", + "Plate Number": "Numero di targa", + "Owner Name": + "|||UNTRANSLATED_CONTENT_START|||اسم المالك|||UNTRANSLATED_CONTENT_END|||", + "Vehicle Details Back": "Di nuovo i dettagli del veicolo", + "Make": "A %1", + "Model": "Modello dell'auto:", + "Year": "Anno", + "Chassis": "Telaio", + "Color": "- E' il colore...", + "Displacement": "Schemi sostituzioni", + "Fuel": "Alimentazione", + "Tax Expiry Date": "Data di scadenza", + "Inspection Date": "Data esame:", + "Capture an Image of Your car license back": + "Scatta di nuovo una foto della tua patente di guida", + "Capture an Image of Your Driver’s License": + "Scatta una foto della tua patente di guida", + "Sign in with Google for easier email and name entry": + "Accedi con Google per facilitare l'inserimento di email e nome", + "You will choose allow all the time to be ready receive orders": + "Sceglierai di consentire sempre gli ordini già pronti", + "Welcome to Intaleq!": "Benvenuto in Safar!", + "Get to your destination quickly and easily.": + "Raggiungi la tua destinazione in modo rapido e semplice.", + "Enjoy a safe and comfortable ride.": + "Goditi una corsa sicura e confortevole.", + "Choose Language": "Scegli la lingua", + "Login": "Chiamo per il controllo.", + "Pay with Wallet": "Paga con il portafoglio", + "Invalid MPIN": "Codice MPIN non valido", + "Invalid OTP": "Codice di verifica non valido", + "Enter your email address": "Immetti il tuo indirizzo e-mail", + "Please enter Your Email.": "Inserisci...", + "Enter your phone number": "Inserisci il tuo numero di telefono", + "Please enter your phone number.": "Please enter your mob.", + "Please enter Your Password.": "Immetti la password", + "Submit": "Hut!", + "if you dont have account": "- Se non le dispiace...", + "Register": "Contribuisci.", + "Accept Ride's Terms & Review Privacy Notice": + "Accetta i termini della corsa e consulta l'informativa sulla privacy", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "Selezionando \"Accetto\" di seguito, ho letto e accetto i Termini di utilizzo e accetto l'Informativa sulla privacy.Almeno un anno", + "I Agree": "- Concordo.", + "First name": "Nome", + "Enter your first name": "Il nome di battesimo.", + "Please enter your first name.": "Inserisci il tuo nome.", + "Last name": "Cognome.", + "Enter your last name": "Cognome.", + "Please enter your last name.": "Inserisci il tuo nome.", + "City": "Città", + "Please enter your City.": "Inserisci...", + "Male": "Maschio", + "Female": "Femmina", + "Verify Email": "Convalida e-mail", + "We sent 5 digit to your Email provided": + "Abbiamo inviato 5 cifre all'email che ci hai fornito", + "5 digit": "Pin(5cifre)", + "Send Verification Code": + "Abbiamo un dardo che sta cercando di contattarci.", + "Your Ride Duration is": "La durata del tuo viaggio è", + "You will be thier in": "Li avrai in", + "You trip distance is": "La distanza del tuo viaggio è", + "Fee is": "La commissione è", + "To :": "a:", + "Add Promo": "Aggiungi vista", + "Confirm Selection": "Conferma selezione", + "distance is": "La distanza è", + "duration is": "La durata è", + "I don't need a ride anymore": "Non ne ho piu' bisogno.", + "I was just trying the application": "Stavo solo provando l'app", + "No driver accepted my request": + "Nessun autista partner ha accettato il mio ordine", + "I added the wrong pick-up/drop-off location": + "Hai aggiunto un punto di partenza/arrivo errato", + "I don't have a reason": "- lo non l'ho trovata.", + "Other": "Altro", + "Can we know why you want to cancel Ride ?": + "Possiamo sapere perché vuoi cancellare la corsa?", + "Cancel Ride": "- Annullare, annullare!", + "Add Payment Method": "Un metodo di pagamento?", + "Your Wallet balance is": "Il saldo del tuo portafoglio è", + "Ride Wallet": "Portafoglio da viaggio", + "Payment Method": "MODALITÀ’ DI PAGAMENTO", + "Type here Place": "Va bene qui.", + "Are You sure to ride to": "Sei sicuro di voler viaggiare fino a", + "Confirm": "Conferma", + "Back": "- Ne abbiamo parlato! Ma guarda, una reunion della serie.", + "You are Delete": "Stai eliminando", + "Deleted": "Eliminato", + "You Dont Have Any places yet !": "Non hai ancora nessun posto!", + "Favorite Places": "Ii tuo genere di posto?", + "From : Current Location": "posizione attuale:", + "Where to": "Dove?", + "Notifications": "Avvisamenti ", + "Profile": "Profilo", + "Home": "Homepage", + "My Cared": "MyCurt", + "Add Card": "Aggiungi carta", + "Add Credit Card": "Carta di Credito", + "Please enter the cardholder name": + "Inserisci il nome del titolare della carta", + "Please enter the expiry date": "Data scadenza", + "Please enter the CVV code": + "Inserisci il codice di verifica della carta", + "Go To Favorite Places": "Vai ai luoghi preferiti", + "Go to this Target": "Vai a questo obiettivo", + "My Profile": "Panoramica estensione", + "Sign Out": "Mi disconnetto.", + "Home Page": "Homepage", + "Are you want to go to this site": "Vuoi andare in questa posizione", + "MyLocation": "Il mio sito web?", + "my location": "Il mio sito web?", + "Target": "B-E-R... Bersaglio.", + "Update": "- Aggiorna... aggiorna...", + "You Should choose rate figure": "Devi scegliere il numero corretto", + "Login Captin": "Chiamo per il controllo.", + "Register Captin": "Registrazione del capitano", + "Send Verfication Code": "Invia codice di verifica", + "End Ride": "- ln carrozza!", + "Minute": "Minuto", + "Go to passenger Location now": + "Vai subito alla posizione dell'utente", + "Duration of the Ride is": "La durata del viaggio è", + "Distance of the Ride is": "La distanza del viaggio è", + "Name of the Passenger is": "Il nome dell'utente è", + "Hello this is Captain": "Ciao, sono il capitano", + "Start the Ride": "Inizia corsa", + "Please Wait If passenger want To Cancel!": + "Attendi se l'utente desidera cancellare la corsa!", + "Total Duration:": "Durata totale:", + "Active Duration:": "Durata fase attiva", + "Waiting for Captin ...": "Aspettando il capitano ...", + "Age is": "- L'eta' e' un numero.", + "Rating is": "- La valutazione e'...", + "to arrive you.": "per raggiungerti.", + "Order History": "Registra cronologia ordini", + "My Wallet": "Dov'è il mio portafogli?", + "Tariff": "tariffa", + "Settings": "& Impostazioni", + "Feed Back": "Riflessi?", + "Promos": "PROMOZIONI", + "Please enter a valid 16-digit card number": + "Inserisci un numero di ordine d'acquisto valido.", + "Add Phone": "Telefono", + "Please enter a phone number": "Inserisci il numero di telefono", + "You dont Add Emergency Phone Yet!": + "Non hai ancora aggiunto un telefono di emergenza!", + "You will arrive to your destination after": + "Arriverai a destinazione dopo", + "You can cancel Ride now": "Ora puoi cancellare la corsa", + "You Can cancel Ride After Captain did not come in the time": + "Puoi cancellare la corsa dopo che il capitano non è arrivato in tempo", + "If you in Car Now. Press Start The Ride": + "Se sei in macchina in questo momento. Tocca Inizia corsa.", + "You Dont Have Any amount in": "Non hai alcun importo in", + "Wallet!": "Il portafoglio.", + "You Have": "Ce l'avevi tu!", + "Save Credit Card": "Conserva carta di credito", + "Show Promos": "Offerte", + "10 and get 4% discount": "10 e ottieni il 4% di sconto", + "20 and get 6% discount": "20 e ottieni il 6% di sconto", + "40 and get 8% discount": "40 e ottieni l'8% di sconto", + "100 and get 11% discount": "100% e 11% di sconto", + "Pay with Your PayPal": "Paga con PayPal", + "You will choose one of above !": + "Sceglierai una delle opzioni di cui sopra!", + "Cancel": "Annullare", + "Delete My Account": "Elimina il mio account", + "Edit Profile": "Modifier le profil", + "Name": "Nom", + "Update Gender": "Mettre à jour le sexe", + "Education": "Les études", + "Update Education": ":: Moderniser l'enseignement;", + "Employment Type": "Catégorie de personnel", + "SOS Phone": "Mobile", + "High School Diploma": "BACCALAUREAT DE L'ENSEIGNEMENT", + "Associate Degree": "Diplôme conjoint", + "Bachelor's Degree": "Grade de bachelier", + "Master's Degree": "Master", + "Doctoral Degree": "Docteur en philosophie.", + "Promos For today": "Promotions", + "Copy this Promo to use it in your Ride!": + "Copiez cette promotion pour l'utiliser lors de votre voyage !", + "To change some Settings": "Pour modifier certains paramètres", + "To change Language the App": + "Pour modifier la langue de l'application", + "Order Request Page": "Page de demande de commande", + "Rouats of Trip": "Tripp.", + "Passenger Name is": "Voyageur.", + "Total From Passenger is": "Le total du passager est", + "Duration To Passenger is": "Durée jusqu'au passager", + "Distance To Passenger is": "distance par rapport au passager est", + "Total For You is": "Le total pour vous est de", + "Distance is": "Distance", + "KM": "Km", + "Duration of Trip is": "La durée de la course est de", + "Minutes": "Minutes", + "Apply Order": "Appliquer la commande", + "Refuse Order": "- Demande rejetée.", + "Rate Captain": "Cote de capitaine", + "Enter your Note": "J'ai eu votre mot.", + "Type something...": "Écrire quelque chose...", + "Submit rating": "Fournir une évaluation", + "Rate Passenger": "Note du passager", + "Ride Summary": "Résumé de la course", + "welcome_message": "Insérer « & #160; Bonjour monde & #160; »", + "app_description": "ApplicationDescription", + "get_to_destination": + "Destination atteinte. Déblocage des contrôles manuels.", + "get_a_ride": "Commandez une course", + "safe_and_comfortable": "Sûr et confortable", + "committed_to_safety": "Engagé pour la sécurité", + "Driver Applied the Ride for You": + "Un chauffeur qui a effectué la course pour vous", + "Show latest promo": "Afficher la dernière promotion", + "Cancel Trip": "Le vol est annulé.", + "Passenger Cancel Trip": "Le passager annule la course", + "Please stay on the picked point.": + "Veuillez rester au point sélectionné.", + "Trip is Begin": "Votre initiation a commencé.", + "Hi ,I will go now": "Bonjour, j'y vais maintenant", + "Passenger come to you": "Votre passager vient vous voir", + "Hi ,I Arrive your site": + "Bonjour, vous avez atteint votre position.", + "Driver Finish Trip": "Fin de la course du chauffeur", + "you will pay to Driver": "Sérieux ? Probablement avec mon argent.", + "Driver Cancel Your Trip": "Annulez votre course, chauffeur.", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Vous paierez le chauffeur Vous paierez le coût du temps du chauffeur Regardez votre portefeuille Intaleq", + "I will go now": "- J'y vais.", + "You Have Tips": "Astuces", + "tips": "Des paroles sages ?", + "Total is": "Chiffre total est de 15", + "No,I want": "- Je n'en ai pas envie.", + "Your fee is": "Vos frais sont de", + "Do you want to pay Tips for this Driver": + "Souhaitez-vous laisser un pourboire à ce chauffeur ?", + "Tip is": "Monconseil", + "Camera Access Denied.": "Accès à la caméra refusé.", + "Open Settings": + "|||UNTRANSLATED_CONTENT_START|||Ø§ÙØªØ­ الإعدادات|||UNTRANSLATED_CONTENT_END|||", + "GPS Required Allow !.": "Le GPS doit être activé !", + "Your Account is Deleted": "Votre compte a été supprimé", + "Are you sure to delete your account?": + "Voulez-vous vraiment supprimer votre compte ?", + "Your data will be erased after 2 weeks": + "Vos données seront effacées après 2 semaines", + "And you will can't return to use app after 1 month": + "Vous pourrez revenir à l'application après un mois", + "Enter Your First Name": "Saisissez votre nom", + "Are you Sure to LogOut?": "Voulez-vous vraiment vous déconnecter?", + "Email Wrong": "Email ", + "Email you inserted is Wrong.": + "L'adresse e-mail que vous avez saisie est incorrecte.", + "You have finished all times": "J'en ai assez !", + "if you want help you can email us here": + "Si vous souhaitez de l'aide, vous pouvez nous envoyer un e-mail ici", + "Thanks": "Merci.", + "Email Us": "Envoyez-nous un e-mail", + "I cant register in your app in face detection": + "Je ne peux pas m'inscrire à votre application avec la détection de visage", + "Hi": "-C'est un plaisir. -Hello.", + "No face detected": "Aucun scanner n'a été détécté", + "Image detecting result is": + "Le résultat de la détection d'image est", + "from 3 times Take Attention": "que 3 fois attirent votre attention", + "Be sure for take accurate images please": + "Assurez-vous de prendre des photos précises s'il vous plaît", + "You have": "- Euh...", + "image verified": "La photo est notariée", + "Next": "Suivant", + "There is no help Question here": "Ouais, pas d'aide ici.", + "Call End": "Terminer l'appel", + "You dont have Points": "- Vous n'avez pas...", + "You Are Stopped For this Day !": + "Vous avez été mis en pause pour la journée !", + "You must be charge your Account": + "Vous devez recharger votre compte", + "You Refused 3 Rides this Day that is the reason": + "Vous avez refusé 3 courses aujourd'hui et c'est pourquoi", + "See you Tomorrow!": "Je te verrais demain.", + "Recharge my Account": "Recharger mon compte", + "Ok , See you Tomorrow": "D'accord, on se voit demain.", + "You are Stopped": "Vous êtes arrêté", + "Connected": "Online", + "Not Connected": "Offiline", + "Your are far from passenger location": + "Vous êtes loin de l'emplacement des passagers", + "go to your passenger location before": + "Accédez à l'emplacement de votre passager avant le", + "Passenger cancel trip": "Le passager a annulé la course", + "You will get cost of your work for this trip": + "Vous obtiendrez le coût de votre entreprise pour cette course", + "in your wallet": "Elle est dans ton portefeuille.", + "you gain": "Vous gagnerez", + "Order Cancelled": "Commande annulée", + "Order Cancelled by Passenger": "Demande annulée par le passager", + "Success": "Je l'ai.", + "Feedback data saved successfully": + "Données d'évaluation enregistrées avec succès", + "No Promo for today .": "Pas de promotion pour aujourd'hui.", + "Select your destination": "Sélectionnez la destination;", + "Search for your Start point": "Trouvez votre point de départ", + "Search for waypoint": "Rechercher un point WIPOINT", + "Current Location": "Utiliser la position actuelle", + "Add Location 1": "Emplacement & #160;: %1", + "You must Verify email !.": "Relever le courriel", + "Cropper": "Récolte", + "Saved Sucssefully": "Bien reçu.", + "Select Date": "Choisir une nouvelle date", + "Birth Date": "Date de naissance", + "Ok": "D'accord.", + "the 500 points equal 30 JOD": "500 points équivaut à 30 JOD", + "the 500 points equal 30 JOD for you": + "500 points équivaut à 30 JOD pour vous", + "token updated": "Code mis à jour", + "Add Location 2": "Ajouter un emplacement 2", + "Add Location 3": "Ajouter un emplacement 3", + "Add Location 4": "Ajouter un emplacement 4", + "Waiting for your location": "En attente de votre localisation", + "Search for your destination": "Trouvez votre destination", + "Hi! This is": "Bienvenue \"moi\": c' est ça.", + "I am using": "Du matériel que j'utilisais.", + "to ride with": "pour rouler avec", + "as the driver.": "On dirait un chauffeur.", + "is driving a": "- Je vais le tenter comme ça. - Conduire.", + "with license plate": "Avec une plaque d'immatriculation", + "I am currently located at": "Je suis actuellement en", + "Please go to Car now": "S'il te plaît, va-t-en maintenant.", + "If you need to reach me, please contact the driver directly at": + "Si vous avez besoin de me joindre, veuillez contacter directement le chauffeur au", + "No Car or Driver Found in your area.": + "Aucune voiture ou chauffeur trouvé dans votre région.", + "Please Try anther time": "Réessayer", + "There no Driver Aplly your order sorry for that": + "Aucun chauffeur ne peut répondre à votre demande, nous sommes désolés.", + "Trip Cancelled": "Course annulée", + "The Driver Will be in your location soon .": + "Votre chauffeur arrivera bientôt chez vous.", + "The distance less than 500 meter.": + "La distance est inférieure à 500 mètres.", + "Promo End !": "- C'est seulement jusqu'au spectacle.", + "There is no notification yet": "Aucune notification pour le moment", + "Use Touch ID or Face ID to confirm payment": + "Utilisez Touch ID ou Face ID pour confirmer le paiement", + "Contact us for any questions on your order.": + "Contactez-nous pour toute question concernant votre commande.", + "Pyament Cancelled .": "Le paiement a été annulé.", + "type here": "Tapez ici", + "Scan Driver License": "Permis de conduire", + "Please put your licence in these border": + "Veuillez placer votre licence dans ces limites", + "Camera not initialized yet": "Caméra pas encore configurée", + "Take Image": + "Prends une photo, parce que demain matin, ces lettres partiront.", + "AI Page": "Tu dis que ton système \"IA\"", + "Take Picture Of ID Card": + "Prenez une photo de votre pièce d'identité", + "Take Picture Of Driver License Card": + "Prenez une photo de votre permis de conduire.", + "We are process picture please wait": + "Nous traitons les images, veuillez patienter.", + "There is no data yet.": "Aucune donnée trouvée", + "Name :": "Nom :", + "Drivers License Class:": "Catégorie de permis de conduire :", + "Document Number:": "Numéro du document", + "Address:": "Adresse:", + "Height:": "& Hauteur & #160;:", + "Expiry Date:": "Expiration & #160;:", + "Date of Birth:": "Anniversaire & #160;: @title: group", + "You can't continue with us .": "Ça ne peut pas durer.", + "You should renew Driver license": + "Vous devez renouveler votre permis de conduire", + "Detect Your Face": "Découvrez votre visage", + "Go to next step": "\"", + "scan Car License.": "Vérification de l'immatriculation du véhicule.", + "Name in arabic": "Full Name AR", + "Drivers License Class": "Permis de conduire", + "Date of Birth": "Date de naissance", + "Age": "l’âge", + "Lets check Car license": "Vérifions le permis de conduire", + "Car Kind": "Type de véhicule", + "Car Plate": "Le numéro d'immatriculation ?", + "Lets check License Back Face": + "Vérifions la licence de face arrière", + "Car License Card": "Carte d'immatriculation du véhicule", + "No image selected yet": "Aucune photo sélectionnée pour le moment", + "Made :": "Make", + "model :": "Mod.", + "VIN :": "Structure :", + "year :": "Année", + "ÙExpire Date": "Date d'expiration", + "Login Driver": "Se connecter", + "Password must br at least 6 character.": + "Le mot de passe doit comporter au moins 6 caractères.", + "if you don't have account": "Que voulez-vous dire ?", + "Here recorded trips audio": + "Voici les enregistrements audio du voyage", + "Register as Driver": "Inscrivez-vous en tant que chauffeur", + "Privacy Notice": "Avis de confidentialité", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the": + "En sélectionnant « J'accepte » ci-dessous, j'ai lu, j'accepte et j'accepte les conditions générales", + ". I am at least 18 years of age.": ". J'ai au moins 18 ans.", + "Log Out Page": "Se Déconnecter", + "Log Off": "Signe.", + "Register Driver": "Le chauffeur...", + "Verify Email For Driver": "Consultez l'e-mail du chauffeur", + "Admin DashBoard": "Tableau de bord d'administration", + "Your name": "Ton... nom.", + "your ride is applied": "Votre course a été appliquée", + "Your password": "Renouveler votre mot de passe", + "LE": "Livre égyptienne", + "JOD": "Monnaie: Dinar jordanien", + "m": "%1 km", + "We search nearst Driver to you": + "Nous recherchons le chauffeur le plus proche", + "please wait till driver accept your order": + "Veuillez attendre que le chauffeur accepte votre demande", + "No accepted orders? Try raising your trip fee to attract riders.": + "Aucune Essayez d'augmenter les frais de course pour attirer des passagers.", + "You should select one": "Vous devez en choisir un", + "The driver accept your order for": + "Votre chauffeur a accepté votre demande de", + "Increase Fee": "Augmenter les frais", + "No, thanks": "Non merci", + "The driver on your way": "Votre chauffeur est en route", + "Total price from": "P.T", + "Order Details Intaleq": "Détails du commande", + "Order Applied": "Commande appliquée", + "accepted your order": "- Retenue.", + "We regret to inform you that another driver has accepted this order.": + "Nous sommes désolés de vous informer qu'un autre chauffeur a accepté cette demande.", + "Selected file:": "Ouvre un fichier existant", + "Your trip cost is": "Les frais de votre course", + "this will delete all files from your device": + "Cela supprimera tous les fichiers de votre appareil", + "you have a negative balance of": "Vous avez un solde négatif de", + "in your": "En toi.", + "Exclusive offers and discounts always with the Intaleq app": + "Offres exclusives et réductions toujours avec l'application de voyage", + "Please go to Car Driver": + "Veuillez vous rendre chez le conducteur de la voiture", + "wallet due to a previous trip.": + "Portefeuille en raison d'une course précédente.", + "Submit Question": "Envoyer la question", + "Please enter your Question.": "Veuillez saisir votre question.", + "Help Details": "Détails de l'aide", + "No trip yet found": "Aucune campagne trouvée", + "No Response yet.": "Il n'y a pas de réponses.", + "You Earn today is": "- On est euh...", + "You Have in": "Vous avez à", + "Total points is": "Le score total est de", + "Total Connection Duration:": "Durée totale de connexion :", + "H and": "H et", + "Passenger name :": "Le voyageur.", + "Cost Of Trip IS": "Coûts des vols par avion spécial", + "Arrival time": "On arrive dans 7 minutes.", + "arrival time to reach your point": + "Heure d'arrivée pour atteindre votre destination", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Pour les courses et livraisons rapides, le prix est calculé de manière dynamique. Pour des courses confortables, le prix est basé sur la durée et la distance.", + "Hello this is Driver": "Bonjour, je suis le chauffeur", + "Is the Passenger in your Car ?": + "Le passager est-il dans votre véhicule ?", + "Please wait for the passenger to enter the car before starting the trip.": + "Veuillez attendre que le passager entre dans le véhicule avant de commencer la course.", + "No ,still Waiting.": "Non , je t'attends toujours.", + "I arrive you": "Elle t'a eue.", + "I Arrive your site": "Elle t'a eue.", + "You are not in near to passenger location": + "Vous n'êtes pas près de l'emplacement du passager", + "please go to picker location exactly": + "Veuillez vous rendre à l'emplacement exact de la sélection", + "You Can Cancel Trip And get Cost of Trip From": + "Vous pouvez annuler la course et obtenir le coût de la course auprès de", + "Are you sure to cancel?": "Voulez-vous vraiment annuler ?", + "Yes": "Oui", + "Insert Emergincy Number": "Saisir le numéro d'urgence", + "Best choice for comfort car and flexible route and stops point": + "Le meilleur choix pour une voiture confortable, un itinéraire flexible et un point d'arrêt", + "Insert": "En cours d' utilisation", + "This is for delivery or a motorcycle.": + "C'est pour la livraison ou une moto.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "Cette course va directement de votre point de départ à votre destination pour un tarif forfaitaire. Le chauffeur doit suivre l'itinéraire prévu", + "You can decline a request without any cost": + "Vous pouvez refuser la demande sans frais", + "Perfect for adventure seekers who want to experience something new and exciting": + "Idéal pour les chercheurs d'aventure qui veulent essayer quelque chose de nouveau et d'excitant", + "My current location is:": "Mon emplacement actuel est :", + "and I have a trip on": "et j'ai un voyage à", + "App with Passenger": "Postuler avec le passager", + "You will be pay the cost to driver or we will get it from you on next trip": + "Le coût sera payé au chauffeur ou nous l'obtiendrons de votre part lors de la prochaine course", + "Trip has Steps": "La course comporte des étapes", + "Distance from Passenger to destination is": + "La distance entre le passager et la destination est", + "price is": "C'est cent dollars.", + "This ride type does not allow changes to the destination or additional stops": + "Ce type de course ne permet pas de modifier la destination ou d'effectuer des arrêts supplémentaires", + "This price may be changed": "Ce prix peut changer", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "Pas de carte SIM, pas de problème ! Contactez directement votre chauffeur via notre application. Nous utilisons une technologie de pointe pour garantir votre confidentialité.", + "This ride type allows changes, but the price may increase": + "Ce type de course peut être modifié, mais le prix peut augmenter", + "message From passenger": "Estafette.", + "Select one message": "Message un.", + "My location is correct. You can search for me using the navigation app": + "Ma position est correcte. Vous pouvez me rechercher à l'aide de l'application de navigation", + "I'm waiting for you": "- Quand vous voulez.", + "Hello, I'm at the agreed-upon location": + "Bonjour, je suis à l'endroit convenu", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "Nous avons remarqué que la vitesse dépasse 100 km/h. Veuillez ralentir pour votre propre sécurité. Si vous ne vous sentez pas en sécurité, vous pouvez communiquer les détails de votre course à un contact ou appeler la police à l'aide du bouton de détresse rouge.", + "Warning: Intaleqing detected!": + "Avertissement : survitesse détectée !", + "Please help! Contact me as soon as possible.": + "Aide-moi s'il te plaît. Contactez-moi dès que possible.", + "Share Trip Details": "Partagez les détails de la", + "Car Plate is": "Le numéro d'immatriculation ?", + "the 3000 points equal 3000 L.E for you": + "3000 points équivaut à 3000 EGP pour vous", + "So go and gain your money": "Gagnez de l'argent", + "the 3000 points equal 3000 L.E": "3000 points équivaut à 3000 EGP", + "The payment was not approved. Please try again.": + "Paiement non approuvé. Réessayer", + "Payment Failed": "Échec du paiement", + "Error": "ⵜⴰⵣⴳâµâµœ", + "An error occurred during the payment process.": + "Une erreur s'est produite lors de votre paiement.", + "The payment was approved.": "Paiement approuvé.", + "Payment Successful": "Paiement réussi", + "No ride found yet": "Aucune campagne trouvée", + "Accept Order": "Commande acceptée", + "reject your order.": "Votre Ordre.", + "Bottom Bar Example": "Exemple de barre inférieure", + "Driver phone": "Téléphone du chauffeur", + "Statistics": "& Statistiques", + "Origin": "ORIGINE", + "Destination": "- Destination ?", + "Driver Name": "Nom de pilote & #160;:", + "Driver Car Plate": "Plaque d'immatriculation du conducteur", + "Available for rides": "Disponible pour les courses", + "Scan Id": "Contrôle d'identité", + "Camera not initilaized yet": "Caméra pas encore configurée", + "Scan ID MklGoogle": "Vérification d'identité MklGoogle", + "Language": "Langue ", + "Jordan": "Jordanie", + "USA": "Etats Unis d'Amérique", + "Egypt": "Egypte", + "Turkey": "Turquie", + "Saudi Arabia": "Arabie Saoudite", + "Qatar": "Qatar", + "Bahrain": "Bahreïn", + "Kuwait": "Koweït", + "But you have a negative salary of": + "Mais vous avez un salaire négatif de", + "Promo Code": "Code promo", + "Your trip distance is": "La distance de votre course est de", + "Enter promo code": "Code promo", + "You have promo!": "Vous avez une promotion !", + "Cost Duration": "Durée du coût", + "Duration is": "La durée est", + "Leave": "Quitter", + "Join": "Joindre", + "You Should be select reason.": "Vous devez choisir une raison.", + "\$": "\$", + "Waiting for Driver ...": "En attente du chauffeur ...", + "Latest Recent Trip": "J'ai des choses à faire!", + "from your list": "À partir de votre liste", + "Do you want to change Work location": + "Souhaitez-vous changer de lieu de travail ?", + "Do you want to change Home location": + "Souhaitez-vous changer l'emplacement de la maison", + "We Are Sorry That we dont have cars in your Location!": + "Nous sommes désolés que les voitures ne soient pas disponibles chez vous !", + "Choose from Map": "Sélectionner sur la carte", + "Pick your ride location on the map - Tap to confirm": + "Sélectionnez votre lieu de prise en charge sur la carte - appuyez pour confirmer", + "To Work": "Pour le boulot", + "Are you want to go this site": "Voulez-vous aller à cet endroit", + "Closest & Cheapest": "Le plus proche et le moins cher", + "Work Saved": "Enregistré :", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq est une application de covoiturage sûre, fiable et accessible.", + "With Intaleq, you can get a ride to your destination in minutes.": + "En voyageant, vous pouvez vous rendre à destination en quelques minutes.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Safar s'engage pour la sécurité, et tous nos commandants sont soigneusement contrôlés et leurs antécédents vérifiés.", + "To Home": "RETOUR À LA PAGE D'ACCUEIL", + "Home Saved": "Enregistré :", + "Destination selected": "Destination sélectionnée", + "Now select start pick": + "Maintenant, choisissez Démarrer la sélection", + "Pick from map": "Sélectionner sur la carte", + "Click here point": "Cliquez ici", + "No Car in your site. Sorry!": + "Il n'y a pas de voiture dans votre région. Ex... Excusez moi.", + "Nearest Car for you about": + "La voiture la plus proche de chez vous est d'environ", + "N/A": "Aucune information", + "From :": "Du :", + "Get Details of Trip": "Obtenir les détails de la course", + "If you want add stop click here": + "Si vous souhaitez ajouter un arrêt, cliquez ici", + "Driver": "ⴰⵎâµâ´·â´°âµ€", + "Where you want go": "D'où viens-tu ?", + "My Card": "Ma carte.", + "Start Record": "Début de la campagne d'enregistrement", + "Wallet": "Un portefeuille.", + "History of Trip": "2.1 Histoire du vol", + "Helping Center": "Centre d'aide", + "Record saved": "Sauvegarde de l'historique effectuée !", + "Trips recorded": "Voyages enregistrés", + "Select Your Country": "Selectionnez votre pays", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "Pour vous assurer d'avoir les informations les plus précises pour votre emplacement, veuillez sélectionner votre pays ci-dessous. Cela vous aidera à personnaliser l'expérience et le contenu de l'application pour votre pays.", + "Are you sure to delete recorded files": + "Êtes-vous sûr de vouloir supprimer les fichiers enregistrés", + "Select recorded trip": "Choisissez une course enregistrée", + "Card Number": "N  de pièce d'identité:", + "Hi, Where to": "Bonjour, oùallez-vous ?", + "Pick your destination from Map": "Sélectionner sur la carte", + "Add Stops": "Ajouter des arrêts", + "Get Direction": "Obtenir une direction", + "Add Location": "Ajouter l'emplacement correctement", + "Switch Rider": "Changer de passager", + "You will arrive to your destination after timer end.": + "Vous arriverez à destination après l'expiration de la minuterie.", + "You can cancel trip": "Vous pouvez annuler la course", + "The driver waitting you in picked location .": + "Votre chauffeur vous attend à l'endroit désigné .", + "Pay with Your": "Payer avec", + "Pay with Credit Card": "- La carte.", + "Payment History": "Historique des paiements", + "Show Promos to Charge": "Afficher les promotions d'expédition", + "Point": "Points", + "Driver Wallet": "Portefeuille chauffeur", + "Total Points is": "Le score total est de", + "Total Budget from trips is": "Le budget total des voyages est de", + "Total Amount:": "Montant total", + "Total Budget from trips by": "Budget total des voyages par", + "Credit card is": "Votre carte de crédit.", + "This amount for all trip I get from Passengers": + "Ce montant s'applique à toutes les courses que je reçois de la part de passagers.", + "Pay from my budget": "Payer sur mon budget", + "This amount for all trip I get from Passengers and Collected For me in": + "Ce montant s'applique à toutes les courses que je reçois de la part de passagers collectés pour moi à", + "You can buy points from your budget": + "Vous pouvez acheter des points à partir de votre budget", + "insert amount": "Entrez le montant", + "You can buy Points to let you online": + "Vous pouvez acheter des points pour vous permettre d'accéder en ligne", + "by this list below": "Grâce à cette liste ci-dessous", + "Create Wallet to receive your money": + "Créez un portefeuille pour recevoir votre argent", + "Enter your feedback here": "Saisissez vos commentaires ici", + "Please enter your feedback.": + "Veuillez saisir le texte de vos notes", + "Feedback": "Feedback:", + "Click here to Show it in Map": + "Cliquez ici pour le voir sur la carte", + "Canceled": "Annulé", + "Type your Email": "Votre e-mail", + "No I want": "- Je n'en ai pas envie.", + "Email is": "Email ", + "Phone Number is": "C'est le 92.38.09.06.", + "Date of Birth is": "Année de naissance", + "Sex is": "Le sexe est cardio.", + "Car Details": "Détails du véhicule", + "VIN is": "Structure", + "Color is": "- Sa couleur?", + "Make is": "Make is", + "Model is": "Formulaire de :", + "Year is": "Année", + "Edit Your data": "Modifiez vos informations", + "write vin for your car": + "Notez le numéro de châssis de votre véhicule", + "VIN": + "|||UNTRANSLATED_CONTENT_START|||رقم هيكل السيارة|||UNTRANSLATED_CONTENT_END|||", + "write Color for your car": "Tapez la couleur de votre voiture", + "write Make for your car": "Écrivez une marque pour votre voiture", + "write Model for your car": "Tapez votre modèle de voiture", + "write Year for your car": "Saisissez une année pour votre voiture", + "write Expiration Date for your car": "la date de péremption", + "Tariffs": "Définitions ", + "Minimum fare": "Prix minimum", + "Maximum fare": "Prix maximum", + "Flag-down fee": "Frais d'escale", + "Including Tax": "Incluant...", + "BookingFee": "Frais de réservation", + "Morning": "- Bonjour.", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "07h30 - 10h30 (jeudi, vendredi, samedi, lundi)", + "Evening": "- Bonsoir.", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "12h00 - 15h00 (jeudi, vendredi, samedi, lundi)", + "Night": "la nuit", + "You have in account": "Vous avez dans le compte", + "Select Country": "Sélectionner un pays.", + "Ride Today :": "Commandez une course aujourd'hui :", + "After this period": "Après cette période", + "You can't cancel!": "- Vous pouvez plus...", + "from 23:59 till 05:30": "23:59 - 05:30", + "Rate Driver": "Le chauffeur...", + "Total Cost is": "Coût total", + "Write note": "J'écris une lettre de menace.", + "Time to arrive": "Bobby, Qu'elle est notre e. t. a.?", + "Ride Summaries": "Résumés des courses", + "Total Cost": "Coût total", + "Average of Hours of": "Nombre moyen d'heures de travail", + "is ON for this month": "En cours ce mois-ci", + "Days": "Quelques mois, semaines... quelques jours.", + "Total Hours on month": "Nombre total d'heures", + "Counts of Hours on days": "Heures en jours", + "OrderId": "Commande N°", + "created time": "Date de création", + "Intaleq Over": "Et c'est là qu'on l'aura.", + "I will slow down": "Je vais ralentir.", + "Map Passenger": "Carte du passager", + "Be Slowly": "Soyez lent", + "If you want to make Google Map App run directly when you apply order": + "Si vous souhaitez lancer Google Maps directement lorsque vous appliquez la commande", + "You can change the language of the app": + "Vous pouvez modifier la langue de l'application", + "Your Budget less than needed": "Votre budget est sous-estimé", + "You can change the Country to get all features": + "Vous pouvez modifier le pays pour obtenir toutes les fonctionnalités", + "Change Country": "Non-pays" + }, + "ru": { + "Order": "Заказ", + "OrderVIP": "VIP Заказ", + "Cancel Trip": "Отменить поездку", + "Passenger Cancel Trip": "ПаÑÑажир отменил поездку", + "VIP Order": "VIP Заказ", + "The driver accepted your trip": "Водитель принÑл вашу поездку", + "message From passenger": "Сообщение от паÑÑажира", + "Cancel": "Отмена", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "Поездка отменена. СтоимоÑть поездки будет добавлена в ваш кошелек.", + "token change": "изменение токена", + "face detect": "раÑпознавание лица", + "Face Detection Result": "Результат раÑÐ¿Ð¾Ð·Ð½Ð°Ð²Ð°Ð½Ð¸Ñ Ð»Ð¸Ñ†Ð°", + "similar": "похожий", + "not similar": "не похожий", + "Hi ,I will go now": "Привет, Ñ ÑÐµÐ¹Ñ‡Ð°Ñ Ð¿Ð¾ÐµÐ´Ñƒ", + "Passenger come to you": "ПаÑÑажир идет к вам", + "Call Income": "ВходÑщий звонок", + "Call Income from Passenger": "ВходÑщий звонок от паÑÑажира", + "Criminal Document Required": "ТребуетÑÑ Ñправка о неÑудимоÑти", + "You should have upload it .": "Ð’Ñ‹ должны были загрузить его.", + "Call End": "Завершение звонка", + "The order has been accepted by another driver.": + "Заказ принÑÑ‚ другим водителем.", + "The order Accepted by another Driver": + "Заказ принÑÑ‚ другим водителем", + "We regret to inform you that another driver has accepted this order.": + "К Ñожалению, другой водитель принÑл Ñтот заказ.", + "Driver Applied the Ride for You": + "Водитель подал заÑвку на поездку Ð´Ð»Ñ Ð²Ð°Ñ", + "Applied": "Применено", + "Hi ,I Arrive your site": "Привет, Ñ Ð¿Ñ€Ð¸Ð±Ñ‹Ð» на ваше меÑто", + "Please go to Car Driver": + "ПожалуйÑта, подойдите к водителю автомобилÑ", + "Ok I will go now.": "Хорошо, Ñ ÑÐµÐ¹Ñ‡Ð°Ñ Ð¿Ð¾Ð¹Ð´Ñƒ.", + "Accepted Ride": "Поездка принÑта", + "Driver Accepted the Ride for You": "Водитель принÑл поездку Ð´Ð»Ñ Ð²Ð°Ñ", + "Promo": "Промо", + "Show latest promo": "Показать поÑледнее промо", + "Trip Monitoring": "Мониторинг поездки", + "Driver Is Going To Passenger": "Водитель едет к паÑÑажиру", + "Please stay on the picked point.": + "ПожалуйÑта, оÑтавайтеÑÑŒ в выбранной точке.", + "message From Driver": "Сообщение от водителÑ", + "Trip is Begin": "Поездка началаÑÑŒ", + "Cancel Trip from driver": "Отмена поездки водителем", + "We will look for a new driver.\nPlease wait.": + "Мы поищем нового водителÑ.\nПожалуйÑта, подождите.", + "The driver canceled your ride.": "Водитель отменил вашу поездку.", + "Driver Finish Trip": "Водитель завершил поездку", + "you will pay to Driver": "вы заплатите водителю", + "Don’t forget your personal belongings.": + "Ðе забудьте Ñвои личные вещи.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "ПожалуйÑта, убедитеÑÑŒ, что у Ð²Ð°Ñ ÐµÑть вÑе ваши личные вещи и что Ð»ÑŽÐ±Ð°Ñ Ð¾ÑтавшаÑÑÑ Ð¿Ð»Ð°Ñ‚Ð°, еÑли Ñ‚Ð°ÐºÐ¾Ð²Ð°Ñ Ð¸Ð¼ÐµÐµÑ‚ÑÑ, была добавлена в ваш кошелек перед уходом. СпаÑибо за выбор Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Intaleq", + "Finish Monitor": "Завершить мониторинг", + "Trip finished": "Поездка завершена", + "Call Income from Driver": "ВходÑщий звонок от водителÑ", + "Driver Cancelled Your Trip": "Водитель отменил вашу поездку", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "вы заплатите водителю, вы оплатите ÑтоимоÑть времени водителÑ, поÑмотрите в Ñвоем кошельке Intaleq", + "Order Applied": "Заказ применен", + // firebase + + "registration_date": "Дата региÑтрации", + "expiration_date": "banners|Дата Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°", + "rating_count": "КоличеÑтво оценок", + "rating_driver": "Рейтинг водителÑ", + "age": "ВозраÑÑ‚", + "vin": "VIN", + "car_color": "Цвет", + "car_plate": "Ðомерной знак", + "car_model": "Модель автомобилÑ:", + "education": "образование", + "gender": "Пол", + "birthdate": "Дата рождениÑ", + "Approve Driver Documents": "Утвердить документы водителÑ", + "Total Budget is": "Общий бюджет", + "You will recieve code in sms message": "Ð’Ñ‹ получите код в SMS", + "Please enter": "dynprops|Укажите название", + "We need your phone number to contact you and to help you receive orders.": + "Ðам нужен ваш номер телефона, чтобы ÑвÑзатьÑÑ Ñ Ð²Ð°Ð¼Ð¸ и помочь вам получать заказы.", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "Полное Ð¸Ð¼Ñ Ð² вашей ÑудимоÑти не Ñовпадает Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ в водительÑких правах. ПожалуйÑта, проверьте и предоÑтавьте правильные документы.", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "Ðациональный номер в водительÑком удоÑтоверении не Ñовпадает Ñ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ в удоÑтоверении личноÑти. ПожалуйÑта, проверьте и предоÑтавьте правильные документы.", + "Capture an Image of Your Criminal Record": + "Сфотографируйте Ñвою ÑудимоÑть", + "IssueDate": "Дата выдачи", + "Capture an Image of Your car license front": + "Сфотографируйте водительÑкие права Ñпереди", + "Capture an Image of Your ID Document front": + "Сфотографируйте удоÑтоверение личноÑти Ñпереди", + "NationalID": "Ðациональный идентификатор:", + "FullName": "full name", + "InspectionResult": "Результат оÑмотра", + "Criminal Record": "СудимоÑть", + "The email or phone number is already registered.": + "Ð­Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð° или номер телефона уже зарегиÑтрированы.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "Чтобы Ñтать водителем-партнером в приложении Ð´Ð»Ñ Ð¿ÑƒÑ‚ÐµÑˆÐµÑтвий, загрузите водительÑкие права, документ, удоÑтоверÑющий личноÑть, и документ о региÑтрации транÑпортного ÑредÑтва. Ðаша ÑиÑтема иÑкуÑÑтвенного интеллекта немедленно раÑÑмотрит и проверит ее подлинноÑть вÑего за 2-3 минуты. ЕÑли документы будут одобрены, вы Ñможете Ñтать водителем-партнером в приложении Ð´Ð»Ñ Ð¿ÑƒÑ‚ÐµÑˆÐµÑтвий. Обратите внимание, что предоÑтавление поддельных документов ÑвлÑетÑÑ Ñерьезным преÑтуплением и может привеÑти к немедленному раÑторжению и юридичеÑким поÑледÑтвиÑм.", + "Documents check": "Проверка документов", + "Driver's License": "ВодительÑкие права", + "License Type": "Тип лицензии", + "National Number": "Ðациональный номер", + "Name (Arabic)": "Ðаименование", + "Name (English)": "ÐнглийÑкий", + "Address": "ÐдреÑ", + "Issue Date": "Дата выдачи", + "Expiry Date": "Дата иÑÑ‚ÐµÑ‡ÐµÐ½Ð¸Ñ Ñрока дейÑтвиÑ", + "License Categories": "Категории лицензий", + "driver_license": "ВодительÑкие права", + "Capture an Image of Your Driver License": + "Сфотографируйте водительÑкие права", + "ID Documents Back": + "Оборудование Ð´Ð»Ñ Ð¸Ð·Ð³Ð¾Ñ‚Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑƒÐ´Ð¾Ñтоверений личноÑти", + "National ID": ":: Ð½Ð°Ñ†Ð¸Ð¾Ð½Ð°Ð»ÑŒÐ½Ð°Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ‡Ð½Ð¾Ñть;", + "Occupation": "ПрофеÑÑиÑ", + "Gender": "Пол", + "Religion": "РелигиÑ", + "Marital Status": "Семейное положение", + "Full Name (Marital)": "(раÑшифровка подпиÑи)", + "Expiration Date": "banners|Дата Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°", + "Capture an Image of Your ID Document Back": + "Сфотографируйте оборотную Ñторону удоÑÑ‚Ð¾Ð²ÐµÑ€ÐµÐ½Ð¸Ñ Ð»Ð¸Ñ‡Ð½Ð¾Ñти", + "ID Documents Front": + "Ð›Ð¸Ñ†ÐµÐ²Ð°Ñ Ñторона документов, удоÑтоверÑющих личноÑть", + "First Name": "ИмÑ:", + "CardID": "Сфотографируйте оборотную Ñторону удоÑÑ‚Ð¾Ð²ÐµÑ€ÐµÐ½Ð¸Ñ Ð»Ð¸Ñ‡Ð½Ð¾Ñти", + "Full Name": "full name", + "Vehicle Details Front": "Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ переднем транÑпортном ÑредÑтве", + "Plate Number": "Ðомерной знак", + "Owner Name": "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°", + "Vehicle Details Back": "Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð± автомобиле Ñнова", + "Make": "Марка", + "Model": "Модель автомобилÑ:", + "Year": "год", + "Chassis": "ШаÑÑи", + "Color": "Цвет", + "Displacement": "Замена", + "Fuel": "Горючее", + "Tax Expiry Date": "Дата иÑÑ‚ÐµÑ‡ÐµÐ½Ð¸Ñ Ñрока дейÑтвиÑ", + "Inspection Date": "Дата ОбÑледованиÑ", + "Capture an Image of Your car license back": + "Сфотографируйте водительÑкие права еще раз", + "Capture an Image of Your Driver’s License": + "Сфотографируйте водительÑкие права", + "Sign in with Google for easier email and name entry": + "Войдите в ÑиÑтему Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Google, чтобы упроÑтить ввод адреÑа Ñлектронной почты и имени", + "You will choose allow all the time to be ready receive orders": + "Ð’Ñ‹ будете разрешать готовые заказы вÑе времÑ", + "Welcome to Intaleq!": "Добро пожаловать в Safar!", + "Get to your destination quickly and easily.": + "БыÑтро и легко добирайтеÑÑŒ до меÑта назначениÑ.", + "Enjoy a safe and comfortable ride.": + "БезопаÑÐ½Ð°Ñ Ð¸ ÐºÐ¾Ð¼Ñ„Ð¾Ñ€Ñ‚Ð½Ð°Ñ Ð¿Ð¾ÐµÐ·Ð´ÐºÐ°.", + "Choose Language": "Выбрать", + "Login": "Войти", + "Pay with Wallet": "Оплатить Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ кошелька", + "Invalid MPIN": "Ðеверный MPIN-код", + "Invalid OTP": "Ðеверный код подтверждениÑ", + "Enter your email address": "Email", + "Please enter Your Email.": "ПожалуйÑта, введите...", + "Enter your phone number": "Введите номер телефона", + "Please enter your phone number.": "Введите номер телефона.", + "Please enter Your Password.": "Введите пароль", + "Submit": " Отправка ", + "if you dont have account": "ЕÑли у Ð²Ð°Ñ Ð½ÐµÑ‚ аккаунта", + "Register": "запиÑать", + "Accept Ride's Terms & Review Privacy Notice": + "Примите уÑÐ»Ð¾Ð²Ð¸Ñ Ð¿Ð¾ÐµÐ·Ð´ÐºÐ¸ и ознакомьтеÑÑŒ Ñ Ð—Ð°Ñвлением о конфиденциальноÑти", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "ÐÐ°Ð¶Ð¸Ð¼Ð°Ñ Â«Ð¯ ÑоглаÑен (-на)» ниже, Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´Ð°ÑŽ, что ознакомилÑÑ (-аÑÑŒ) и принимаю УÑÐ»Ð¾Ð²Ð¸Ñ Ð¸ÑпользованиÑ, а также Уведомление о конфиденциальноÑти.Мне не менее 18 лет.", + "I Agree": "СоглаÑитьÑÑ", + "First name": "ИмÑ:", + "Enter your first name": "Введите имÑ", + "Please enter your first name.": "ПожалуйÑта, введите ваше имÑ.", + "Last name": "ФамилиÑ", + "Enter your last name": "(фамилиÑ)", + "Please enter your last name.": "ПожалуйÑта, введите ваше имÑ.", + "City": "Город", + "Please enter your City.": "ПожалуйÑта, введите...", + "Male": "Муж.", + "Female": "Самка", + "Verify Email": "Подтвердить Ð°Ð´Ñ€ÐµÑ Ñлектронной почты", + "We sent 5 digit to your Email provided": + "Мы отправили 5 цифр на указанный вами Ð°Ð´Ñ€ÐµÑ Ñлектронной почты", + "5 digit": "PIN-код(5-значный)", + "Send Verification Code": "Код подтверждениÑ", + "Your Ride Duration is": "ПродолжительноÑть поездки:", + "You will be thier in": "Ð’Ñ‹ получите их в", + "You trip distance is": "РаÑÑтоÑние поездки:", + "Fee is": "Сбор ÑоÑтавлÑет", + "To :": "ДейÑтвительна до", + "Add Promo": "Добавить промокод", + "Confirm Selection": "Подтвердить выбор", + "distance is": "РаÑÑтоÑние ÑоÑтавлÑет", + "duration is": "ПродолжительноÑть ÑоÑтавлÑет", + "I don't need a ride anymore": "ÐœÐµÐ½Ñ Ð±Ð¾Ð»ÑŒÑˆÐµ не нужно подвозить", + "I was just trying the application": + "Я только что опробовал приложение", + "No driver accepted my request": + "Ðи один водитель не принÑл мой заказ", + "I added the wrong pick-up/drop-off location": + "Ð’Ñ‹ указали неправильное меÑто поÑадки/выÑадки", + "I don't have a reason": "У Ð¼ÐµÐ½Ñ Ð½ÐµÑ‚ причин", + "Other": "Прочее", + "Can we know why you want to cancel Ride ?": + "Почему вы хотите отменить поездку?", + "Cancel Ride": "Отменить", + "Add Payment Method": "Добавить ÑпоÑоб оплаты", + "Your Wallet balance is": "Ð‘Ð°Ð»Ð°Ð½Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ кошелька", + "Ride Wallet": "Кошелек Ð´Ð»Ñ Ð¿Ð¾ÐµÐ·Ð´Ð¾Ðº", + "Payment Method": "Форма раÑчетов", + "Type here Place": "Введите здеÑÑŒ меÑто", + "Are You sure to ride to": + "Ð’Ñ‹ уверены, что хотите Ñовершить поездку в", + "Confirm": "ПодтверждениÑ", + "Back": "Ðазад", + "You are Delete": "Ð’Ñ‹ удалÑете", + "Deleted": "Удален", + "You Dont Have Any places yet !": "У Ð²Ð°Ñ Ð¿Ð¾ÐºÐ° нет меÑÑ‚!", + "Favorite Places": "Избранные меÑта", + "From : Current Location": "Текущее меÑтоположение:", + "Where to": "Где Ðллах?", + "Notifications": "ИзвещениÑ", + "Profile": "Профиль", + "Home": "Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница ", + "My Cared": "MyCurt", + "Add Card": "Добавить карту", + "Add Credit Card": "Добавить кредитную карту", + "Please enter the cardholder name": "Введите Ð¸Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð° карты", + "Please enter the expiry date": "Дата иÑÑ‚ÐµÑ‡ÐµÐ½Ð¸Ñ Ñрока аккредитива", + "Please enter the CVV code": "Введите код Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ ÐºÐ°Ñ€Ñ‚Ñ‹", + "Go To Favorite Places": "Перейти к избранным меÑтам", + "Go to this Target": "Перейти к Ñтой цели", + "My Profile": "Профиль", + "Sign Out": "Выйти", + "Home Page": "Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница ", + "Are you want to go to this site": "Ð’Ñ‹ хотите поехать в Ñто меÑто", + "MyLocation": "Мое меÑтоположение", + "my location": "Мое меÑтоположение", + "Target": "Цель", + "Update": "МодернизациÑ", + "You Should choose rate figure": "Ð’Ñ‹ должны выбрать правильный номер", + "Login Captin": "bills|Логин", + "Register Captin": "РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ ÐºÐ°Ð¿Ð¸Ñ‚Ð°Ð½Ð°", + "Send Verfication Code": "Отправить код подтверждениÑ", + "End Ride": "Поездка", + "Minute": "Минута", + "Go to passenger Location now": + "Перейти к меÑтоположению пользователÑ", + "Duration of the Ride is": "ПродолжительноÑть поездки:", + "Distance of the Ride is": "РаÑÑтоÑние поездки:", + "Name of the Passenger is": "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Uber:", + "Hello this is Captain": "ЗдравÑтвуйте, Ñ ÐºÐ°Ð¿Ð¸Ñ‚Ð°Ð½", + "Start the Ride": "Ðачать поездку", + "Please Wait If passenger want To Cancel!": + "ЕÑли пользователь хочет отменить поездку, подождите.", + "Total Duration:": "ÐžÐ±Ñ‰Ð°Ñ Ð´Ð»Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ñть", + "Active Duration:": "ПродолжительноÑть активного шага", + "Waiting for Captin ...": "Ð’ ожидании капитана ...", + "Age is": "ВозраÑÑ‚", + "Rating is": "Целью оценки ÑвлÑетÑÑ:", + "to arrive you.": "чтобы ÑвÑзатьÑÑ Ñ Ð²Ð°Ð¼Ð¸.", + "Order History": "ЗапиÑать иÑторию заказов", + "My Wallet": "Мой кошелек", + "Tariff": "Тариф", + "Settings": "spasibo", + "Feed Back": "ÐžÐ±Ñ€Ð°Ñ‚Ð½Ð°Ñ ÑвÑзь", + "Promos": "ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Â«Ðкции»", + "Please enter a valid 16-digit card number": + "Введите дейÑтвительный номер заказа на закупку.", + "Add Phone": "Телефон", + "Please enter a phone number": "Введите номер телефона", + "You dont Add Emergency Phone Yet!": + "Ð’Ñ‹ еще не добавили телефон ÑкÑтренной помощи!", + "You will arrive to your destination after": + "Ð’Ñ‹ прибудете в пункт Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ‡ÐµÑ€ÐµÐ·", + "You can cancel Ride now": "Ð’Ñ‹ можете отменить поездку прÑмо ÑейчаÑ", + "You Can cancel Ride After Captain did not come in the time": + "Ð’Ñ‹ можете отменить поездку поÑле того, как капитан не прибыл вовремÑ", + "If you in Car Now. Press Start The Ride": + "ЕÑли вы ÑÐµÐ¹Ñ‡Ð°Ñ Ð² машине. Ðажмите Ðачать поездку.", + "You Dont Have Any amount in": "У Ð²Ð°Ñ Ð½ÐµÑ‚ ÑредÑтв в", + "Wallet!": "Wallet", + "You Have": "ЕÑть?", + "Save Credit Card": "Сохранить кредитную карту", + "Show Promos": "ÐКЦИИ", + "10 and get 4% discount": "10 и получите Ñкидку 4%", + "20 and get 6% discount": "20 и получите Ñкидку 6%", + "40 and get 8% discount": "40 и получите Ñкидку 8%", + "100 and get 11% discount": "100% и получите Ñкидку 11%", + "Pay with Your PayPal": "Оплатить через PayPal", + "You will choose one of above !": + "Ð’Ñ‹ выберете один из вариантов выше!", + "Cancel": "Отменить", + "Delete My Account": "Удалить мой аккаунт", + "Edit Profile": "Modifier le profil", + "Name": "Nom", + "Update Gender": "Mettre à jour le sexe", + "Education": "Les études", + "Update Education": ":: Moderniser l'enseignement;", + "Employment Type": "Catégorie de personnel", + "SOS Phone": "Mobile", + "High School Diploma": "BACCALAUREAT DE L'ENSEIGNEMENT", + "Associate Degree": "Diplôme conjoint", + "Bachelor's Degree": "Grade de bachelier", + "Master's Degree": "Master", + "Doctoral Degree": "Docteur en philosophie.", + "Promos For today": "Promotions", + "Copy this Promo to use it in your Ride!": + "Copiez cette promotion pour l'utiliser lors de votre voyage !", + "To change some Settings": "Pour modifier certains paramètres", + "To change Language the App": + "Pour modifier la langue de l'application", + "Order Request Page": "Page de demande de commande", + "Rouats of Trip": "Tripp.", + "Passenger Name is": "Voyageur.", + "Total From Passenger is": "Le total du passager est", + "Duration To Passenger is": "Durée jusqu'au passager", + "Distance To Passenger is": "distance par rapport au passager est", + "Total For You is": "Le total pour vous est de", + "Distance is": "Distance", + "KM": "Km", + "Duration of Trip is": "La durée de la course est de", + "Minutes": "Minutes", + "Apply Order": "Appliquer la commande", + "Refuse Order": "- Demande rejetée.", + "Rate Captain": "Cote de capitaine", + "Enter your Note": "J'ai eu votre mot.", + "Type something...": "Écrire quelque chose...", + "Submit rating": "Fournir une évaluation", + "Rate Passenger": "Note du passager", + "Ride Summary": "Résumé de la course", + "welcome_message": "Insérer « & #160; Bonjour monde & #160; »", + "app_description": "ApplicationDescription", + "get_to_destination": + "Destination atteinte. Déblocage des contrôles manuels.", + "get_a_ride": "Commandez une course", + "safe_and_comfortable": "Sûr et confortable", + "committed_to_safety": "Engagé pour la sécurité", + "Driver Applied the Ride for You": + "Un chauffeur qui a effectué la course pour vous", + "Show latest promo": "Afficher la dernière promotion", + "Cancel Trip": "Le vol est annulé.", + "Passenger Cancel Trip": "Le passager annule la course", + "Please stay on the picked point.": + "Veuillez rester au point sélectionné.", + "Trip is Begin": "Votre initiation a commencé.", + "Hi ,I will go now": "Bonjour, j'y vais maintenant", + "Passenger come to you": "Votre passager vient vous voir", + "Hi ,I Arrive your site": + "Bonjour, vous avez atteint votre position.", + "Driver Finish Trip": "Fin de la course du chauffeur", + "you will pay to Driver": "Sérieux ? Probablement avec mon argent.", + "Driver Cancel Your Trip": "Annulez votre course, chauffeur.", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Vous paierez le chauffeur Vous paierez le coût du temps du chauffeur Regardez votre portefeuille Intaleq", + "I will go now": "- J'y vais.", + "You Have Tips": "Astuces", + "tips": "Des paroles sages ?", + "Total is": "Chiffre total est de 15", + "No,I want": "- Je n'en ai pas envie.", + "Your fee is": "Vos frais sont de", + "Do you want to pay Tips for this Driver": + "Souhaitez-vous laisser un pourboire à ce chauffeur ?", + "Tip is": "Monconseil", + "Camera Access Denied.": "Accès à la caméra refusé.", + "Open Settings": + "|||UNTRANSLATED_CONTENT_START|||Ø§ÙØªØ­ الإعدادات|||UNTRANSLATED_CONTENT_END|||", + "GPS Required Allow !.": "Le GPS doit être activé !", + "Your Account is Deleted": "Votre compte a été supprimé", + "Are you sure to delete your account?": + "Voulez-vous vraiment supprimer votre compte ?", + "Your data will be erased after 2 weeks": + "Vos données seront effacées après 2 semaines", + "And you will can't return to use app after 1 month": + "Vous pourrez revenir à l'application après un mois", + "Enter Your First Name": "Saisissez votre nom", + "Are you Sure to LogOut?": "Voulez-vous vraiment vous déconnecter?", + "Email Wrong": "Email ", + "Email you inserted is Wrong.": + "L'adresse e-mail que vous avez saisie est incorrecte.", + "You have finished all times": "J'en ai assez !", + "if you want help you can email us here": + "Si vous souhaitez de l'aide, vous pouvez nous envoyer un e-mail ici", + "Thanks": "Merci.", + "Email Us": "Envoyez-nous un e-mail", + "I cant register in your app in face detection": + "Je ne peux pas m'inscrire à votre application avec la détection de visage", + "Hi": "-C'est un plaisir. -Hello.", + "No face detected": "Aucun scanner n'a été détécté", + "Image detecting result is": + "Le résultat de la détection d'image est", + "from 3 times Take Attention": "que 3 fois attirent votre attention", + "Be sure for take accurate images please": + "Assurez-vous de prendre des photos précises s'il vous plaît", + "You have": "- Euh...", + "image verified": "La photo est notariée", + "Next": "Suivant", + "There is no help Question here": "Ouais, pas d'aide ici.", + "Call End": "Terminer l'appel", + "You dont have Points": "- Vous n'avez pas...", + "You Are Stopped For this Day !": + "Vous avez été mis en pause pour la journée !", + "You must be charge your Account": + "Vous devez recharger votre compte", + "You Refused 3 Rides this Day that is the reason": + "Vous avez refusé 3 courses aujourd'hui et c'est pourquoi", + "See you Tomorrow!": "Je te verrais demain.", + "Recharge my Account": "Recharger mon compte", + "Ok , See you Tomorrow": "D'accord, on se voit demain.", + "You are Stopped": "Vous êtes arrêté", + "Connected": "Online", + "Not Connected": "Offiline", + "Your are far from passenger location": + "Vous êtes loin de l'emplacement des passagers", + "go to your passenger location before": + "Accédez à l'emplacement de votre passager avant le", + "Passenger cancel trip": "Le passager a annulé la course", + "You will get cost of your work for this trip": + "Vous obtiendrez le coût de votre entreprise pour cette course", + "in your wallet": "Elle est dans ton portefeuille.", + "you gain": "Vous gagnerez", + "Order Cancelled": "Commande annulée", + "Order Cancelled by Passenger": "Demande annulée par le passager", + "Success": "Je l'ai.", + "Feedback data saved successfully": + "Données d'évaluation enregistrées avec succès", + "No Promo for today .": "Pas de promotion pour aujourd'hui.", + "Select your destination": "Sélectionnez la destination;", + "Search for your Start point": "Trouvez votre point de départ", + "Search for waypoint": "Rechercher un point WIPOINT", + "Current Location": "Utiliser la position actuelle", + "Add Location 1": "Emplacement & #160;: %1", + "You must Verify email !.": "Relever le courriel", + "Cropper": "Récolte", + "Saved Sucssefully": "Bien reçu.", + "Select Date": "Choisir une nouvelle date", + "Birth Date": "Date de naissance", + "Ok": "D'accord.", + "the 500 points equal 30 JOD": "500 points équivaut à 30 JOD", + "the 500 points equal 30 JOD for you": + "500 points équivaut à 30 JOD pour vous", + "token updated": "Code mis à jour", + "Add Location 2": "Ajouter un emplacement 2", + "Add Location 3": "Ajouter un emplacement 3", + "Add Location 4": "Ajouter un emplacement 4", + "Waiting for your location": "En attente de votre localisation", + "Search for your destination": "Trouvez votre destination", + "Hi! This is": "Bienvenue \"moi\": c' est ça.", + "I am using": "Du matériel que j'utilisais.", + "to ride with": "pour rouler avec", + "as the driver.": "On dirait un chauffeur.", + "is driving a": "- Je vais le tenter comme ça. - Conduire.", + "with license plate": "Avec une plaque d'immatriculation", + "I am currently located at": "Je suis actuellement en", + "Please go to Car now": "S'il te plaît, va-t-en maintenant.", + "If you need to reach me, please contact the driver directly at": + "Si vous avez besoin de me joindre, veuillez contacter directement le chauffeur au", + "No Car or Driver Found in your area.": + "Aucune voiture ou chauffeur trouvé dans votre région.", + "Please Try anther time": "Réessayer", + "There no Driver Aplly your order sorry for that": + "Aucun chauffeur ne peut répondre à votre demande, nous sommes désolés.", + "Trip Cancelled": "Course annulée", + "The Driver Will be in your location soon .": + "Votre chauffeur arrivera bientôt chez vous.", + "The distance less than 500 meter.": + "La distance est inférieure à 500 mètres.", + "Promo End !": "- C'est seulement jusqu'au spectacle.", + "There is no notification yet": "Aucune notification pour le moment", + "Use Touch ID or Face ID to confirm payment": + "Utilisez Touch ID ou Face ID pour confirmer le paiement", + "Contact us for any questions on your order.": + "Contactez-nous pour toute question concernant votre commande.", + "Pyament Cancelled .": "Le paiement a été annulé.", + "type here": "Tapez ici", + "Scan Driver License": "Permis de conduire", + "Please put your licence in these border": + "Veuillez placer votre licence dans ces limites", + "Camera not initialized yet": "Caméra pas encore configurée", + "Take Image": + "Prends une photo, parce que demain matin, ces lettres partiront.", + "AI Page": "Tu dis que ton système \"IA\"", + "Take Picture Of ID Card": + "Prenez une photo de votre pièce d'identité", + "Take Picture Of Driver License Card": + "Prenez une photo de votre permis de conduire.", + "We are process picture please wait": + "Nous traitons les images, veuillez patienter.", + "There is no data yet.": "Aucune donnée trouvée", + "Name :": "Nom :", + "Drivers License Class:": "Catégorie de permis de conduire :", + "Document Number:": "Numéro du document", + "Address:": "Adresse:", + "Height:": "& Hauteur & #160;:", + "Expiry Date:": "Expiration & #160;:", + "Date of Birth:": "Anniversaire & #160;: @title: group", + "You can't continue with us .": "Ça ne peut pas durer.", + "You should renew Driver license": + "Vous devez renouveler votre permis de conduire", + "Detect Your Face": "Découvrez votre visage", + "Go to next step": "\"", + "scan Car License.": "Vérification de l'immatriculation du véhicule.", + "Name in arabic": "Full Name AR", + "Drivers License Class": "Permis de conduire", + "Date of Birth": "Date de naissance", + "Age": "l’âge", + "Lets check Car license": "Vérifions le permis de conduire", + "Car Kind": "Type de véhicule", + "Car Plate": "Le numéro d'immatriculation ?", + "Lets check License Back Face": + "Vérifions la licence de face arrière", + "Car License Card": "Carte d'immatriculation du véhicule", + "No image selected yet": "Aucune photo sélectionnée pour le moment", + "Made :": "Make", + "model :": "Mod.", + "VIN :": "Structure :", + "year :": "Année", + "ÙExpire Date": "Date d'expiration", + "Login Driver": "Se connecter", + "Password must br at least 6 character.": + "Le mot de passe doit comporter au moins 6 caractères.", + "if you don't have account": "Que voulez-vous dire ?", + "Here recorded trips audio": + "Voici les enregistrements audio du voyage", + "Register as Driver": "Inscrivez-vous en tant que chauffeur", + "Privacy Notice": "Avis de confidentialité", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the": + "En sélectionnant « J'accepte » ci-dessous, j'ai lu, j'accepte et j'accepte les conditions générales", + ". I am at least 18 years of age.": ". J'ai au moins 18 ans.", + "Log Out Page": "Se Déconnecter", + "Log Off": "Signe.", + "Register Driver": "Le chauffeur...", + "Verify Email For Driver": "Consultez l'e-mail du chauffeur", + "Admin DashBoard": "Tableau de bord d'administration", + "Your name": "Ton... nom.", + "your ride is applied": "Votre course a été appliquée", + "Your password": "Renouveler votre mot de passe", + "LE": "Livre égyptienne", + "JOD": "Monnaie: Dinar jordanien", + "m": "%1 km", + "We search nearst Driver to you": + "Nous recherchons le chauffeur le plus proche", + "please wait till driver accept your order": + "Veuillez attendre que le chauffeur accepte votre demande", + "No accepted orders? Try raising your trip fee to attract riders.": + "Aucune Essayez d'augmenter les frais de course pour attirer des passagers.", + "You should select one": "Vous devez en choisir un", + "The driver accept your order for": + "Votre chauffeur a accepté votre demande de", + "Increase Fee": "Augmenter les frais", + "No, thanks": "Non merci", + "The driver on your way": "Votre chauffeur est en route", + "Total price from": "P.T", + "Order Details Intaleq": "Détails du commande", + "Order Applied": "Commande appliquée", + "accepted your order": "- Retenue.", + "We regret to inform you that another driver has accepted this order.": + "Nous sommes désolés de vous informer qu'un autre chauffeur a accepté cette demande.", + "Selected file:": "Ouvre un fichier existant", + "Your trip cost is": "Les frais de votre course", + "this will delete all files from your device": + "Cela supprimera tous les fichiers de votre appareil", + "you have a negative balance of": "Vous avez un solde négatif de", + "in your": "En toi.", + "Exclusive offers and discounts always with the Intaleq app": + "Offres exclusives et réductions toujours avec l'application de voyage", + "Please go to Car Driver": + "Veuillez vous rendre chez le conducteur de la voiture", + "wallet due to a previous trip.": + "Portefeuille en raison d'une course précédente.", + "Submit Question": "Envoyer la question", + "Please enter your Question.": "Veuillez saisir votre question.", + "Help Details": "Détails de l'aide", + "No trip yet found": "Aucune campagne trouvée", + "No Response yet.": "Il n'y a pas de réponses.", + "You Earn today is": "- On est euh...", + "You Have in": "Vous avez à", + "Total points is": "Le score total est de", + "Total Connection Duration:": "Durée totale de connexion :", + "H and": "H et", + "Passenger name :": "Le voyageur.", + "Cost Of Trip IS": "Coûts des vols par avion spécial", + "Arrival time": "On arrive dans 7 minutes.", + "arrival time to reach your point": + "Heure d'arrivée pour atteindre votre destination", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Pour les courses et livraisons rapides, le prix est calculé de manière dynamique. Pour des courses confortables, le prix est basé sur la durée et la distance.", + "Hello this is Driver": "Bonjour, je suis le chauffeur", + "Is the Passenger in your Car ?": + "Le passager est-il dans votre véhicule ?", + "Please wait for the passenger to enter the car before starting the trip.": + "Veuillez attendre que le passager entre dans le véhicule avant de commencer la course.", + "No ,still Waiting.": "Non , je t'attends toujours.", + "I arrive you": "Elle t'a eue.", + "I Arrive your site": "Elle t'a eue.", + "You are not in near to passenger location": + "Vous n'êtes pas près de l'emplacement du passager", + "please go to picker location exactly": + "Veuillez vous rendre à l'emplacement exact de la sélection", + "You Can Cancel Trip And get Cost of Trip From": + "Vous pouvez annuler la course et obtenir le coût de la course auprès de", + "Are you sure to cancel?": "Voulez-vous vraiment annuler ?", + "Yes": "Oui", + "Insert Emergincy Number": "Saisir le numéro d'urgence", + "Best choice for comfort car and flexible route and stops point": + "Le meilleur choix pour une voiture confortable, un itinéraire flexible et un point d'arrêt", + "Insert": "En cours d' utilisation", + "This is for delivery or a motorcycle.": + "C'est pour la livraison ou une moto.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "Cette course va directement de votre point de départ à votre destination pour un tarif forfaitaire. Le chauffeur doit suivre l'itinéraire prévu", + "You can decline a request without any cost": + "Vous pouvez refuser la demande sans frais", + "Perfect for adventure seekers who want to experience something new and exciting": + "Idéal pour les chercheurs d'aventure qui veulent essayer quelque chose de nouveau et d'excitant", + "My current location is:": "Mon emplacement actuel est :", + "and I have a trip on": "et j'ai un voyage à", + "App with Passenger": "Postuler avec le passager", + "You will be pay the cost to driver or we will get it from you on next trip": + "Le coût sera payé au chauffeur ou nous l'obtiendrons de votre part lors de la prochaine course", + "Trip has Steps": "La course comporte des étapes", + "Distance from Passenger to destination is": + "La distance entre le passager et la destination est", + "price is": "C'est cent dollars.", + "This ride type does not allow changes to the destination or additional stops": + "Ce type de course ne permet pas de modifier la destination ou d'effectuer des arrêts supplémentaires", + "This price may be changed": "Ce prix peut changer", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "Pas de carte SIM, pas de problème ! Contactez directement votre chauffeur via notre application. Nous utilisons une technologie de pointe pour garantir votre confidentialité.", + "This ride type allows changes, but the price may increase": + "Ce type de course peut être modifié, mais le prix peut augmenter", + "message From passenger": "Estafette.", + "Select one message": "Message un.", + "My location is correct. You can search for me using the navigation app": + "Ma position est correcte. Vous pouvez me rechercher à l'aide de l'application de navigation", + "I'm waiting for you": "- Quand vous voulez.", + "Hello, I'm at the agreed-upon location": + "Bonjour, je suis à l'endroit convenu", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "Nous avons remarqué que la vitesse dépasse 100 km/h. Veuillez ralentir pour votre propre sécurité. Si vous ne vous sentez pas en sécurité, vous pouvez communiquer les détails de votre course à un contact ou appeler la police à l'aide du bouton de détresse rouge.", + "Warning: Intaleqing detected!": + "Avertissement : survitesse détectée !", + "Please help! Contact me as soon as possible.": + "Aide-moi s'il te plaît. Contactez-moi dès que possible.", + "Share Trip Details": "Partagez les détails de la", + "Car Plate is": "Le numéro d'immatriculation ?", + "the 3000 points equal 3000 L.E for you": + "3000 points équivaut à 3000 EGP pour vous", + "So go and gain your money": "Gagnez de l'argent", + "the 3000 points equal 3000 L.E": "3000 points équivaut à 3000 EGP", + "The payment was not approved. Please try again.": + "Paiement non approuvé. Réessayer", + "Payment Failed": "Échec du paiement", + "Error": "ⵜⴰⵣⴳâµâµœ", + "An error occurred during the payment process.": + "Une erreur s'est produite lors de votre paiement.", + "The payment was approved.": "Paiement approuvé.", + "Payment Successful": "Paiement réussi", + "No ride found yet": "Aucune campagne trouvée", + "Accept Order": "Commande acceptée", + "reject your order.": "Votre Ordre.", + "Bottom Bar Example": "Exemple de barre inférieure", + "Driver phone": "Téléphone du chauffeur", + "Statistics": "& Statistiques", + "Origin": "ORIGINE", + "Destination": "- Destination ?", + "Driver Name": "Nom de pilote & #160;:", + "Driver Car Plate": "Plaque d'immatriculation du conducteur", + "Available for rides": "Disponible pour les courses", + "Scan Id": "Contrôle d'identité", + "Camera not initilaized yet": "Caméra pas encore configurée", + "Scan ID MklGoogle": "Vérification d'identité MklGoogle", + "Language": "Langue ", + "Jordan": "Jordanie", + "USA": "Etats Unis d'Amérique", + "Egypt": "Egypte", + "Turkey": "Turquie", + "Saudi Arabia": "Arabie Saoudite", + "Qatar": "Qatar", + "Bahrain": "Bahreïn", + "Kuwait": "Koweït", + "But you have a negative salary of": + "Mais vous avez un salaire négatif de", + "Promo Code": "Code promo", + "Your trip distance is": "La distance de votre course est de", + "Enter promo code": "Code promo", + "You have promo!": "Vous avez une promotion !", + "Cost Duration": "Durée du coût", + "Duration is": "La durée est", + "Leave": "Quitter", + "Join": "Joindre", + "You Should be select reason.": "Vous devez choisir une raison.", + "\$": "\$", + "Waiting for Driver ...": "En attente du chauffeur ...", + "Latest Recent Trip": "J'ai des choses à faire!", + "from your list": "À partir de votre liste", + "Do you want to change Work location": + "Souhaitez-vous changer de lieu de travail ?", + "Do you want to change Home location": + "Souhaitez-vous changer l'emplacement de la maison", + "We Are Sorry That we dont have cars in your Location!": + "Nous sommes désolés que les voitures ne soient pas disponibles chez vous !", + "Choose from Map": "Sélectionner sur la carte", + "Pick your ride location on the map - Tap to confirm": + "Sélectionnez votre lieu de prise en charge sur la carte - appuyez pour confirmer", + "To Work": "Pour le boulot", + "Are you want to go this site": "Voulez-vous aller à cet endroit", + "Closest & Cheapest": "Le plus proche et le moins cher", + "Work Saved": "Enregistré :", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq est une application de covoiturage sûre, fiable et accessible.", + "With Intaleq, you can get a ride to your destination in minutes.": + "En voyageant, vous pouvez vous rendre à destination en quelques minutes.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Safar s'engage pour la sécurité, et tous nos commandants sont soigneusement contrôlés et leurs antécédents vérifiés.", + "To Home": "RETOUR À LA PAGE D'ACCUEIL", + "Home Saved": "Enregistré :", + "Destination selected": "Destination sélectionnée", + "Now select start pick": + "Maintenant, choisissez Démarrer la sélection", + "Pick from map": "Sélectionner sur la carte", + "Click here point": "Cliquez ici", + "No Car in your site. Sorry!": + "Il n'y a pas de voiture dans votre région. Ex... Excusez moi.", + "Nearest Car for you about": + "La voiture la plus proche de chez vous est d'environ", + "N/A": "Aucune information", + "From :": "Du :", + "Get Details of Trip": "Obtenir les détails de la course", + "If you want add stop click here": + "Si vous souhaitez ajouter un arrêt, cliquez ici", + "Driver": "ⴰⵎâµâ´·â´°âµ€", + "Where you want go": "D'où viens-tu ?", + "My Card": "Ma carte.", + "Start Record": "Début de la campagne d'enregistrement", + "Wallet": "Un portefeuille.", + "History of Trip": "2.1 Histoire du vol", + "Helping Center": "Centre d'aide", + "Record saved": "Sauvegarde de l'historique effectuée !", + "Trips recorded": "Voyages enregistrés", + "Select Your Country": "Selectionnez votre pays", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "Pour vous assurer d'avoir les informations les plus précises pour votre emplacement, veuillez sélectionner votre pays ci-dessous. Cela vous aidera à personnaliser l'expérience et le contenu de l'application pour votre pays.", + "Are you sure to delete recorded files": + "Êtes-vous sûr de vouloir supprimer les fichiers enregistrés", + "Select recorded trip": "Choisissez une course enregistrée", + "Card Number": "N  de pièce d'identité:", + "Hi, Where to": "Bonjour, oùallez-vous ?", + "Pick your destination from Map": "Sélectionner sur la carte", + "Add Stops": "Ajouter des arrêts", + "Get Direction": "Obtenir une direction", + "Add Location": "Ajouter l'emplacement correctement", + "Switch Rider": "Changer de passager", + "You will arrive to your destination after timer end.": + "Vous arriverez à destination après l'expiration de la minuterie.", + "You can cancel trip": "Vous pouvez annuler la course", + "The driver waitting you in picked location .": + "Votre chauffeur vous attend à l'endroit désigné .", + "Pay with Your": "Payer avec", + "Pay with Credit Card": "- La carte.", + "Payment History": "Historique des paiements", + "Show Promos to Charge": "Afficher les promotions d'expédition", + "Point": "Points", + "Driver Wallet": "Portefeuille chauffeur", + "Total Points is": "Le score total est de", + "Total Budget from trips is": "Le budget total des voyages est de", + "Total Amount:": "Montant total", + "Total Budget from trips by": "Budget total des voyages par", + "Credit card is": "Votre carte de crédit.", + "This amount for all trip I get from Passengers": + "Ce montant s'applique à toutes les courses que je reçois de la part de passagers.", + "Pay from my budget": "Payer sur mon budget", + "This amount for all trip I get from Passengers and Collected For me in": + "Ce montant s'applique à toutes les courses que je reçois de la part de passagers collectés pour moi à", + "You can buy points from your budget": + "Vous pouvez acheter des points à partir de votre budget", + "insert amount": "Entrez le montant", + "You can buy Points to let you online": + "Vous pouvez acheter des points pour vous permettre d'accéder en ligne", + "by this list below": "Grâce à cette liste ci-dessous", + "Create Wallet to receive your money": + "Créez un portefeuille pour recevoir votre argent", + "Enter your feedback here": "Saisissez vos commentaires ici", + "Please enter your feedback.": + "Veuillez saisir le texte de vos notes", + "Feedback": "Feedback:", + "Click here to Show it in Map": + "Cliquez ici pour le voir sur la carte", + "Canceled": "Annulé", + "Type your Email": "Votre e-mail", + "No I want": "- Je n'en ai pas envie.", + "Email is": "Email ", + "Phone Number is": "C'est le 92.38.09.06.", + "Date of Birth is": "Année de naissance", + "Sex is": "Le sexe est cardio.", + "Car Details": "Détails du véhicule", + "VIN is": "Structure", + "Color is": "- Sa couleur?", + "Make is": "Make is", + "Model is": "Formulaire de :", + "Year is": "Année", + "Edit Your data": "Modifiez vos informations", + "write vin for your car": + "Notez le numéro de châssis de votre véhicule", + "VIN": + "|||UNTRANSLATED_CONTENT_START|||رقم هيكل السيارة|||UNTRANSLATED_CONTENT_END|||", + "write Color for your car": "Tapez la couleur de votre voiture", + "write Make for your car": "Écrivez une marque pour votre voiture", + "write Model for your car": "Tapez votre modèle de voiture", + "write Year for your car": "Saisissez une année pour votre voiture", + "write Expiration Date for your car": "la date de péremption", + "Tariffs": "Définitions ", + "Minimum fare": "Prix minimum", + "Maximum fare": "Prix maximum", + "Flag-down fee": "Frais d'escale", + "Including Tax": "Incluant...", + "BookingFee": "Frais de réservation", + "Morning": "- Bonjour.", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "07h30 - 10h30 (jeudi, vendredi, samedi, lundi)", + "Evening": "- Bonsoir.", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "12h00 - 15h00 (jeudi, vendredi, samedi, lundi)", + "Night": "la nuit", + "You have in account": "Vous avez dans le compte", + "Select Country": "Sélectionner un pays.", + "Ride Today :": "Commandez une course aujourd'hui :", + "After this period": "Après cette période", + "You can't cancel!": "- Vous pouvez plus...", + "from 23:59 till 05:30": "23:59 - 05:30", + "Rate Driver": "Le chauffeur...", + "Total Cost is": "Coût total", + "Write note": "J'écris une lettre de menace.", + "Time to arrive": "Bobby, Qu'elle est notre e. t. a.?", + "Ride Summaries": "Résumés des courses", + "Total Cost": "Coût total", + "Average of Hours of": "Nombre moyen d'heures de travail", + "is ON for this month": "En cours ce mois-ci", + "Days": "Quelques mois, semaines... quelques jours.", + "Total Hours on month": "Nombre total d'heures", + "Counts of Hours on days": "Heures en jours", + "OrderId": "Commande N°", + "created time": "Date de création", + "Intaleq Over": "Et c'est là qu'on l'aura.", + "I will slow down": "Je vais ralentir.", + "Map Passenger": "Carte du passager", + "Be Slowly": "Soyez lent", + "If you want to make Google Map App run directly when you apply order": + "Si vous souhaitez lancer Google Maps directement lorsque vous appliquez la commande", + "You can change the language of the app": + "Vous pouvez modifier la langue de l'application", + "Your Budget less than needed": "Votre budget est sous-estimé", + "You can change the Country to get all features": + "Vous pouvez modifier le pays pour obtenir toutes les fonctionnalités", + "Change Country": "Non-pays" + }, + "de": { + "Order": "Bestellung", + "OrderVIP": "VIP Bestellung", + "Cancel Trip": "Fahrt stornieren", + "Passenger Cancel Trip": "Fahrgast storniert Fahrt", + "VIP Order": "VIP Bestellung", + "The driver accepted your trip": + "Der Fahrer hat Ihre Fahrt angenommen", + "message From passenger": "Nachricht vom Fahrgast", + "Cancel": "Abbrechen", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "Fahrt storniert. Die Kosten der Fahrt werden Ihrem Wallet hinzugefügt.", + "token change": "Token-Änderung", + "face detect": "Gesichtserkennung", + "Face Detection Result": "Ergebnis der Gesichtserkennung", + "similar": "ähnlich", + "not similar": "nicht ähnlich", + "Hi ,I will go now": "Hallo, ich fahre jetzt los", + "Passenger come to you": "Fahrgast kommt zu Ihnen", + "Call Income": "Eingehender Anruf", + "Call Income from Passenger": "Eingehender Anruf vom Fahrgast", + "Criminal Document Required": "Strafregisterauszug erforderlich", + "You should have upload it .": "Sie hätten es hochladen sollen.", + "Call End": "Anruf beendet", + "The order has been accepted by another driver.": + "Die Bestellung wurde von einem anderen Fahrer angenommen.", + "The order Accepted by another Driver": + "Die Bestellung von einem anderen Fahrer angenommen", + "We regret to inform you that another driver has accepted this order.": + "Wir bedauern, Ihnen mitteilen zu müssen, dass ein anderer Fahrer diese Bestellung angenommen hat.", + "Driver Applied the Ride for You": + "Fahrer hat die Fahrt für Sie beantragt", + "Applied": "Angewendet", + "Hi ,I Arrive your site": + "Hallo, ich bin an Ihrem Standort angekommen", + "Please go to Car Driver": "Bitte gehen Sie zum Autofahrer", + "Ok I will go now.": "Ok, ich gehe jetzt.", + "Accepted Ride": "Fahrt angenommen", + "Driver Accepted the Ride for You": + "Fahrer hat die Fahrt für Sie angenommen", + "Promo": "Aktion", + "Show latest promo": "Neueste Aktion anzeigen", + "Trip Monitoring": "Fahrtüberwachung", + "Driver Is Going To Passenger": "Fahrer fährt zum Fahrgast", + "Please stay on the picked point.": + "Bitte bleiben Sie am ausgewählten Punkt.", + "message From Driver": "Nachricht vom Fahrer", + "Trip is Begin": "Fahrt beginnt", + "Cancel Trip from driver": "Fahrtstornierung durch Fahrer", + "We will look for a new driver.\nPlease wait.": + "Wir suchen einen neuen Fahrer.\nBitte warten Sie.", + "The driver canceled your ride.": + "Der Fahrer hat Ihre Fahrt storniert.", + "Driver Finish Trip": "Fahrer beendet Fahrt", + "you will pay to Driver": "Sie zahlen an den Fahrer", + "Don’t forget your personal belongings.": + "Vergessen Sie Ihre persönlichen Gegenstände nicht.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Bitte stellen Sie sicher, dass Sie alle Ihre persönlichen Gegenstände dabei haben und dass alle verbleibenden Fahrpreise, falls zutreffend, vor dem Verlassen Ihrem Wallet hinzugefügt wurden. Vielen Dank, dass Sie sich für die Intaleq App entschieden haben", + "Finish Monitor": "Überwachung beenden", + "Trip finished": "Fahrt beendet", + "Call Income from Driver": "Eingehender Anruf vom Fahrer", + "Driver Cancelled Your Trip": "Fahrer hat Ihre Fahrt storniert", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Sie zahlen an den Fahrer, Sie bezahlen die Kosten für die Fahrerzeit, schauen Sie in Ihr Intaleq Wallet", + "Order Applied": "Bestellung angewendet", + //firebase + + "registration_date": "Datum der Eintragung", + "expiration_date": "Ablaufdatum:", + "rating_count": "Bewertungen", + "rating_driver": "Fahrerbewertung", + "age": "Alter", + "vin": "FIN", + "car_color": "In der Farbe.", + "car_plate": "Nummernschild?", + "car_model": "Fahrzeugmodell:", + "education": "Bildung", + "gender": "Geschlecht", + "birthdate": "Geburtsdatum", + "Approve Driver Documents": "Fahrerdokumente genehmigen", + "Total Budget is": "Gesamtbudget", + "You will recieve code in sms message": + "Sie erhalten den Code in einer SMS", + "Please enter": "Please enter an amount", + "We need your phone number to contact you and to help you receive orders.": + "Wir benötigen Ihre Telefonnummer, um Sie zu kontaktieren und Ihnen beim Empfang von Bestellungen zu helfen.", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "Der vollständige Name in Ihrem Strafregister stimmt nicht mit dem Namen in Ihrem Führerschein überein. Bitte überprüfen und stellen Sie die richtigen Dokumente zur Verfügung.", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "Die nationale Nummer auf deinem Führerschein stimmt nicht mit der Nummer auf deinem Ausweisdokument überein. Bitte überprüfen und stellen Sie die richtigen Dokumente zur Verfügung.", + "Capture an Image of Your Criminal Record": + "Machen Sie ein Foto Ihres Strafregisters", + "IssueDate": "Ausstellungsdatum", + "Capture an Image of Your car license front": + "Mache ein Foto deines Führerscheins von vorne", + "Capture an Image of Your ID Document front": + "Mache ein Foto deines Ausweisdokuments von vorne", + "NationalID": "Nationale Bürgernummer ", + "FullName": "Vollständiger Name", + "InspectionResult": "Prüfungsbefund", + "Criminal Record": "Führungszeugnis ", + "The email or phone number is already registered.": + "E-Mail-Adresse oder Telefonnummer ist bereits registriert.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "Um Partner-Fahrer in der Travel-App zu werden, musst du deinen Führerschein, deinen Ausweis und deinen Fahrzeugschein hochladen. Unser KI-System überprüft und verifiziert die Echtheit sofort in nur 2-3 Minuten. Wenn deine Dokumente genehmigt wurden, kannst du in der Travel-App als Fahrer arbeiten. Bitte beachten Sie, dass die Bereitstellung gefälschter Dokumente eine schwere Straftat darstellt und zu einer sofortigen Kündigung und Rechtsfolgen führen kann.", + "Documents check": "Dokumentenüberprüfung", + "Driver's License": "Die Fahrzeugabteilung hat es...", + "License Type": "Lizenz:", + "National Number": "Nationale Identifikationsnummer:", + "Name (Arabic)": "Name (Arabisch)", + "Name (English)": "Englisch", + "Address": "Adresse", + "Issue Date": "Ausstellungsdatum", + "Expiry Date": "Ablaufdatum", + "License Categories": "Lizenz:", + "driver_license": "Die Fahrzeugabteilung hat es...", + "Capture an Image of Your Driver License": + "Mach ein Foto von deinem Führerschein", + "ID Documents Back": "Ausweispapieren.", + "National ID": "Nationale Identifikationsnummer:", + "Occupation": "der Beruf ", + "Gender": "Geschlecht", + "Religion": "Religion.", + "Marital Status": "Familienstand", + "Full Name (Marital)": "Vollständiger Name", + "Expiration Date": "Ablaufdatum:", + "Capture an Image of Your ID Document Back": + "Mach ein Foto von der Rückseite deines Ausweisdokuments", + "ID Documents Front": "Vorderseite der Ausweisdokumente", + "First Name": "Vorname", + "CardID": "Mach ein Foto von der Rückseite deines Ausweisdokuments", + "Full Name": "Vollständiger Name", + "Vehicle Details Front": "Fahrzeugdetails vorne", + "Plate Number": "Das Kennzeichen.", + "Owner Name": "Eigentümer, der", + "Vehicle Details Back": "Fahrzeugdetails nochmal", + "Make": "Grep: %1", + "Model": "Fahrzeugmodell:", + "Year": "Studienjahr", + "Chassis": "Fahrgestell", + "Color": "In der Farbe.", + "Displacement": "Substitution", + "Fuel": "Benzin!", + "Tax Expiry Date": "Ablaufdatum", + "Inspection Date": "Testdatum, Uhrzeit: ", + "Capture an Image of Your car license back": + "Mach noch einmal ein Foto von deinem Führerschein", + "Capture an Image of Your Driver’s License": + "Mach ein Foto von deinem Führerschein", + "Sign in with Google for easier email and name entry": + "Melden Sie sich mit Google an, um die Eingabe von E-Mail-Adresse und Name zu vereinfachen", + "You will choose allow all the time to be ready receive orders": + "Sie können jederzeit Fertigbestellungen zulassen", + "Welcome to Intaleq!": "Willkommen bei Safar!", + "Get to your destination quickly and easily.": + "Schnell und einfach ans Ziel.", + "Enjoy a safe and comfortable ride.": + "Genießen Sie eine sichere und komfortable Fahrt.", + "Choose Language": "Wählen Sie die Sprache", + "Login": "Ich melde mich.", + "Pay with Wallet": "Mit Wallet bezahlen", + "Invalid MPIN": "Ungültiger MPIN-Code", + "Invalid OTP": "Ungültiger Verifizierungscode", + "Enter your email address": "Ihre E-Mail-Adresse", + "Please enter Your Email.": "Bitte gib deinen richtigen Namen ein", + "Enter your phone number": "Name? Telefonnummer?", + "Please enter your phone number.": "Please enter your mobile number", + "Please enter Your Password.": "Passworteingabefeld", + "Submit": "Abschuss.", + "if you dont have account": "Also, wenn es Ihnen nichts ausmacht.", + "Register": "Los geht's.", + "Accept Ride's Terms & Review Privacy Notice": + "Akzeptiere die Fahrtbedingungen und lies dir die Datenschutzerklärung durch", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "Indem ich unten „Ich stimme zu“ auswähle, habe ich die Nutzungsbedingungen gelesen und stimme ihnen zu und erkenne die Datenschutzerklärung an.Mindestens ein Jahr", + "I Agree": "- Ich?", + "First name": "Vorname", + "Enter your first name": "Dein Vorname.", + "Please enter your first name.": "Bitte geben Sie Ihren Namen ein.", + "Last name": "Nachname", + "Enter your last name": "Fsmitenname)", + "Please enter your last name.": "Bitte geben Sie Ihren Namen ein.", + "City": "die Stadt", + "Please enter your City.": "Bitte gib deinen richtigen Namen ein", + "Male": "männlich", + "Female": "weiblich", + "Verify Email": "E-Mail-Bestätigungscode eingeben", + "We sent 5 digit to your Email provided": + "Wir haben 5 Ziffern an Ihre angegebene E-Mail-Adresse gesendet", + "5 digit": "Pin(5-stellig)", + "Send Verification Code": "Verifizierungscode", + "Your Ride Duration is": "Deine Fahrtdauer beträgt", + "You will be thier in": "Sie werden sie in", + "You trip distance is": "Deine Fahrtdistanz beträgt", + "Fee is": "Die Gebühr beträgt", + "To :": "AN:", + "Add Promo": "Aktion hinzufügen", + "Confirm Selection": "Auswahl bestätigen", + "distance is": "Die Entfernung beträgt", + "duration is": "Dauer ist", + "I don't need a ride anymore": "Ich brauche ihn nicht mehr.", + "I was just trying the application": + "Ich habe gerade die App ausprobiert", + "No driver accepted my request": + "Kein Fahrer hat meine Bestellung angenommen", + "I added the wrong pick-up/drop-off location": + "Du hast den falschen Abhol-/Ankunftsort hinzugefügt", + "I don't have a reason": "Ich habe einen Grund.", + "Other": "Verschiedenes ", + "Can we know why you want to cancel Ride ?": + "Können wir wissen, warum du die Reise stornieren möchtest?", + "Cancel Ride": "Abbruch!", + "Add Payment Method": "Ein Zahlungsmittel?", + "Your Wallet balance is": "Ihr Wallet-Guthaben beträgt", + "Ride Wallet": "Reise-Geldbörse", + "Payment Method": "Zur Zahlungsweise:", + "Type here Place": "Hier ist es toll. He, Chris!", + "Are You sure to ride to": + "Bist du sicher, dass du nach fahren möchtest?", + "Confirm": "bestätigen", + "Back": "- Rückfahrt.", + "You are Delete": "Sie löschen", + "Deleted": "Entfernt", + "You Dont Have Any places yet !": "Du hast noch keine Plätze!", + "Favorite Places": "Deine Art von Lokal?", + "From : Current Location": "AKTUELLER STANDORT ", + "Where to": "- Halt still.", + "Notifications": "MITTEILUNGEN", + "Profile": "& Profil-ACLs", + "Home": "Internetseite", + "My Cared": "MyCurt", + "Add Card": "Karte hinzufügen", + "Add Credit Card": "Kreditkarte... N .", + "Please enter the cardholder name": + "Bitte geben Sie den Namen des Karteninhabers ein", + "Please enter the expiry date": "Mindesthaltbarkeitsdatum", + "Please enter the CVV code": "Bitte geben Sie den Kartenprüfcode ein", + "Go To Favorite Places": "Zu den Lieblingsorten", + "Go to this Target": "Zu diesem Ziel gehen", + "My Profile": "Profil-Details", + "Sign Out": "Logge mich aus.", + "Home Page": "Internetseite", + "Are you want to go to this site": "Möchten Sie zu diesem Ort gehen?", + "MyLocation": "Mein Standort", + "my location": "Mein Standort", + "Target": "- E... Ziel!", + "Update": "Aktualisieren.", + "You Should choose rate figure": + "Sie müssen die richtige Nummer auswählen", + "Login Captin": "Ich melde mich.", + "Register Captin": "Registrierung des Kapitäns", + "Send Verfication Code": "Bestätigungscode senden", + "End Ride": "reitend", + "Minute": "die Minute", + "Go to passenger Location now": "Gehe jetzt zum Fahrgaststandort", + "Duration of the Ride is": "Die Reisedauer beträgt", + "Distance of the Ride is": "Die Fahrtdistanz beträgt", + "Name of the Passenger is": "Der Name des Fahrgasts ist", + "Hello this is Captain": "Hallo, ich bin der Kapitän", + "Start the Ride": "Fahrt starten", + "Please Wait If passenger want To Cancel!": + "Bitte warte, wenn der Fahrgast stornieren möchte!", + "Total Duration:": "Dauer insgesamt: 8 Monate", + "Active Duration:": "Aktive Schrittdauer", + "Waiting for Captin ...": "Warten auf den Kapitän ...", + "Age is": "- Das Alter ist 'ne Zahl, nichts weiter.", + "Rating is": "Ziel der Evaluierung ist es,", + "to arrive you.": "um Sie zu erreichen.", + "Order History": "Bestellhistorie erfassen", + "My Wallet": "Meine Brieftasche ...", + "Tariff": "Tarif, der", + "Settings": "& Einstellungen", + "Feed Back": "Reflexe sind normal.", + "Promos": "Aktionen", + "Please enter a valid 16-digit card number": + "Bitte geben Sie eine gültige Bestellnummer ein.", + "Add Phone": "Tel.", + "Please enter a phone number": + "Bitte geben Sie die Telefonnummer ein", + "You dont Add Emergency Phone Yet!": + "Sie haben noch kein Notfalltelefon hinzugefügt!", + "You will arrive to your destination after": + "Du kommst an deinem Ziel an, nachdem", + "You can cancel Ride now": "Du kannst die Fahrt jetzt stornieren", + "You Can cancel Ride After Captain did not come in the time": + "Du kannst die Fahrt stornieren, nachdem der Kapitän nicht rechtzeitig eingetroffen ist", + "If you in Car Now. Press Start The Ride": + "Wenn du gerade im Auto sitzt. Tippe auf Fahrt starten.", + "You Dont Have Any amount in": "Sie haben keinen Betrag in", + "Wallet!": "Brieftasche!", + "You Have": "DU hattest es.", + "Save Credit Card": "- Karte.", + "Show Promos": "Angebote", + "10 and get 4% discount": "10 und erhalten Sie 4% Rabatt", + "20 and get 6% discount": "20 und erhalten 6% Rabatt", + "40 and get 8% discount": "40 und erhalte 8 % Rabatt", + "100 and get 11% discount": "100 % und 11% Rabatt", + "Pay with Your PayPal": "Mit PayPal bezahlen", + "You will choose one of above !": + "Sie wählen eine der oben genannten Optionen!", + "Cancel": "Abbruch...", + "Delete My Account": "Mein Konto löschen", + "Edit Profile": "Modifier le profil", + "Name": "Nom", + "Update Gender": "Mettre à jour le sexe", + "Education": "Les études", + "Update Education": ":: Moderniser l'enseignement;", + "Employment Type": "Catégorie de personnel", + "SOS Phone": "Mobile", + "High School Diploma": "BACCALAUREAT DE L'ENSEIGNEMENT", + "Associate Degree": "Diplôme conjoint", + "Bachelor's Degree": "Grade de bachelier", + "Master's Degree": "Master", + "Doctoral Degree": "Docteur en philosophie.", + "Promos For today": "Promotions", + "Copy this Promo to use it in your Ride!": + "Copiez cette promotion pour l'utiliser lors de votre voyage !", + "To change some Settings": "Pour modifier certains paramètres", + "To change Language the App": + "Pour modifier la langue de l'application", + "Order Request Page": "Page de demande de commande", + "Rouats of Trip": "Tripp.", + "Passenger Name is": "Voyageur.", + "Total From Passenger is": "Le total du passager est", + "Duration To Passenger is": "Durée jusqu'au passager", + "Distance To Passenger is": "distance par rapport au passager est", + "Total For You is": "Le total pour vous est de", + "Distance is": "Distance", + "KM": "Km", + "Duration of Trip is": "La durée de la course est de", + "Minutes": "Minutes", + "Apply Order": "Appliquer la commande", + "Refuse Order": "- Demande rejetée.", + "Rate Captain": "Cote de capitaine", + "Enter your Note": "J'ai eu votre mot.", + "Type something...": "Écrire quelque chose...", + "Submit rating": "Fournir une évaluation", + "Rate Passenger": "Note du passager", + "Ride Summary": "Résumé de la course", + "welcome_message": "Insérer « & #160; Bonjour monde & #160; »", + "app_description": "ApplicationDescription", + "get_to_destination": + "Destination atteinte. Déblocage des contrôles manuels.", + "get_a_ride": "Commandez une course", + "safe_and_comfortable": "Sûr et confortable", + "committed_to_safety": "Engagé pour la sécurité", + "Driver Applied the Ride for You": + "Un chauffeur qui a effectué la course pour vous", + "Show latest promo": "Afficher la dernière promotion", + "Cancel Trip": "Le vol est annulé.", + "Passenger Cancel Trip": "Le passager annule la course", + "Please stay on the picked point.": + "Veuillez rester au point sélectionné.", + "Trip is Begin": "Votre initiation a commencé.", + "Hi ,I will go now": "Bonjour, j'y vais maintenant", + "Passenger come to you": "Votre passager vient vous voir", + "Hi ,I Arrive your site": + "Bonjour, vous avez atteint votre position.", + "Driver Finish Trip": "Fin de la course du chauffeur", + "you will pay to Driver": "Sérieux ? Probablement avec mon argent.", + "Driver Cancel Your Trip": "Annulez votre course, chauffeur.", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Vous paierez le chauffeur Vous paierez le coût du temps du chauffeur Regardez votre portefeuille Intaleq", + "I will go now": "- J'y vais.", + "You Have Tips": "Astuces", + "tips": "Des paroles sages ?", + "Total is": "Chiffre total est de 15", + "No,I want": "- Je n'en ai pas envie.", + "Your fee is": "Vos frais sont de", + "Do you want to pay Tips for this Driver": + "Souhaitez-vous laisser un pourboire à ce chauffeur ?", + "Tip is": "Monconseil", + "Camera Access Denied.": "Accès à la caméra refusé.", + "Open Settings": + "|||UNTRANSLATED_CONTENT_START|||Ø§ÙØªØ­ الإعدادات|||UNTRANSLATED_CONTENT_END|||", + "GPS Required Allow !.": "Le GPS doit être activé !", + "Your Account is Deleted": "Votre compte a été supprimé", + "Are you sure to delete your account?": + "Voulez-vous vraiment supprimer votre compte ?", + "Your data will be erased after 2 weeks": + "Vos données seront effacées après 2 semaines", + "And you will can't return to use app after 1 month": + "Vous pourrez revenir à l'application après un mois", + "Enter Your First Name": "Saisissez votre nom", + "Are you Sure to LogOut?": "Voulez-vous vraiment vous déconnecter?", + "Email Wrong": "Email ", + "Email you inserted is Wrong.": + "L'adresse e-mail que vous avez saisie est incorrecte.", + "You have finished all times": "J'en ai assez !", + "if you want help you can email us here": + "Si vous souhaitez de l'aide, vous pouvez nous envoyer un e-mail ici", + "Thanks": "Merci.", + "Email Us": "Envoyez-nous un e-mail", + "I cant register in your app in face detection": + "Je ne peux pas m'inscrire à votre application avec la détection de visage", + "Hi": "-C'est un plaisir. -Hello.", + "No face detected": "Aucun scanner n'a été détécté", + "Image detecting result is": + "Le résultat de la détection d'image est", + "from 3 times Take Attention": "que 3 fois attirent votre attention", + "Be sure for take accurate images please": + "Assurez-vous de prendre des photos précises s'il vous plaît", + "You have": "- Euh...", + "image verified": "La photo est notariée", + "Next": "Suivant", + "There is no help Question here": "Ouais, pas d'aide ici.", + "Call End": "Terminer l'appel", + "You dont have Points": "- Vous n'avez pas...", + "You Are Stopped For this Day !": + "Vous avez été mis en pause pour la journée !", + "You must be charge your Account": + "Vous devez recharger votre compte", + "You Refused 3 Rides this Day that is the reason": + "Vous avez refusé 3 courses aujourd'hui et c'est pourquoi", + "See you Tomorrow!": "Je te verrais demain.", + "Recharge my Account": "Recharger mon compte", + "Ok , See you Tomorrow": "D'accord, on se voit demain.", + "You are Stopped": "Vous êtes arrêté", + "Connected": "Online", + "Not Connected": "Offiline", + "Your are far from passenger location": + "Vous êtes loin de l'emplacement des passagers", + "go to your passenger location before": + "Accédez à l'emplacement de votre passager avant le", + "Passenger cancel trip": "Le passager a annulé la course", + "You will get cost of your work for this trip": + "Vous obtiendrez le coût de votre entreprise pour cette course", + "in your wallet": "Elle est dans ton portefeuille.", + "you gain": "Vous gagnerez", + "Order Cancelled": "Commande annulée", + "Order Cancelled by Passenger": "Demande annulée par le passager", + "Success": "Je l'ai.", + "Feedback data saved successfully": + "Données d'évaluation enregistrées avec succès", + "No Promo for today .": "Pas de promotion pour aujourd'hui.", + "Select your destination": "Sélectionnez la destination;", + "Search for your Start point": "Trouvez votre point de départ", + "Search for waypoint": "Rechercher un point WIPOINT", + "Current Location": "Utiliser la position actuelle", + "Add Location 1": "Emplacement & #160;: %1", + "You must Verify email !.": "Relever le courriel", + "Cropper": "Récolte", + "Saved Sucssefully": "Bien reçu.", + "Select Date": "Choisir une nouvelle date", + "Birth Date": "Date de naissance", + "Ok": "D'accord.", + "the 500 points equal 30 JOD": "500 points équivaut à 30 JOD", + "the 500 points equal 30 JOD for you": + "500 points équivaut à 30 JOD pour vous", + "token updated": "Code mis à jour", + "Add Location 2": "Ajouter un emplacement 2", + "Add Location 3": "Ajouter un emplacement 3", + "Add Location 4": "Ajouter un emplacement 4", + "Waiting for your location": "En attente de votre localisation", + "Search for your destination": "Trouvez votre destination", + "Hi! This is": "Bienvenue \"moi\": c' est ça.", + "I am using": "Du matériel que j'utilisais.", + "to ride with": "pour rouler avec", + "as the driver.": "On dirait un chauffeur.", + "is driving a": "- Je vais le tenter comme ça. - Conduire.", + "with license plate": "Avec une plaque d'immatriculation", + "I am currently located at": "Je suis actuellement en", + "Please go to Car now": "S'il te plaît, va-t-en maintenant.", + "If you need to reach me, please contact the driver directly at": + "Si vous avez besoin de me joindre, veuillez contacter directement le chauffeur au", + "No Car or Driver Found in your area.": + "Aucune voiture ou chauffeur trouvé dans votre région.", + "Please Try anther time": "Réessayer", + "There no Driver Aplly your order sorry for that": + "Aucun chauffeur ne peut répondre à votre demande, nous sommes désolés.", + "Trip Cancelled": "Course annulée", + "The Driver Will be in your location soon .": + "Votre chauffeur arrivera bientôt chez vous.", + "The distance less than 500 meter.": + "La distance est inférieure à 500 mètres.", + "Promo End !": "- C'est seulement jusqu'au spectacle.", + "There is no notification yet": "Aucune notification pour le moment", + "Use Touch ID or Face ID to confirm payment": + "Utilisez Touch ID ou Face ID pour confirmer le paiement", + "Contact us for any questions on your order.": + "Contactez-nous pour toute question concernant votre commande.", + "Pyament Cancelled .": "Le paiement a été annulé.", + "type here": "Tapez ici", + "Scan Driver License": "Permis de conduire", + "Please put your licence in these border": + "Veuillez placer votre licence dans ces limites", + "Camera not initialized yet": "Caméra pas encore configurée", + "Take Image": + "Prends une photo, parce que demain matin, ces lettres partiront.", + "AI Page": "Tu dis que ton système \"IA\"", + "Take Picture Of ID Card": + "Prenez une photo de votre pièce d'identité", + "Take Picture Of Driver License Card": + "Prenez une photo de votre permis de conduire.", + "We are process picture please wait": + "Nous traitons les images, veuillez patienter.", + "There is no data yet.": "Aucune donnée trouvée", + "Name :": "Nom :", + "Drivers License Class:": "Catégorie de permis de conduire :", + "Document Number:": "Numéro du document", + "Address:": "Adresse:", + "Height:": "& Hauteur & #160;:", + "Expiry Date:": "Expiration & #160;:", + "Date of Birth:": "Anniversaire & #160;: @title: group", + "You can't continue with us .": "Ça ne peut pas durer.", + "You should renew Driver license": + "Vous devez renouveler votre permis de conduire", + "Detect Your Face": "Découvrez votre visage", + "Go to next step": "\"", + "scan Car License.": "Vérification de l'immatriculation du véhicule.", + "Name in arabic": "Full Name AR", + "Drivers License Class": "Permis de conduire", + "Date of Birth": "Date de naissance", + "Age": "l’âge", + "Lets check Car license": "Vérifions le permis de conduire", + "Car Kind": "Type de véhicule", + "Car Plate": "Le numéro d'immatriculation ?", + "Lets check License Back Face": + "Vérifions la licence de face arrière", + "Car License Card": "Carte d'immatriculation du véhicule", + "No image selected yet": "Aucune photo sélectionnée pour le moment", + "Made :": "Make", + "model :": "Mod.", + "VIN :": "Structure :", + "year :": "Année", + "ÙExpire Date": "Date d'expiration", + "Login Driver": "Se connecter", + "Password must br at least 6 character.": + "Le mot de passe doit comporter au moins 6 caractères.", + "if you don't have account": "Que voulez-vous dire ?", + "Here recorded trips audio": + "Voici les enregistrements audio du voyage", + "Register as Driver": "Inscrivez-vous en tant que chauffeur", + "Privacy Notice": "Avis de confidentialité", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the": + "En sélectionnant « J'accepte » ci-dessous, j'ai lu, j'accepte et j'accepte les conditions générales", + ". I am at least 18 years of age.": ". J'ai au moins 18 ans.", + "Log Out Page": "Se Déconnecter", + "Log Off": "Signe.", + "Register Driver": "Le chauffeur...", + "Verify Email For Driver": "Consultez l'e-mail du chauffeur", + "Admin DashBoard": "Tableau de bord d'administration", + "Your name": "Ton... nom.", + "your ride is applied": "Votre course a été appliquée", + "Your password": "Renouveler votre mot de passe", + "LE": "Livre égyptienne", + "JOD": "Monnaie: Dinar jordanien", + "m": "%1 km", + "We search nearst Driver to you": + "Nous recherchons le chauffeur le plus proche", + "please wait till driver accept your order": + "Veuillez attendre que le chauffeur accepte votre demande", + "No accepted orders? Try raising your trip fee to attract riders.": + "Aucune Essayez d'augmenter les frais de course pour attirer des passagers.", + "You should select one": "Vous devez en choisir un", + "The driver accept your order for": + "Votre chauffeur a accepté votre demande de", + "Increase Fee": "Augmenter les frais", + "No, thanks": "Non merci", + "The driver on your way": "Votre chauffeur est en route", + "Total price from": "P.T", + "Order Details Intaleq": "Détails du commande", + "Order Applied": "Commande appliquée", + "accepted your order": "- Retenue.", + "We regret to inform you that another driver has accepted this order.": + "Nous sommes désolés de vous informer qu'un autre chauffeur a accepté cette demande.", + "Selected file:": "Ouvre un fichier existant", + "Your trip cost is": "Les frais de votre course", + "this will delete all files from your device": + "Cela supprimera tous les fichiers de votre appareil", + "you have a negative balance of": "Vous avez un solde négatif de", + "in your": "En toi.", + "Exclusive offers and discounts always with the Intaleq app": + "Offres exclusives et réductions toujours avec l'application de voyage", + "Please go to Car Driver": + "Veuillez vous rendre chez le conducteur de la voiture", + "wallet due to a previous trip.": + "Portefeuille en raison d'une course précédente.", + "Submit Question": "Envoyer la question", + "Please enter your Question.": "Veuillez saisir votre question.", + "Help Details": "Détails de l'aide", + "No trip yet found": "Aucune campagne trouvée", + "No Response yet.": "Il n'y a pas de réponses.", + "You Earn today is": "- On est euh...", + "You Have in": "Vous avez à", + "Total points is": "Le score total est de", + "Total Connection Duration:": "Durée totale de connexion :", + "H and": "H et", + "Passenger name :": "Le voyageur.", + "Cost Of Trip IS": "Coûts des vols par avion spécial", + "Arrival time": "On arrive dans 7 minutes.", + "arrival time to reach your point": + "Heure d'arrivée pour atteindre votre destination", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Pour les courses et livraisons rapides, le prix est calculé de manière dynamique. Pour des courses confortables, le prix est basé sur la durée et la distance.", + "Hello this is Driver": "Bonjour, je suis le chauffeur", + "Is the Passenger in your Car ?": + "Le passager est-il dans votre véhicule ?", + "Please wait for the passenger to enter the car before starting the trip.": + "Veuillez attendre que le passager entre dans le véhicule avant de commencer la course.", + "No ,still Waiting.": "Non , je t'attends toujours.", + "I arrive you": "Elle t'a eue.", + "I Arrive your site": "Elle t'a eue.", + "You are not in near to passenger location": + "Vous n'êtes pas près de l'emplacement du passager", + "please go to picker location exactly": + "Veuillez vous rendre à l'emplacement exact de la sélection", + "You Can Cancel Trip And get Cost of Trip From": + "Vous pouvez annuler la course et obtenir le coût de la course auprès de", + "Are you sure to cancel?": "Voulez-vous vraiment annuler ?", + "Yes": "Oui", + "Insert Emergincy Number": "Saisir le numéro d'urgence", + "Best choice for comfort car and flexible route and stops point": + "Le meilleur choix pour une voiture confortable, un itinéraire flexible et un point d'arrêt", + "Insert": "En cours d' utilisation", + "This is for delivery or a motorcycle.": + "C'est pour la livraison ou une moto.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "Cette course va directement de votre point de départ à votre destination pour un tarif forfaitaire. Le chauffeur doit suivre l'itinéraire prévu", + "You can decline a request without any cost": + "Vous pouvez refuser la demande sans frais", + "Perfect for adventure seekers who want to experience something new and exciting": + "Idéal pour les chercheurs d'aventure qui veulent essayer quelque chose de nouveau et d'excitant", + "My current location is:": "Mon emplacement actuel est :", + "and I have a trip on": "et j'ai un voyage à", + "App with Passenger": "Postuler avec le passager", + "You will be pay the cost to driver or we will get it from you on next trip": + "Le coût sera payé au chauffeur ou nous l'obtiendrons de votre part lors de la prochaine course", + "Trip has Steps": "La course comporte des étapes", + "Distance from Passenger to destination is": + "La distance entre le passager et la destination est", + "price is": "C'est cent dollars.", + "This ride type does not allow changes to the destination or additional stops": + "Ce type de course ne permet pas de modifier la destination ou d'effectuer des arrêts supplémentaires", + "This price may be changed": "Ce prix peut changer", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "Pas de carte SIM, pas de problème ! Contactez directement votre chauffeur via notre application. Nous utilisons une technologie de pointe pour garantir votre confidentialité.", + "This ride type allows changes, but the price may increase": + "Ce type de course peut être modifié, mais le prix peut augmenter", + "message From passenger": "Estafette.", + "Select one message": "Message un.", + "My location is correct. You can search for me using the navigation app": + "Ma position est correcte. Vous pouvez me rechercher à l'aide de l'application de navigation", + "I'm waiting for you": "- Quand vous voulez.", + "Hello, I'm at the agreed-upon location": + "Bonjour, je suis à l'endroit convenu", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "Nous avons remarqué que la vitesse dépasse 100 km/h. Veuillez ralentir pour votre propre sécurité. Si vous ne vous sentez pas en sécurité, vous pouvez communiquer les détails de votre course à un contact ou appeler la police à l'aide du bouton de détresse rouge.", + "Warning: Intaleqing detected!": + "Avertissement : survitesse détectée !", + "Please help! Contact me as soon as possible.": + "Aide-moi s'il te plaît. Contactez-moi dès que possible.", + "Share Trip Details": "Partagez les détails de la", + "Car Plate is": "Le numéro d'immatriculation ?", + "the 3000 points equal 3000 L.E for you": + "3000 points équivaut à 3000 EGP pour vous", + "So go and gain your money": "Gagnez de l'argent", + "the 3000 points equal 3000 L.E": "3000 points équivaut à 3000 EGP", + "The payment was not approved. Please try again.": + "Paiement non approuvé. Réessayer", + "Payment Failed": "Échec du paiement", + "Error": "ⵜⴰⵣⴳâµâµœ", + "An error occurred during the payment process.": + "Une erreur s'est produite lors de votre paiement.", + "The payment was approved.": "Paiement approuvé.", + "Payment Successful": "Paiement réussi", + "No ride found yet": "Aucune campagne trouvée", + "Accept Order": "Commande acceptée", + "reject your order.": "Votre Ordre.", + "Bottom Bar Example": "Exemple de barre inférieure", + "Driver phone": "Téléphone du chauffeur", + "Statistics": "& Statistiques", + "Origin": "ORIGINE", + "Destination": "- Destination ?", + "Driver Name": "Nom de pilote & #160;:", + "Driver Car Plate": "Plaque d'immatriculation du conducteur", + "Available for rides": "Disponible pour les courses", + "Scan Id": "Contrôle d'identité", + "Camera not initilaized yet": "Caméra pas encore configurée", + "Scan ID MklGoogle": "Vérification d'identité MklGoogle", + "Language": "Langue ", + "Jordan": "Jordanie", + "USA": "Etats Unis d'Amérique", + "Egypt": "Egypte", + "Turkey": "Turquie", + "Saudi Arabia": "Arabie Saoudite", + "Qatar": "Qatar", + "Bahrain": "Bahreïn", + "Kuwait": "Koweït", + "But you have a negative salary of": + "Mais vous avez un salaire négatif de", + "Promo Code": "Code promo", + "Your trip distance is": "La distance de votre course est de", + "Enter promo code": "Code promo", + "You have promo!": "Vous avez une promotion !", + "Cost Duration": "Durée du coût", + "Duration is": "La durée est", + "Leave": "Quitter", + "Join": "Joindre", + "You Should be select reason.": "Vous devez choisir une raison.", + "\$": "\$", + "Waiting for Driver ...": "En attente du chauffeur ...", + "Latest Recent Trip": "J'ai des choses à faire!", + "from your list": "À partir de votre liste", + "Do you want to change Work location": + "Souhaitez-vous changer de lieu de travail ?", + "Do you want to change Home location": + "Souhaitez-vous changer l'emplacement de la maison", + "We Are Sorry That we dont have cars in your Location!": + "Nous sommes désolés que les voitures ne soient pas disponibles chez vous !", + "Choose from Map": "Sélectionner sur la carte", + "Pick your ride location on the map - Tap to confirm": + "Sélectionnez votre lieu de prise en charge sur la carte - appuyez pour confirmer", + "To Work": "Pour le boulot", + "Are you want to go this site": "Voulez-vous aller à cet endroit", + "Closest & Cheapest": "Le plus proche et le moins cher", + "Work Saved": "Enregistré :", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq est une application de covoiturage sûre, fiable et accessible.", + "With Intaleq, you can get a ride to your destination in minutes.": + "En voyageant, vous pouvez vous rendre à destination en quelques minutes.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Safar s'engage pour la sécurité, et tous nos commandants sont soigneusement contrôlés et leurs antécédents vérifiés.", + "To Home": "RETOUR À LA PAGE D'ACCUEIL", + "Home Saved": "Enregistré :", + "Destination selected": "Destination sélectionnée", + "Now select start pick": + "Maintenant, choisissez Démarrer la sélection", + "Pick from map": "Sélectionner sur la carte", + "Click here point": "Cliquez ici", + "No Car in your site. Sorry!": + "Il n'y a pas de voiture dans votre région. Ex... Excusez moi.", + "Nearest Car for you about": + "La voiture la plus proche de chez vous est d'environ", + "N/A": "Aucune information", + "From :": "Du :", + "Get Details of Trip": "Obtenir les détails de la course", + "If you want add stop click here": + "Si vous souhaitez ajouter un arrêt, cliquez ici", + "Driver": "ⴰⵎâµâ´·â´°âµ€", + "Where you want go": "D'où viens-tu ?", + "My Card": "Ma carte.", + "Start Record": "Début de la campagne d'enregistrement", + "Wallet": "Un portefeuille.", + "History of Trip": "2.1 Histoire du vol", + "Helping Center": "Centre d'aide", + "Record saved": "Sauvegarde de l'historique effectuée !", + "Trips recorded": "Voyages enregistrés", + "Select Your Country": "Selectionnez votre pays", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "Pour vous assurer d'avoir les informations les plus précises pour votre emplacement, veuillez sélectionner votre pays ci-dessous. Cela vous aidera à personnaliser l'expérience et le contenu de l'application pour votre pays.", + "Are you sure to delete recorded files": + "Êtes-vous sûr de vouloir supprimer les fichiers enregistrés", + "Select recorded trip": "Choisissez une course enregistrée", + "Card Number": "N  de pièce d'identité:", + "Hi, Where to": "Bonjour, oùallez-vous ?", + "Pick your destination from Map": "Sélectionner sur la carte", + "Add Stops": "Ajouter des arrêts", + "Get Direction": "Obtenir une direction", + "Add Location": "Ajouter l'emplacement correctement", + "Switch Rider": "Changer de passager", + "You will arrive to your destination after timer end.": + "Vous arriverez à destination après l'expiration de la minuterie.", + "You can cancel trip": "Vous pouvez annuler la course", + "The driver waitting you in picked location .": + "Votre chauffeur vous attend à l'endroit désigné .", + "Pay with Your": "Payer avec", + "Pay with Credit Card": "- La carte.", + "Payment History": "Historique des paiements", + "Show Promos to Charge": "Afficher les promotions d'expédition", + "Point": "Points", + "Driver Wallet": "Portefeuille chauffeur", + "Total Points is": "Le score total est de", + "Total Budget from trips is": "Le budget total des voyages est de", + "Total Amount:": "Montant total", + "Total Budget from trips by": "Budget total des voyages par", + "Credit card is": "Votre carte de crédit.", + "This amount for all trip I get from Passengers": + "Ce montant s'applique à toutes les courses que je reçois de la part de passagers.", + "Pay from my budget": "Payer sur mon budget", + "This amount for all trip I get from Passengers and Collected For me in": + "Ce montant s'applique à toutes les courses que je reçois de la part de passagers collectés pour moi à", + "You can buy points from your budget": + "Vous pouvez acheter des points à partir de votre budget", + "insert amount": "Entrez le montant", + "You can buy Points to let you online": + "Vous pouvez acheter des points pour vous permettre d'accéder en ligne", + "by this list below": "Grâce à cette liste ci-dessous", + "Create Wallet to receive your money": + "Créez un portefeuille pour recevoir votre argent", + "Enter your feedback here": "Saisissez vos commentaires ici", + "Please enter your feedback.": + "Veuillez saisir le texte de vos notes", + "Feedback": "Feedback:", + "Click here to Show it in Map": + "Cliquez ici pour le voir sur la carte", + "Canceled": "Annulé", + "Type your Email": "Votre e-mail", + "No I want": "- Je n'en ai pas envie.", + "Email is": "Email ", + "Phone Number is": "C'est le 92.38.09.06.", + "Date of Birth is": "Année de naissance", + "Sex is": "Le sexe est cardio.", + "Car Details": "Détails du véhicule", + "VIN is": "Structure", + "Color is": "- Sa couleur?", + "Make is": "Make is", + "Model is": "Formulaire de :", + "Year is": "Année", + "Edit Your data": "Modifiez vos informations", + "write vin for your car": + "Notez le numéro de châssis de votre véhicule", + "VIN": + "|||UNTRANSLATED_CONTENT_START|||رقم هيكل السيارة|||UNTRANSLATED_CONTENT_END|||", + "write Color for your car": "Tapez la couleur de votre voiture", + "write Make for your car": "Écrivez une marque pour votre voiture", + "write Model for your car": "Tapez votre modèle de voiture", + "write Year for your car": "Saisissez une année pour votre voiture", + "write Expiration Date for your car": "la date de péremption", + "Tariffs": "Définitions ", + "Minimum fare": "Prix minimum", + "Maximum fare": "Prix maximum", + "Flag-down fee": "Frais d'escale", + "Including Tax": "Incluant...", + "BookingFee": "Frais de réservation", + "Morning": "- Bonjour.", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "07h30 - 10h30 (jeudi, vendredi, samedi, lundi)", + "Evening": "- Bonsoir.", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "12h00 - 15h00 (jeudi, vendredi, samedi, lundi)", + "Night": "la nuit", + "You have in account": "Vous avez dans le compte", + "Select Country": "Sélectionner un pays.", + "Ride Today :": "Commandez une course aujourd'hui :", + "After this period": "Après cette période", + "You can't cancel!": "- Vous pouvez plus...", + "from 23:59 till 05:30": "23:59 - 05:30", + "Rate Driver": "Le chauffeur...", + "Total Cost is": "Coût total", + "Write note": "J'écris une lettre de menace.", + "Time to arrive": "Bobby, Qu'elle est notre e. t. a.?", + "Ride Summaries": "Résumés des courses", + "Total Cost": "Coût total", + "Average of Hours of": "Nombre moyen d'heures de travail", + "is ON for this month": "En cours ce mois-ci", + "Days": "Quelques mois, semaines... quelques jours.", + "Total Hours on month": "Nombre total d'heures", + "Counts of Hours on days": "Heures en jours", + "OrderId": "Commande N°", + "created time": "Date de création", + "Intaleq Over": "Et c'est là qu'on l'aura.", + "I will slow down": "Je vais ralentir.", + "Map Passenger": "Carte du passager", + "Be Slowly": "Soyez lent", + "If you want to make Google Map App run directly when you apply order": + "Si vous souhaitez lancer Google Maps directement lorsque vous appliquez la commande", + "You can change the language of the app": + "Vous pouvez modifier la langue de l'application", + "Your Budget less than needed": "Votre budget est sous-estimé", + "You can change the Country to get all features": + "Vous pouvez modifier le pays pour obtenir toutes les fonctionnalités", + "Change Country": "Non-pays" + }, + "es": { + "Order": "Pedido", + "OrderVIP": "Pedido VIP", + "Cancel Trip": "Cancelar Viaje", + "Passenger Cancel Trip": "Pasajero Canceló Viaje", + "VIP Order": "Pedido VIP", + "The driver accepted your trip": "El conductor aceptó tu viaje", + "message From passenger": "Mensaje del pasajero", + "Cancel": "Cancelar", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "Viaje Cancelado. El costo del viaje se agregará a tu billetera.", + "token change": "cambio de token", + "face detect": "detección facial", + "Face Detection Result": "Resultado de Detección Facial", + "similar": "similar", + "not similar": "no similar", + "Hi ,I will go now": "Hola, me voy ahora", + "Passenger come to you": "El pasajero viene hacia ti", + "Call Income": "Llamada Entrante", + "Call Income from Passenger": "Llamada Entrante del Pasajero", + "Criminal Document Required": "Documento Criminal Requerido", + "You should have upload it .": "Deberías haberlo subido.", + "Call End": "Fin de Llamada", + "The order has been accepted by another driver.": + "El pedido ha sido aceptado por otro conductor.", + "The order Accepted by another Driver": + "El pedido Aceptado por otro Conductor", + "We regret to inform you that another driver has accepted this order.": + "Lamentamos informarte que otro conductor ha aceptado este pedido.", + "Driver Applied the Ride for You": + "El Conductor Aplicó el Viaje para Ti", + "Applied": "Aplicado", + "Hi ,I Arrive your site": "Hola, llegué a tu ubicación", + "Please go to Car Driver": "Por favor, ve con el Conductor del Coche", + "Ok I will go now.": "Ok, me voy ahora.", + "Accepted Ride": "Viaje Aceptado", + "Driver Accepted the Ride for You": + "El Conductor Aceptó el Viaje para Ti", + "Promo": "Promo", + "Show latest promo": "Mostrar la última promo", + "Trip Monitoring": "Monitoreo de Viaje", + "Driver Is Going To Passenger": "El Conductor Va Hacia el Pasajero", + "Please stay on the picked point.": + "Por favor, permanece en el punto de recogida seleccionado.", + "message From Driver": "Mensaje del Conductor", + "Trip is Begin": "El Viaje Comienza", + "Cancel Trip from driver": "Cancelar Viaje desde el conductor", + "We will look for a new driver.\nPlease wait.": + "Buscaremos un nuevo conductor.\nPor favor, espera.", + "The driver canceled your ride.": "El conductor canceló tu viaje.", + "Driver Finish Trip": "El Conductor Finalizó el Viaje", + "you will pay to Driver": "le pagarás al Conductor", + "Don’t forget your personal belongings.": + "No olvides tus pertenencias personales.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Por favor, asegúrate de tener todas tus pertenencias personales y de que cualquier tarifa restante, si corresponde, se haya agregado a tu billetera antes de irte. Gracias por elegir la aplicación Intaleq", + "Finish Monitor": "Finalizar Monitoreo", + "Trip finished": "Viaje finalizado", + "Call Income from Driver": "Llamada Entrante del Conductor", + "Driver Cancelled Your Trip": "El Conductor Canceló Tu Viaje", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "le pagarás al Conductor, pagarás el costo del tiempo del conductor, mira tu Billetera Intaleq", + "Order Applied": "Pedido Aplicado", + //firebase + }, + "el": { + "Order": "ΠαÏαγγελία", + "OrderVIP": "VIP ΠαÏαγγελία", + "Cancel Trip": "ΑκÏÏωση ΔιαδÏομής", + "Passenger Cancel Trip": "Ο Επιβάτης ΑκÏÏωσε τη ΔιαδÏομή", + "VIP Order": "VIP ΠαÏαγγελία", + "The driver accepted your trip": + "Ο οδηγός αποδέχτηκε τη διαδÏομή σας", + "message From passenger": "Μήνυμα από επιβάτη", + "Cancel": "ΑκÏÏωση", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "Η διαδÏομή ακυÏώθηκε. Το κόστος της διαδÏομής θα Ï€Ïοστεθεί στο ποÏτοφόλι σας.", + "token change": "αλλαγή κωδικοÏ", + "face detect": "ανίχνευση Ï€Ïοσώπου", + "Face Detection Result": "Αποτέλεσμα Ανίχνευσης ΠÏοσώπου", + "similar": "παÏόμοιος", + "not similar": "μη παÏόμοιος", + "Hi ,I will go now": "Γεια, θα πάω τώÏα", + "Passenger come to you": "Ο επιβάτης έÏχεται Ï€Ïος το μέÏος σας", + "Call Income": "ΕισεÏχόμενη Κλήση", + "Call Income from Passenger": "ΕισεÏχόμενη Κλήση από Επιβάτη", + "Criminal Document Required": "Απαιτείται Ποινικό ΜητÏώο", + "You should have upload it .": "ΈπÏεπε να το ανεβάσετε.", + "Call End": "Τέλος Κλήσης", + "The order has been accepted by another driver.": + "Η παÏαγγελία έχει γίνει αποδεκτή από άλλον οδηγό.", + "The order Accepted by another Driver": + "Η παÏαγγελία έγινε αποδεκτή από άλλον οδηγό", + "We regret to inform you that another driver has accepted this order.": + "ΛυποÏμαστε που σας ενημεÏώνουμε ότι άλλος οδηγός έχει αποδεχτεί αυτήν την παÏαγγελία.", + "Driver Applied the Ride for You": + "Ο Οδηγός Υπέβαλε Αίτηση για τη ΔιαδÏομή για Εσάς", + "Applied": "ΕφαÏμόστηκε", + "Hi ,I Arrive your site": "Γεια, έφτασα στην τοποθεσία σας", + "Please go to Car Driver": + "ΠαÏακαλώ πηγαίνετε στον Οδηγό Αυτοκινήτου", + "Ok I will go now.": "Εντάξει, θα πάω τώÏα.", + "Accepted Ride": "Αποδεκτή ΔιαδÏομή", + "Driver Accepted the Ride for You": + "Ο Οδηγός Αποδέχτηκε τη ΔιαδÏομή για Εσάς", + "Promo": "ΠÏοσφοÏά", + "Show latest promo": "Εμφάνιση τελευταίας Ï€ÏοσφοÏάς", + "Trip Monitoring": "ΠαÏακολοÏθηση ΔιαδÏομής", + "Driver Is Going To Passenger": "Ο Οδηγός Πηγαίνει Ï€Ïος τον Επιβάτη", + "Please stay on the picked point.": + "ΠαÏακαλώ μείνετε στο σημείο παÏαλαβής που επιλέξατε.", + "message From Driver": "Μήνυμα από τον Οδηγό", + "Trip is Begin": "Η ΔιαδÏομή Ξεκινά", + "Cancel Trip from driver": "ΑκÏÏωση ΔιαδÏομής από τον οδηγό", + "We will look for a new driver.\nPlease wait.": + "Θα αναζητήσουμε νέο οδηγό.\nΠαÏακαλώ πεÏιμένετε.", + "The driver canceled your ride.": "Ο οδηγός ακÏÏωσε τη διαδÏομή σας.", + "Driver Finish Trip": "Ο Οδηγός ΤεÏμάτισε τη ΔιαδÏομή", + "you will pay to Driver": "θα πληÏώσετε στον Οδηγό", + "Don’t forget your personal belongings.": + "Μην ξεχάσετε τα Ï€Ïοσωπικά σας αντικείμενα.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Βεβαιωθείτε ότι έχετε όλα τα Ï€Ïοσωπικά σας αντικείμενα και ότι τυχόν υπόλοιπο ναÏλο, εάν υπάÏχει, έχει Ï€Ïοστεθεί στο ποÏτοφόλι σας Ï€Ïιν φÏγετε. ΕυχαÏιστοÏμε που επιλέξατε την εφαÏμογή Intaleq", + "Finish Monitor": "ΤεÏματισμός ΠαÏακολοÏθησης", + "Trip finished": "Η διαδÏομή τελείωσε", + "Call Income from Driver": "ΕισεÏχόμενη Κλήση από τον Οδηγό", + "Driver Cancelled Your Trip": "Ο Οδηγός ΑκÏÏωσε τη ΔιαδÏομή Σας", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "θα πληÏώσετε στον Οδηγό, θα πληÏώσετε το κόστος του χÏόνου του οδηγοÏ, κοιτάξτε το ΠοÏτοφόλι Intaleq σας", + "Order Applied": "Η ΠαÏαγγελία ΕφαÏμόστηκε", +//firebase + + "registration_date": "ΗμεÏομηνία εγγÏαφής", + "expiration_date": "ΗμεÏ. λήξης", + "rating_count": "Για την ακÏοαματικότητα;", + "rating_driver": "Βαθμολογία οδηγοÏ", + "age": "Ηλικία", + "vin": + "Γιατί εγώ είμαι στα λειτουÏγικά. Έχω απομνημονεÏσει τον ΑÏιθμό ΑναγνώÏισης Οχήματος.", + "car_color": "Στο χÏώμα.", + "car_plate": "C-R-M-S-Κ ...", + "car_model": "Μοντέλο Αυτοκινήτου:", + "education": "Η Εκπαίδευση", + "gender": "ΦÏλο:", + "birthdate": "Γενέθλια", + "Approve Driver Documents": "ΈγκÏιση ΕγγÏάφων ΟδηγοÏ", + "Total Budget is": "Συνολικός Ï€Ïοϋπολογισμός", + "You will recieve code in sms message": + "Θα λάβετε τον κωδικό σε ένα SMS", + "Please enter": + "ΠαÏακαλώ εισάγετε ένα όνομα πόÏου. @ info: whatsthis", + "We need your phone number to contact you and to help you receive orders.": + "ΧÏειαζόμαστε τον αÏιθμό τηλεφώνου σας για να επικοινωνήσουμε μαζί σας και να σας βοηθήσουμε να λαμβάνετε παÏαγγελίες.", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "Το πλήÏες ονοματεπώνυμο στο ποινικό μητÏώο σας δεν αντιστοιχεί στο ονοματεπώνυμο στο δίπλωμα οδήγησής σας. Ελέγξτε και Ï€Ïοσκομίστε τα σωστά έγγÏαφα.", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "Ο εθνικός αÏιθμός στην άδεια οδήγησής σας δεν αντιστοιχεί στον αÏιθμό που αναγÏάφεται στο έγγÏαφο ταυτότητάς σας. Ελέγξτε και Ï€Ïοσκομίστε τα σωστά έγγÏαφα.", + "Capture an Image of Your Criminal Record": + "ΤÏαβήξτε μια φωτογÏαφία του Ï€Î¿Î¹Î½Î¹ÎºÎ¿Ï ÏƒÎ±Ï‚ μητÏώου", + "IssueDate": "ΗμεÏομηνία έκδοσης", + "Capture an Image of Your car license front": + "ΤÏαβήξτε μια φωτογÏαφία του διπλώματος οδήγησής σας από μπÏοστά", + "Capture an Image of Your ID Document front": + "ΤÏαβήξτε μια φωτογÏαφία της ταυτότητάς σας από μπÏοστά", + "NationalID": "Εθνικός αÏιθμός:", + "FullName": "ΠλήÏες όνομα", + "InspectionResult": "ΈφεÏα τις εξετάσεις.", + "Criminal Record": "Ποινικό μητÏώο", + "The email or phone number is already registered.": + "Το email ή ο αÏιθμός τηλεφώνου είναι ήδη καταχωÏημένα.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "Για να γίνετε οδηγός επιμεÏÎ¹ÏƒÎ¼Î¿Ï Î´Î¹Î±Î´Ïομής στην εφαÏμογή Ταξίδια, Ï€Ïέπει να ανεβάσετε την άδεια οδήγησης, το έγγÏαφο ταυτοποίησης και το έγγÏαφο ταξινόμησης οχήματος. Το σÏστημα τεχνητής νοημοσÏνης μας θα ελέγξει και θα επαληθεÏσει αμέσως την αυθεντικότητά του σε μόλις 2-3 λεπτά. Εάν τα έγγÏαφά σας εγκÏιθοÏν, μποÏείτε να αÏχίσετε να εÏγάζεστε ως οδηγός στην εφαÏμογή Ταξίδια. Λάβετε υπόψη ότι η παÏοχή πλαστών εγγÏάφων αποτελεί σοβαÏÏŒ αδίκημα και μποÏεί να οδηγήσει σε άμεση καταγγελία και νομικές συνέπειες.", + "Documents check": "Επαλήθευση εγγÏάφου", + "Driver's License": "'δεια.", + "License Type": "- Πάσο.", + "National Number": "Την ταυτότητα μου, την ασφάλεια μου.", + "Name (Arabic)": "Όνομα (ΑÏαβικά)", + "Name (English)": "- ΑγγλοσÏνη.", + "Address": "ΔιεÏθυνση", + "Issue Date": "ΗμεÏομηνία έκδοσης", + "Expiry Date": "ΗμεÏομηνία λήξης", + "License Categories": "- Πάσο.", + "driver_license": "'δεια.", + "Capture an Image of Your Driver License": + "ΤÏαβήξτε μια φωτογÏαφία της άδειας οδήγησής σας", + "ID Documents Back": "- Ταυτότητα.", + "National ID": "Δελτίο Εθνικής ταυτότητας", + "Occupation": "Επάγγελμα", + "Gender": "ΦÏλο:", + "Religion": "Η θÏησκεία.", + "Marital Status": "Οικογενειακή κατάσταση...", + "Full Name (Marital)": "ΠλήÏες όνομα", + "Expiration Date": "ΗμεÏ. λήξης", + "Capture an Image of Your ID Document Back": + "ΤÏαβήξτε μια φωτογÏαφία της πίσω όψης του εγγÏάφου ταυτότητάς σας", + "ID Documents Front": "ΜπÏοστινή όψη εγγÏάφων ταυτοποίησης", + "First Name": "ΜικÏÏŒ όνομα...", + "CardID": + "ΤÏαβήξτε μια φωτογÏαφία της πίσω όψης του εγγÏάφου ταυτότητάς σας", + "Full Name": "ΠλήÏες όνομα", + "Vehicle Details Front": "Στοιχεία εμπÏόσθιου οχήματος", + "Plate Number": "ΑÏιθμός πίνακα", + "Owner Name": "Ιδιοκτήτης, μάλιστα.", + "Vehicle Details Back": "Τα στοιχεία του οχήματος ξανά", + "Make": "Grep:% 1", + "Model": "Μοντέλο Αυτοκινήτου:", + "Year": "- Είναι οι ετήσιες.", + "Chassis": "Πλαίσιο", + "Color": "Στο χÏώμα.", + "Displacement": "Υποκατάσταση", + "Fuel": "- ΑΜΟΛΥΒΔΗ ΜΟÎΟ - Βενζίνη!", + "Tax Expiry Date": "ΗμεÏομηνία λήξης", + "Inspection Date": "ΗμεÏομηνία εξέτασης", + "Capture an Image of Your car license back": + "ΤÏαβήξτε ξανά μια φωτογÏαφία της άδειας οδήγησής σας", + "Capture an Image of Your Driver’s License": + "ΤÏαβήξτε μια φωτογÏαφία της άδειας οδήγησής σας", + "Sign in with Google for easier email and name entry": + "Συνδεθείτε μέσω Google για να καταχωÏίσετε εÏκολα το email και το όνομά σας", + "You will choose allow all the time to be ready receive orders": + "Θα επιλέξετε να επιτÏέπετε τις έτοιμες παÏαγγελίες όλη την ÏŽÏα", + "Welcome to Intaleq!": "Καλώς ήÏθατε στο Safar!", + "Get to your destination quickly and easily.": + "Φτάστε στον Ï€ÏοοÏισμό σας γÏήγοÏα και εÏκολα.", + "Enjoy a safe and comfortable ride.": + "ΑπολαÏστε μια ασφαλή και άνετη διαδÏομή.", + "Choose Language": "Επιλέξτε τη γλώσσα", + "Login": "ΑναφέÏω.", + "Pay with Wallet": "ΠληÏωμή με Wallet", + "Invalid MPIN": "Μη έγκυÏος κωδικός MPIN", + "Invalid OTP": "Μη έγκυÏος κωδικός επαλήθευσης", + "Enter your email address": "Εισάγετε το email σας", + "Please enter Your Email.": "ΠαÏακαλώ εισάγετε...", + "Enter your phone number": "Τηλέφωνο;", + "Please enter your phone number.": + "Εισαγάγετε τον αÏιθμό τηλεφώνου σας.", + "Please enter Your Password.": "Εισαγωγή κωδικοÏ", + "Submit": "AÏ€oστoλή...", + "if you dont have account": "- Αν δεν σε πειÏάζει.", + "Register": "Ξεκίνα.", + "Accept Ride's Terms & Review Privacy Notice": + "Αποδεχτείτε τους ÏŒÏους της διαδÏομής και διαβάστε τη δήλωση αποÏÏήτου", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "Επιλέγοντας «Συμφωνώ» παÏακάτω, διάβασα και συμφωνώ με τους ÎŒÏους ΧÏήσης και αποδέχομαι τη Δήλωση ΑποÏÏήτου.Είμαι τουλάχιστον 18 ετών.", + "I Agree": "- Αμήν. - Αμήν. Αξιέπαινες ψήφοι!", + "First name": "ΜικÏÏŒ όνομα...", + "Enter your first name": "- Το μικÏÏŒ σας. - Τζέιμς.", + "Please enter your first name.": "Εισαγάγετε το όνομά σας.", + "Last name": "Επίθετο.", + "Enter your last name": "Επίθετο.", + "Please enter your last name.": "Εισαγάγετε το όνομά σας.", + "City": "Μεντίνα", + "Please enter your City.": "ΠαÏακαλώ εισάγετε...", + "Male": "ΆÏÏεν", + "Female": "θήλυ", + "Verify Email": "ΕπικÏÏωση email", + "We sent 5 digit to your Email provided": + "Στείλαμε 5 ψηφία στο παÏεχόμενο email σας", + "5 digit": "PIN(5 ψηφία)", + "Send Verification Code": "ΔιεÏεÏνηση...", + "Your Ride Duration is": "Η διάÏκεια της διαδÏομής σας είναι", + "You will be thier in": "Θα τα έχετε σε", + "You trip distance is": "Η απόσταση της διαδÏομής σας είναι", + "Fee is": "Η αμοιβή είναι", + "To :": "Ï€Ïος:", + "Add Promo": "ΠÏοσθήκη Ï€ÏοσφοÏάς", + "Confirm Selection": "Επιβεβαίωση επιλογής", + "distance is": "Η απόσταση είναι", + "duration is": "Η διάÏκεια είναι", + "I don't need a ride anymore": "Δεν χÏειάζομαι πλέον διαδÏομή", + "I was just trying the application": "Απλώς δοκίμαζα την εφαÏμογή", + "No driver accepted my request": + "Κανένας οδηγός δεν αποδέχτηκε την παÏαγγελία μου", + "I added the wrong pick-up/drop-off location": + "ΠÏοσθέσατε λάθος τοποθεσία παÏαλαβής/αποβίβασης", + "I don't have a reason": "- Δεν ξέÏω το γιατί.", + "Other": "Άλλα", + "Can we know why you want to cancel Ride ?": + "ΜποÏοÏμε να μάθουμε γιατί θέλετε να ακυÏώσετε τη διαδÏομή;", + "Cancel Ride": "Ματαίωση!", + "Add Payment Method": "Έναν Ï„Ïόπο πληÏωμής;", + "Your Wallet balance is": "Το υπόλοιπο του ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï ÏƒÎ±Ï‚ είναι", + "Ride Wallet": "Wallet διαδÏομής", + "Payment Method": "ΤÏόπος πληÏωμής;", + "Type here Place": "Ασε με εδώ.", + "Are You sure to ride to": + "Είστε βέβαιοι ότι θέλετε να μετακινηθείτε Ï€Ïος", + "Confirm": "Έγινε.", + "Back": "Μάζεμα! Επάνω!", + "You are Delete": "ΔιαγÏάφετε", + "Deleted": "ΔιαγÃÂαμμένοmessage status", + "You Dont Have Any places yet !": "Δεν έχετε ακόμα κηλίδες!", + "Favorite Places": "Το αγαπημένο σου στέκι;", + "From : Current Location": "ΤÏέχουσα τοποθεσία:", + "Where to": "- Ίσως μέσα στην επόμενη ÏŽÏα.", + "Notifications": "ΡÏθμιση ειδοποιήσεων...", + "Profile": "& ΠÏοφίλ acls", + "Home": "ΑÏχική σελίδα", + "My Cared": "MyCurt", + "Add Card": "ΠÏοσθήκη κάÏτας", + "Add Credit Card": "Πιστωτική.", + "Please enter the cardholder name": + "Εισαγάγετε το όνομα του κατόχου της κάÏτας", + "Please enter the expiry date": "Ανάλωση έως", + "Please enter the CVV code": + "Εισαγάγετε τον κωδικό επαλήθευσης κάÏτας", + "Go To Favorite Places": "Μετάβαση στα Αγαπημένα ΜέÏη", + "Go to this Target": "Μετάβαση σε αυτόν τον στόχο", + "My Profile": "ΠÏοφίλ", + "Sign Out": "Αποσυνδέομαι.", + "Home Page": "ΑÏχική σελίδα", + "Are you want to go to this site": + "Θέλετε να μεταβείτε σε αυτήν την τοποθεσία", + "MyLocation": "Στην ιστοσελίδα μου;", + "my location": "Στην ιστοσελίδα μου;", + "Target": "Ένας στόχος.", + "Update": "Ανανέωση!", + "You Should choose rate figure": + "ΠÏέπει να επιλέξετε τον σωστό αÏιθμό", + "Login Captin": "ΑναφέÏω.", + "Register Captin": "ΕγγÏαφή καπετάνι", + "Send Verfication Code": "Αποστολή ÎºÏ‰Î´Î¹ÎºÎ¿Ï ÎµÏ€Î±Î»Î®Î¸ÎµÏ…ÏƒÎ·Ï‚", + "End Ride": "Επιβιβαστείτε!", + "Minute": "Σχολαστικές;", + "Go to passenger Location now": + "Μεταβείτε στην τοποθεσία επιβάτη τώÏα", + "Duration of the Ride is": "Η διάÏκεια της διαδÏομής είναι", + "Distance of the Ride is": "Η απόσταση διαδÏομής είναι", + "Name of the Passenger is": "Το όνομα του επιβάτη είναι", + "Hello this is Captain": "Γεια σας, είμαι ο καπετάνιος", + "Start the Ride": "ΈναÏξη διαδÏομής", + "Please Wait If passenger want To Cancel!": + "ΠεÏιμένετε εάν ο επιβάτης θέλει να ακυÏώσει!", + "Total Duration:": "Συνολική ΔιάÏκεια:", + "Active Duration:": "ΕνεÏγή διάÏκεια βήματος", + "Waiting for Captin ...": "Αναμένω τον καπετάνιο.", + "Age is": "Η ηλικία είναι απλά ένας αÏιθμός.", + "Rating is": "- Η αξιολόγηση είναι...", + "to arrive you.": "Είναι Ï€Î¿Î»Ï ÎµÏκολο να σε βÏουν.", + "Order History": "ΚαταγÏαφή ιστοÏÎ¹ÎºÎ¿Ï Ï€Î±Ïαγγελιών", + "My Wallet": "Αχ, η τσάντα μου.", + "Tariff": "Τιμολόγιο", + "Settings": "Ρυθμίσεις.", + "Feed Back": "Aντανακλαστικά;", + "Promos": "ΠÏοσφοÏές", + "Please enter a valid 16-digit card number": + "Εισαγάγετε έναν έγκυÏο αÏιθμό εντολής αγοÏάς.", + "Add Phone": "ΣυγχωÏήστε με, κÏÏιοι.", + "Please enter a phone number": "Εισαγάγετε τον αÏιθμό τηλεφώνου", + "You dont Add Emergency Phone Yet!": + "Δεν έχετε Ï€Ïοσθέσει ακόμα τηλέφωνο έκτακτης ανάγκης!", + "You will arrive to your destination after": + "Θα φτάσετε στον Ï€ÏοοÏισμό σας μετά από", + "You can cancel Ride now": "ΜποÏείτε να ακυÏώσετε τη διαδÏομή τώÏα", + "You Can cancel Ride After Captain did not come in the time": + "ΜποÏείτε να ακυÏώσετε τη διαδÏομή Î±Ï†Î¿Ï Î¿ καπετάνιος δεν έφτασε εγκαίÏως", + "If you in Car Now. Press Start The Ride": + "Αν είστε στο αυτοκίνητο αυτή τη στιγμή. Πατήστε ΈναÏξη διαδÏομής", + "You Dont Have Any amount in": "Δεν έχετε κανένα ποσό σε", + "Wallet!": "- Τίποτα. ΠοÏτοφόλι.", + "You Have": "- Έχεις λίγη...", + "Save Credit Card": "ΔιατήÏηση πιστωτικής κάÏτας", + "Show Promos": "ΑναπαÏαστάσεις;", + "10 and get 4% discount": "10 και κεÏδίστε έκπτωση 4%", + "20 and get 6% discount": "20 και κεÏδίστε έκπτωση 6%", + "40 and get 8% discount": "40 και κεÏδίστε έκπτωση 8%", + "100 and get 11% discount": "100% και έκπτωση 11%", + "Pay with Your PayPal": "ΠληÏωμή με PayPal", + "You will choose one of above !": + "Θα επιλέξετε μία από τις παÏαπάνω επιλογές!", + "Cancel": "ΑκÏÏωση.", + "Delete My Account": "ΔιαγÏαφή του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Î¼Î¿Ï…", + "Edit Profile": "Modifier le profil", + "Name": "Nom", + "Update Gender": "Mettre à jour le sexe", + "Education": "Les études", + "Update Education": ":: Moderniser l'enseignement;", + "Employment Type": "Catégorie de personnel", + "SOS Phone": "Mobile", + "High School Diploma": "BACCALAUREAT DE L'ENSEIGNEMENT", + "Associate Degree": "Diplôme conjoint", + "Bachelor's Degree": "Grade de bachelier", + "Master's Degree": "Master", + "Doctoral Degree": "Docteur en philosophie.", + "Promos For today": "Promotions", + "Copy this Promo to use it in your Ride!": + "Copiez cette promotion pour l'utiliser lors de votre voyage !", + "To change some Settings": "Pour modifier certains paramètres", + "To change Language the App": + "Pour modifier la langue de l'application", + "Order Request Page": "Page de demande de commande", + "Rouats of Trip": "Tripp.", + "Passenger Name is": "Voyageur.", + "Total From Passenger is": "Le total du passager est", + "Duration To Passenger is": "Durée jusqu'au passager", + "Distance To Passenger is": "distance par rapport au passager est", + "Total For You is": "Le total pour vous est de", + "Distance is": "Distance", + "KM": "Km", + "Duration of Trip is": "La durée de la course est de", + "Minutes": "Minutes", + "Apply Order": "Appliquer la commande", + "Refuse Order": "- Demande rejetée.", + "Rate Captain": "Cote de capitaine", + "Enter your Note": "J'ai eu votre mot.", + "Type something...": "Écrire quelque chose...", + "Submit rating": "Fournir une évaluation", + "Rate Passenger": "Note du passager", + "Ride Summary": "Résumé de la course", + "welcome_message": "Insérer « & #160; Bonjour monde & #160; »", + "app_description": "ApplicationDescription", + "get_to_destination": + "Destination atteinte. Déblocage des contrôles manuels.", + "get_a_ride": "Commandez une course", + "safe_and_comfortable": "Sûr et confortable", + "committed_to_safety": "Engagé pour la sécurité", + "Driver Applied the Ride for You": + "Un chauffeur qui a effectué la course pour vous", + "Show latest promo": "Afficher la dernière promotion", + "Cancel Trip": "Le vol est annulé.", + "Passenger Cancel Trip": "Le passager annule la course", + "Please stay on the picked point.": + "Veuillez rester au point sélectionné.", + "Trip is Begin": "Votre initiation a commencé.", + "Hi ,I will go now": "Bonjour, j'y vais maintenant", + "Passenger come to you": "Votre passager vient vous voir", + "Hi ,I Arrive your site": + "Bonjour, vous avez atteint votre position.", + "Driver Finish Trip": "Fin de la course du chauffeur", + "you will pay to Driver": "Sérieux ? Probablement avec mon argent.", + "Driver Cancel Your Trip": "Annulez votre course, chauffeur.", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Vous paierez le chauffeur Vous paierez le coût du temps du chauffeur Regardez votre portefeuille Intaleq", + "I will go now": "- J'y vais.", + "You Have Tips": "Astuces", + "tips": "Des paroles sages ?", + "Total is": "Chiffre total est de 15", + "No,I want": "- Je n'en ai pas envie.", + "Your fee is": "Vos frais sont de", + "Do you want to pay Tips for this Driver": + "Souhaitez-vous laisser un pourboire à ce chauffeur ?", + "Tip is": "Monconseil", + "Camera Access Denied.": "Accès à la caméra refusé.", + "Open Settings": + "|||UNTRANSLATED_CONTENT_START|||Ø§ÙØªØ­ الإعدادات|||UNTRANSLATED_CONTENT_END|||", + "GPS Required Allow !.": "Le GPS doit être activé !", + "Your Account is Deleted": "Votre compte a été supprimé", + "Are you sure to delete your account?": + "Voulez-vous vraiment supprimer votre compte ?", + "Your data will be erased after 2 weeks": + "Vos données seront effacées après 2 semaines", + "And you will can't return to use app after 1 month": + "Vous pourrez revenir à l'application après un mois", + "Enter Your First Name": "Saisissez votre nom", + "Are you Sure to LogOut?": "Voulez-vous vraiment vous déconnecter?", + "Email Wrong": "Email ", + "Email you inserted is Wrong.": + "L'adresse e-mail que vous avez saisie est incorrecte.", + "You have finished all times": "J'en ai assez !", + "if you want help you can email us here": + "Si vous souhaitez de l'aide, vous pouvez nous envoyer un e-mail ici", + "Thanks": "Merci.", + "Email Us": "Envoyez-nous un e-mail", + "I cant register in your app in face detection": + "Je ne peux pas m'inscrire à votre application avec la détection de visage", + "Hi": "-C'est un plaisir. -Hello.", + "No face detected": "Aucun scanner n'a été détécté", + "Image detecting result is": + "Le résultat de la détection d'image est", + "from 3 times Take Attention": "que 3 fois attirent votre attention", + "Be sure for take accurate images please": + "Assurez-vous de prendre des photos précises s'il vous plaît", + "You have": "- Euh...", + "image verified": "La photo est notariée", + "Next": "Suivant", + "There is no help Question here": "Ouais, pas d'aide ici.", + "Call End": "Terminer l'appel", + "You dont have Points": "- Vous n'avez pas...", + "You Are Stopped For this Day !": + "Vous avez été mis en pause pour la journée !", + "You must be charge your Account": + "Vous devez recharger votre compte", + "You Refused 3 Rides this Day that is the reason": + "Vous avez refusé 3 courses aujourd'hui et c'est pourquoi", + "See you Tomorrow!": "Je te verrais demain.", + "Recharge my Account": "Recharger mon compte", + "Ok , See you Tomorrow": "D'accord, on se voit demain.", + "You are Stopped": "Vous êtes arrêté", + "Connected": "Online", + "Not Connected": "Offiline", + "Your are far from passenger location": + "Vous êtes loin de l'emplacement des passagers", + "go to your passenger location before": + "Accédez à l'emplacement de votre passager avant le", + "Passenger cancel trip": "Le passager a annulé la course", + "You will get cost of your work for this trip": + "Vous obtiendrez le coût de votre entreprise pour cette course", + "in your wallet": "Elle est dans ton portefeuille.", + "you gain": "Vous gagnerez", + "Order Cancelled": "Commande annulée", + "Order Cancelled by Passenger": "Demande annulée par le passager", + "Success": "Je l'ai.", + "Feedback data saved successfully": + "Données d'évaluation enregistrées avec succès", + "No Promo for today .": "Pas de promotion pour aujourd'hui.", + "Select your destination": "Sélectionnez la destination;", + "Search for your Start point": "Trouvez votre point de départ", + "Search for waypoint": "Rechercher un point WIPOINT", + "Current Location": "Utiliser la position actuelle", + "Add Location 1": "Emplacement & #160;: %1", + "You must Verify email !.": "Relever le courriel", + "Cropper": "Récolte", + "Saved Sucssefully": "Bien reçu.", + "Select Date": "Choisir une nouvelle date", + "Birth Date": "Date de naissance", + "Ok": "D'accord.", + "the 500 points equal 30 JOD": "500 points équivaut à 30 JOD", + "the 500 points equal 30 JOD for you": + "500 points équivaut à 30 JOD pour vous", + "token updated": "Code mis à jour", + "Add Location 2": "Ajouter un emplacement 2", + "Add Location 3": "Ajouter un emplacement 3", + "Add Location 4": "Ajouter un emplacement 4", + "Waiting for your location": "En attente de votre localisation", + "Search for your destination": "Trouvez votre destination", + "Hi! This is": "Bienvenue \"moi\": c' est ça.", + "I am using": "Du matériel que j'utilisais.", + "to ride with": "pour rouler avec", + "as the driver.": "On dirait un chauffeur.", + "is driving a": "- Je vais le tenter comme ça. - Conduire.", + "with license plate": "Avec une plaque d'immatriculation", + "I am currently located at": "Je suis actuellement en", + "Please go to Car now": "S'il te plaît, va-t-en maintenant.", + "If you need to reach me, please contact the driver directly at": + "Si vous avez besoin de me joindre, veuillez contacter directement le chauffeur au", + "No Car or Driver Found in your area.": + "Aucune voiture ou chauffeur trouvé dans votre région.", + "Please Try anther time": "Réessayer", + "There no Driver Aplly your order sorry for that": + "Aucun chauffeur ne peut répondre à votre demande, nous sommes désolés.", + "Trip Cancelled": "Course annulée", + "The Driver Will be in your location soon .": + "Votre chauffeur arrivera bientôt chez vous.", + "The distance less than 500 meter.": + "La distance est inférieure à 500 mètres.", + "Promo End !": "- C'est seulement jusqu'au spectacle.", + "There is no notification yet": "Aucune notification pour le moment", + "Use Touch ID or Face ID to confirm payment": + "Utilisez Touch ID ou Face ID pour confirmer le paiement", + "Contact us for any questions on your order.": + "Contactez-nous pour toute question concernant votre commande.", + "Pyament Cancelled .": "Le paiement a été annulé.", + "type here": "Tapez ici", + "Scan Driver License": "Permis de conduire", + "Please put your licence in these border": + "Veuillez placer votre licence dans ces limites", + "Camera not initialized yet": "Caméra pas encore configurée", + "Take Image": + "Prends une photo, parce que demain matin, ces lettres partiront.", + "AI Page": "Tu dis que ton système \"IA\"", + "Take Picture Of ID Card": + "Prenez une photo de votre pièce d'identité", + "Take Picture Of Driver License Card": + "Prenez une photo de votre permis de conduire.", + "We are process picture please wait": + "Nous traitons les images, veuillez patienter.", + "There is no data yet.": "Aucune donnée trouvée", + "Name :": "Nom :", + "Drivers License Class:": "Catégorie de permis de conduire :", + "Document Number:": "Numéro du document", + "Address:": "Adresse:", + "Height:": "& Hauteur & #160;:", + "Expiry Date:": "Expiration & #160;:", + "Date of Birth:": "Anniversaire & #160;: @title: group", + "You can't continue with us .": "Ça ne peut pas durer.", + "You should renew Driver license": + "Vous devez renouveler votre permis de conduire", + "Detect Your Face": "Découvrez votre visage", + "Go to next step": "\"", + "scan Car License.": "Vérification de l'immatriculation du véhicule.", + "Name in arabic": "Full Name AR", + "Drivers License Class": "Permis de conduire", + "Date of Birth": "Date de naissance", + "Age": "l’âge", + "Lets check Car license": "Vérifions le permis de conduire", + "Car Kind": "Type de véhicule", + "Car Plate": "Le numéro d'immatriculation ?", + "Lets check License Back Face": + "Vérifions la licence de face arrière", + "Car License Card": "Carte d'immatriculation du véhicule", + "No image selected yet": "Aucune photo sélectionnée pour le moment", + "Made :": "Make", + "model :": "Mod.", + "VIN :": "Structure :", + "year :": "Année", + "ÙExpire Date": "Date d'expiration", + "Login Driver": "Se connecter", + "Password must br at least 6 character.": + "Le mot de passe doit comporter au moins 6 caractères.", + "if you don't have account": "Que voulez-vous dire ?", + "Here recorded trips audio": + "Voici les enregistrements audio du voyage", + "Register as Driver": "Inscrivez-vous en tant que chauffeur", + "Privacy Notice": "Avis de confidentialité", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the": + "En sélectionnant « J'accepte » ci-dessous, j'ai lu, j'accepte et j'accepte les conditions générales", + ". I am at least 18 years of age.": ". J'ai au moins 18 ans.", + "Log Out Page": "Se Déconnecter", + "Log Off": "Signe.", + "Register Driver": "Le chauffeur...", + "Verify Email For Driver": "Consultez l'e-mail du chauffeur", + "Admin DashBoard": "Tableau de bord d'administration", + "Your name": "Ton... nom.", + "your ride is applied": "Votre course a été appliquée", + "Your password": "Renouveler votre mot de passe", + "LE": "Livre égyptienne", + "JOD": "Monnaie: Dinar jordanien", + "m": "%1 km", + "We search nearst Driver to you": + "Nous recherchons le chauffeur le plus proche", + "please wait till driver accept your order": + "Veuillez attendre que le chauffeur accepte votre demande", + "No accepted orders? Try raising your trip fee to attract riders.": + "Aucune Essayez d'augmenter les frais de course pour attirer des passagers.", + "You should select one": "Vous devez en choisir un", + "The driver accept your order for": + "Votre chauffeur a accepté votre demande de", + "Increase Fee": "Augmenter les frais", + "No, thanks": "Non merci", + "The driver on your way": "Votre chauffeur est en route", + "Total price from": "P.T", + "Order Details Intaleq": "Détails du commande", + "Order Applied": "Commande appliquée", + "accepted your order": "- Retenue.", + "We regret to inform you that another driver has accepted this order.": + "Nous sommes désolés de vous informer qu'un autre chauffeur a accepté cette demande.", + "Selected file:": "Ouvre un fichier existant", + "Your trip cost is": "Les frais de votre course", + "this will delete all files from your device": + "Cela supprimera tous les fichiers de votre appareil", + "you have a negative balance of": "Vous avez un solde négatif de", + "in your": "En toi.", + "Exclusive offers and discounts always with the Intaleq app": + "Offres exclusives et réductions toujours avec l'application de voyage", + "Please go to Car Driver": + "Veuillez vous rendre chez le conducteur de la voiture", + "wallet due to a previous trip.": + "Portefeuille en raison d'une course précédente.", + "Submit Question": "Envoyer la question", + "Please enter your Question.": "Veuillez saisir votre question.", + "Help Details": "Détails de l'aide", + "No trip yet found": "Aucune campagne trouvée", + "No Response yet.": "Il n'y a pas de réponses.", + "You Earn today is": "- On est euh...", + "You Have in": "Vous avez à", + "Total points is": "Le score total est de", + "Total Connection Duration:": "Durée totale de connexion :", + "H and": "H et", + "Passenger name :": "Le voyageur.", + "Cost Of Trip IS": "Coûts des vols par avion spécial", + "Arrival time": "On arrive dans 7 minutes.", + "arrival time to reach your point": + "Heure d'arrivée pour atteindre votre destination", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Pour les courses et livraisons rapides, le prix est calculé de manière dynamique. Pour des courses confortables, le prix est basé sur la durée et la distance.", + "Hello this is Driver": "Bonjour, je suis le chauffeur", + "Is the Passenger in your Car ?": + "Le passager est-il dans votre véhicule ?", + "Please wait for the passenger to enter the car before starting the trip.": + "Veuillez attendre que le passager entre dans le véhicule avant de commencer la course.", + "No ,still Waiting.": "Non , je t'attends toujours.", + "I arrive you": "Elle t'a eue.", + "I Arrive your site": "Elle t'a eue.", + "You are not in near to passenger location": + "Vous n'êtes pas près de l'emplacement du passager", + "please go to picker location exactly": + "Veuillez vous rendre à l'emplacement exact de la sélection", + "You Can Cancel Trip And get Cost of Trip From": + "Vous pouvez annuler la course et obtenir le coût de la course auprès de", + "Are you sure to cancel?": "Voulez-vous vraiment annuler ?", + "Yes": "Oui", + "Insert Emergincy Number": "Saisir le numéro d'urgence", + "Best choice for comfort car and flexible route and stops point": + "Le meilleur choix pour une voiture confortable, un itinéraire flexible et un point d'arrêt", + "Insert": "En cours d' utilisation", + "This is for delivery or a motorcycle.": + "C'est pour la livraison ou une moto.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "Cette course va directement de votre point de départ à votre destination pour un tarif forfaitaire. Le chauffeur doit suivre l'itinéraire prévu", + "You can decline a request without any cost": + "Vous pouvez refuser la demande sans frais", + "Perfect for adventure seekers who want to experience something new and exciting": + "Idéal pour les chercheurs d'aventure qui veulent essayer quelque chose de nouveau et d'excitant", + "My current location is:": "Mon emplacement actuel est :", + "and I have a trip on": "et j'ai un voyage à", + "App with Passenger": "Postuler avec le passager", + "You will be pay the cost to driver or we will get it from you on next trip": + "Le coût sera payé au chauffeur ou nous l'obtiendrons de votre part lors de la prochaine course", + "Trip has Steps": "La course comporte des étapes", + "Distance from Passenger to destination is": + "La distance entre le passager et la destination est", + "price is": "C'est cent dollars.", + "This ride type does not allow changes to the destination or additional stops": + "Ce type de course ne permet pas de modifier la destination ou d'effectuer des arrêts supplémentaires", + "This price may be changed": "Ce prix peut changer", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "Pas de carte SIM, pas de problème ! Contactez directement votre chauffeur via notre application. Nous utilisons une technologie de pointe pour garantir votre confidentialité.", + "This ride type allows changes, but the price may increase": + "Ce type de course peut être modifié, mais le prix peut augmenter", + "message From passenger": "Estafette.", + "Select one message": "Message un.", + "My location is correct. You can search for me using the navigation app": + "Ma position est correcte. Vous pouvez me rechercher à l'aide de l'application de navigation", + "I'm waiting for you": "- Quand vous voulez.", + "Hello, I'm at the agreed-upon location": + "Bonjour, je suis à l'endroit convenu", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "Nous avons remarqué que la vitesse dépasse 100 km/h. Veuillez ralentir pour votre propre sécurité. Si vous ne vous sentez pas en sécurité, vous pouvez communiquer les détails de votre course à un contact ou appeler la police à l'aide du bouton de détresse rouge.", + "Warning: Intaleqing detected!": + "Avertissement : survitesse détectée !", + "Please help! Contact me as soon as possible.": + "Aide-moi s'il te plaît. Contactez-moi dès que possible.", + "Share Trip Details": "Partagez les détails de la", + "Car Plate is": "Le numéro d'immatriculation ?", + "the 3000 points equal 3000 L.E for you": + "3000 points équivaut à 3000 EGP pour vous", + "So go and gain your money": "Gagnez de l'argent", + "the 3000 points equal 3000 L.E": "3000 points équivaut à 3000 EGP", + "The payment was not approved. Please try again.": + "Paiement non approuvé. Réessayer", + "Payment Failed": "Échec du paiement", + "Error": "ⵜⴰⵣⴳâµâµœ", + "An error occurred during the payment process.": + "Une erreur s'est produite lors de votre paiement.", + "The payment was approved.": "Paiement approuvé.", + "Payment Successful": "Paiement réussi", + "No ride found yet": "Aucune campagne trouvée", + "Accept Order": "Commande acceptée", + "reject your order.": "Votre Ordre.", + "Bottom Bar Example": "Exemple de barre inférieure", + "Driver phone": "Téléphone du chauffeur", + "Statistics": "& Statistiques", + "Origin": "ORIGINE", + "Destination": "- Destination ?", + "Driver Name": "Nom de pilote & #160;:", + "Driver Car Plate": "Plaque d'immatriculation du conducteur", + "Available for rides": "Disponible pour les courses", + "Scan Id": "Contrôle d'identité", + "Camera not initilaized yet": "Caméra pas encore configurée", + "Scan ID MklGoogle": "Vérification d'identité MklGoogle", + "Language": "Langue ", + "Jordan": "Jordanie", + "USA": "Etats Unis d'Amérique", + "Egypt": "Egypte", + "Turkey": "Turquie", + "Saudi Arabia": "Arabie Saoudite", + "Qatar": "Qatar", + "Bahrain": "Bahreïn", + "Kuwait": "Koweït", + "But you have a negative salary of": + "Mais vous avez un salaire négatif de", + "Promo Code": "Code promo", + "Your trip distance is": "La distance de votre course est de", + "Enter promo code": "Code promo", + "You have promo!": "Vous avez une promotion !", + "Cost Duration": "Durée du coût", + "Duration is": "La durée est", + "Leave": "Quitter", + "Join": "Joindre", + "You Should be select reason.": "Vous devez choisir une raison.", + "\$": "\$", + "Waiting for Driver ...": "En attente du chauffeur ...", + "Latest Recent Trip": "J'ai des choses à faire!", + "from your list": "À partir de votre liste", + "Do you want to change Work location": + "Souhaitez-vous changer de lieu de travail ?", + "Do you want to change Home location": + "Souhaitez-vous changer l'emplacement de la maison", + "We Are Sorry That we dont have cars in your Location!": + "Nous sommes désolés que les voitures ne soient pas disponibles chez vous !", + "Choose from Map": "Sélectionner sur la carte", + "Pick your ride location on the map - Tap to confirm": + "Sélectionnez votre lieu de prise en charge sur la carte - appuyez pour confirmer", + "To Work": "Pour le boulot", + "Are you want to go this site": "Voulez-vous aller à cet endroit", + "Closest & Cheapest": "Le plus proche et le moins cher", + "Work Saved": "Enregistré :", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq est une application de covoiturage sûre, fiable et accessible.", + "With Intaleq, you can get a ride to your destination in minutes.": + "En voyageant, vous pouvez vous rendre à destination en quelques minutes.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Safar s'engage pour la sécurité, et tous nos commandants sont soigneusement contrôlés et leurs antécédents vérifiés.", + "To Home": "RETOUR À LA PAGE D'ACCUEIL", + "Home Saved": "Enregistré :", + "Destination selected": "Destination sélectionnée", + "Now select start pick": + "Maintenant, choisissez Démarrer la sélection", + "Pick from map": "Sélectionner sur la carte", + "Click here point": "Cliquez ici", + "No Car in your site. Sorry!": + "Il n'y a pas de voiture dans votre région. Ex... Excusez moi.", + "Nearest Car for you about": + "La voiture la plus proche de chez vous est d'environ", + "N/A": "Aucune information", + "From :": "Du :", + "Get Details of Trip": "Obtenir les détails de la course", + "If you want add stop click here": + "Si vous souhaitez ajouter un arrêt, cliquez ici", + "Driver": "ⴰⵎâµâ´·â´°âµ€", + "Where you want go": "D'où viens-tu ?", + "My Card": "Ma carte.", + "Start Record": "Début de la campagne d'enregistrement", + "Wallet": "Un portefeuille.", + "History of Trip": "2.1 Histoire du vol", + "Helping Center": "Centre d'aide", + "Record saved": "Sauvegarde de l'historique effectuée !", + "Trips recorded": "Voyages enregistrés", + "Select Your Country": "Selectionnez votre pays", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "Pour vous assurer d'avoir les informations les plus précises pour votre emplacement, veuillez sélectionner votre pays ci-dessous. Cela vous aidera à personnaliser l'expérience et le contenu de l'application pour votre pays.", + "Are you sure to delete recorded files": + "Êtes-vous sûr de vouloir supprimer les fichiers enregistrés", + "Select recorded trip": "Choisissez une course enregistrée", + "Card Number": "N  de pièce d'identité:", + "Hi, Where to": "Bonjour, oùallez-vous ?", + "Pick your destination from Map": "Sélectionner sur la carte", + "Add Stops": "Ajouter des arrêts", + "Get Direction": "Obtenir une direction", + "Add Location": "Ajouter l'emplacement correctement", + "Switch Rider": "Changer de passager", + "You will arrive to your destination after timer end.": + "Vous arriverez à destination après l'expiration de la minuterie.", + "You can cancel trip": "Vous pouvez annuler la course", + "The driver waitting you in picked location .": + "Votre chauffeur vous attend à l'endroit désigné .", + "Pay with Your": "Payer avec", + "Pay with Credit Card": "- La carte.", + "Payment History": "Historique des paiements", + "Show Promos to Charge": "Afficher les promotions d'expédition", + "Point": "Points", + "Driver Wallet": "Portefeuille chauffeur", + "Total Points is": "Le score total est de", + "Total Budget from trips is": "Le budget total des voyages est de", + "Total Amount:": "Montant total", + "Total Budget from trips by": "Budget total des voyages par", + "Credit card is": "Votre carte de crédit.", + "This amount for all trip I get from Passengers": + "Ce montant s'applique à toutes les courses que je reçois de la part de passagers.", + "Pay from my budget": "Payer sur mon budget", + "This amount for all trip I get from Passengers and Collected For me in": + "Ce montant s'applique à toutes les courses que je reçois de la part de passagers collectés pour moi à", + "You can buy points from your budget": + "Vous pouvez acheter des points à partir de votre budget", + "insert amount": "Entrez le montant", + "You can buy Points to let you online": + "Vous pouvez acheter des points pour vous permettre d'accéder en ligne", + "by this list below": "Grâce à cette liste ci-dessous", + "Create Wallet to receive your money": + "Créez un portefeuille pour recevoir votre argent", + "Enter your feedback here": "Saisissez vos commentaires ici", + "Please enter your feedback.": + "Veuillez saisir le texte de vos notes", + "Feedback": "Feedback:", + "Click here to Show it in Map": + "Cliquez ici pour le voir sur la carte", + "Canceled": "Annulé", + "Type your Email": "Votre e-mail", + "No I want": "- Je n'en ai pas envie.", + "Email is": "Email ", + "Phone Number is": "C'est le 92.38.09.06.", + "Date of Birth is": "Année de naissance", + "Sex is": "Le sexe est cardio.", + "Car Details": "Détails du véhicule", + "VIN is": "Structure", + "Color is": "- Sa couleur?", + "Make is": "Make is", + "Model is": "Formulaire de :", + "Year is": "Année", + "Edit Your data": "Modifiez vos informations", + "write vin for your car": + "Notez le numéro de châssis de votre véhicule", + "VIN": + "|||UNTRANSLATED_CONTENT_START|||رقم هيكل السيارة|||UNTRANSLATED_CONTENT_END|||", + "write Color for your car": "Tapez la couleur de votre voiture", + "write Make for your car": "Écrivez une marque pour votre voiture", + "write Model for your car": "Tapez votre modèle de voiture", + "write Year for your car": "Saisissez une année pour votre voiture", + "write Expiration Date for your car": "la date de péremption", + "Tariffs": "Définitions ", + "Minimum fare": "Prix minimum", + "Maximum fare": "Prix maximum", + "Flag-down fee": "Frais d'escale", + "Including Tax": "Incluant...", + "BookingFee": "Frais de réservation", + "Morning": "- Bonjour.", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "07h30 - 10h30 (jeudi, vendredi, samedi, lundi)", + "Evening": "- Bonsoir.", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "12h00 - 15h00 (jeudi, vendredi, samedi, lundi)", + "Night": "la nuit", + "You have in account": "Vous avez dans le compte", + "Select Country": "Sélectionner un pays.", + "Ride Today :": "Commandez une course aujourd'hui :", + "After this period": "Après cette période", + "You can't cancel!": "- Vous pouvez plus...", + "from 23:59 till 05:30": "23:59 - 05:30", + "Rate Driver": "Le chauffeur...", + "Total Cost is": "Coût total", + "Write note": "J'écris une lettre de menace.", + "Time to arrive": "Bobby, Qu'elle est notre e. t. a.?", + "Ride Summaries": "Résumés des courses", + "Total Cost": "Coût total", + "Average of Hours of": "Nombre moyen d'heures de travail", + "is ON for this month": "En cours ce mois-ci", + "Days": "Quelques mois, semaines... quelques jours.", + "Total Hours on month": "Nombre total d'heures", + "Counts of Hours on days": "Heures en jours", + "OrderId": "Commande N°", + "created time": "Date de création", + "Intaleq Over": "Et c'est là qu'on l'aura.", + "I will slow down": "Je vais ralentir.", + "Map Passenger": "Carte du passager", + "Be Slowly": "Soyez lent", + "If you want to make Google Map App run directly when you apply order": + "Si vous souhaitez lancer Google Maps directement lorsque vous appliquez la commande", + "You can change the language of the app": + "Vous pouvez modifier la langue de l'application", + "Your Budget less than needed": "Votre budget est sous-estimé", + "You can change the Country to get all features": + "Vous pouvez modifier le pays pour obtenir toutes les fonctionnalités", + "Change Country": "Non-pays" + }, + "hi": { + "Order": "ऑरà¥à¤¡à¤°", + "OrderVIP": "वीआईपी ऑरà¥à¤¡à¤°", + "Cancel Trip": "यातà¥à¤°à¤¾ रदà¥à¤¦ करें", + "Passenger Cancel Trip": "यातà¥à¤°à¥€ ने यातà¥à¤°à¤¾ रदà¥à¤¦ कर दी", + "VIP Order": "वीआईपी ऑरà¥à¤¡à¤°", + "The driver accepted your trip": + "डà¥à¤°à¤¾à¤‡à¤µà¤° ने आपकी यातà¥à¤°à¤¾ सà¥à¤µà¥€à¤•ार कर ली है", + "message From passenger": "यातà¥à¤°à¥€ से संदेश", + "Cancel": "रदà¥à¤¦ करें", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "यातà¥à¤°à¤¾ रदà¥à¤¦ कर दी गई। यातà¥à¤°à¤¾ की लागत आपके वॉलेट में जोड़ दी जाà¤à¤—ी।", + "token change": "टोकन परिवरà¥à¤¤à¤¨", + "face detect": "चेहरा पहचानना", + "Face Detection Result": "चेहरा पहचान परिणाम", + "similar": "समान", + "not similar": "असमान", + "Hi ,I will go now": "नमसà¥à¤¤à¥‡, मैं अब जाऊंगा", + "Passenger come to you": "यातà¥à¤°à¥€ आपके पास आ रहा है", + "Call Income": "आवक कॉल", + "Call Income from Passenger": "यातà¥à¤°à¥€ से आवक कॉल", + "Criminal Document Required": "आपराधिक दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ आवशà¥à¤¯à¤•", + "You should have upload it .": "आपको इसे अपलोड करना चाहिठथा।", + "Call End": "कॉल समापà¥à¤¤", + "The order has been accepted by another driver.": + "ऑरà¥à¤¡à¤° किसी अनà¥à¤¯ डà¥à¤°à¤¾à¤‡à¤µà¤° दà¥à¤µà¤¾à¤°à¤¾ सà¥à¤µà¥€à¤•ार कर लिया गया है।", + "The order Accepted by another Driver": + "ऑरà¥à¤¡à¤° किसी अनà¥à¤¯ डà¥à¤°à¤¾à¤‡à¤µà¤° दà¥à¤µà¤¾à¤°à¤¾ सà¥à¤µà¥€à¤•ार किया गया", + "We regret to inform you that another driver has accepted this order.": + "हमें आपको यह सूचित करते हà¥à¤ दà¥à¤– हो रहा है कि किसी अनà¥à¤¯ डà¥à¤°à¤¾à¤‡à¤µà¤° ने यह ऑरà¥à¤¡à¤° सà¥à¤µà¥€à¤•ार कर लिया है।", + "Driver Applied the Ride for You": + "डà¥à¤°à¤¾à¤‡à¤µà¤° ने आपके लिठसवारी के लिठआवेदन किया", + "Applied": "लागू", + "Hi ,I Arrive your site": "नमसà¥à¤¤à¥‡, मैं आपके साइट पर पहà¥à¤à¤š गया हूà¤", + "Please go to Car Driver": "कृपया कार डà¥à¤°à¤¾à¤‡à¤µà¤° के पास जाà¤à¤‚", + "Ok I will go now.": "ठीक है मैं अब जाऊंगा।", + "Accepted Ride": "सवारी सà¥à¤µà¥€à¤•ार की गई", + "Driver Accepted the Ride for You": + "डà¥à¤°à¤¾à¤‡à¤µà¤° ने आपके लिठसवारी सà¥à¤µà¥€à¤•ार कर ली", + "Promo": "पà¥à¤°à¥‹à¤®à¥‹", + "Show latest promo": "नवीनतम पà¥à¤°à¥‹à¤®à¥‹ दिखाà¤à¤‚", + "Trip Monitoring": "यातà¥à¤°à¤¾ निगरानी", + "Driver Is Going To Passenger": "डà¥à¤°à¤¾à¤‡à¤µà¤° यातà¥à¤°à¥€ के पास जा रहा है", + "Please stay on the picked point.": "कृपया चà¥à¤¨à¥‡ हà¥à¤ बिंदॠपर रहें।", + "message From Driver": "डà¥à¤°à¤¾à¤‡à¤µà¤° से संदेश", + "Trip is Begin": "यातà¥à¤°à¤¾ शà¥à¤°à¥‚ हो गई है", + "Cancel Trip from driver": "डà¥à¤°à¤¾à¤‡à¤µà¤° से यातà¥à¤°à¤¾ रदà¥à¤¦", + "We will look for a new driver.\nPlease wait.": + "हम à¤à¤• नठडà¥à¤°à¤¾à¤‡à¤µà¤° की तलाश करेंगे।\nकृपया पà¥à¤°à¤¤à¥€à¤•à¥à¤·à¤¾ करें।", + "The driver canceled your ride.": "डà¥à¤°à¤¾à¤‡à¤µà¤° ने आपकी सवारी रदà¥à¤¦ कर दी।", + "Driver Finish Trip": "डà¥à¤°à¤¾à¤‡à¤µà¤° ने यातà¥à¤°à¤¾ समापà¥à¤¤ की", + "you will pay to Driver": "आप डà¥à¤°à¤¾à¤‡à¤µà¤° को भà¥à¤—तान करेंगे", + "Don’t forget your personal belongings.": + "अपनी निजी वसà¥à¤¤à¥à¤à¤‚ न भूलें।", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "कृपया सà¥à¤¨à¤¿à¤¶à¥à¤šà¤¿à¤¤ करें कि आपके पास अपनी सभी निजी वसà¥à¤¤à¥à¤à¤‚ हैं और यदि लागू हो तो कोई भी शेष किराया जाने से पहले आपके वॉलेट में जोड़ दिया गया है। Intaleq à¤à¤ª चà¥à¤¨à¤¨à¥‡ के लिठधनà¥à¤¯à¤µà¤¾à¤¦", + "Finish Monitor": "निगरानी समापà¥à¤¤ करें", + "Trip finished": "यातà¥à¤°à¤¾ समापà¥à¤¤ हो गई", + "Call Income from Driver": "डà¥à¤°à¤¾à¤‡à¤µà¤° से आवक कॉल", + "Driver Cancelled Your Trip": "डà¥à¤°à¤¾à¤‡à¤µà¤° ने आपकी यातà¥à¤°à¤¾ रदà¥à¤¦ कर दी", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "आप डà¥à¤°à¤¾à¤‡à¤µà¤° को भà¥à¤—तान करेंगे आप डà¥à¤°à¤¾à¤‡à¤µà¤° के समय की लागत का भà¥à¤—तान करेंगे अपने Intaleq वॉलेट को देखें", + "Order Applied": "ऑरà¥à¤¡à¤° लागू किया गया", + + //firebase + "registration_date": "दिनांक पंजीकृत", + "expiration_date": "खतà¥à¤® होने की तारीख", + "rating_count": "रेटिंगà¥à¤¸", + "rating_driver": "डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° की रेटिंग", + "age": "दाà¤à¤¤", + "vin": "VIN", + "car_color": "फ़ॉनà¥à¤Ÿ रंग", + "car_plate": "कार के चारों ओर ले आओ।", + "car_model": "कार का मॉडल:", + "education": "शिकà¥à¤·à¤¾", + "gender": "घराना", + "birthdate": "जनà¥à¤®à¤¦à¤¿à¤¨", + "Approve Driver Documents": + "डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° के डॉकà¥à¤¯à¥‚मेंट मंज़ूर करें", + "Total Budget is": "कà¥à¤² बजट", + "You will recieve code in sms message": + "आपको कोड à¤à¤¸à¤à¤®à¤à¤¸ (SMS) में मिलेगा", + "Please enter": "कृपया संसाधन नाम भरें. @ info: whatsthis", + "We need your phone number to contact you and to help you receive orders.": + "हमें आपसे संपरà¥à¤• करने और ऑरà¥à¤¡à¤° पाने में आपकी मदद करने के लिठआपका फ़ोन नंबर चाहिà¤à¥¤", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "आपके आपराधिक रिकॉरà¥à¤¡ पर मौजूद पूरा नाम आपके डà¥à¤°à¤¾à¤‡à¤µà¤¿à¤‚ग लाइसेंस पर मौजूद नाम से मेल नहीं खाता। कृपया जाà¤à¤š करें और सही डॉकà¥à¤¯à¥‚मेंट दें।", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "आपके डà¥à¤°à¤¾à¤‡à¤µà¤¿à¤‚ग लाइसेंस पर दिया गया राषà¥à¤Ÿà¥à¤°à¥€à¤¯ नंबर आपके आईडी डॉकà¥à¤¯à¥‚मेंट पर मौजूद नंबर से मेल नहीं खाता। कृपया जाà¤à¤š करें और सही डॉकà¥à¤¯à¥‚मेंट दें।", + "Capture an Image of Your Criminal Record": + "अपने आपराधिक रिकॉरà¥à¤¡ की फ़ोटो लें", + "IssueDate": "जारी तिथि", + "Capture an Image of Your car license front": + "सामने से अपने कार लाइसेंस की फ़ोटो लें", + "Capture an Image of Your ID Document front": + "सामने से अपनी आईडी की फ़ोटो लें", + "NationalID": "राषà¥à¤Ÿà¥à¤°à¥€à¤¯ नंबर", + "FullName": "पूरा नाम", + "InspectionResult": "परीकà¥à¤·à¤¾ परिणाम", + "Criminal Record": "आपराधिक रिकॉरà¥à¤¡", + "The email or phone number is already registered.": + "ईमेल या फ़ोन नंबर पहले से रजिसà¥à¤Ÿà¤° है।", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "यातà¥à¤°à¤¾ à¤à¤ª में राइडशेयर डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° बनने के लिà¤, आपको अपना डà¥à¤°à¤¾à¤‡à¤µà¤¿à¤‚ग लाइसेंस, पहचान का डॉकà¥à¤¯à¥‚मेंट और गाड़ी के रजिसà¥à¤Ÿà¥à¤°à¥‡à¤¶à¤¨ का डॉकà¥à¤¯à¥‚मेंट अपलोड करना होगा। हमारा AI सिसà¥à¤Ÿà¤® केवल 2 -3 मिनट में इसकी पà¥à¤°à¤¾à¤®à¤¾à¤£à¤¿à¤•ता की तà¥à¤°à¤‚त समीकà¥à¤·à¤¾ और सतà¥à¤¯à¤¾à¤ªà¤¨ करेगा। अगर आपके डॉकà¥à¤¯à¥‚मेंट मंज़ूर हो जाते हैं, तो आप टà¥à¤°à¥ˆà¤µà¤² à¤à¤ª में डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° के तौर पर काम करना शà¥à¤°à¥‚ कर सकते हैं। कृपया धà¥à¤¯à¤¾à¤¨ दें कि जाली डॉकà¥à¤¯à¥‚मेंट देना à¤à¤• गंभीर अपराध है और इसके परिणामसà¥à¤µà¤°à¥‚प ततà¥à¤•ाल समापà¥à¤¤à¤¿ और कानूनी परिणाम हो सकते हैं।", + "Documents check": "डॉकà¥à¤¯à¥‚मेंट वेरिफ़िकेशन", + "Driver's License": "डà¥à¤°à¤¾à¤‡à¤µà¤¿à¤‚ग लाइसेंस", + "License Type": "लाइसेंस:", + "National Number": "राषà¥à¤Ÿà¥à¤°à¥€à¤¯ आईडी संखà¥à¤¯à¤¾:", + "Name (Arabic)": "नाम (अरबी)", + "Name (English)": "channa", + "Address": "पता", + "Issue Date": "जारी तिथि", + "Expiry Date": "समय - सीमा खतà¥à¤® होने की तारीख", + "License Categories": "लाइसेंस:", + "driver_license": "डà¥à¤°à¤¾à¤‡à¤µà¤¿à¤‚ग लाइसेंस", + "Capture an Image of Your Driver License": + "अपने डà¥à¤°à¤¾à¤‡à¤µà¤¿à¤‚ग लाइसेंस की फ़ोटो लें", + "ID Documents Back": "पहचान के डॉकà¥à¤¯à¥‚मेंट दिखना", + "National ID": "राषà¥à¤Ÿà¥à¤°à¥€à¤¯ आईडी", + "Occupation": "वà¥à¤¯à¤µà¤¸à¤¾à¤¯", + "Gender": "घराना", + "Religion": "nizamuddin", + "Marital Status": "वैवाहिक सà¥à¤¥à¤¿à¤¤à¤¿", + "Full Name (Marital)": "पूरा नाम", + "Expiration Date": "खतà¥à¤® होने की तारीख", + "Capture an Image of Your ID Document Back": + "अपने आईडी डॉकà¥à¤¯à¥‚मेंट के पिछले हिसà¥à¤¸à¥‡ की फ़ोटो लें", + "ID Documents Front": "पहचान के डॉकà¥à¤¯à¥‚मेंट के सामने", + "First Name": "पहला नाम", + "CardID": "अपने आईडी डॉकà¥à¤¯à¥‚मेंट के पिछले हिसà¥à¤¸à¥‡ की फ़ोटो लें", + "Full Name": "पूरा नाम", + "Vehicle Details Front": "सामने वाली गाड़ी का बà¥à¤¯à¥Œà¤°à¤¾", + "Plate Number": "बिसात की संखà¥à¤¯à¤¾ चà¥à¤¨à¥‡à¤‚:", + "Owner Name": "मालिक का नाम", + "Vehicle Details Back": "गाड़ी का बà¥à¤¯à¥Œà¤°à¤¾ फिर से", + "Make": "मेक:% 1", + "Model": "कार का मॉडल:", + "Year": "वरà¥à¤·", + "Chassis": "चेसिस", + "Color": "फ़ॉनà¥à¤Ÿ रंग", + "Displacement": "पà¥à¤°à¤¤à¤¿à¤¸à¥à¤¥à¤¾à¤ªà¤¨", + "Fuel": "ईंधन शà¥à¤¦à¥à¤§!", + "Tax Expiry Date": "समय - सीमा खतà¥à¤® होने की तारीख", + "Inspection Date": "परीकà¥à¤·à¤¾ की तिथि", + "Capture an Image of Your car license back": + "अपने कार लाइसेंस की फ़ोटो फिर से लें", + "Capture an Image of Your Driver’s License": + "अपने डà¥à¤°à¤¾à¤‡à¤µà¤¿à¤‚ग लाइसेंस की फ़ोटो लें", + "Sign in with Google for easier email and name entry": + "ईमेल और नाम डालना आसान बनाने के लिठGoogle के साथ साइन इन करें", + "You will choose allow all the time to be ready receive orders": + "आप हर समय तैयार ऑरà¥à¤¡à¤° की अनà¥à¤®à¤¤à¤¿ देने का विकलà¥à¤ª चà¥à¤¨à¥‡à¤‚गे", + "Welcome to Intaleq!": "Safar में आपका सà¥à¤µà¤¾à¤—त है!", + "Get to your destination quickly and easily.": + "अपने डेसà¥à¤Ÿà¤¿à¤¨à¥‡à¤¶à¤¨ तक जलà¥à¤¦à¥€ और आसानी से पहà¥à¤à¤šà¥‡à¤‚।", + "Enjoy a safe and comfortable ride.": + "सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ और आरामदायक राइड का आनंद लें।", + "Choose Language": "भाषा चà¥à¤¨à¥‡à¤‚", + "Login": "लॉगइन...", + "Pay with Wallet": "Wallet से भà¥à¤—तान करें", + "Invalid MPIN": "अमानà¥à¤¯ à¤à¤®à¤ªà¥€à¤†à¤ˆà¤à¤¨ कोड", + "Invalid OTP": "अमानà¥à¤¯ वेरिफ़िकेशन कोड", + "Enter your email address": "अपना ईमेल पता डालें", + "Please enter Your Email.": "कृपया दरà¥à¤œ करें...", + "Enter your phone number": "अपना फ़ोन नंबर डालें", + "Please enter your phone number.": "कृपया अपना फ़ोन नंबर डालें।", + "Please enter Your Password.": "अपना पासवरà¥à¤¡ डालें", + "Submit": "भेजा जा रहा है", + "if you dont have account": "अगर आपके पास अकाउंट नहीं है", + "Register": "रेकॉरà¥à¤¡", + "Accept Ride's Terms & Review Privacy Notice": + "टà¥à¤°à¤¿à¤ª की शरà¥à¤¤à¥‡à¤‚ à¤à¤•à¥à¤¸à¥‡à¤ªà¥à¤Ÿ करें और निजता सूचना पर गौर करें", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "नीचे \"मैं सहमत हूà¤\" चà¥à¤¨à¤•र, मैंने इसà¥à¤¤à¥‡à¤®à¤¾à¤² की शरà¥à¤¤à¥‹à¤‚ की समीकà¥à¤·à¤¾ की है और उनसे सहमत हूठऔर निजता सूचना को सà¥à¤µà¥€à¤•ार करता हूà¤à¥¤à¤®à¥‡à¤°à¥€ उमà¥à¤° कम - से - कम 18 साल है।", + "I Agree": "सहमत", + "First name": "पहला नाम", + "Enter your first name": "अपना नाम डालें", + "Please enter your first name.": "कृपया अपना नाम डालें।", + "Last name": "परिवार नाम", + "Enter your last name": "परिवार नाम", + "Please enter your last name.": "कृपया अपना नाम डालें।", + "City": "शहर", + "Please enter your City.": "कृपया दरà¥à¤œ करें...", + "Male": "पà¥à¤°à¥à¤· आवाज \"% 1\"", + "Female": "सà¥à¤¤à¥à¤°à¥€", + "Verify Email": "ईमेल असतà¥à¤¯à¤¾à¤ªà¤¿à¤¤", + "We sent 5 digit to your Email provided": + "हमने आपके दिठगठईमेल पर 5 अंक भेजे हैं", + "5 digit": "पिन(5-अंकोंवाला)", + "Send Verification Code": "Proofed और संचारण.", + "Your Ride Duration is": "आपकी यातà¥à¤°à¤¾ की अवधि है", + "You will be thier in": "आप उनà¥à¤¹à¥‡à¤‚ अंदर रखेंगे", + "You trip distance is": "आपकी टà¥à¤°à¤¿à¤ª की दूरी है", + "Fee is": "शà¥à¤²à¥à¤• है", + "To :": "को:", + "Add Promo": "पà¥à¤°à¥‹à¤®à¥‹ जोड़ें", + "Confirm Selection": "चयन की पà¥à¤·à¥à¤Ÿà¤¿ करें", + "distance is": "दूरी है", + "duration is": "अवधि है", + "I don't need a ride anymore": "मà¥à¤à¥‡ अब राइड की ज़रूरत नहीं है", + "I was just trying the application": "मैं अभी - अभी à¤à¤ª आज़मा रहा था", + "No driver accepted my request": + "किसी भी डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° ने मेरा ऑरà¥à¤¡à¤° मंज़ूर नहीं किया", + "I added the wrong pick-up/drop-off location": + "आपने गलत पिकअप/डà¥à¤°à¥‰à¤ª ऑफ़ लोकेशन जोड़ी है", + "I don't have a reason": "मेरे पास कोई कारण नहीं है", + "Other": "अनà¥à¤¯", + "Can we know why you want to cancel Ride ?": + "कà¥à¤¯à¤¾ हम जान सकते हैं कि आप टà¥à¤°à¤¿à¤ª कà¥à¤¯à¥‹à¤‚ कैंसिल करना चाहते हैं?", + "Cancel Ride": "चलाना बनà¥à¤¦ करें", + "Add Payment Method": "भà¥à¤—तान विधि जोड़ें", + "Your Wallet balance is": "आपका वॉलेट बैलेंस है", + "Ride Wallet": "टà¥à¤°à¤¿à¤ª वॉलेट", + "Payment Method": "भà¥à¤—तान की विध", + "Type here Place": "यहाठजगह टाइप करें", + "Are You sure to ride to": "कà¥à¤¯à¤¾ आप वाकई राइड करना चाहते हैं", + "Confirm": "पकà¥à¤•ा करें", + "Back": "पीछे जाà¤à¤", + "You are Delete": "आप मिटा रहे हैं", + "Deleted": "मिटाया", + "You Dont Have Any places yet !": + "आपके पास अभी तक कोई सà¥à¤ªà¥‰à¤Ÿ नहीं है !", + "Favorite Places": "पसंदीदा जगहें", + "From : Current Location": "मौज़ूदा सà¥à¤¥à¤¾à¤¨ बनाठरखें (_K)", + "Where to": "...कहाà¤?", + "Notifications": "सूचनाà¤à¤‚", + "Profile": "पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤² à¤à¤¸à¥€à¤à¤²à¤à¤¸ (P)", + "Home": "घर", + "My Cared": "माई करà¥à¤Ÿ", + "Add Card": "A6 कारà¥à¤¡", + "Add Credit Card": "कà¥à¤°à¥‡à¤¡à¤¿à¤Ÿ कारà¥à¤¡ जोड़ें", + "Please enter the cardholder name": "कृपया कारà¥à¤¡à¤§à¤¾à¤°à¤• का नाम डालें", + "Please enter the expiry date": + "कृपया समय - सीमा खतà¥à¤® होने की तारीख डालें", + "Please enter the CVV code": "कृपया कारà¥à¤¡ वेरिफ़िकेशन कोड डालें", + "Go To Favorite Places": "पसंदीदा जगहों पर जाà¤à¤", + "Go to this Target": "इस लकà¥à¤·à¥à¤¯ पर जाà¤à¤", + "My Profile": "पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤² नाम", + "Sign Out": "लॉगआउट", + "Home Page": "घर", + "Are you want to go to this site": + "कà¥à¤¯à¤¾ आप इस लोकेशन पर जाना चाहते हैं", + "MyLocation": "मेरी लोकेशन", + "my location": "मेरी लोकेशन", + "Target": "गंतवà¥à¤¯", + "Update": "अदà¥à¤¯à¤¤à¤¨", + "You Should choose rate figure": "आपको सही संखà¥à¤¯à¤¾ चà¥à¤¨à¤¨à¥€ होगी", + "Login Captin": "लॉगइन...", + "Register Captin": "कपà¥à¤¤à¤¾à¤¨ का रजिसà¥à¤Ÿà¥à¤°à¥‡à¤¶à¤¨", + "Send Verfication Code": "वेरिफ़िकेशन कोड भेजें", + "End Ride": "राइड", + "Minute": "मिनट", + "Go to passenger Location now": "अभी राइडर की लोकेशन पर जाà¤à¤", + "Duration of the Ride is": "टà¥à¤°à¤¿à¤ª की अवधि है", + "Distance of the Ride is": "टà¥à¤°à¤¿à¤ª की दूरी है", + "Name of the Passenger is": "राइडर का नाम है", + "Hello this is Captain": "नमसà¥à¤¤à¥‡, मैं कपà¥à¤¤à¤¾à¤¨ हूà¤", + "Start the Ride": "टà¥à¤°à¤¿à¤ª शà¥à¤°à¥‚ करें", + "Please Wait If passenger want To Cancel!": + "अगर राइडर कैंसिल करना चाहते हैं, तो कृपया इंतज़ार करें!", + "Total Duration:": "कà¥à¤² अवधि:", + "Active Duration:": "चरण की सकà¥à¤°à¤¿à¤¯ अवधि", + "Waiting for Captin ...": "कपà¥à¤¤à¤¾à¤¨ का इंतज़ार किया जा रहा है...", + "Age is": "उमà¥à¤° है", + "Rating is": "रेटिंग है", + "to arrive you.": "आप तक पहà¥à¤à¤šà¤¨à¥‡ के लिà¤à¥¤", + "Order History": "ऑरà¥à¤¡à¤° का इतिहास रिकॉरà¥à¤¡ करें", + "My Wallet": "मेरा वॉलेट", + "Tariff": "टैरिफ", + "Settings": "विनà¥à¤¯à¤¾à¤¸", + "Feed Back": "कà¥à¤°à¤¿à¤¯à¤¾:", + "Promos": "पà¥à¤°à¤®à¥‹à¤¶à¤¨", + "Please enter a valid 16-digit card number": + "कृपया à¤à¤• मानà¥à¤¯ PO नंबर डालें।", + "Add Phone": "टेलिफोन", + "Please enter a phone number": "कृपया फ़ोन नंबर डालें", + "You dont Add Emergency Phone Yet!": + "आपने अभी तक कोई आपातकालीन फ़ोन नहीं जोड़ा है!", + "You will arrive to your destination after": + "आप के बाद अपने डेसà¥à¤Ÿà¤¿à¤¨à¥‡à¤¶à¤¨ पर पहà¥à¤à¤šà¥‡à¤‚गे", + "You can cancel Ride now": "आप अभी टà¥à¤°à¤¿à¤ª कैंसिल कर सकते हैं", + "You Can cancel Ride After Captain did not come in the time": + "कैपà¥à¤Ÿà¤¨ के समय पर न आने के बाद आप टà¥à¤°à¤¿à¤ª कैंसिल कर सकते हैं", + "If you in Car Now. Press Start The Ride": + "अगर तà¥à¤® अभी कार में हो. टà¥à¤°à¤¿à¤ª शà¥à¤°à¥‚ करें पर टैप करें", + "You Dont Have Any amount in": "आपके पास में कोई राशि नहीं है", + "Wallet!": "à¤à¤• बटà¥à¤† नाम", + "You Have": "तà¥à¤®à¥à¤¹à¤¾à¤°à¥‡ पास बकवास है.", + "Save Credit Card": "कà¥à¤°à¥‡à¤¡à¤¿à¤Ÿ कारà¥à¤¡ रखें", + "Show Promos": "ऑफ़र देखें", + "10 and get 4% discount": "10 और 4% की छूट पाà¤à¤", + "20 and get 6% discount": "20 और 6% की छूट पाà¤à¤", + "40 and get 8% discount": "40 और 8% की छूट पाà¤à¤", + "100 and get 11% discount": "100% और 11% की छूट पाà¤à¤", + "Pay with Your PayPal": "PayPal से भà¥à¤—तान करें", + "You will choose one of above !": + "आप ऊपर दिठगठविकलà¥à¤ªà¥‹à¤‚ में से à¤à¤• चà¥à¤¨à¥‡à¤‚गे!", + "Cancel": "चलाना बनà¥à¤¦ करें", + "Delete My Account": "मेरा अकाउंट हटाà¤à¤", + "Edit Profile": "पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤² à¤à¤¸à¥€à¤à¤²à¤à¤¸ (P)", + "Name": "नाम", + "Update Gender": "लिंग अपडेट करें", + "Education": "शिकà¥à¤·à¤¾", + "Update Education": "शिकà¥à¤·à¤¾ अपडेट करें", + "Employment Type": "कारà¥à¤¯ रदà¥à¤¦ करें", + "SOS Phone": "फ़ोन नंबर", + "High School Diploma": "हाई सà¥à¤•ूल डिपà¥à¤²à¥‹à¤®à¤¾", + "Associate Degree": "जॉइंट डिपà¥à¤²à¥‹à¤®à¤¾ डिगà¥à¤°à¥€", + "Bachelor's Degree": "सà¥à¤¨à¤¾à¤¤à¤• की डिगà¥à¤°à¥€", + "Master's Degree": "मैं à¤à¤• मासà¥à¤Ÿà¤° की डिगà¥à¤°à¥€ है.", + "Doctoral Degree": "पीà¤à¤šà¤¡à¥€", + "Promos For today": "आज के पà¥à¤°à¤®à¥‹à¤¶à¤¨", + "Copy this Promo to use it in your Ride!": + "अपनी टà¥à¤°à¤¿à¤ª में इसà¥à¤¤à¥‡à¤®à¤¾à¤² करने के लिठइस पà¥à¤°à¥‹à¤®à¥‹ को कॉपी करें!", + "To change some Settings": "कà¥à¤› सेटिंग बदलने के लिà¤", + "To change Language the App": "à¤à¤ª की भाषा बदलने के लिà¤", + "Order Request Page": "ऑरà¥à¤¡à¤° अनà¥à¤°à¥‹à¤§ पेज", + "Rouats of Trip": "रावत टà¥à¤°à¤¿à¤ª", + "Passenger Name is": "यातà¥à¤°à¥€ का नाम", + "Total From Passenger is": "राइडर का कà¥à¤² योग है", + "Duration To Passenger is": "राइडर की अवधि", + "Distance To Passenger is": "राइडर की दूरी है", + "Total For You is": "आपके लिठकà¥à¤² राशि है", + "Distance is": "खाली जगह", + "KM": "किलोमीटर", + "Duration of Trip is": "टà¥à¤°à¤¿à¤ª की अवधि है", + "Minutes": "1 मिनट@ item: inlistbox", + "Apply Order": "ऑरà¥à¤¡à¤° लागू करें", + "Refuse Order": "अनà¥à¤°à¥‹à¤§ नामंज़ूर करें", + "Rate Captain": "कपà¥à¤¤à¤¾à¤¨ रेटिंग", + "Enter your Note": "अपना नोट डालें", + "Type something...": "कà¥à¤› लिखें...", + "Submit rating": "मूलà¥à¤¯à¤¾à¤‚कन पà¥à¤°à¤¦à¤¾à¤¨ करें", + "Rate Passenger": "राइडर की रेटिंग", + "Ride Summary": "टà¥à¤°à¤¿à¤ª का सारांश", + "welcome_message": "भरें - सबको नमसà¥à¤•ार", + "app_description": "आवेदनDescription", + "get_to_destination": "डेसà¥à¤Ÿà¤¿à¤¨à¥‡à¤¶à¤¨ पर पहà¥à¤à¤šà¤¨à¤¾", + "get_a_ride": "राइड लें", + "safe_and_comfortable": "सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ और आरामदायक", + "committed_to_safety": "सà¥à¤°à¤•à¥à¤·à¤¾ के लिठपà¥à¤°à¤¤à¤¿à¤¬à¤¦à¥à¤§", + "Driver Applied the Ride for You": + "à¤à¤• डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤°, जिनà¥à¤¹à¥‹à¤‚ने आपके लिठटà¥à¤°à¤¿à¤ª पूरी की है", + "Show latest promo": "नवीनतम पà¥à¤°à¥‹à¤®à¥‹ दिखाà¤à¤", + "Cancel Trip": "इस यातà¥à¤°à¤¾ को रदà¥à¤¦ करें", + "Passenger Cancel Trip": "राइडर ने टà¥à¤°à¤¿à¤ª कैंसिल की", + "Please stay on the picked point.": + "कृपया चà¥à¤¨à¥‡ गठपॉइंट पर बने रहें।", + "Trip is Begin": "यातà¥à¤°à¤¾ शà¥à¤°à¥‚ होती है", + "Hi ,I will go now": "नमसà¥à¤¤à¥‡ जी, अब मैं जा रहा हूà¤", + "Passenger come to you": "आपके राइडर आपके पास आ रहे हैं", + "Hi ,I Arrive your site": + "नमसà¥à¤¤à¥‡ जी, आप अपनी लोकेशन पर पहà¥à¤à¤š गठहैं।", + "Driver Finish Trip": "डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° की टà¥à¤°à¤¿à¤ª खतà¥à¤® होने की तारीख", + "you will pay to Driver": "आप डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° को भà¥à¤—तान करेंगे", + "Driver Cancel Your Trip": "अपनी टà¥à¤°à¤¿à¤ª कैंसिल करें, डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤°à¥¤", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "आप डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° को भà¥à¤—तान करेंगे आप डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° के समय की लागत का भà¥à¤—तान करेंगे अपना सेफ़र वॉलेट देखें", + "I will go now": "अब मैं जा रही हूà¤.", + "You Have Tips": "आपके पास बखà¥à¤¶à¥€à¤¶ है", + "tips": "सà¥à¤à¤¾à¤µ", + "Total is": "कà¥à¤² है", + "No,I want": "मैं ठीक हूà¤à¥¤", + "Your fee is": "आपका शà¥à¤²à¥à¤• है", + "Do you want to pay Tips for this Driver": + "कà¥à¤¯à¤¾ आप इस डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° को बखà¥à¤¶à¥€à¤¶ देना चाहेंगे?", + "Tip is": "मेरीबखà¥à¤¶à¥€à¤¶", + "Camera Access Denied.": "कैमरे का à¤à¤•à¥à¤¸à¥‡à¤¸ नामंज़ूर कर दिया गया।", + "Open Settings": "सेटिंग खोलें", + "GPS Required Allow !.": "जीपीà¤à¤¸ (GPS) चालू करना ज़रूरी है!", + "Your Account is Deleted": "आपका अकाउंट हटा दिया गया है", + "Are you sure to delete your account?": + "कà¥à¤¯à¤¾ आप वाकई अपना अकाउंट हटाना चाहते हैं?", + "Your data will be erased after 2 weeks": + "आपका डेटा 2 हफ़à¥à¤¤à¥‹à¤‚ के बाद मिटा दिया जाà¤à¤—ा", + "And you will can't return to use app after 1 month": + "आप à¤à¤• महीने बाद à¤à¤ª पर वापस आ सकेंगे", + "Enter Your First Name": "अपना नाम डालें", + "Are you Sure to LogOut?": "कà¥à¤¯à¤¾ आप वाकई लॉग आउट करना चाहते हैं?", + "Email Wrong": "ईमेल", + "Email you inserted is Wrong.": "आपने जो ईमेल डाला है, वह गलत है।", + "You have finished all times": "आपने हर समय काम किया है", + "if you want help you can email us here": + "अगर आप मदद चाहते हैं, तो आप हमें यहाठईमेल कर सकते हैं", + "Thanks": "धनà¥à¤¯à¤µà¤¾à¤¦", + "Email Us": "हमें à¤à¤• ईमेल भेजें", + "I cant register in your app in face detection": + "मैं फ़ेस डिटेकà¥à¤¶à¤¨ के साथ आपके à¤à¤ª के लिठसाइन अप नहीं कर सकता", + "Hi": "सà¥à¤¸à¥à¤µà¤¾à¤—तम", + "No face detected": "कोई चेहरा नहीं मिला", + "Image detecting result is": "इमेज डिटेकà¥à¤¶à¤¨ का नतीजा है", + "from 3 times Take Attention": + "3 से अधिक बार आपका धà¥à¤¯à¤¾à¤¨ आकरà¥à¤·à¤¿à¤¤ करते हैं", + "Be sure for take accurate images please": + "कृपया सटीक फ़ोटो लेना न भूलें", + "You have": "तà¥à¤®à¥à¤¹à¤¾à¤°à¥‡ पास बकवास है.", + "image verified": "फ़ोटो नोटरीकृत है", + "Next": "अगला", + "There is no help Question here": "यहाठकोई मदद का सवाल नहीं है", + "Call End": "कॉल खतà¥à¤® करें", + "You dont have Points": "आप कोई आतà¥à¤®à¤¾ है.", + "You Are Stopped For this Day !": + "आपको पूरे दिन के लिठरोक दिया गया है!", + "You must be charge your Account": + "आपको अपना अकाउंट रिचारà¥à¤œ करना होगा", + "You Refused 3 Rides this Day that is the reason": + "आपने आज 3 टà¥à¤°à¤¿à¤ª मना कर दी हैं और इसीलिà¤", + "See you Tomorrow!": "कल मिलते हैं!", + "Recharge my Account": "मेरा अकाउंट रीचारà¥à¤œ करें", + "Ok , See you Tomorrow": "ठीक है, मैं तà¥à¤®à¤¸à¥‡ कल मिलूà¤à¤—ी.", + "You are Stopped": "आपको रोक दिया गया है", + "Connected": "ऑनलाइन", + "Not Connected": "मिटाया नहीं", + "Your are far from passenger location": + "आप राइडर की लोकेशन से बहà¥à¤¤ दूर हैं", + "go to your passenger location before": + "तक अपने राइडर की लोकेशन पर जाà¤à¤", + "Passenger cancel trip": "राइडर ने टà¥à¤°à¤¿à¤ª कैंसिल कर दी", + "You will get cost of your work for this trip": + "आपको इस यातà¥à¤°à¤¾ के लिठअपने काम के लिठभà¥à¤—तान मिलेगा", + "in your wallet": "आपके वॉलेट में", + "you gain": "आप कमाते हैं", + "Order Cancelled": "निवेदन रोका गया", + "Order Cancelled by Passenger": "राइडर ने अनà¥à¤°à¥‹à¤§ कैंसिल कर दिया", + "Success": "सफल", + "Feedback data saved successfully": + "मूलà¥à¤¯à¤¾à¤‚कन डेटा सफलतापूरà¥à¤µà¤• सहेजा गया", + "No Promo for today .": "आज के लिठकोई पà¥à¤°à¤®à¥‹à¤¶à¤¨ नहीं।", + "Select your destination": "अपना डेसà¥à¤Ÿà¤¿à¤¨à¥‡à¤¶à¤¨ चà¥à¤¨à¥‡à¤‚", + "Search for your Start point": "अपना शà¥à¤°à¥à¤†à¤¤à¥€ बिंदॠढूà¤à¤¢à¥‡à¤‚", + "Search for waypoint": "WIPOINT पॉइंट खोजें", + "Current Location": "मौज़ूदा सà¥à¤¥à¤¾à¤¨ बनाठरखें (_K)", + "Add Location 1": "सà¥à¤¥à¤¾à¤¨:% 1", + "You must Verify email !.": "ईमेल असतà¥à¤¯à¤¾à¤ªà¤¿à¤¤", + "Cropper": "फ़सल", + "Saved Sucssefully": "सफलतापूरà¥à¤µà¤• सहेजा गया", + "Select Date": "दिनांक", + "Birth Date": "जनà¥à¤®à¤¦à¤¿à¤¨: @ title: group", + "Ok": "ठीक", + "the 500 points equal 30 JOD": "500 points बराबर है: 30 JOD", + "the 500 points equal 30 JOD for you": + "500 पॉइंटà¥à¤¸ आपके लिठ30 JOD के बराबर होते हैं", + "token updated": "कोड अपडेट किया गया", + "Add Location 2": "सà¥à¤¥à¤¾à¤¨ 2 जोड़ें", + "Add Location 3": "लोकेशन जोड़ें 3", + "Add Location 4": "लोकेशन जोड़ें 4", + "Waiting for your location": "आपकी लोकेशन का इंतज़ार है", + "Search for your destination": "अपना डेसà¥à¤Ÿà¤¿à¤¨à¥‡à¤¶à¤¨ ढूà¤à¤¢à¤¼à¥‡à¤‚", + "Hi! This is": "अरे, अब. इस तरफ वाला खेलेगा", + "I am using": "छवि इसà¥à¤¤à¥‡à¤®à¤¾à¤² करें", + "to ride with": "के साथ राइड करने के लिà¤", + "as the driver.": "à¤à¤• डà¥à¤°à¤¾à¤‡à¤µà¤° के रूप में", + "is driving a": "गाड़ी चलाà¤à¤", + "with license plate": "लाइसेंस पà¥à¤²à¥‡à¤Ÿ के साथ", + "I am currently located at": "फ़िलहाल मैं में हूà¤", + "Please go to Car now": "कृपया अभी कार में जाà¤à¤", + "If you need to reach me, please contact the driver directly at": + "अगर आपको मà¥à¤à¤¸à¥‡ संपरà¥à¤• करना है, तो कृपया सीधे डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° से पर संपरà¥à¤• करें", + "No Car or Driver Found in your area.": + "आपके इलाके में कोई कार या डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° नहीं मिला।", + "Please Try anther time": "फिर से कोशिश करें", + "There no Driver Aplly your order sorry for that": + "कोई भी डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° आपका अनà¥à¤°à¥‹à¤§ पूरा नहीं कर सकता, हमें अफ़सोस है।", + "Trip Cancelled": "टà¥à¤°à¤¿à¤ª कैंसिल की गई", + "The Driver Will be in your location soon .": + "आपके डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° जलà¥à¤¦ ही आपकी लोकेशन पर पहà¥à¤à¤š जाà¤à¤à¤—े।", + "The distance less than 500 meter.": "दूरी 500 मीटर से कम है।", + "Promo End !": "शो खतà¥à¤® हो गया है!", + "There is no notification yet": "अभी तक कोई नोटिफ़िकेशन नहीं है", + "Use Touch ID or Face ID to confirm payment": + "भà¥à¤—तान कनà¥à¤«à¤¼à¤°à¥à¤® करने के लिठटच आईडी या फ़ेस आईडी का इसà¥à¤¤à¥‡à¤®à¤¾à¤² करें", + "Contact us for any questions on your order.": + "अपने ऑरà¥à¤¡à¤° के बारे में किसी भी सवाल के लिठहमसे संपरà¥à¤• करें।", + "Pyament Cancelled .": "भà¥à¤—तान कैंसिल कर दिया गया।", + "type here": "यहाठलिखें", + "Scan Driver License": "डà¥à¤°à¤¾à¤‡à¤µà¤¿à¤‚ग लाइसेंस की जाà¤à¤š", + "Please put your licence in these border": + "कृपया अपना लाइसेंस इन सीमाओं के भीतर रखें", + "Camera not initialized yet": "कैमरा अभी कॉनà¥à¤«à¤¼à¤¿à¤—र नहीं किया गया है", + "Take Image": "(आह)", + "AI Page": "AI पेज", + "Take Picture Of ID Card": "अपनी आईडी की फ़ोटो लें", + "Take Picture Of Driver License Card": + "अपने डà¥à¤°à¤¾à¤‡à¤µà¤¿à¤‚ग लाइसेंस कारà¥à¤¡ की फ़ोटो लें।", + "We are process picture please wait": + "हम फ़ोटो पà¥à¤°à¥‹à¤¸à¥‡à¤¸ कर रहे हैं, कृपया इंतज़ार करें।", + "There is no data yet.": "अभी तक कोई डेटा नहीं है।", + "Name :": "नाम:", + "Drivers License Class:": "डà¥à¤°à¤¾à¤‡à¤µà¤¿à¤‚ग लाइसेंस शà¥à¤°à¥‡à¤£à¥€:", + "Document Number:": "दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ संखà¥à¤¯à¤¾:", + "Address:": "आईपी पता:", + "Height:": "ऊà¤à¤šà¤¾à¤ˆà¤ƒ", + "Expiry Date:": "समापà¥à¤¤à¤¿ तिथि:", + "Date of Birth:": "जनà¥à¤®à¤¦à¤¿à¤¨: @ title: group", + "You can't continue with us .": "आप हमारे साथ जारी नहीं रख सकते।", + "You should renew Driver license": + "आपको अपने डà¥à¤°à¤¾à¤‡à¤µà¤¿à¤‚ग लाइसेंस का नवीनीकरण करना होगा", + "Detect Your Face": "अपने आप पता लगाà¤à¤", + "Go to next step": "अगले चरण पर जाà¤à¤", + "scan Car License.": "गाड़ी के लाइसेंस की जाà¤à¤šà¥¤", + "Name in arabic": "अरबी में नाम", + "Drivers License Class": "डà¥à¤°à¤¾à¤‡à¤µà¤¿à¤‚ग लाइसेंस शà¥à¤°à¥‡à¤£à¥€", + "Date of Birth": "जनà¥à¤®à¤¦à¤¿à¤¨: @ title: group", + "Age": "जीवन", + "Lets check Car license": "आइठगाड़ी का लाइसेंस देखें", + "Car Kind": "कार के चारों ओर ले आओ।", + "Car Plate": "कार के चारों ओर ले आओ।", + "Lets check License Back Face": "आइठबैक फ़ेस लाइसेंस की जाà¤à¤š करें", + "Car License Card": "गाड़ी का लाइसेंस कारà¥à¤¡", + "No image selected yet": "अभी तक कोई फ़ोटो नहीं चà¥à¤¨à¥€ गई है", + "Made :": "मेक:", + "model :": "मॉडल:", + "VIN :": "चेसिस नंबर:", + "year :": "साल", + "ÙExpire Date": "खतà¥à¤® होने की तारीख", + "Login Driver": "लॉगइन...", + "Password must br at least 6 character.": + "पासवरà¥à¤¡ कम - से - कम 6 कैरेकà¥à¤Ÿà¤° का होना चाहिà¤à¥¤", + "if you don't have account": "अगर आपके पास अकाउंट नहीं है", + "Here recorded trips audio": "यहाठऑडियो टà¥à¤°à¤¿à¤ª रिकॉरà¥à¤¡à¤¿à¤‚ग दी गई हैं", + "Register as Driver": "डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° के रूप में साइन अप करें", + "Privacy Notice": "निजता सूचना", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the": + "नीचे \"मैं सहमत हूà¤\" चà¥à¤¨à¤•र, मैंने नियम और शरà¥à¤¤à¥‹à¤‚ की समीकà¥à¤·à¤¾ की है, सहमति दी है और उनà¥à¤¹à¥‡à¤‚ सà¥à¤µà¥€à¤•ार किया है", + ". I am at least 18 years of age.": + ". मेरी उमà¥à¤° कम - से - कम 18 साल है।", + "Log Out Page": "लॉगआउट", + "Log Off": "बाहर आ रहा है.", + "Register Driver": "डà¥à¤°à¤¾à¤‡à¤µà¤° चà¥à¤¨à¥‡à¤‚", + "Verify Email For Driver": "डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° का ईमेल देखें", + "Admin DashBoard": "à¤à¤¡à¤®à¤¿à¤¨ डैशबोरà¥à¤¡", + "Your name": "तà¥à¤®à¥à¤¹à¤¾à¤°à¤¾ नाम", + "your ride is applied": "आपकी टà¥à¤°à¤¿à¤ª लागू कर दी गई है", + "Your password": "आपका पासवरà¥à¤¡ बदला गया.", + "LE": "मिसà¥à¤° पाउणà¥à¤¡", + "JOD": "जॉरà¥à¤¡à¤¨ दिनार", + "m": "% 1 मी", + "We search nearst Driver to you": + "हम आपके सबसे नज़दीकी डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° की तलाश कर रहे हैं", + "please wait till driver accept your order": + "कृपया डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° के आपका अनà¥à¤°à¥‹à¤§ à¤à¤•à¥à¤¸à¥‡à¤ªà¥à¤Ÿ करने तक इंतज़ार करें", + "No accepted orders? Try raising your trip fee to attract riders.": + "कोई à¤à¤•à¥à¤¸à¥‡à¤ªà¥à¤Ÿ किठगठऑरà¥à¤¡à¤° नहीं हैं? राइडर को आकरà¥à¤·à¤¿à¤¤ करने के लिठअपना टà¥à¤°à¤¿à¤ª शà¥à¤²à¥à¤• बढ़ाà¤à¤à¥¤", + "You should select one": "आपको à¤à¤• चà¥à¤¨à¤¨à¤¾ होगा", + "The driver accept your order for": + "आपके डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° ने के लिठआपका अनà¥à¤°à¥‹à¤§ मंज़ूर कर लिया है", + "Increase Fee": "शà¥à¤²à¥à¤• बढ़ाà¤à¤", + "No, thanks": "मैं देख रहा हूà¤.", + "The driver on your way": "आपके डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° रासà¥à¤¤à¥‡ में हैं", + "Total price from": "से कà¥à¤² किराया", + "Order Details Intaleq": "ऑरà¥à¤¡à¤° विवरण", + "Order Applied": "ऑरà¥à¤¡à¤° लागू किया गया", + "accepted your order": "आपका अनà¥à¤°à¥‹à¤§ मंज़ूर कर लिया गया है", + "We regret to inform you that another driver has accepted this order.": + "हमें यह बताते हà¥à¤ अफ़सोस हो रहा है कि किसी दूसरे डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° ने यह अनà¥à¤°à¥‹à¤§ à¤à¤•à¥à¤¸à¥‡à¤ªà¥à¤Ÿ कर लिया है।", + "Selected file:": "मौज़ूदा फ़ाइल को खोलें", + "Your trip cost is": "आपकी टà¥à¤°à¤¿à¤ª का खरà¥à¤š", + "this will delete all files from your device": + "यह आपके डिवाइस से सभी फ़ाइलों को हटा देगा", + "you have a negative balance of": "आपका बैलेंस नेगेटिव है", + "in your": "डारà¥à¤¸à¥€ विक?", + "Exclusive offers and discounts always with the Intaleq app": + "यातà¥à¤°à¤¾ à¤à¤ª के साथ हमेशा खास ऑफ़र और छूट", + "Please go to Car Driver": "कृपया कार के डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° के पास जाà¤à¤", + "wallet due to a previous trip.": "पिछली टà¥à¤°à¤¿à¤ª की वजह से वॉलेट।", + "Submit Question": "पà¥à¤°à¤¶à¥à¤¨ सबमिट करें", + "Please enter your Question.": "कृपया अपना पà¥à¤°à¤¶à¥à¤¨ दरà¥à¤œ करें।", + "Help Details": "मदद का बà¥à¤¯à¥Œà¤°à¤¾", + "No trip yet found": "अभी तक कोई टà¥à¤°à¤¿à¤ª नहीं मिली है", + "No Response yet.": "अभी तक कोई जवाब नहीं मिला।", + "You Earn today is": "आज आपकी कमाई है", + "You Have in": "आपके पास पर है", + "Total points is": "कà¥à¤² सà¥à¤•ोर है", + "Total Connection Duration:": "कà¥à¤² कनेकà¥à¤¶à¤¨ अवधि:", + "H and": "H और", + "Passenger name :": "यातà¥à¤°à¥€ का नाम:", + "Cost Of Trip IS": "टà¥à¤°à¤¿à¤ª का खरà¥à¤š है", + "Arrival time": "पहà¥à¤à¤š अनà¥à¤®à¤¤à¤¿à¤¯à¤¾à¤", + "arrival time to reach your point": + "अपने डेसà¥à¤Ÿà¤¿à¤¨à¥‡à¤¶à¤¨ तक पहà¥à¤à¤šà¤¨à¥‡ का समय", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "à¤à¤Ÿà¤ªà¤Ÿ राइड और डिलीवरी के लिà¤, किराठका हिसाब गतिशील तरीके से लगाया जाता है। आरामदायक राइड के लिà¤, किराया समय और दूरी पर आधारित होता है।", + "Hello this is Driver": "नमसà¥à¤¤à¥‡ जी, मैं डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° हूà¤", + "Is the Passenger in your Car ?": "कà¥à¤¯à¤¾ राइडर आपकी गाड़ी में हैं?", + "Please wait for the passenger to enter the car before starting the trip.": + "कृपया टà¥à¤°à¤¿à¤ª शà¥à¤°à¥‚ करने से पहले राइडर के गाड़ी में बैठने का इंतज़ार करें।", + "No ,still Waiting.": + "नहीं , मैं अभी भी तà¥à¤®à¥à¤¹à¤¾à¤°à¤¾ इंतज़ार कर रही हूà¤à¥¤", + "I arrive you": "मैं पहà¥à¤à¤š गया!", + "I Arrive your site": "मैं पहà¥à¤à¤š गया!", + "You are not in near to passenger location": + "आप राइडर की लोकेशन के पास नहीं हैं", + "please go to picker location exactly": + "कृपया चयन की सटीक लोकेशन पर जाà¤à¤", + "You Can Cancel Trip And get Cost of Trip From": + "आप टà¥à¤°à¤¿à¤ª कैंसिल कर सकते हैं और से टà¥à¤°à¤¿à¤ª का खरà¥à¤š उठा सकते हैं", + "Are you sure to cancel?": "कà¥à¤¯à¤¾ आप वाक़ई रदà¥à¤¦ करना चाहते हैं?", + "Yes": "نعم", + "Insert Emergincy Number": "आपातकालीन नंबर डालें", + "Best choice for comfort car and flexible route and stops point": + "आरामदायक कार, सà¥à¤µà¤¿à¤§à¤¾à¤œà¤¨à¤• मारà¥à¤— और ठहरने की जगह के लिठसबसे अचà¥à¤›à¤¾ विकलà¥à¤ª", + "Insert": "पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ", + "This is for delivery or a motorcycle.": + "यह डिलीवरी या मोटरसाइकिल के लिठहै।", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "यह टà¥à¤°à¤¿à¤ª आपके शà¥à¤°à¥à¤†à¤¤à¥€ सà¥à¤¥à¤¾à¤¨ से सीधे आपके डेसà¥à¤Ÿà¤¿à¤¨à¥‡à¤¶à¤¨ तक जाती है। डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° को तय किठगठरासà¥à¤¤à¥‡ पर चलना होगा", + "You can decline a request without any cost": + "आप बिना किसी शà¥à¤²à¥à¤• के अनà¥à¤°à¥‹à¤§ नामंज़ूर कर सकते हैं", + "Perfect for adventure seekers who want to experience something new and exciting": + "à¤à¤¡à¤µà¥‡à¤‚चर चाहने वालों के लिठआदरà¥à¤¶ जो कà¥à¤› नया और रोमांचक आज़माना चाहते हैं", + "My current location is:": "मेरी मौजूदा लोकेशन है:", + "and I have a trip on": "और मेरी में à¤à¤• यातà¥à¤°à¤¾ है", + "App with Passenger": "राइडर के साथ आवेदन करें", + "You will be pay the cost to driver or we will get it from you on next trip": + "लागत का भà¥à¤—तान डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° को किया जाà¤à¤—ा या हम इसे अगली टà¥à¤°à¤¿à¤ª पर आपसे ले लेंगे", + "Trip has Steps": "टà¥à¤°à¤¿à¤ª में सà¥à¤Ÿà¥‡à¤ª हैं", + "Distance from Passenger to destination is": + "डेसà¥à¤Ÿà¤¿à¤¨à¥‡à¤¶à¤¨ तक राइडर की दूरी है", + "price is": "किराया है", + "This ride type does not allow changes to the destination or additional stops": + "टà¥à¤°à¤¿à¤ª का यह पà¥à¤°à¤•ार डेसà¥à¤Ÿà¤¿à¤¨à¥‡à¤¶à¤¨ में बदलाव या अतिरिकà¥à¤¤ सà¥à¤Ÿà¥‰à¤ª की इजाज़त नहीं देता है", + "This price may be changed": "यह किराया बदल सकता है", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "कोई सिम कारà¥à¤¡ नहीं, कोई समसà¥à¤¯à¤¾ नहीं! हमारे à¤à¤ª के ज़रिठसीधे अपने डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° से संपरà¥à¤• करें। हम आपकी निजता सà¥à¤¨à¤¿à¤¶à¥à¤šà¤¿à¤¤ करने के लिठउनà¥à¤¨à¤¤ तकनीक का उपयोग करते हैं।", + "This ride type allows changes, but the price may increase": + "इस तरह की टà¥à¤°à¤¿à¤ª में बदलाव हो सकते हैं, लेकिन किराया बढ़ सकता है", + "message From passenger": "राइडर का मैसेज", + "Select one message": "सà¥à¤µà¤šà¤¾à¤²à¤¿à¤¤à¤†à¤µà¤¾à¤œ:", + "My location is correct. You can search for me using the navigation app": + "मेरी लोकेशन सही है। आप नेविगेशन à¤à¤ª का इसà¥à¤¤à¥‡à¤®à¤¾à¤² करके मà¥à¤à¥‡ खोज सकते हैं", + "I'm waiting for you": "मैं आपका इंतज़ार कर रहा हूà¤", + "Hello, I'm at the agreed-upon location": + "नमसà¥à¤¤à¥‡ जी, मैं सहमत लोकेशन पर हूà¤", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "हमने देखा कि गति 100 किमी/घंटा से अधिक है। कृपया अपनी सà¥à¤°à¤•à¥à¤·à¤¾ के लिठइसे धीमा करें। अगर आप असà¥à¤°à¤•à¥à¤·à¤¿à¤¤ महसूस करते हैं, तो आप किसी संपरà¥à¤• के साथ अपनी टà¥à¤°à¤¿à¤ª का बà¥à¤¯à¥Œà¤°à¤¾ शेयर कर सकते हैं या रेड डिसà¥à¤Ÿà¥à¤°à¥‡à¤¸ बटन का इसà¥à¤¤à¥‡à¤®à¤¾à¤² करके पà¥à¤²à¤¿à¤¸ को कॉल कर सकते हैं।", + "Warning: Intaleqing detected!": "चेतावनी: ओवरसà¥à¤ªà¥€à¤¡ का पता चला!", + "Please help! Contact me as soon as possible.": + "कृपया मेरी मदद करें! जितनी जलà¥à¤¦à¥€ हो सके मà¥à¤à¤¸à¥‡ संपरà¥à¤• करें।", + "Share Trip Details": "टà¥à¤°à¤¿à¤ª का बà¥à¤¯à¥Œà¤°à¤¾ दें", + "Car Plate is": "कार के चारों ओर ले आओ।", + "the 3000 points equal 3000 L.E for you": + "3000 अंक आपके लिठ3000 EGP के बराबर है", + "So go and gain your money": "अपने पैसे कमाने के लिठआगे बढ़ें", + "the 3000 points equal 3000 L.E": "3000 points बराबर है: 3000 EGP", + "The payment was not approved. Please try again.": + "भà¥à¤—तान मंज़ूर नहीं किया गया। फिर से कोशिश करें", + "Payment Failed": "भà¥à¤—तान नहीं हो सका", + "Error": "% 1 तà¥à¤°à¥à¤Ÿà¤¿", + "An error occurred during the payment process.": + "आपके भà¥à¤—तान में कोई गड़बड़ी हà¥à¤ˆà¥¤", + "The payment was approved.": "भà¥à¤—तान मंज़ूर हो गया।", + "Payment Successful": "भà¥à¤—तान सफल रहा", + "No ride found yet": "अभी तक कोई टà¥à¤°à¤¿à¤ª नहीं मिली है", + "Accept Order": "निवेदन रोका गया", + "reject your order.": "इनकार करें", + "Bottom Bar Example": "निचला पटल", + "Driver phone": "डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° का फ़ोन नंबर", + "Statistics": "आंकड़े", + "Origin": "संपतà¥à¤¤à¤¿", + "Destination": "पहà¥à¤à¤š अनà¥à¤®à¤¤à¤¿à¤¯à¤¾à¤", + "Driver Name": "डà¥à¤°à¤¾à¤‡à¤µà¤° नामः", + "Driver Car Plate": "डà¥à¤°à¤¾à¤‡à¤µà¤¿à¤‚ग लाइसेंस पà¥à¤²à¥‡à¤Ÿ", + "Available for rides": "राइड के लिठउपलबà¥à¤§", + "Scan Id": "पहचान की जाà¤à¤š", + "Camera not initilaized yet": "कैमरा अभी कॉनà¥à¤«à¤¼à¤¿à¤—र नहीं किया गया है", + "Scan ID MklGoogle": "MklGoogle पहचान जाà¤à¤š", + "Language": "भाषा", + "Jordan": "जॉरà¥à¤¡à¤¨", + "USA": "संयà¥à¤•à¥à¤¤ राजà¥à¤¯ अमेरिका", + "Egypt": "मिशà¥à¤°", + "Turkey": "तà¥à¤°à¥à¤•ी", + "Saudi Arabia": "सऊदी अरब", + "Qatar": "क़तर", + "Bahrain": "बहारीन", + "Kuwait": "कà¥à¤µà¥ˆà¤¤", + "But you have a negative salary of": + "लेकिन आपके पास नकारातà¥à¤®à¤• वेतन है", + "Promo Code": "पà¥à¤°à¥‹à¤®à¥‹ कोड", + "Your trip distance is": "आपकी टà¥à¤°à¤¿à¤ª की दूरी है", + "Enter promo code": "पà¥à¤°à¥‹à¤®à¥‹ कोड डालें", + "You have promo!": "आपके पास à¤à¤• पà¥à¤°à¤®à¥‹à¤¶à¤¨ है!", + "Cost Duration": "कासà¥à¤Ÿ 2", + "Duration is": "अवधि है", + "Leave": "छोड़ें", + "Join": "दरà¥à¤¶à¤• के रूप में शामिल हों (J)", + "You Should be select reason.": "आपको à¤à¤• कारण चà¥à¤¨à¤¨à¤¾ होगा।", + "\$": "\$", + "Waiting for Driver ...": + "डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° का इंतज़ार किया जा रहा है...", + "Latest Recent Trip": "ताज़ा टà¥à¤°à¤¿à¤ª", + "from your list": "आपकी लिसà¥à¤Ÿ से", + "Do you want to change Work location": + "कà¥à¤¯à¤¾ आप कारà¥à¤¯ सà¥à¤¥à¤¾à¤¨ बदलना चाहेंगे?", + "Do you want to change Home location": + "कà¥à¤¯à¤¾ आप घर की लोकेशन बदलना चाहेंगे", + "We Are Sorry That we dont have cars in your Location!": + "हमें अफ़सोस है कि आपकी लोकेशन पर कारें उपलबà¥à¤§ नहीं हैं!", + "Choose from Map": "मैप से चà¥à¤¨à¥‡à¤‚", + "Pick your ride location on the map - Tap to confirm": + "मैप पर अपनी पिकअप लोकेशन चà¥à¤¨à¥‡à¤‚ - कनà¥à¤«à¤¼à¤°à¥à¤® करने के लिठटैप करें", + "To Work": "काम के लिà¤", + "Are you want to go this site": "कà¥à¤¯à¤¾ आप इस लोकेशन पर जाना चाहते हैं", + "Closest & Cheapest": "सबसे नज़दीकी और सबसे ससà¥à¤¤à¥€", + "Work Saved": "सेव", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq à¤à¤• सà¥à¤°à¤•à¥à¤·à¤¿à¤¤, भरोसेमंद और सà¥à¤²à¤­ राइड - हेलिंग à¤à¤ª है।", + "With Intaleq, you can get a ride to your destination in minutes.": + "यातà¥à¤°à¤¾ के साथ, आप मिनटों में अपने डेसà¥à¤Ÿà¤¿à¤¨à¥‡à¤¶à¤¨ तक राइड ले सकते हैं।", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "SAFAR सà¥à¤°à¤•à¥à¤·à¤¾ के लिठपà¥à¤°à¤¤à¤¿à¤¬à¤¦à¥à¤§ है, और हमारे सभी कमांडरों की सावधानीपूरà¥à¤µà¤• जांच की जाती है और पृषà¥à¤ à¤­à¥‚मि की जाà¤à¤š की जाती है।", + "To Home": "घर", + "Home Saved": "सेव", + "Destination selected": "डेसà¥à¤Ÿà¤¿à¤¨à¥‡à¤¶à¤¨ चà¥à¤¨à¤¾ गया", + "Now select start pick": "अब चयन शà¥à¤°à¥‚ करें चà¥à¤¨à¥‡à¤‚", + "Pick from map": "मैप से चà¥à¤¨à¥‡à¤‚", + "Click here point": "यहाठकà¥à¤²à¤¿à¤• करें", + "No Car in your site. Sorry!": + "आपकी लोकेशन में कोई कार नहीं है। कà¥à¤·à¤®à¤¾ करें!", + "Nearest Car for you about": "आपकी सबसे नज़दीकी कार लगभग", + "N/A": "जानकारियाठनहीं", + "From :": "दà¥à¤µà¤¾à¤°à¤¾:", + "Get Details of Trip": "टà¥à¤°à¤¿à¤ª का बà¥à¤¯à¥Œà¤°à¤¾ पाà¤à¤", + "If you want add stop click here": + "अगर आप कोई सà¥à¤Ÿà¥‰à¤ª जोड़ना चाहते हैं, तो यहाठकà¥à¤²à¤¿à¤• करें", + "Driver": "डà¥à¤°à¤¾à¤‡à¤µà¤°", + "Where you want go": "आप कहाठजाना चाहते हैं?", + "My Card": "mera card kho gaya hai", + "Start Record": "रिकारà¥à¤¡ करने के लिठआरंभ कर रहा है", + "Wallet": "हमअपनेहाथोंपरकाफी लड़ाई है तो à¤à¤²à¥‡à¤¨ का बटà¥à¤†. .", + "History of Trip": "टà¥à¤°à¤¿à¤ª की तारीख", + "Helping Center": "मदद!", + "Record saved": "रिकॉरà¥à¤¡ सेव किया गया", + "Trips recorded": "रिकॉरà¥à¤¡ की गई टà¥à¤°à¤¿à¤ª", + "Select Your Country": "अपना देश चà¥à¤¨à¥‡à¤‚", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "यह पकà¥à¤•ा करने के लिठकि आपके पास अपनी लोकेशन के लिठसबसे सटीक जानकारी है, कृपया नीचे अपना देश चà¥à¤¨à¥‡à¤‚। इससे आपके देश के लिठà¤à¤ª के अनà¥à¤­à¤µ और कॉनà¥à¤Ÿà¥‡à¤‚ट को कसà¥à¤Ÿà¤®à¤¾à¤‡à¤œà¤¼ करने में मदद मिलेगी।", + "Are you sure to delete recorded files": + "कà¥à¤¯à¤¾ आप वाकई लॉग की गई फ़ाइलों को हटाना चाहते हैं", + "Select recorded trip": "रिकॉरà¥à¤¡ की गई टà¥à¤°à¤¿à¤ª चà¥à¤¨à¥‡à¤‚", + "Card Number": "कारà¥à¤¡ संखà¥à¤¯", + "Hi, Where to": "नमसà¥à¤¤à¥‡, कहाठजाना है?", + "Pick your destination from Map": "मैप से अपना डेसà¥à¤Ÿà¤¿à¤¨à¥‡à¤¶à¤¨ चà¥à¤¨à¥‡à¤‚", + "Add Stops": "सà¥à¤Ÿà¥‰à¤ª जोड़ें", + "Get Direction": "रासà¥à¤¤à¤¾ जानें", + "Add Location": "लोकेशन जोड़ें", + "Switch Rider": "राइडर बदलें", + "You will arrive to your destination after timer end.": + "टाइमर की समय - सीमा खतà¥à¤® होने के बाद आप अपने डेसà¥à¤Ÿà¤¿à¤¨à¥‡à¤¶à¤¨ पर पहà¥à¤à¤š जाà¤à¤à¤—े।", + "You can cancel trip": "आप टà¥à¤°à¤¿à¤ª कैंसिल कर सकते हैं", + "The driver waitting you in picked location .": + "आपके डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° तय लोकेशन पर आपका इंतज़ार कर रहे हैं।", + "Pay with Your": "के दà¥à¤µà¤¾à¤°à¤¾ खोलें (i)", + "Pay with Credit Card": "कà¥à¤°à¥‡à¤¡à¤¿à¤Ÿ कारà¥à¤¡ से भà¥à¤—तान करें", + "Payment History": "भà¥à¤—तान इतिहास", + "Show Promos to Charge": "शिपिंग पà¥à¤°à¤®à¥‹à¤¶à¤¨ दिखाà¤à¤", + "Point": "pt", + "Driver Wallet": "डà¥à¤°à¤¾à¤‡à¤µà¤° पारà¥à¤Ÿà¤¨à¤° का वॉलेट", + "Total Points is": "कà¥à¤² सà¥à¤•ोर है", + "Total Budget from trips is": "टà¥à¤°à¤¿à¤ª का कà¥à¤² बजट है", + "Total Amount:": "कà¥à¤² राश", + "Total Budget from trips by": "तक टà¥à¤°à¤¿à¤ª का कà¥à¤² बजट", + "Credit card is": "कà¥à¤°à¥‡à¤¡à¤¿à¤Ÿ कारà¥à¤¡", + "This amount for all trip I get from Passengers": + "यह राशि उन सभी टà¥à¤°à¤¿à¤ª के लिठहै, जो मà¥à¤à¥‡ राइडर से मिलती हैं", + "Pay from my budget": "मेरे बजट से भà¥à¤—तान करें", + "This amount for all trip I get from Passengers and Collected For me in": + "यह राशि उन सभी टà¥à¤°à¤¿à¤ª के लिठहै, जो मà¥à¤à¥‡ में मेरे लिठइकटà¥à¤ à¤¾ किठगठराइडर से मिलती हैं", + "You can buy points from your budget": + "आप अपने बजट से पॉइंट खरीद सकते हैं", + "insert amount": "राशि डालें", + "You can buy Points to let you online": + "आप ऑनलाइन à¤à¤•à¥à¤¸à¥‡à¤¸ करने के लिठपॉइंट खरीद सकते हैं", + "by this list below": "नीचे इस सूची के माधà¥à¤¯à¤® से", + "Create Wallet to receive your money": + "अपना पैसा पाने के लिठà¤à¤• वॉलेट बनाà¤à¤", + "Enter your feedback here": "अपना फ़ीडबैक यहाठडालें", + "Please enter your feedback.": "कृपया अपने नोटà¥à¤¸ का टेकà¥à¤¸à¥à¤Ÿ डालें", + "Feedback": "लांच फ़ीडबैक सकà¥à¤·à¤® करें (l)", + "Click here to Show it in Map": + "मैप पर इसे देखने के लिठयहाठकà¥à¤²à¤¿à¤• करें", + "Canceled": "कैंसिल किया गया", + "Type your Email": "अपना ईमेल टाइप करें", + "No I want": "मैं ठीक हूà¤à¥¤", + "Email is": "ईमेल", + "Phone Number is": "फ़ोन नंबर", + "Date of Birth is": "जनà¥à¤®à¤¦à¤¿à¤¨: @ title: group", + "Sex is": "लिंग है", + "Car Details": "गाड़ी का बà¥à¤¯à¥Œà¤°à¤¾", + "VIN is": "सà¥à¤•ेलेटान नक़ल करें", + "Color is": "रंग है", + "Make is": "मेक है", + "Model is": "फ़ॉरà¥à¤® यहाठसे:", + "Year is": "वरà¥à¤·", + "Edit Your data": "अपने बà¥à¤¯à¥Œà¤°à¥‡ में बदलाव करें", + "write vin for your car": "अपनी गाड़ी का चेसिस नंबर लिखें", + "VIN": "चेसिस नंबर", + "write Color for your car": "अपनी कार का रंग टाइप करें", + "write Make for your car": "अपनी कार के लिठमेक लिखें", + "write Model for your car": "अपनी कार का मॉडल टाइप करें", + "write Year for your car": "अपनी कार के लिठसाल टाइप करें", + "write Expiration Date for your car": + "अपनी गाड़ी की समय - सीमा खतà¥à¤® होने की तारीख लिखें", + "Tariffs": "परिभाषाà¤à¤", + "Minimum fare": "30 मि.", + "Maximum fare": "अधि.", + "Flag-down fee": "सà¥à¤Ÿà¥‰à¤ªà¤“वर शà¥à¤²à¥à¤•", + "Including Tax": "टैकà¥à¤¸ सहित", + "BookingFee": "बà¥à¤•िंग शà¥à¤²à¥à¤•", + "Morning": "Apki ek photo dekh skta hu", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "07:30 - 10:30 (गà¥à¤°à¥à¤µà¤¾à¤°, शà¥à¤•à¥à¤°à¤µà¤¾à¤°, शनिवार, सोमवार)", + "Evening": "और फिर à¤à¤• शाम...", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "12:00 - 15:00 (गà¥à¤°à¥à¤µà¤¾à¤°, शà¥à¤•à¥à¤°à¤µà¤¾à¤°, शनिवार, सोमवार)", + "Night": "रात", + "You have in account": "आपके अकाउंट में है", + "Select Country": "देश चà¥à¤¨à¥‡à¤‚", + "Ride Today :": "आज ही राइड का अनà¥à¤°à¥‹à¤§ करें :-", + "After this period": "इस अवधि के बाद", + "You can't cancel!": "आप कैंसिल नहीं कर सकते!", + "from 23:59 till 05:30": "23:59 - 05:30", + "Rate Driver": "डà¥à¤°à¤¾à¤‡à¤µà¤° चà¥à¤¨à¥‡à¤‚", + "Total Cost is": "कà¥à¤² लागत है", + "Write note": "टिपà¥à¤ªà¤£à¥€à¤ƒ", + "Time to arrive": "पहà¥à¤à¤šà¤¨à¥‡ का अनà¥à¤®à¤¾à¤¨à¤¿à¤¤ समय", + "Ride Summaries": "टà¥à¤°à¤¿à¤ª के सारांश", + "Total Cost": "कà¥à¤² लागत", + "Average of Hours of": "कारà¥à¤¯ घंटे@ info: whatsthis", + "is ON for this month": "इस महीने चल रहा है", + "Days": "2 दिन", + "Total Hours on month": "हर महीने घंटों की कà¥à¤² संखà¥à¤¯à¤¾", + "Counts of Hours on days": "दिनों में घंटे", + "OrderId": "निवेदन रोका गया", + "created time": "निरà¥à¤®à¤¾à¤£ समय", + "Intaleq Over": "à¤à¤¨à¤¿à¤®à¥‡à¤¶à¤¨ गति", + "I will slow down": "मैं धीमा हो जाऊà¤à¤—ी.", + "Map Passenger": "राइडर मैप", + "Be Slowly": "धीमा रहें", + "If you want to make Google Map App run directly when you apply order": + "यदि आप कमांड लागू करते समय सीधे Google मानचितà¥à¤° लॉनà¥à¤š करना चाहते हैं", + "You can change the language of the app": + "आप à¤à¤ª की भाषा बदल सकते हैं", + "Your Budget less than needed": "आपका बजट कम बजट वाला है", + "You can change the Country to get all features": + "आप सभी सà¥à¤µà¤¿à¤§à¤¾à¤à¤ पाने के लिठदेश बदल सकते हैं", + "Change Country": "गैर - देश" + }, + "fa": { + "Order": "Ø³ÙØ§Ø±Ø´", + "OrderVIP": "Ø³ÙØ§Ø±Ø´ VIP", + "Cancel Trip": "لغو Ø³ÙØ±", + "Passenger Cancel Trip": "Ù…Ø³Ø§ÙØ± Ø³ÙØ± را لغو کرد", + "VIP Order": "Ø³ÙØ§Ø±Ø´ VIP", + "The driver accepted your trip": "راننده Ø³ÙØ± شما را Ù¾Ø°ÛŒØ±ÙØª", + "message From passenger": "پیام از Ø·Ø±Ù Ù…Ø³Ø§ÙØ±", + "Cancel": "لغو", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "Ø³ÙØ± لغو شد. هزینه Ø³ÙØ± به کی٠پول شما اضاÙÙ‡ خواهد شد.", + "token change": "تغییر رمز", + "face detect": "تشخیص چهره", + "Face Detection Result": "نتیجه تشخیص چهره", + "similar": "مشابه", + "not similar": "غیر مشابه", + "Hi ,I will go now": "سلام، من الان میروم", + "Passenger come to you": "Ù…Ø³Ø§ÙØ± به سمت شما Ù…ÛŒ آید", + "Call Income": "تماس ورودی", + "Call Income from Passenger": "تماس ورودی از Ù…Ø³Ø§ÙØ±", + "Criminal Document Required": "مدرک جنایی مورد نیاز است", + "You should have upload it .": "شما باید آن را بارگذاری Ù…ÛŒ کردید.", + "Call End": "پایان تماس", + "The order has been accepted by another driver.": + "Ø³ÙØ§Ø±Ø´ توسط راننده دیگری Ù¾Ø°ÛŒØ±ÙØªÙ‡ شده است.", + "The order Accepted by another Driver": + "Ø³ÙØ§Ø±Ø´ توسط راننده دیگر Ù¾Ø°ÛŒØ±ÙØªÙ‡ شد", + "We regret to inform you that another driver has accepted this order.": + "متاسÙیم به اطلاع شما برسانیم Ú©Ù‡ راننده دیگری این Ø³ÙØ§Ø±Ø´ را Ù¾Ø°ÛŒØ±ÙØªÙ‡ است.", + "Driver Applied the Ride for You": + "راننده برای شما درخواست Ø³ÙØ± داده است", + "Applied": "اعمال شد", + "Hi ,I Arrive your site": "سلام، من به موقعیت شما رسیدم", + "Please go to Car Driver": "Ù„Ø·ÙØ§ به سمت راننده خودرو بروید", + "Ok I will go now.": "باشه، من الان میروم.", + "Accepted Ride": "Ø³ÙØ± Ù¾Ø°ÛŒØ±ÙØªÙ‡ شد", + "Driver Accepted the Ride for You": "راننده Ø³ÙØ± را برای شما Ù¾Ø°ÛŒØ±ÙØª", + "Promo": "تبلیغ", + "Show latest promo": "نمایش آخرین تبلیغ", + "Trip Monitoring": "نظارت بر Ø³ÙØ±", + "Driver Is Going To Passenger": "راننده به سمت Ù…Ø³Ø§ÙØ± Ù…ÛŒ رود", + "Please stay on the picked point.": "Ù„Ø·ÙØ§ در نقطه انتخاب شده بمانید.", + "message From Driver": "پیام از طر٠راننده", + "Trip is Begin": "Ø³ÙØ± شروع شد", + "Cancel Trip from driver": "لغو Ø³ÙØ± از طر٠راننده", + "We will look for a new driver.\nPlease wait.": + "ما به دنبال راننده جدیدی خواهیم بود.\nÙ„Ø·ÙØ§ صبر کنید.", + "The driver canceled your ride.": "راننده Ø³ÙØ± شما را لغو کرد.", + "Driver Finish Trip": "راننده Ø³ÙØ± را تمام کرد", + "you will pay to Driver": "شما به راننده پرداخت خواهید کرد", + "Don’t forget your personal belongings.": + "وسایل شخصی خود را ÙØ±Ø§Ù…وش نکنید.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "Ù„Ø·ÙØ§ مطمئن شوید Ú©Ù‡ تمام وسایل شخصی خود را برداشته‌اید Ùˆ اگر مبلغ باقیمانده‌ای وجود دارد، قبل از Ø±ÙØªÙ† به کی٠پول شما اضاÙÙ‡ شده است. از اینکه برنامه Intaleq را انتخاب کردید متشکریم", + "Finish Monitor": "پایان نظارت", + "Trip finished": "Ø³ÙØ± به پایان رسید", + "Call Income from Driver": "تماس ورودی از راننده", + "Driver Cancelled Your Trip": "راننده Ø³ÙØ± شما را لغو کرد", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "شما به راننده پرداخت خواهید کرد، هزینه زمان راننده را پرداخت خواهید کرد، به کی٠پول Intaleq خود نگاه کنید", + "Order Applied": "Ø³ÙØ§Ø±Ø´ اعمال شد", + //firebase + + "registration_date": "تاریخ ثبت نام", + "expiration_date": "انقضا:", + "rating_count": "تعداد بررسی ها", + "rating_driver": "ارزیابی راننده", + "age": "سن/سن", + "vin": "شماره شناسایی خودرو رو توی ترابری", + "car_color": "& رنگ‌", + "car_plate": "پلاک اتومبیل", + "car_model": "مدل ماشین:", + "education": "-آموزش Ùˆ پرورش .", + "gender": "-چي؟ -اون سکس", + "birthdate": "تولد", + "Approve Driver Documents": "تایید مدارک شریک راننده", + "Total Budget is": "Ú©Ù„ بودجه", + "You will recieve code in sms message": + "کد را در پیامک Ø¯Ø±ÛŒØ§ÙØª خواهید کرد", + "Please enter": "Ù„Ø·ÙØ§Ù‹ ØŒ نام منبعی را وارد کنید.", + "We need your phone number to contact you and to help you receive orders.": + "برای تماس با شما Ùˆ Ú©Ù…Ú© به شما در Ú¯Ø±ÙØªÙ† Ø³ÙØ§Ø±Ø´Ø§Øª به شماره تلÙÙ† شما نیاز داریم.", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "نام کامل در سوابق Ú©ÛŒÙØ±ÛŒ شما با نام گواهینامه رانندگی شما مطابقت ندارد. Ù„Ø·ÙØ§ بررسی کنید Ùˆ مدارک صحیح را ارسال کنید.", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "شماره ملی گواهینامه رانندگی شما با شماره مندرج در مدرک هویت شما مطابقت ندارد. Ù„Ø·ÙØ§ بررسی کنید Ùˆ مدارک صحیح را ارسال کنید.", + "Capture an Image of Your Criminal Record": + "از سابقه Ú©ÛŒÙØ±ÛŒ خود عکس بگیرید", + "IssueDate": "اولین کلید", + "Capture an Image of Your car license front": + "از جلوی گواهینامه ماشین خود عکس بگیرید", + "Capture an Image of Your ID Document front": + "یک عکس از مدرک شناسایی خود از جلو بگیرید", + "NationalID": "شمار ملى ", + "FullName": "نام", + "InspectionResult": "نتیجه آزمایش", + "Criminal Record": "سابقه Ú©ÛŒÙØ±ÛŒ", + "The email or phone number is already registered.": + "ایمیل یا شماره تلÙÙ† قبلا ثبت شده است.", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "برای تبدیل شدن به یک راننده اشتراکی در یک برنامه انطلق، باید گواهینامه رانندگی، سند هویت Ùˆ سند ثبت وسیله نقلیه خود را آپلود کنید. سیستم هوش مصنوعی ما در عرض 2 تا 3 دقیقه Ùوراً صحت آن را بررسی Ùˆ تأیید Ù…ÛŒ کند. اگر مدارک شما تأیید شد، Ù…ÛŒ توانید به عنوان شریک راننده در یک برنامه انطلق شروع به کار کنید. Ù„Ø·ÙØ§ توجه داشته باشید Ú©Ù‡ ارائه مدارک جعلی یک تخل٠جدی است Ùˆ ممکن است منجر به ÙØ³Ø® Ùوری Ùˆ عواقب قانونی شود.", + "Documents check": "تأیید سند", + "Driver's License": "گواهينامه؟", + "License Type": "مجوز:", + "National Number": "کد ملی:", + "Name (Arabic)": "نام (عربی)", + "Name (English)": "بهانگليسي!", + "Address": "آدرس چیه؟", + "Issue Date": "اولین کلید", + "Expiry Date": "تاریخ انقضا", + "License Categories": "مجوز:", + "driver_license": "گواهينامه؟", + "Capture an Image of Your Driver License": + "از گواهینامه رانندگی خود عکس بگیرید", + "ID Documents Back": "پشت مدارک شناسایی", + "National ID": "هویت ملی", + "Occupation": "حرÙÂه", + "Gender": "-چي؟ -اون سکس", + "Religion": "مذهب؟", + "Marital Status": "وضعيت تاهل وعائله مندى: متاهل ", + "Full Name (Marital)": "نام", + "Expiration Date": "انقضا:", + "Capture an Image of Your ID Document Back": + "از پشت مدرک شناسایی خود عکس بگیرید", + "ID Documents Front": "قسمت جلوی اسناد هویتی", + "First Name": "نام کوچک", + "CardID": "از پشت مدرک شناسایی خود عکس بگیرید", + "Full Name": "نام", + "Vehicle Details Front": "جزئیات خودروی جلو", + "Plate Number": "پلاک اتومبيل رو برداشتي ØŸ", + "Owner Name": "صاحب", + "Vehicle Details Back": "جزئیات خودرو دوباره", + "Make": "مقدار Û±", + "Model": "مدل ماشین:", + "Year": "دنار", + "Chassis": "شاسی بلند", + "Color": "& رنگ‌", + "Displacement": "تعویض", + "Fuel": "بنزين...", + "Tax Expiry Date": "تاریخ انقضا", + "Inspection Date": "تاریخ امتحان", + "Capture an Image of Your car license back": + "دوباره از گواهینامه ماشین خود عکس بگیرید", + "Capture an Image of Your Driver’s License": + "از گواهینامه رانندگی خود عکس بگیرید", + "Sign in with Google for easier email and name entry": + "با Google وارد شوید تا وارد کردن ایمیل Ùˆ نام خود را آسان کنید", + "You will choose allow all the time to be ready receive orders": + "شما انتخاب Ù…ÛŒ کنید Ú©Ù‡ تمام وقت برای Ø¯Ø±ÛŒØ§ÙØª Ø³ÙØ§Ø±Ø´Ø§Øª آماده اجازه دهید", + "Welcome to Intaleq!": "به خونه خوش اومدی", + "Get to your destination quickly and easily.": + "سریع Ùˆ آسان به مقصد برسید.", + "Enjoy a safe and comfortable ride.": + "از یک سواری امن Ùˆ راحت لذت ببرید.", + "Choose Language": "انتخاب ظاهر Ùˆ احساس", + "Login": "ورود به سیستم", + "Pay with Wallet": "با Ø§Ø³ØªÙØ§Ø¯Ù‡ از کی٠پول پرداخت کنید", + "Invalid MPIN": "کد MPIN نامعتبر است", + "Invalid OTP": "کد تأیید نامعتبر است", + "Enter your email address": "آدرس ایمیل خود را وارد کنید", + "Please enter Your Email.": "Ù„Ø·ÙØ§ وارد کنید...", + "Enter your phone number": "شماره تلÙÙ† خود را وارد کنید", + "Please enter your phone number.": + "Ù„Ø·ÙØ§ شماره تلÙÙ† خود را وارد کنید.", + "Please enter Your Password.": "اسم رمز ورودی", + "Submit": ".ÙØ±Ø³ØªØ§Ø¯Ù‡ شود", + "if you dont have account": "اگه اشکالي نداره", + "Register": + "نامنويسي کردن , ثبت نام کردن , عضويت دادن , درÙهرست واردکردن , در صورت نوشتن , نام نويسي کردن (در هيلت منصÙÙ‡)", + "Accept Ride's Terms & Review Privacy Notice": + "شرایط انطلق را بپذیرید Ùˆ اعلامیه حریم خصوصی را مرور کنید", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "با انتخاب «مواÙقم» در زیر، شرایط Ø§Ø³ØªÙØ§Ø¯Ù‡ را بررسی کرده Ùˆ با آن مواÙقم Ùˆ اعلامیه حریم خصوصی را تأیید می‌کنم.من حداقل 18 سال دارم.", + "I Agree": "بله!", + "First name": "نام کوچک", + "Enter your first name": "Ù„Ø·ÙØ§Ù‹ نام Ùˆ نام خانوادگی‌تان را وارد کنید:", + "Please enter your first name.": "Ù„Ø·ÙØ§ نام خود را وارد کنید.", + "Last name": "ÙØ§Ù…يليت", + "Enter your last name": "ÙØ§Ù…يليت", + "Please enter your last name.": "Ù„Ø·ÙØ§ نام خود را وارد کنید.", + "City": "داخل شهره", + "Please enter your City.": "Ù„Ø·ÙØ§ وارد کنید...", + "Male": "ياداوري کردن , ياداور شدن , بياد اوردن", + "Female": "زن", + "Verify Email": "اعتبار سنجی ایمیل", + "We sent 5 digit to your Email provided": + "ما 5 شماره به ایمیل شما ارسال کردیم", + "5 digit": "پین (5 رقمی)", + "Send Verification Code": "کد تایید", + "Your Ride Duration is": "مدت انطلق شما است", + "You will be thier in": "شما در آنها خواهید بود", + "You trip distance is": "Ù…Ø³Ø§ÙØª پیاده روی شما است", + "Fee is": "هزینه ها هستند", + "To :": "Ø¨ÙŠÙ…Ø§Ø±ÙŠÙ Ø¢Ø³Ù¾Ø±Ú¯Ø±ÙØ´ØŸ", + "Add Promo": "اÙÂزودن نما", + "Confirm Selection": "انتخاب را تایید کنید", + "distance is": "ÙØ§ØµÙ„Ù‡ است", + "duration is": "مدت زمان است", + "I don't need a ride anymore": "من دیگر نیازی به سواری ندارم", + "I was just trying the application": "من Ùقط برنامه را امتحان کردم", + "No driver accepted my request": + "هیچ شریک راننده ای درخواست من را Ù†Ù¾Ø°ÛŒØ±ÙØª", + "I added the wrong pick-up/drop-off location": + "اضاÙÙ‡ شدن مکان نادرست تحویل / تحویل", + "I don't have a reason": "يه دليلي دارم.", + "Other": "يكي ديگه", + "Can we know why you want to cancel Ride ?": + "آیا می‌توانیم بدانیم چرا می‌خواهید انطلق را لغو کنید؟", + "Cancel Ride": "Ù…ØªÙˆÙ‚ÙØ´ کنيد!", + "Add Payment Method": "یک روش پرداخت اضاÙÙ‡ کنید", + "Your Wallet balance is": "موجودی کی٠پول شما است", + "Ride Wallet": "کی٠پول انطلق", + "Payment Method": "Ùˆ Ú†Ù‡ جوري هزينه اش رو پرداخت ميکنيد؟", + "Type here Place": "مکان را اینجا بنویسید", + "Are You sure to ride to": "آیا مطمئن هستید Ú©Ù‡ قصد انطلق به ...", + "Confirm": "تاييد شد", + "Back": "بازگشت , مراجعت", + "You are Delete": "شما حذ٠کنید", + "Deleted": "حذÙÂ‌شده", + "You Dont Have Any places yet !": "شما هنوز جایی ندارید!", + "Favorite Places": "مکان های مورد علاقه", + "From : Current Location": "موقعيت ÙØ¹Ù„ÙŠ: اسکدارسکا32", + "Where to": "-البته. کجا؟", + "Notifications": "& پیکربندی آگاه‌سازی‌ها", + "Profile": "â€Ù¾Ø±ÙˆÙایل؟", + "Home": "آغازه", + "My Cared": "ممکن است کاهش یابد", + "Add Card": "کارت اضاÙÙ‡ کنید", + "Add Credit Card": "درخواست كارت المثني ", + "Please enter the cardholder name": + "Ù„Ø·ÙØ§ نام دارنده کارت را وارد کنید", + "Please enter the expiry date": "Ù„Ø·ÙØ§ تاریخ انقضا را وارد کنید", + "Please enter the CVV code": "Ù„Ø·ÙØ§ کد تایید کارت را وارد کنید", + "Go To Favorite Places": "به مکان های مورد علاقه بروید", + "Go to this Target": "برو به اون هدÙ", + "My Profile": "نام Profile", + "Sign Out": "همه ÙŠ ارتباط ها قطع شد", + "Home Page": "آغازه", + "Are you want to go to this site": "آیا Ù…ÛŒ خواهید به این سایت بروید؟", + "MyLocation": "محل من", + "my location": "محل من", + "Target": "يه هدÙ.", + "Update": "نوسازي , نوپردازي , نوين گري", + "You Should choose rate figure": "باید عدد صحیح را انتخاب کنید", + "Login Captin": "ورود به سیستم", + "Register Captin": "ثبت نام کاپیتان", + "Send Verfication Code": "ارسال کد تایید", + "End Ride": "سواری", + "Minute": "حساسيت", + "Go to passenger Location now": "اکنون به وب سایت سوارکار بروید", + "Duration of the Ride is": "مدت انطلق است", + "Distance of the Ride is": "Ù…Ø³Ø§ÙØª پیاده روی است", + "Name of the Passenger is": "نام Ù…Ø³Ø§ÙØ± است", + "Hello this is Captain": "سلام من کاپیتان هستم", + "Start the Ride": "انطلق را آغاز کنید", + "Please Wait If passenger want To Cancel!": + "Ù„Ø·ÙØ§ صبر کنید اگر Ù…Ø³Ø§ÙØ± Ù…ÛŒ خواهد لغو کند!", + "Total Duration:": "Ú©Ù„ مدت زمان:", + "Active Duration:": "مدت زمان گام ÙØ¹Ø§Ù„", + "Waiting for Captin ...": "منتظر کاپیتان...", + "Age is": ". بزرگ شده", + "Rating is": "ارزیابی است", + "to arrive you.": "برای رسیدن به تو", + "Order History": "سابقه Ø³ÙØ§Ø±Ø´ را ثبت کنید", + "My Wallet": "Ú©ÙŠÙÙ…", + "Tariff": "تعرÙÙ‡", + "Settings": "GnomeMeeting", + "Feed Back": "واکنش ها", + "Promos": "تبلیغات", + "Please enter a valid 16-digit card number": + "Ù„Ø·ÙØ§Ù‹ یک شماره Ø³ÙØ§Ø±Ø´ خرید معتبر وارد کنید.", + "Add Phone": "تلÙÙ†", + "Please enter a phone number": "Ù„Ø·ÙØ§ شماره تلÙÙ† را وارد کنید", + "You dont Add Emergency Phone Yet!": + "هنوز تلÙÙ† اضطراری اضاÙÙ‡ نکرده‌اید!", + "You will arrive to your destination after": + "هنوز به مقصد خواهی رسید", + "You can cancel Ride now": "اکنون Ù…ÛŒ توانید انطلق را لغو کنید", + "You Can cancel Ride After Captain did not come in the time": + "بعد از اینکه کاپیتان به موقع نرسید Ù…ÛŒ توانید انطلق را لغو کنید", + "If you in Car Now. Press Start The Ride": + "اگر الان در ماشین هستید. روی شروع انطلق کلیک کنید", + "You Dont Have Any amount in": "شما هیچ مبلغی ندارید", + "Wallet!": + "کيسه , جيب , کيسه پول , کي٠پول , پول , دارايي , وجوهات خزانه , غنچه کردن , جمع کردن , پول دزديدن , جيب بري کردن , کي٠جيبي", + "You Have": "تو داري مياي ØŸ", + "Save Credit Card": "کارت اعتباری را Ù†Ú¯Ù‡ دارید", + "Show Promos": "مشاهده پیشنهادات", + "10 and get 4% discount": "10 Ùˆ 4 درصد تخÙی٠بگیرید", + "20 and get 6% discount": "20 Ùˆ 6 درصد تخÙی٠بگیرید", + "40 and get 8% discount": "40 Ùˆ 8 درصد تخÙی٠بگیرید", + "100 and get 11% discount": "100 Ùˆ 11 درصد تخÙی٠بگیرید", + "Pay with Your PayPal": "با Ù¾ÛŒ پال پرداخت کنید", + "You will choose one of above !": + "شما یکی از گزینه های بالا را انتخاب خواهید کرد!", + "Cancel": "& لغو‌", + "Delete My Account": "Delete My Account", + "Edit Profile": "â€Ù¾Ø±ÙˆÙایل؟", + "Name": "اسم...", + "Update Gender": "به روز رسانی جنسیت", + "Education": "-آموزش Ùˆ پرورش .", + "Update Education": "نوسازی آموزش Ùˆ پرورش", + "Employment Type": "کارم ØŸ", + "SOS Phone": "تلÙÙ†Ú†ÙŠ", + "High School Diploma": "مدرک دبیرستان", + "Associate Degree": "مدرک دیپلم مشترک", + "Bachelor's Degree": "-اون دکتراست .", + "Master's Degree": ". استاد", + "Doctoral Degree": "Ùˆ دکترات", + "Promos For today": "تبلیغات امروز", + "Copy this Promo to use it in your Ride!": + "این تبلیغ را برای Ø§Ø³ØªÙØ§Ø¯Ù‡ در انطلق خود Ú©Ù¾ÛŒ کنید!", + "To change some Settings": "برای تغییر برخی تنظیمات", + "To change Language the App": "برای تغییر زبان برنامه", + "Order Request Page": "ØµÙØ­Ù‡ درخواست Ø³ÙØ§Ø±Ø´", + "Rouats of Trip": "! \" تريپ \"", + "Passenger Name is": "ÙŠÚ© Ù…Ø³Ø§ÙØ±", + "Total From Passenger is": "مجموع Ù…Ø³Ø§ÙØ± است", + "Duration To Passenger is": "مدت زمان به Ù…Ø³Ø§ÙØ±", + "Distance To Passenger is": "ÙØ§ØµÙ„Ù‡ تا Ù…Ø³Ø§ÙØ±", + "Total For You is": "مجموع برای شما است", + "Distance is": "ÙØ§ØµÙ„Ù‡ هستيم", + "KM": "کيلومتر , هزارمتر", + "Duration of Trip is": "مدت پرواز است", + "Minutes": "صورت جلسه , خلا صه مذاکرات", + "Apply Order": "درخواست درخواست", + "Refuse Order": "Ú©Ù‡ درخواست رد شد", + "Rate Captain": "امتیاز کاپیتان", + "Enter your Note": "یادداشت خود را وارد کنید", + "Type something...": "چیزی بنویسید...", + "Submit rating": "ارزیابی ارائه کنید", + "Rate Passenger": "رتبه سوار", + "Ride Summary": "خلاصه انطلق", + "welcome_message": "درج Hello World", + "app_description": "& پیاده‌سازی‌", + "get_to_destination": "مقصد کار انجامی", + "get_a_ride": "گمشو...", + "safe_and_comfortable": "Ùˆ خيلي هم راحته", + "committed_to_safety": "متعهد به ایمنی", + "Driver Applied the Ride for You": + "یک راننده انطلق را برای شما انجام داد", + "Show latest promo": "نمایش آخرین تبلیغات", + "Cancel Trip": "لغو انطلق", + "Passenger Cancel Trip": "Ù…Ø³Ø§ÙØ± پرواز را لغو کرد", + "Please stay on the picked point.": "Ù„Ø·ÙØ§ روی نقطه بمانید", + "Trip is Begin": "برنامه انطلق , خط سير , انطلقنامه", + "Hi ,I will go now": "Ù‡ÛŒ الان میرم", + "Passenger come to you": "Ù…Ø³Ø§ÙØ± به سمت شما Ù…ÛŒ آید", + "Hi ,I Arrive your site": "سلام من به سایت شما رسیدم", + "Driver Finish Trip": "انطلق برای راننده به پایان Ù…ÛŒ رسد", + "you will pay to Driver": "شما به راننده پول Ù…ÛŒ دهید", + "Driver Cancel Your Trip": "انطلقت را کنسل Ú©Ù† راننده", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "شما به راننده پرداخت Ù…ÛŒ کنید هزینه وقت راننده را Ù…ÛŒ پردازید به کی٠پول خود Intaleq نگاه کنید", + "I will go now": "دود باید برم باید برم", + "You Have Tips": "نکته؟", + "tips": "مدد", + "Total is": "پانزده Ù†ÙØ± شدن", + "No,I want": "من از اونا نيستم", + "Your fee is": "هزینه های شما هستند", + "Do you want to pay Tips for this Driver": + "آیا Ù…ÛŒ خواهید به این راننده انعام بدهید؟", + "Tip is": "نکته من", + "Camera Access Denied.": "دسترسی به دوربین ممنوع است.", + "Open Settings": "تنظیمات...", + "GPS Required Allow !.": "GPS باید ÙØ¹Ø§Ù„ باشد!", + "Your Account is Deleted": "حساب شما حذ٠شده است", + "Are you sure to delete your account?": + "آیا مطمئن هستید Ú©Ù‡ Ù…ÛŒ خواهید اکانت خود را حذ٠کنید؟", + "Your data will be erased after 2 weeks": + "اطلاعات شما پس از دو Ù‡ÙØªÙ‡ پاک Ù…ÛŒ شود", + "And you will can't return to use app after 1 month": + "بعد از یک ماه Ù…ÛŒ توانید به Ø§Ø³ØªÙØ§Ø¯Ù‡ از برنامه بازگردید", + "Enter Your First Name": "Ù„Ø·ÙØ§Ù‹ نام Ùˆ نام خانوادگی‌تان را وارد کنید:", + "Are you Sure to LogOut?": + "آیا مطمئن هستید Ú©Ù‡ از سیستم خارج Ù…ÛŒ شوید؟", + "Email Wrong": "پست الکترونیکی", + "Email you inserted is Wrong.": "ایمیلی Ú©Ù‡ وارد کردید نادرست است.", + "You have finished all times": "نميخوام Ú©Ù‡ تو ...", + "if you want help you can email us here": + "اگر مایل به Ú©Ù…Ú© هستید Ù…ÛŒ توانید از اینجا به ما ایمیل بزنید", + "Thanks": "ممنون.", + "Email Us": "یک ایمیل برای ما Ø¨ÙØ±Ø³ØªÛŒØ¯", + "I cant register in your app in face detection": + "من نمی توانم با Ø§Ø³ØªÙØ§Ø¯Ù‡ از تشخیص چهره در برنامه شما ثبت نام کنم", + "Hi": + "هالو (کلمه اي Ú©Ù‡ در Ú¯ÙØªÚ¯ÙˆÙŠ ØªÙ„Ùني براي صدا کردن طر٠بکار ميرود) , سلا Ù… کردن , خوشامد , خوشامد Ú¯ÙØªÙ† , پذيرايي کردن , خوشايند", + "No face detected": "هیچ چهره ای آشکار نشد", + "Image detecting result is": "نتیجه تشخیص تصویر:", + "from 3 times Take Attention": "بیش از 3 بار توجه خود را جلب کنید", + "Be sure for take accurate images please": + "حتما عکس های دقیق بگیرید Ù„Ø·ÙØ§", + "You have": "تو داري مياي ØŸ", + "image verified": "عکس محضری است", + "Next": "بعد", + "There is no help Question here": "در اینجا هیچ سوال Ú©Ù…Ú©ÛŒ وجود ندارد", + "Call End": "تماس تمام Ù…ÛŒ شود", + "You dont have Points": "-شليک نکنيد ! - شما اجازه‌ي ورود ...", + "You Are Stopped For this Day !": "شما برای یک روز تعلیق هستید!", + "You must be charge your Account": "شما باید حساب خود را شارژ کنید", + "You Refused 3 Rides this Day that is the reason": + "من امروز 3 پرواز را رد کردم Ùˆ دلیلش این است", + "See you Tomorrow!": "ÙØ±Ø¯Ø§ Ù…ÛŒ بینمت!", + "Recharge my Account": "حسابم را شارژ Ú©Ù†", + "Ok , See you Tomorrow": "باشه ÙØ±Ø¯Ø§ میبینمت", + "You are Stopped": "شما خاموش هستید", + "Connected": "پيوسته , روان , خط شکسته", + "Not Connected": "برون خطي", + "Your are far from passenger location": "شما از سایت Ù…Ø³Ø§ÙØ± دور هستید", + "go to your passenger location before": + "قبلاً به وب سایت Ù…Ø³Ø§ÙØ± خود بروید", + "Passenger cancel trip": "Ù…Ø³Ø§ÙØ± پرواز را کنسل کرد", + "You will get cost of your work for this trip": + "هزینه کار خود را برای این انطلق Ø¯Ø±ÛŒØ§ÙØª خواهید کرد", + "in your wallet": "تو کي٠پولته.", + "you gain": "تو بردي", + "Order Cancelled": "بسه ديگه.", + "Order Cancelled by Passenger": "Ø³ÙØ§Ø±Ø´ توسط Ù…Ø³Ø§ÙØ± لغو شد", + "Success": "بدست آوردن بيشترش", + "Feedback data saved successfully": + "داده های ارزیابی با موÙقیت ذخیره شد", + "No Promo for today .": "امروز تبلیغاتی وجود ندارد", + "Select your destination": "مقصد خود را انتخاب کنید", + "Search for your Start point": "نقطه شروع خود را پیدا کنید", + "Search for waypoint": "نقطه راه را پیدا کنید", + "Current Location": "موقعيت ÙØ¹Ù„ÙŠ: اسکدارسکا32", + "Add Location 1": "محل:% 1", + "You must Verify email !.": "بررسی & نامه‌", + "Cropper": "دروگر", + "Saved Sucssefully": "با موÙقیت ذخیره شد", + "Select Date": "انتخاب یک تاریخ جدید", + "Birth Date": "- تاريخ تولد", + "Ok": + "صحيح است , خوب , بسيار خوب , تصويب کردن , مواÙقت کردن , اجازه , تصويب , چشمه , جوهردان , دوات , ببالا Ùوران کردن , روامدن اب ومايع , درسطح امدن وجاري شدن , تندرست , سالم , راحت , بسيارخوب , به چشم , تماما , تمام وکمال , بدون اشکال , اوه , خيلي خوب", + "the 500 points equal 30 JOD": "500 امتیاز معادل 30 دینار اردن است", + "the 500 points equal 30 JOD for you": + "500 امتیاز برای شما معادل 30 دینار اردن است", + "token updated": "کد به روز شده است", + "Add Location 2": "اضاÙÙ‡ کردن مکان 2", + "Add Location 3": "اضاÙÙ‡ کردن مکان 3", + "Add Location 4": "سایت را اضاÙÙ‡ کنید 4", + "Waiting for your location": "منتظر مکان شما هستیم", + "Search for your destination": "مقصد خود را پیدا کنید", + "Hi! This is": "خوش‌آمدید اين", + "I am using": "من Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ کنم", + "to ride with": "برای سوار شدن با", + "as the driver.": "به عنوان راننده", + "is driving a": "اون رانندگي ميکنه", + "with license plate": "داشتن پلاک", + "I am currently located at": "من در حال حاضر در", + "Please go to Car now": "Ù„Ø·ÙØ§ همین الان برید سراغ ماشین", + "If you need to reach me, please contact the driver directly at": + "اگر نیاز به تماس با من دارید، Ù„Ø·ÙØ§Ù‹ مستقیماً با راننده تماس بگیرید", + "No Car or Driver Found in your area.": + "هیچ ماشین یا راننده ای در منطقه شما پیدا نشد.", + "Please Try anther time": "سعی مجدد", + "There no Driver Aplly your order sorry for that": + "هیچ راننده ای وجود ندارد Ú©Ù‡ بتواند درخواست شما را برآورده کند، متأسÙیم.", + "Trip Cancelled": "پرواز لغو شده است", + "The Driver Will be in your location soon .": + "راننده به زودی در محل شما خواهد بود.", + "The distance less than 500 meter.": "ÙØ§ØµÙ„Ù‡ کمتر از 500 متر است.", + "Promo End !": "پیشنهاد به پایان Ù…ÛŒ رسد!", + "There is no notification yet": "هنوز اطلاعیه ای وجود ندارد", + "Use Touch ID or Face ID to confirm payment": + "برای تأیید پرداخت از Touch ID یا Face ID Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید", + "Contact us for any questions on your order.": + "برای هرگونه سوال در مورد Ø³ÙØ§Ø±Ø´ خود با ما تماس بگیرید.", + "Pyament Cancelled .": "پرداخت لغو شده است.", + "type here": "نوشتن", + "Scan Driver License": "گواهينامه؟", + "Please put your licence in these border": + "Ù„Ø·ÙØ§ مجوز خود را در این محدوده قرار دهید", + "Camera not initialized yet": "دوربین هنوز پیکربندی نشده است", + "Take Image": "- # I need direction, ah, please #", + "AI Page": "ØµÙØ­Ù‡ هوش مصنوعی", + "Take Picture Of ID Card": "از کارت شناسایی خود عکس بگیرید", + "Take Picture Of Driver License Card": + "از کارت گواهینامه رانندگی خود عکس بگیرید.", + "We are process picture please wait": + "ما در حال پردازش تصاویر هستیم، Ù„Ø·ÙØ§ صبر کنید.", + "There is no data yet.": "هنوز هیچ داده ای وجود ندارد.", + "Name :": "اسم...", + "Drivers License Class:": "دسته گواهینامه رانندگی:", + "Document Number:": "شماره سند:", + "Address:": "آدرس:", + "Height:": "قد، متوسط.", + "Expiry Date:": "انقضا:", + "Date of Birth:": "تولد: @ title: group", + "You can't continue with us .": "‫ - Ù…ÛŒ تونی ادامه بدی.", + "You should renew Driver license": + "باید گواهینامه رانندگی خود را تمدید کنید", + "Detect Your Face": "اين جديده", + "Go to next step": "به مرحله بعد برو", + "scan Car License.": "معاینه گواهینامه خودرو.", + "Name in arabic": "نام به عربی", + "Drivers License Class": "گواهينامه؟", + "Date of Birth": "- تاريخ تولد", + "Age": "سالخوردگی", + "Lets check Car license": "بیایید گواهینامه ماشین را بررسی کنیم", + "Car Kind": "Ú†Ù‡ جور ماشینی ØŸ", + "Car Plate": "پلاک اتومبیل", + "Lets check License Back Face": + "اجازه دهید مجوز سمت عقب را بررسی کنیم", + "Car License Card": "کارت گواهینامه خودرو", + "No image selected yet": "هنوز هیچ تصویری انتخاب نشده است", + "Made :": + "ساختن , بوجود اوردن , درست کردن , تصني٠کردن , خلق کردن , باعث شدن , وادار يامجبور کردن , تاسيس کردن , گاييدن , ساختمان , ساخت , سرشت , نظير , شبيه", + "model :": "مدل:", + "VIN :": "شماره ساختار:", + "year :": "!", + "ÙExpire Date": "انقضا:", + "Login Driver": "ورود به سیستم", + "Password must br at least 6 character.": + "رمز عبور باید حداقل 6 کاراکتر باشد.", + "if you don't have account": "اگه اشکالي نداره", + "Here recorded trips audio": "در اینجا ضبط های صوتی انطلق است", + "Register as Driver": "به عنوان شریک راننده ثبت نام کنید", + "Privacy Notice": "اطلاعیه Ø­ÙØ¸ حریم خصوصی", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the": + "با انتخاب «مواÙقم» در زیر، شرایط Ùˆ ضوابط را بررسی کرده، با آن مواÙقم Ùˆ تأیید Ù…ÛŒ کنم.", + ". I am at least 18 years of age.": ". من حداقل 18 سال دارم.", + "Log Out Page": "همه ÙŠ ارتباط ها قطع شد", + "Log Off": "خروج CVS", + "Register Driver": "راننده...\"راس وبر\"...", + "Verify Email For Driver": "ایمیل راننده را Ú†Ú© کنید", + "Admin DashBoard": "کنترل پنل مدیریت", + "Your name": "اسمت", + "your ride is applied": "انطلق شما اعمال شده است", + "Your password": "اسم رمز شما تغییر کرده است.", + "LE": "پوند مصر", + "JOD": "دینار اردن", + "m": "مستندسازی از", + "We search nearst Driver to you": + "ما به دنبال نزدیکترین شریک راننده به شما هستیم", + "please wait till driver accept your order": + "Ù„Ø·ÙØ§ منتظر بمانید تا راننده درخواست شما را بپذیرد", + "No accepted orders? Try raising your trip fee to attract riders.": + "هیچ درخواستی Ù¾Ø°ÛŒØ±ÙØªÙ‡ نشد؟ سعی کنید هزینه پرواز خود را برای جذب Ù…Ø³Ø§ÙØ± Ø§ÙØ²Ø§ÛŒØ´ دهید.", + "You should select one": "شما باید یکی را انتخاب کنید", + "The driver accept your order for": + "راننده در عوض درخواست شما را Ù¾Ø°ÛŒØ±ÙØª", + "Increase Fee": "هزینه ها را Ø§ÙØ²Ø§ÛŒØ´ دهید", + "No, thanks": "نه، متشکرم.", + "The driver on your way": "راننده شما در راه است", + "Total price from": "قیمت Ú©Ù„ از", + "Order Details Intaleq": "جزئیات درخواست:", + "Order Applied": "درخواست اعمال شده است", + "accepted your order": "درخواست شما Ù¾Ø°ÛŒØ±ÙØªÙ‡ شد", + "We regret to inform you that another driver has accepted this order.": + "Ù…ØªØ£Ø³ÙØ§Ù†Ù‡ به شما اطلاع Ù…ÛŒ دهیم Ú©Ù‡ شریک راننده دیگری این درخواست را Ù¾Ø°ÛŒØ±ÙØªÙ‡ است.", + "Selected file:": "باز کردن پرونده‌ای موجود", + "Your trip cost is": "هزینه انطلق شما", + "this will delete all files from your device": + "با این کار تمام ÙØ§ÛŒÙ„ ها از دستگاه شما حذ٠می شود", + "you have a negative balance of": "تراز منÙÛŒ دارید", + "in your": "Ú©Ù‡ ما به تو ايمان نداشته باشيم.", + "Exclusive offers and discounts always with the Intaleq app": + "همیشه پیشنهادات Ùˆ تخÙÛŒÙØ§Øª منحصر به ÙØ±Ø¯ با اپلیکیشن انطلق", + "Please go to Car Driver": "Ù„Ø·ÙØ§ به سراغ راننده ماشین بروید", + "wallet due to a previous trip.": "کی٠پول به دلیل انطلق قبلی.", + "Submit Question": "ارسال سوال", + "Please enter your Question.": "Ù„Ø·ÙØ§ سوال خود را وارد کنید", + "Help Details": "جزئیات راهنما", + "No trip yet found": "نبض اشعه گاما", + "No Response yet.": "هنوز پاسخی داده نشده است.", + "You Earn today is": "- ام، امروز ...", + "You Have in": "شما آن را در", + "Total points is": "مجموع امتیاز است", + "Total Connection Duration:": "Ú©Ù„ مدت تماس:", + "H and": "H Ùˆ", + "Passenger name :": "ÙŠÚ© Ù…Ø³Ø§ÙØ±", + "Cost Of Trip IS": "هزینه انطلق است", + "Arrival time": "دستيابي پذير", + "arrival time to reach your point": "زمان رسیدن برای رسیدن به مقصد", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "برای انطلقهای سریع Ùˆ تحویل، قیمت به صورت پویا محاسبه Ù…ÛŒ شود. در مورد انطلقهای راحت، قیمت بستگی به زمان Ùˆ Ù…Ø³Ø§ÙØª دارد.", + "Hello this is Driver": "سلام من راننده شما هستم", + "Is the Passenger in your Car ?": "آیا Ù…Ø³Ø§ÙØ± در ماشین شما است؟", + "Please wait for the passenger to enter the car before starting the trip.": + "Ù„Ø·ÙØ§ قبل از شروع انطلق منتظر ورود Ù…Ø³Ø§ÙØ± به وسیله نقلیه باشید.", + "No ,still Waiting.": "نه من همچنان منتظرت هستم", + "I arrive you": "\"سلام، مامور \"دانم", + "I Arrive your site": "\"سلام، مامور \"دانم", + "You are not in near to passenger location": + "شما نزدیک محل Ù…Ø³Ø§ÙØ± نیستید", + "please go to picker location exactly": + "Ù„Ø·ÙØ§ به محل دقیق انتخابی بروید", + "You Can Cancel Trip And get Cost of Trip From": + "Ù…ÛŒ توانید انطلق را کنسل کنید Ùˆ هزینه انطلق را از اینجا Ø¯Ø±ÛŒØ§ÙØª کنید", + "Are you sure to cancel?": "آیا مطمئن هستید Ú©Ù‡ Ù…ÛŒ خواهید لغو کنید؟", + "Yes": "بله , بلي , اري , بلي Ú¯ÙØªÙ†", + "Insert Emergincy Number": "Ù€ شماره تلÙÙ† آمبولانس", + "Best choice for comfort car and flexible route and stops point": + "بهترین انتخاب برای ماشین راحت، مسیر انعطا٠پذیر Ùˆ نقطه توقÙ", + "Insert": "درج", + "This is for delivery or a motorcycle.": + "این برای تحویل یا موتور است.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "این سواری مستقیماً از نقطه شروع شما به مقصد شما با قیمت ثابت Ù…ÛŒ رود. راننده باید مسیر برنامه ریزی شده را دنبال کند", + "You can decline a request without any cost": + "شما Ù…ÛŒ توانید درخواست را بدون هیچ هزینه ای رد کنید", + "Perfect for adventure seekers who want to experience something new and exciting": + "ایده آل برای جویندگان ماجراجویی Ú©Ù‡ Ù…ÛŒ خواهند چیز جدید Ùˆ هیجان انگیزی را امتحان کنند", + "My current location is:": "مکان ÙØ¹Ù„ÛŒ من این است:", + "and I have a trip on": "Ùˆ من یک انطلق به داخل دارم", + "App with Passenger": "درخواست با Ù…Ø³Ø§ÙØ±", + "You will be pay the cost to driver or we will get it from you on next trip": + "هزینه به راننده شما پرداخت Ù…ÛŒ شود یا در انطلق بعدی آن را از شما Ø¯Ø±ÛŒØ§ÙØª Ù…ÛŒ کنیم", + "Trip has Steps": "انطلق مراحلی دارد", + "Distance from Passenger to destination is": + "ÙØ§ØµÙ„Ù‡ Ù…Ø³Ø§ÙØ± تا مقصد است", + "price is": "قیمت است", + "This ride type does not allow changes to the destination or additional stops": + "این نوع انطلق اجازه تغییر مقصد یا توق٠های اضاÙÛŒ را نمی دهد", + "This price may be changed": "این قیمت ممکن است تغییر کند", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "سیم کارت نداره مشکلی نیست! مستقیماً از طریق برنامه ما با راننده خود تماس بگیرید. ما از Ùناوری Ù¾ÛŒØ´Ø±ÙØªÙ‡ برای اطمینان از حریم خصوصی شما Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ کنیم.", + "This ride type allows changes, but the price may increase": + "این نوع انطلق اجازه تغییرات را Ù…ÛŒ دهد، اما ممکن است قیمت Ø§ÙØ²Ø§ÛŒØ´ یابد", + "message From passenger": "پیام Ù…Ø³Ø§ÙØ±", + "Select one message": "حتی یدونه؟", + "My location is correct. You can search for me using the navigation app": + "مکان من درست است Ù…ÛŒ توانید با Ø§Ø³ØªÙØ§Ø¯Ù‡ از برنامه ناوبری من را جستجو کنید", + "I'm waiting for you": ".Ùکر کنم منتظر شماست", + "Hello, I'm at the agreed-upon location": + "سلام من در محل مورد تواÙÙ‚ هستم", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "ما متوجه شدیم Ú©Ù‡ سرعت از 100 کیلومتر در ساعت ÙØ±Ø§ØªØ± Ø±ÙØªÙ‡ است. Ù„Ø·ÙØ§ برای ایمنی خود سرعت خود را Ú©Ù… کنید. اگر احساس ناامنی می‌کنید، می‌توانید جزئیات پرواز خود را با یک مخاطب به اشتراک بگذارید یا با Ø§Ø³ØªÙØ§Ø¯Ù‡ از دکمه قرمز خطر با پلیس تماس بگیرید.", + "Warning: Intaleqing detected!": "هشدار: سرعت بیش از حد شناسایی شد!", + "Please help! Contact me as soon as possible.": + "Ù„Ø·ÙØ£ ØŒ Ú©Ù…Ú©Ù… Ú©Ù†. در اسرع وقت با من تماس بگیرید.", + "Share Trip Details": "جزئیات انطلق را به اشتراک بگذارید", + "Car Plate is": "پلاک اتومبیل", + "the 3000 points equal 3000 L.E for you": + "3000 امتیاز برای شما معادل 3000 پوند مصر است", + "So go and gain your money": "برو جلو Ùˆ پولت را در بیاور", + "the 3000 points equal 3000 L.E": + "3000 امتیاز معادل 3000 پوند مصر است", + "The payment was not approved. Please try again.": + "پرداخت تایید نشد سعی مجدد", + "Payment Failed": "پرداخت ناموÙÙ‚", + "Error": "اشتباه ميكني", + "An error occurred during the payment process.": + "خطایی در ÙØ±Ø¢ÛŒÙ†Ø¯ پرداخت رخ داد.", + "The payment was approved.": "پرداخت تایید شده است.", + "Payment Successful": "پرداخت با موÙقیت انجام شد", + "No ride found yet": "نبض اشعه گاما", + "Accept Order": "بسه ديگه.", + "reject your order.": "درخواست شما رو رد کنيم... .", + "Bottom Bar Example": "نمونه ای از نوار پایین", + "Driver phone": "تلÙÙ† شریک راننده", + "Statistics": "آمارها", + "Origin": ".ابتداييهستن. ..", + "Destination": "به مقصد", + "Driver Name": "راننده...\"راس وبر\"...", + "Driver Car Plate": "پلاک ماشین راننده", + "Available for rides": "برای انطلقها موجود است", + "Scan Id": "بررسی هویت", + "Camera not initilaized yet": "دوربین هنوز پیکربندی نشده است", + "Scan ID MklGoogle": "بررسی هویت MklGoogle", + "Language": "زبان", + "Jordan": "اردن", + "USA": "- ايالات متحده -", + "Egypt": "کشور مصر , مصر , Ù¾Ø§ÙØ´Ø§Ø± , پاپي", + "Turkey": "ترکیه", + "Saudi Arabia": "عربستان سعودی", + "Qatar": "تقطيرشدن , عرق Ú¯Ø±ÙØªÙ† از , چکاندن", + "Bahrain": "بحرین", + "Kuwait": "کویت", + "But you have a negative salary of": "اما شما حقوق منÙÛŒ از", + "Promo Code": "کد تبلیغاتی", + "Your trip distance is": "Ù…Ø³Ø§ÙØª انطلق شما است", + "Enter promo code": "کد تبلیغاتی را وارد کنید", + "You have promo!": "شما یک ترÙیع دارید!", + "Cost Duration": "هزينه ØŸ", + "Duration is": "مدت زمان است", + "Leave": + "واگذار کردن , تسليم کردن , صرÙنظرکردن از , ول کردن , ترک , رها کردن , انکار کردن , ترک کردن , چشم پوشيدن , سرزنش يا متهم کردن , چشم پوشيدن از , از قانون مستثني کردن", + "Join": "متصل", + "You Should be select reason.": "باید دلیل انتخاب Ú©Ù†ÛŒ", + "\$": "\$", + "Waiting for Driver ...": "منتظر راننده ام...", + "Latest Recent Trip": "آخرین انطلق", + "from your list": "از لیست شما", + "Do you want to change Work location": + "آیا Ù…ÛŒ خواهید محل کار را تغییر دهید؟", + "Do you want to change Home location": + "آیا Ù…ÛŒ خواهید مکان خانه را تغییر دهید؟", + "We Are Sorry That we dont have cars in your Location!": + "متاسÙیم Ú©Ù‡ خودروها در محل شما در دسترس نیستند!", + "Choose from Map": "از نقشه انتخاب کنید", + "Pick your ride location on the map - Tap to confirm": + "مکان سواری خود را روی نقشه انتخاب کنید - برای تأیید ضربه بزنید", + "To Work": "اوه درسته ØŒ پرونده ...", + "Are you want to go this site": "آیا Ù…ÛŒ خواهید به این سایت بروید؟", + "Closest & Cheapest": "نزدیک ترین Ùˆ ارزان ترین", + "Work Saved": "نگهداري , Ø­ÙØ¸ , Ù…Ø­Ø§ÙØ¸Øª , جلوگيري , حراست", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq یک برنامه سواری ایمن، قابل اعتماد Ùˆ در دسترس است.", + "With Intaleq, you can get a ride to your destination in minutes.": + "با SafarØŒ Ù…ÛŒ توانید در عرض چند دقیقه به مقصد خود برسید.", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "انطلق به ایمنی متعهد است Ùˆ همه رهبران ما به دقت مورد بررسی قرار Ù…ÛŒ گیرند Ùˆ سوابق جنایی خود را بررسی Ù…ÛŒ کنند.", + "To Home": "آغازه", + "Home Saved": "نگهداري , Ø­ÙØ¸ , Ù…Ø­Ø§ÙØ¸Øª , جلوگيري , حراست", + "Destination selected": "مقصد مشخص شد - !", + "Now select start pick": "اکنون Start Selection را انتخاب کنید", + "Pick from map": "از نقشه انتخاب کنید", + "Click here point": "اينجا كليك كنيد", + "No Car in your site. Sorry!": + "هیچ ماشینی در محل شما وجود ندارد. ببخشيد", + "Nearest Car for you about": "نزدیکترین ماشین به شما تقریبا", + "N/A": "بدون اطلاعات", + "From :": + "از , بواسطه , درنتيجه , از روي , مطابق , از پيش , قطع , خاموش , ملغي , پرت , دور , نسبت به , تا , Ú©Ù‡ , تا اينکه , بجز , غير از , Ú©ÙŠ , Ú†Ù‡ شخصي , Ú†Ù‡ اشخاصي , Ú†Ù‡ کسي , هرکه , هر انکه , هر انکس , هرکسي Ú©Ù‡ , Ú†Ù‡ کسي را , به Ú†Ù‡ کسي , کسيکه , ان کسي Ú©Ù‡", + "Get Details of Trip": "Ø¯Ø±ÛŒØ§ÙØª جزئیات پرواز", + "If you want add stop click here": + "اگر Ù…ÛŒ خواهید توق٠اضاÙÙ‡ کنید، اینجا را کلیک کنید", + "Driver": + "راننده ماشين , Ø´ÙˆÙØ± , رانندگي کردن , محرک , راننده , ماشين سوار", + "Where you want go": + "ميتوني اين قضيه رو باور کني؟ Ùکر ميکني کجا بخواي بري؟", + "My Card": "کارتم", + "Start Record": "درحال شروع برای ضبط", + "Wallet": + "کيسه , جيب , کيسه پول , کي٠پول , پول , دارايي , وجوهات خزانه , غنچه کردن , جمع کردن , پول دزديدن , جيب بري کردن , کي٠جيبي", + "History of Trip": "تاریخ انطلق", + "Helping Center": "مرکز Ú©Ù…Ú© KDE", + "Record saved": "رکورد ذخیره شده است", + "Trips recorded": "پروازهای ثبت شده", + "Select Your Country": + "گزيدن , انتخاب کردن , خواستن , پسنديدن , برگزيدن", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "برای اطمینان از Ø¯Ø±ÛŒØ§ÙØª دقیق ترین اطلاعات برای موقعیت مکانی خود، Ù„Ø·ÙØ§Ù‹ کشور خود را در زیر انتخاب کنید. این به شخصی‌سازی تجربه برنامه Ùˆ محتوا برای کشورتان Ú©Ù…Ú© می‌کند.", + "Are you sure to delete recorded files": + "آیا مطمئن هستید Ú©Ù‡ ÙØ§ÛŒÙ„ های ضبط شده را حذ٠می کنید؟", + "Select recorded trip": "یک انطلق ثبت شده را انتخاب کنید", + "Card Number": "بزن!", + "Hi, Where to": "سلام به کجا", + "Pick your destination from Map": + "مقصد خود را از روی نقشه انتخاب کنید", + "Add Stops": "Ù…Ú©Ø« اضاÙÙ‡ کنید", + "Get Direction": "جهت را Ø¯Ø±ÛŒØ§ÙØª کنید", + "Add Location": "اضاÙÙ‡ کردن مکان", + "Switch Rider": "تعویض Ù…Ø³Ø§ÙØ±", + "You will arrive to your destination after timer end.": + "پس از اتمام تایمر به مقصد خواهید رسید.", + "You can cancel trip": "Ù…ÛŒ توانید انطلق را لغو کنید", + "The driver waitting you in picked location .": + "راننده شما در محل تعیین شده منتظر شماست.", + "Pay with Your": "پرداخت با Ø§Ø³ØªÙØ§Ø¯Ù‡ از", + "Pay with Credit Card": "پرداخت با کارت اعتباری", + "Payment History": "سابقه پرداخت", + "Show Promos to Charge": "نمایش تبلیغات حمل Ùˆ نقل", + "Point": + "نقطه , خال , Ù„Ú©Ù‡ , نقطه دار کردن , نوک , سر , نکته , ماده , اصل , موضوع , جهت , درجه , امتياز بازي , نمره درس , پوان , هد٠, مسير , مرحله , قله , پايان , تيزکردن , گوشه دارکردن , نوکدار کردن , نوک گذاشتن (به) , خاطر نشان کردن , نشان دادن , متوجه ساختن , نقطه گذاري کردن , Ù„Ú© , Ù„Ú©Ù‡ يا خال ميوه , ذره , Ù„Ú©Ù‡ دار کردن , خالدار کردن", + "Driver Wallet": "کی٠پول راننده", + "Total Points is": "مجموع امتیاز است", + "Total Budget from trips is": "بودجه Ú©Ù„ انطلقها Ù…ÛŒ باشد", + "Total Amount:": "مبلغ Ú©Ù„:", + "Total Budget from trips by": "بودجه Ú©Ù„ انطلقها توسط", + "Credit card is": "کارت بانکي سيهاون همراهمه", + "This amount for all trip I get from Passengers": + "این مبلغ برای تمام انطلقهایی است Ú©Ù‡ از Ù…Ø³Ø§ÙØ±Ø§Ù† Ù…ÛŒ گیرم", + "Pay from my budget": "من از بودجه ام پرداخت Ù…ÛŒ کنم", + "This amount for all trip I get from Passengers and Collected For me in": + "این مبلغ برای تمام سواری هایی است Ú©Ù‡ از Ù…Ø³Ø§ÙØ±Ø§Ù† Ù…ÛŒ گیرم Ùˆ برایم جمع آوری شده است", + "You can buy points from your budget": + "شما Ù…ÛŒ توانید از بودجه خود امتیاز خریداری کنید", + "insert amount": "همش اونجاست", + "You can buy Points to let you online": + "Ù…ÛŒ توانید امتیازهایی را خریداری کنید تا بتوانید به صورت آنلاین وارد شوید", + "by this list below": "از طریق این لیست زیر", + "Create Wallet to receive your money": + "برای Ø¯Ø±ÛŒØ§ÙØª وجوه خود یک کی٠پول ایجاد کنید", + "Enter your feedback here": "بازخورد خود را اینجا وارد کنید", + "Please enter your feedback.": "Ù„Ø·ÙØ§ متن بازخورد خود را وارد کنید", + "Feedback": "ÙØ¹Ø§Ù„‌سازی & راه‌اندازی باز‌خورد", + "Click here to Show it in Map": + "برای مشاهده روی نقشه اینجا را کلیک کنید", + "Canceled": "مطمئن باش اينطور نميشه", + "Type your Email": "ايميل تو رو Ú†Ú© ميکنم", + "No I want": "من از اونا نيستم", + "Email is": "پست الکترونیکی", + "Phone Number is": "شماره تلÙÙ†", + "Date of Birth is": "- تاريخ تولد", + "Sex is": "جنسیت است", + "Car Details": "جزئیات خودرو", + "VIN is": "رونوشت skeleton", + "Color is": "رنگ است", + "Make is": "ساخته شده است", + "Model is": "مدل از:", + "Year is": "دنار", + "Edit Your data": "داده های خود را ویرایش کنید", + "write vin for your car": "شماره شاسی ماشین خود را وارد کنید", + "VIN": "داريم شماره بدنه ماشينشون رو رديابي ميکنيم", + "write Color for your car": "رنگ ماشین خود را وارد کنید", + "write Make for your car": "مدل ماشین خود را بنویسید", + "write Model for your car": "مدل ماشین خود را وارد کنید", + "write Year for your car": "سال ماشین خود را وارد کنید", + "write Expiration Date for your car": + "تاریخ انقضای وسیله نقلیه خود را وارد کنید", + "Tariffs": "تعاریÙ", + "Minimum fare": "حاشیه‌ها:", + "Maximum fare": + "براورد کردن , تقويم کردن , قيمت کردن , مطلع کردن , اگاهي دادن", + "Flag-down fee": "هزینه های خرابی", + "Including Tax": "از جمله مالیات", + "BookingFee": "زندان؟ چطور Ùکر...", + "Morning": "صبح بخير.", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "از ساعت 07:30 تا 10:30 (پنجشنبه، جمعه، شنبه، دوشنبه)", + "Evening": "غروب , سرشب , شب هنگام , شبانگاه", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "از ساعت 12:00 الی 15:00 (پنجشنبه، جمعه، شنبه، دوشنبه)", + "Night": "شب بخير.", + "You have in account": "تو اکانت داری", + "Select Country": "کشور را انتخاب کنید", + "Ride Today :": "درخواست انطلق امروز:", + "After this period": "اون ميگذره", + "You can't cancel!": "نمیتونی", + "from 23:59 till 05:30": "از ساعت 23:59 تا 05:30", + "Rate Driver": "راننده...\"راس وبر\"...", + "Total Cost is": "Ú©Ù„ هزینه است", + "Write note": "-يه يادداشت !", + "Time to arrive": "زمان مورد انتظار ورود", + "Ride Summaries": "خلاصه انطلق", + "Total Cost": "هزینه Ú©Ù„", + "Average of Hours of": "ساعتهای کاری", + "is ON for this month": "در حال اجرا برای این ماه", + "Days": "روز", + "Total Hours on month": "تعداد Ú©Ù„ ساعت در ماه", + "Counts of Hours on days": "تعداد ساعات یک روز", + "OrderId": "بسه ديگه.", + "created time": "ایجادشده", + "Intaleq Over": "پاکو", + "I will slow down": "من سرعتم را Ú©Ù… Ù…ÛŒ کنم", + "Map Passenger": "نقشه Ù…Ø³Ø§ÙØ±", + "Be Slowly": "آهسته برو", + "If you want to make Google Map App run directly when you apply order": + "اگر Ù…ÛŒ خواهید برنامه Google Maps را مستقیماً هنگام اعمال ÙØ±Ù…ان راه اندازی کنید", + "You can change the language of the app": + "Ù…ÛŒ توانید زبان برنامه را تغییر دهید", + "Your Budget less than needed": + "بودجه شما کمتر از مقدار مورد نیاز است", + "You can change the Country to get all features": + "Ù…ÛŒ توانید کشور را برای Ø¯Ø±ÛŒØ§ÙØª همه ویژگی ها تغییر دهید", + "Change Country": "کشور را تغییر دهید" + }, + "zh": { + "Order": "订å•", + "OrderVIP": "VIP订å•", + "Cancel Trip": "å–æ¶ˆè¡Œç¨‹", + "Passenger Cancel Trip": "ä¹˜å®¢å–æ¶ˆè¡Œç¨‹", + "VIP Order": "VIP订å•", + "The driver accepted your trip": "叿œºæŽ¥å—了您的行程", + "message From passenger": "æ¥è‡ªä¹˜å®¢çš„æ¶ˆæ¯", + "Cancel": "å–æ¶ˆ", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "è¡Œç¨‹å·²å–æ¶ˆã€‚行程费用将添加到您的钱包。", + "token change": "令牌更改", + "face detect": "é¢éƒ¨æ£€æµ‹", + "Face Detection Result": "é¢éƒ¨æ£€æµ‹ç»“æžœ", + "similar": "相似", + "not similar": "ä¸ç›¸ä¼¼", + "Hi ,I will go now": "嗨,我现在就去", + "Passenger come to you": "ä¹˜å®¢æ­£åœ¨å‘æ‚¨èµ°æ¥", + "Call Income": "æ¥ç”µ", + "Call Income from Passenger": "æ¥è‡ªä¹˜å®¢çš„æ¥ç”µ", + "Criminal Document Required": "需è¦çŠ¯ç½ªæ–‡ä»¶", + "You should have upload it .": "您应该上传它。", + "Call End": "通è¯ç»“æŸ", + "The order has been accepted by another driver.": "订å•已被å¦ä¸€ä½å¸æœºæŽ¥å—。", + "The order Accepted by another Driver": "订å•已被å¦ä¸€ä½å¸æœºæŽ¥å—", + "We regret to inform you that another driver has accepted this order.": + "æˆ‘ä»¬å¾ˆé—æ†¾åœ°é€šçŸ¥æ‚¨ï¼Œå¦ä¸€ä½å¸æœºå·²æŽ¥å—此订å•。", + "Driver Applied the Ride for You": "叿œºä¸ºæ‚¨ç”³è¯·äº†è¡Œç¨‹", + "Applied": "已应用", + "Hi ,I Arrive your site": "嗨,我到达您的ä½ç½®äº†", + "Please go to Car Driver": "è¯·åˆ°æ±½è½¦å¸æœºå¤„", + "Ok I will go now.": "好的,我现在就去。", + "Accepted Ride": "接å—行程", + "Driver Accepted the Ride for You": "叿œºä¸ºæ‚¨æŽ¥å—了行程", + "Promo": "促销", + "Show latest promo": "显示最新促销", + "Trip Monitoring": "行程监控", + "Driver Is Going To Passenger": "叿œºæ­£åœ¨å‰å¾€ä¹˜å®¢å¤„", + "Please stay on the picked point.": "请留在选定的上车点。", + "message From Driver": "æ¥è‡ªå¸æœºçš„æ¶ˆæ¯", + "Trip is Begin": "行程开始", + "Cancel Trip from driver": "叿œºå–消行程", + "We will look for a new driver.\nPlease wait.": "æˆ‘ä»¬å°†å¯»æ‰¾æ–°çš„å¸æœºã€‚\n请ç¨å€™ã€‚", + "The driver canceled your ride.": "叿œºå–消了您的行程。", + "Driver Finish Trip": "叿œºå®Œæˆè¡Œç¨‹", + "you will pay to Driver": "æ‚¨å°†æ”¯ä»˜ç»™å¸æœº", + "Don’t forget your personal belongings.": "ä¸è¦å¿˜è®°æ‚¨çš„个人物å“。", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "è¯·ç¡®ä¿æ‚¨å¸¦å¥½æ‰€æœ‰ä¸ªäººç‰©å“,并在离开å‰å°†ä»»ä½•剩余费用(如果适用)添加到您的钱包中。感谢您选择Intaleq应用程åº", + "Finish Monitor": "结æŸç›‘控", + "Trip finished": "行程已完æˆ", + "Call Income from Driver": "æ¥è‡ªå¸æœºçš„æ¥ç”µ", + "Driver Cancelled Your Trip": "叿œºå–消了您的行程", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "æ‚¨å°†æ”¯ä»˜ç»™å¸æœºï¼Œæ‚¨å°†æ”¯ä»˜å¸æœºçš„æ—¶é—´æˆæœ¬ï¼Œè¯·æŸ¥çœ‹æ‚¨çš„Intaleq钱包", + "Order Applied": "订å•已应用", + + //firebase + + "registration_date": "SignUpDate", + "expiration_date": "çµæŸæ—¥æœŸ", + "rating_count": "評論數é‡", + "rating_driver": "è·æ¥­é§•駛評分", + "age": "年齡", + "vin": "車輛識別號碼", + "car_color": "é¡è‰²", + "car_plate": "車牌號碼", + "car_model": "汽車型號:", + "education": "教育", + "gender": "性別", + "birthdate": "出生日期", + "Approve Driver Documents": "æ ¸æº–è·æ¥­é§•駛文件", + "Total Budget is": "總é ç®—", + "You will recieve code in sms message": "你會é€éŽçŸ­è¨Šæ”¶åˆ°é©—證碼", + "Please enter": "請輸入", + "We need your phone number to contact you and to help you receive orders.": + "我們需è¦ä½ çš„電話號碼è¯çµ¡ä½ ï¼Œä¸¦å”助你接收訂單。", + "The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.": + "犯罪紀錄上的全å與駕駛執照上的姓åä¸ç¬¦ã€‚請檢查並æä¾›æ­£ç¢ºçš„æ–‡ä»¶ã€‚", + "The national number on your driver’s license does not match the one on your ID document. Please verify and provide the correct documents.": + "駕駛執照上的國民登記號碼與身分證件上的號碼ä¸ç¬¦ã€‚請檢查並æä¾›æ­£ç¢ºçš„æ–‡ä»¶ã€‚", + "Capture an Image of Your Criminal Record": "æ‹æ”犯罪紀錄的相片", + "IssueDate": "簽發日期", + "Capture an Image of Your car license front": "å¾žæ­£é¢æ‹æ”你的汽車駕駛執照", + "Capture an Image of Your ID Document front": "å¾žæ­£é¢æ‹æ”身分證件相片", + "NationalID": "國民登記號碼", + "FullName": "å…¨å", + "InspectionResult": "æª¢æŸ¥çµæžœ", + "Criminal Record": "犯罪紀錄", + "The email or phone number is already registered.": "電郵或電話號碼已登記。", + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "è‹¥è¦é€éŽUber Travel Appæˆç‚ºå…±ä¹˜è·æ¥­é§•駛,您需è¦ä¸Šå‚³é§•駛執照ã€èº«åˆ†è­‰æ˜Žæ–‡ä»¶å’Œè»Šè¼›ç™»è¨˜æ–‡ä»¶ã€‚我們的人工智能系統將在2-3分é˜å…§ç«‹å³å¯©æŸ¥ä¸¦é©—證其真實性。文件通éŽå¯©æ ¸å¾Œï¼Œä½ ä¾¿å¯é€éŽUber Travel Appæˆç‚ºå¸æ©Ÿå¤¥ä¼´ã€‚請注æ„,æä¾›å½é€ æ–‡ä»¶æ˜¯åš´é‡é•法行為,å¯èƒ½æœƒå°Žè‡´ç«‹å³çµ‚止和法律後果。", + "Documents check": "文件驗證", + "Driver's License": "駕駛執照", + "License Type": "授權類型", + "National Number": "國民身分證號碼:", + "Name (Arabic)": "å§“å(阿拉伯文)", + "Name (English)": "英語", + "Address": "標題", + "Issue Date": "簽發日期", + "Expiry Date": "到期日期", + "License Categories": "許å¯è­‰é¡žåˆ¥", + "driver_license": "駕駛執照", + "Capture an Image of Your Driver License": "è«‹æ‹æ”駕駛執照的相片", + "ID Documents Back": "身分證件外觀", + "National ID": "國民身分證", + "Occupation": "è·æ¥­", + "Gender": "性別", + "Religion": "å®—æ•™", + "Marital Status": "婚姻狀æ³", + "Full Name (Marital)": "å…¨å(é…å¶ï¼‰", + "Expiration Date": "çµæŸæ—¥æœŸ", + "Capture an Image of Your ID Document Back": "æ‹æ”身份證明文件背é¢çš„相片", + "ID Documents Front": "身分證件正é¢", + "First Name": "åå­—", + "CardID": "æ‹æ”身份證明文件背é¢çš„相片", + "Full Name": "å…¨å", + "Vehicle Details Front": "æ­£é¢è»Šè¼›è©³ç´°è³‡è¨Š", + "Plate Number": "車牌號碼", + "Owner Name": "所有者姓å", + "Vehicle Details Back": "冿¬¡æä¾›è»Šè¼›è©³ç´°è³‡è¨Š", + "Make": "制作", + "Model": "汽車型號:", + "Year": "å¹´", + "Chassis": "機箱", + "Color": "é¡è‰²", + "Displacement": "替代", + "Fuel": "燃料", + "Tax Expiry Date": "到期日期", + "Inspection Date": "考核日期", + "Capture an Image of Your car license back": "è«‹å†æ¬¡æ‹æ”車輛執照的相片", + "Capture an Image of Your Driver’s License": "è«‹æ‹æ”駕駛執照的相片", + "Sign in with Google for easier email and name entry": + "使用Google登入,輕鬆輸入電å­éƒµä»¶å’Œå§“å", + "You will choose allow all the time to be ready receive orders": + "您å¯ä»¥é¸æ“‡éš¨æ™‚接å—ç¾æˆè¨‚å–®", + "Welcome to Intaleq!": "歡迎來到Safar ï¼", + "Get to your destination quickly and easily.": "輕鬆快æ·åœ°å‰å¾€ç›®çš„地。", + "Enjoy a safe and comfortable ride.": "享å—安全舒é©çš„行程。", + "Choose Language": "鏿“‡èªžè¨€", + "Login": "登錄", + "Pay with Wallet": "使用銀包付款", + "Invalid MPIN": "MPIN代碼無效", + "Invalid OTP": "無效的驗證碼", + "Enter your email address": "輸入您的電å­éƒµä»¶åœ°å€", + "Please enter Your Email.": "請輸入...", + "Enter your phone number": "輸入你的電話號碼", + "Please enter your phone number.": "請輸入您的電話號碼。", + "Please enter Your Password.": "輸入您的密碼", + "Submit": "æäº¤", + "if you dont have account": "如果你沒有帳戶", + "Register": "馬德羅", + "Accept Ride's Terms & Review Privacy Notice": "接å—è¡Œç¨‹æ¢æ¬¾ä¸¦æŸ¥çœ‹éš±ç§æ¬Šè²æ˜Ž", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "åœ¨ä¸‹æ–¹é¸æ“‡ã€Œæˆ‘åŒæ„ã€ï¼Œå³è¡¨ç¤ºæˆ‘å·²é–±è®€ä¸¦åŒæ„ä½¿ç”¨æ¢æ¬¾ï¼Œä¸¦ç¢ºèªéš±ç§æ¬Šè²æ˜Žã€‚我已年滿18歲。", + "I Agree": "åŒæ„", + "First name": "åå­—", + "Enter your first name": "輸入您的åå­—", + "Please enter your first name.": "請輸入您的姓å。", + "Last name": "å§“æ°", + "Enter your last name": "輸入姓æ°", + "Please enter your last name.": "請輸入您的姓å。", + "City": "城市", + "Please enter your City.": "請輸入...", + "Male": "男性", + "Female": "女", + "Verify Email": "驗證電å­éƒµä»¶", + "We sent 5 digit to your Email provided": "我們已將5使•¸å‚³é€è‡³ä½ æä¾›çš„電郵", + "5 digit": "PIN碼( 5使•¸ï¼‰", + "Send Verification Code": "驗證碼", + "Your Ride Duration is": "你的行程時間為", + "You will be thier in": "你會把它們放進去", + "You trip distance is": "你的行程è·é›¢ç‚º", + "Fee is": "費用為", + "To :": "Suoi To", + "Add Promo": "新增優惠", + "Confirm Selection": "確èªé¸æ“‡", + "distance is": "è·é›¢ç‚º", + "duration is": "æŒçºŒæ™‚間為", + "I don't need a ride anymore": "我ä¸å†éœ€è¦æŽ¥è¼‰æœå‹™", + "I was just trying the application": "æˆ‘åªæ˜¯æƒ³è©¦è©¦App", + "No driver accepted my request": "æ²’æœ‰è·æ¥­é§•é§›æŽ¥å—æˆ‘的訂單", + "I added the wrong pick-up/drop-off location": "你新增的上下車地點有誤", + "I don't have a reason": "我沒有ç†ç”±", + "Other": "å…¶ä»– ", + "Can we know why you want to cancel Ride ?": "è«‹å•æ‚¨æƒ³å–消行程的原因為何?", + "Cancel Ride": "å–æ¶ˆï¼", + "Add Payment Method": "新增付款方å¼", + "Your Wallet balance is": "您的錢包餘é¡ç‚º", + "Ride Wallet": "行程錢包", + "Payment Method": "付款方å¼", + "Type here Place": "在此輸入地點", + "Are You sure to ride to": "æ‚¨ç¢ºå®šè¦æ­ä¹˜å‰å¾€", + "Confirm": "確èª", + "Back": "返回", + "You are Delete": "您正在刪除", + "Deleted": "已刪除", + "You Dont Have Any places yet !": "您還沒有任何åé¡ï¼", + "Favorite Places": "最愛的好去處", + "From : Current Location": "ç•¶å‰ä½ç½®ï¼š", + "Where to": "在哪裡?", + "Notifications": "通知", + "Profile": "個人資料", + "Home": "首é ", + "My Cared": "MyCurt", + "Add Card": "新增å¡ç‰‡", + "Add Credit Card": "新增信用å¡", + "Please enter the cardholder name": "請輸入æŒå¡äººå§“å", + "Please enter the expiry date": "請輸入到期日", + "Please enter the CVV code": "請輸入å¡ç‰‡é©—證碼", + "Go To Favorite Places": "å‰å¾€ã€Œæœ€æ„›å¥½åŽ»è™•ã€", + "Go to this Target": "å‰å¾€æ­¤ç›®æ¨™", + "My Profile": "個人資料", + "Sign Out": "退出", + "Home Page": "首é ", + "Are you want to go to this site": "是å¦è¦å‰å¾€æ­¤åœ°é»ž", + "MyLocation": "我的ä½ç½®", + "my location": "我的ä½ç½®", + "Target": "目的", + "Update": "æ›´æ–°", + "You Should choose rate figure": "æ‚¨å¿…é ˆé¸æ“‡æ­£ç¢ºçš„號碼", + "Login Captin": "登入隊長", + "Register Captin": "隊長登記", + "Send Verfication Code": "發é€é©—證碼", + "End Ride": "æ­ä¹˜", + "Minute": "分", + "Go to passenger Location now": "ç«‹å³å‰å¾€ä¹˜å®¢æ‰€åœ¨åœ°é»ž", + "Duration of the Ride is": "行程時間為", + "Distance of the Ride is": "行程è·é›¢ç‚º", + "Name of the Passenger is": "ä¹˜å®¢çš„å§“åæ˜¯", + "Hello this is Captain": "你好,我是隊長", + "Start the Ride": "開始行程", + "Please Wait If passenger want To Cancel!": "å¦‚æžœä¹˜å®¢æƒ³å–æ¶ˆè¡Œç¨‹ï¼Œè«‹ç¨å€™ï¼", + "Total Duration:": "總æŒçºŒæ™‚間:", + "Active Duration:": "作用中步驟æŒçºŒæ™‚é–“", + "Waiting for Captin ...": "正在等候艦長…", + "Age is": "年齡為", + "Rating is": "評分為", + "to arrive you.": "與您è¯çµ¡ã€‚", + "Order History": "記錄訂單紀錄", + "My Wallet": "我的錢包", + "Tariff": "費率", + "Settings": "設定", + "Feed Back": "æ„見回饋", + "Promos": "é¡å¤–çŽå‹µ", + "Please enter a valid 16-digit card number": "請輸入有效的訂單編號。", + "Add Phone": "致電", + "Please enter a phone number": "請輸入電話號碼", + "You dont Add Emergency Phone Yet!": "你尚未新增緊急電話ï¼", + "You will arrive to your destination after": "你將於之後抵é”目的地", + "You can cancel Ride now": "ä½ ç¾åœ¨å¯ä»¥å–消行程", + "You Can cancel Ride After Captain did not come in the time": + "èˆ¹é•·æœªåŠæ™‚抵é”後,您å¯ä»¥å–消行程", + "If you in Car Now. Press Start The Ride": "如果你ç¾åœ¨åœ¨è»Šä¸Šè¼•點「開始行程ã€", + "You Dont Have Any amount in": "您在沒有任何金é¡", + "Wallet!": "錢包ï¼", + "You Have": "您有", + "Save Credit Card": "ä¿ç•™ä¿¡ç”¨å¡", + "Show Promos": "查看優惠", + "10 and get 4% discount": "10å³äº«4%折扣", + "20 and get 6% discount": "20å³äº«6%折扣", + "40 and get 8% discount": "40å³äº«8%折扣", + "100 and get 11% discount": "100%折扣11%", + "Pay with Your PayPal": "使用PayPal付款", + "You will choose one of above !": "你將鏿“‡ä¸Šé¢çš„其中一個é¸é …ï¼", + "Cancel": "å–æ¶ˆ", + "Delete My Account": "刪除我的帳戶", + "Edit Profile": "編輯個人資料", + "Name": "å稱字體", + "Update Gender": "更新性別", + "Education": "教育", + "Update Education": "更新教育背景", + "Employment Type": "工作類型", + "SOS Phone": "SOS電話", + "High School Diploma": "高中文憑", + "Associate Degree": "è¯åˆæ–‡æ†‘å­¸ä½", + "Bachelor's Degree": "學士學ä½", + "Master's Degree": "碩士學ä½", + "Doctoral Degree": "åšå£«å­¸ä½", + "Promos For today": "本日優惠", + "Copy this Promo to use it in your Ride!": "複製此優惠,以便在行程中使用ï¼", + "To change some Settings": "è‹¥è¦è®Šæ›´éƒ¨åˆ†è¨­å®š", + "To change Language the App": "變更App語言的步驟", + "Order Request Page": "訂單申請é é¢", + "Rouats of Trip": "拉瓦特之旅", + "Passenger Name is": "乘客姓å", + "Total From Passenger is": "乘客支付的總金é¡ç‚º", + "Duration To Passenger is": "è·é›¢ä¹˜å®¢çš„æŒçºŒæ™‚é–“", + "Distance To Passenger is": "與乘客的è·é›¢ç‚º", + "Total For You is": "你的總金é¡ç‚º", + "Distance is": "è·é›¢", + "KM": "å…¬è£", + "Duration of Trip is": "行程時間為", + "Minutes": "分", + "Apply Order": "套用訂單", + "Refuse Order": "拒絕申請", + "Rate Captain": "隊長評分", + "Enter your Note": "輸入備註", + "Type something...": "寫點æ±è¥¿...", + "Submit rating": "æä¾›è©•ä¼°", + "Rate Passenger": "乘客評分", + "Ride Summary": "旅程摘è¦", + "welcome_message": "歡迎訊æ¯", + "app_description": "ApplicationDescription", + "get_to_destination": "抵é”目的地", + "get_a_ride": "é ç´„行程", + "safe_and_comfortable": "安全舒é©", + "committed_to_safety": "致力ä¿éšœå®‰å…¨", + "Driver Applied the Ride for You": "代您完æˆè¡Œç¨‹çš„è·æ¥­é§•é§›", + "Show latest promo": "顯示最新優惠", + "Cancel Trip": "å–æ¶ˆè¡Œç¨‹", + "Passenger Cancel Trip": "ä¹˜å®¢å–æ¶ˆè¡Œç¨‹", + "Please stay on the picked point.": "è«‹åœç•™åœ¨æ‰€é¸åœ°é»žã€‚", + "Trip is Begin": "旅程開始", + "Hi ,I will go now": "嗨,我ç¾åœ¨å°±åŽ»", + "Passenger come to you": "乘客å³å°‡æŠµé”", + "Hi ,I Arrive your site": "ï¼Œæ‚¨å¥½ï¼šæ‚¨å·²æŠµé”æ‰€åœ¨åœ°é»žã€‚", + "Driver Finish Trip": "è·æ¥­é§•é§›è¡Œç¨‹çµæŸ", + "you will pay to Driver": "您將å‘è·æ¥­é§•駛付款", + "Driver Cancel Your Trip": "叿©Ÿå¤¥ä¼´ï¼Œè«‹å–消行程。", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "您將å‘è·æ¥­é§•é§›æ”¯ä»˜æ‚¨å°‡æ”¯ä»˜è·æ¥­é§•駛花費的時間看看您的Intaleq錢包", + "I will go now": "我ç¾åœ¨å°±åŽ»ã€‚", + "You Have Tips": "你有貼士", + "tips": "貼士", + "Total is": "總金é¡ç‚º", + "No,I want": "ä¸ï¼Œæˆ‘想è¦", + "Your fee is": "您的費用為", + "Do you want to pay Tips for this Driver": "您想給這ä½è·æ¥­é§•é§›å°è²»å—Žï¼Ÿ", + "Tip is": "我的貼士", + "Camera Access Denied.": "相機存å–被拒。", + "Open Settings": "開啟設定", + "GPS Required Allow !.": "需è¦å•Ÿç”¨GPS ï¼", + "Your Account is Deleted": "您的帳戶已刪除", + "Are you sure to delete your account?": "您確定è¦åˆªé™¤æ‚¨çš„帳戶嗎?", + "Your data will be erased after 2 weeks": "您的資料將在2週後刪除", + "And you will can't return to use app after 1 month": "ä½ å°‡å¯åœ¨ä¸€å€‹æœˆå¾Œè¿”回App", + "Enter Your First Name": "輸入您的åå­—", + "Are you Sure to LogOut?": "您確定è¦ç™»å‡ºå—Žï¼Ÿ", + "Email Wrong": "é›»å­éƒµä»¶", + "Email you inserted is Wrong.": "您輸入的電å­éƒµä»¶åœ°å€æœ‰èª¤ã€‚", + "You have finished all times": "你已經完æˆäº†æ‰€æœ‰çš„æ™‚é–“", + "if you want help you can email us here": "如果您需è¦å¹«åŠ©ï¼Œè«‹ç™¼é€é›»å­éƒµä»¶è‡³æ­¤è™•", + "Thanks": "è¬è¬", + "Email Us": "發é€é›»å­éƒµä»¶çµ¦æˆ‘們", + "I cant register in your app in face detection": + "我無法é€éŽè‡‰éƒ¨åµæ¸¬åŠŸèƒ½è¨»å†Šä½ çš„æ‡‰ç”¨ç¨‹å¼", + "Hi": "ni hao", + "No face detected": "æœªåµæ¸¬åˆ°è‡‰éƒ¨", + "Image detecting result is": "å½±åƒåµæ¸¬çš„çµæžœæ˜¯", + "from 3 times Take Attention": "è¶…éŽ3次引起你的注æ„", + "Be sure for take accurate images please": "è«‹å‹™å¿…æ‹æ”準確的相片", + "You have": "您有", + "image verified": "相片已公證", + "Next": "下一步", + "There is no help Question here": "這裡沒有幫助å•題", + "Call End": "çµæŸé€šè©±", + "You dont have Points": "您沒有ç©åˆ†", + "You Are Stopped For this Day !": "您今天已被暫åœï¼", + "You must be charge your Account": "您必須為您的帳戶充值", + "You Refused 3 Rides this Day that is the reason": "你今天拒絕了3個行程,因此", + "See you Tomorrow!": "明天見ï¼", + "Recharge my Account": "呿ˆ‘的帳戶充值", + "Ok , See you Tomorrow": "好å§ï¼Œæ˜Žå¤©è¦‹ã€‚", + "You are Stopped": "ä½ å·²åœæ­¢æŽ¥å–®", + "Connected": "已連線", + "Not Connected": "離線", + "Your are far from passenger location": "您è·é›¢ä¹˜å®¢æ‰€åœ¨åœ°é»žå¾ˆé ", + "go to your passenger location before": "請在å‰å‰å¾€ä¹˜å®¢æ‰€åœ¨åœ°é»ž", + "Passenger cancel trip": "ä¹˜å®¢å·²å–æ¶ˆè¡Œç¨‹", + "You will get cost of your work for this trip": "ä½ å°‡ç²å¾—這趟旅程的費用", + "in your wallet": "在您的錢包中", + "you gain": "您賺å–了", + "Order Cancelled": "è¨‚å–®å·²å–æ¶ˆ", + "Order Cancelled by Passenger": "ä¹˜å®¢å·²å–æ¶ˆé ç´„", + "Success": "æˆåŠŸ", + "Feedback data saved successfully": "å·²æˆåŠŸå„²å­˜è©•é‘‘è³‡æ–™", + "No Promo for today .": "今天沒有優惠。", + "Select your destination": "鏿“‡ç›®çš„地", + "Search for your Start point": "尋找出發點", + "Search for waypoint": "æœå°‹WIPOINT點", + "Current Location": "ç•¶å‰ä½ç½®", + "Add Location 1": "添加ä½ç½®1", + "You must Verify email !.": "必須驗證電å­éƒµä»¶ï¼", + "Cropper": "收割", + "Saved Sucssefully": "儲存æˆåŠŸ", + "Select Date": "鏿“‡æ—¥æœŸ", + "Birth Date": "出生日期", + "Ok": "也已无大ç¢", + "the 500 points equal 30 JOD": "500分等於30 JOD", + "the 500 points equal 30 JOD for you": "500ç©åˆ†ç­‰æ–¼30 JOD", + "token updated": "代碼已更新", + "Add Location 2": "添加ä½ç½®2", + "Add Location 3": "新增地點3", + "Add Location 4": "新增地點4", + "Waiting for your location": "正在等候你的地點", + "Search for your destination": "尋找目的地", + "Hi! This is": "您好ï¼é‚£å€‹é…·", + "I am using": "我使用", + "to ride with": "æä¾›æ­ä¹˜æœå‹™", + "as the driver.": "æˆç‚ºè·æ¥­é§•駛。", + "is driving a": "上線開車", + "with license plate": "有車牌號碼", + "I am currently located at": "我目å‰åœ¨", + "Please go to Car now": "è«‹ç«‹å³ä¸Šè»Š", + "If you need to reach me, please contact the driver directly at": + "如需è¯çµ¡æˆ‘,請直接è¯çµ¡è·æ¥­é§•駛:", + "No Car or Driver Found in your area.": "æ‚¨æ‰€åœ¨åœ°å€æ²’æœ‰æ‰¾åˆ°è»Šè¼›æˆ–è·æ¥­é§•駛。", + "Please Try anther time": "è«‹å†è©¦ä¸€æ¬¡", + "There no Driver Aplly your order sorry for that": + "å¾ˆæŠ±æ­‰ï¼Œæ²’æœ‰è·æ¥­é§•é§›èƒ½å¤ æ»¿è¶³æ‚¨çš„è¦æ±‚。", + "Trip Cancelled": "è¡Œç¨‹å·²å–æ¶ˆ", + "The Driver Will be in your location soon .": "è·æ¥­é§•é§›å³å°‡æŠµé”您的所在地點。", + "The distance less than 500 meter.": "è·é›¢ä¸åˆ°500米。", + "Promo End !": "è¡¨æ¼”çµæŸäº†ï¼", + "There is no notification yet": "尚無通知", + "Use Touch ID or Face ID to confirm payment": + "使用Touch ID或Face ID確èªä»˜æ¬¾", + "Contact us for any questions on your order.": "如å°è¨‚單有任何疑å•,請è¯çµ¡æˆ‘們。", + "Pyament Cancelled .": "ä»˜æ¬¾å·²å–æ¶ˆã€‚", + "type here": "在此輸入", + "Scan Driver License": "駕駛執照檢查", + "Please put your licence in these border": "請將執照放置在這些範åœå…§", + "Camera not initialized yet": "相機尚未設定", + "Take Image": "æ‹æ”相片", + "AI Page": "AIé é¢", + "Take Picture Of ID Card": "è«‹æ‹æ”身份證明文件的相片", + "Take Picture Of Driver License Card": "è«‹æ‹æ”駕駛執照的相片。", + "We are process picture please wait": "我們正在處ç†åœ–片,請ç¨å€™ã€‚", + "There is no data yet.": "尚無數據。", + "Name :": "å稱字體", + "Drivers License Class:": "駕照類別:", + "Document Number:": "文件編號:", + "Address:": "標題", + "Height:": "長度:", + "Expiry Date:": "到期日期:", + "Date of Birth:": "出生日期:", + "You can't continue with us .": "您無法繼續使用我們的æœå‹™ã€‚", + "You should renew Driver license": "你必須更新駕駛執照", + "Detect Your Face": "發ç¾ä½ çš„臉孔", + "Go to next step": "å‰å¾€ä¸‹ä¸€æ­¥", + "scan Car License.": "車輛牌照審查。", + "Name in arabic": "å§“å(阿拉伯文)", + "Drivers License Class": "駕照類別", + "Date of Birth": "出生日期", + "Age": "年齡", + "Lets check Car license": "請檢查車牌號碼", + "Car Kind": "車輛類型", + "Car Plate": "車牌號碼", + "Lets check License Back Face": "請檢查背é¢åŸ·ç…§", + "Car License Card": "車輛牌照", + "No image selected yet": "å°šæœªé¸æ“‡ç›¸ç‰‡", + "Made :": "製作儀å¼", + "model :": "型號:", + "VIN :": "底盤編號:", + "year :": "年份:", + "ÙExpire Date": "çµæŸæ—¥æœŸ", + "Login Driver": "è·æ¥­é§•駛登入", + "Password must br at least 6 character.": "密碼必須至少為6個字元。", + "if you don't have account": "如果你沒有帳戶", + "Here recorded trips audio": "以下是行程錄音", + "Register as Driver": "註冊æˆç‚ºè·æ¥­é§•é§›", + "Privacy Notice": "éš±ç§æ¬Šè²æ˜Ž", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the": + "åœ¨ä¸‹æ–¹é¸æ“‡ã€Œæˆ‘åŒæ„ã€ï¼Œå³è¡¨ç¤ºæˆ‘已查看ã€åŒæ„ä¸¦ç¢ºèªæ¢æ¬¾èˆ‡ç´°å‰‡", + ". I am at least 18 years of age.": ". 我已年滿18歲。", + "Log Out Page": "çµå¸³é é¢", + "Log Off": "退出", + "Register Driver": "è·æ¥­é§•駛紀錄", + "Verify Email For Driver": "æŸ¥çœ‹è·æ¥­é§•駛的電å­éƒµä»¶åœ°å€", + "Admin DashBoard": "管ç†å“¡å„€è¡¨æ¿", + "Your name": "您的姓å", + "your ride is applied": "已套用你的行程", + "Your password": "您的密碼", + "LE": "埃åŠéŽŠ", + "JOD": "約旦第ç´çˆ¾", + "m": "陳", + "We search nearst Driver to you": "我們正在尋找è·é›¢æ‚¨æœ€è¿‘çš„è·æ¥­é§•é§›", + "please wait till driver accept your order": "è«‹ç­‰å€™è·æ¥­é§•é§›æŽ¥å—æ‚¨çš„é ç´„", + "No accepted orders? Try raising your trip fee to attract riders.": + "沒有已接å—的訂單?請嘗試æé«˜è¡Œç¨‹è²»ç”¨ï¼Œä»¥å¸å¼•乘客。", + "You should select one": "æ‚¨å¿…é ˆé¸æ“‡ä¸€é …", + "The driver accept your order for": "è·æ¥­é§•é§›å·²æŽ¥å—æ‚¨çš„é ç´„", + "Increase Fee": "增加費用", + "No, thanks": "ä¸ç”¨äº†ï¼Œè¬è¬", + "The driver on your way": "è·æ¥­é§•駛正在途中", + "Total price from": "總價最低", + "Order Details Intaleq": "Intaleq訂單詳細資訊", + "Order Applied": "訂單已套用", + "accepted your order": "您的申請已被接å—", + "We regret to inform you that another driver has accepted this order.": + "å¾ˆæŠ±æ­‰é€šçŸ¥æ‚¨ï¼Œå…¶ä»–è·æ¥­é§•é§›å·²æŽ¥å—æ­¤é ç´„。", + "Selected file:": "æ‰€é¸æª”案:", + "Your trip cost is": "行程費用", + "this will delete all files from your device": "這將刪除您è£ç½®ä¸Šçš„æ‰€æœ‰æª”案", + "you have a negative balance of": "您的餘é¡ç‚ºè² æ•¸", + "in your": "VIC", + "Exclusive offers and discounts always with the Intaleq app": + "隨時é€éŽæ—…éŠæ‡‰ç”¨ç¨‹å¼äº«å—專屬優惠和折扣", + "Please go to Car Driver": "è«‹å‰å¾€è»Šè¼›çš„è·æ¥­é§•駛處", + "wallet due to a previous trip.": "因上一趟行程而產生的錢包。", + "Submit Question": "æäº¤å•題", + "Please enter your Question.": "請輸入您的å•題。", + "Help Details": "幫助詳情", + "No trip yet found": "尚未找到行程", + "No Response yet.": "還沒有回復。", + "You Earn today is": "您今天的收入是", + "You Have in": "您有", + "Total points is": "總分為", + "Total Connection Duration:": "總連線æŒçºŒæ™‚間:", + "H and": "Hå’Œ", + "Passenger name :": "乘客姓å:", + "Cost Of Trip IS": "行程費用為", + "Arrival time": "æŠµé”æ™‚é–“", + "arrival time to reach your point": "抵é”目的地的時間", + "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "å°æ–¼å¿«é€Ÿè¡Œç¨‹å’Œå¤–é€è¡Œç¨‹ï¼Œåƒ¹æ ¼æœƒè‡ªå‹•計算。為了æä¾›èˆ’é©çš„行程體驗,行程費用會根據行程時間和è·é›¢è€Œå®šã€‚", + "Hello this is Driver": "ï¼Œæ‚¨å¥½ï¼šæˆ‘æ˜¯è·æ¥­é§•é§›", + "Is the Passenger in your Car ?": "乘客是å¦åœ¨æ‚¨çš„車內?", + "Please wait for the passenger to enter the car before starting the trip.": + "請等候乘客上車後å†é–‹å§‹è¡Œç¨‹ã€‚", + "No ,still Waiting.": "ä¸ï¼Œæˆ‘還在等你。", + "I arrive you": "我抓ä½ä½ äº†", + "I Arrive your site": "我抓ä½ä½ äº†", + "You are not in near to passenger location": "您ä¸åœ¨ä¹˜å®¢æ‰€åœ¨åœ°é»žé™„è¿‘", + "please go to picker location exactly": "è«‹å‰å¾€æ‰€é¸é …目的確切ä½ç½®", + "You Can Cancel Trip And get Cost of Trip From": "您å¯ä»¥å–消行程,並é€éŽç²å¾—行程費用", + "Are you sure to cancel?": "您確定è¦å–消嗎?", + "Yes": "是", + "Insert Emergincy Number": "輸入緊急電話號碼", + "Best choice for comfort car and flexible route and stops point": + "舒é©çš„車輛ã€éˆæ´»çš„路線和åœè»Šé»žçš„æœ€ä½³é¸æ“‡", + "Insert": "æ’å…¥", + "This is for delivery or a motorcycle.": "é©ç”¨æ–¼é€éžæˆ–電單車。", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "這趟行程會直接從您的出發地點å‰å¾€ç›®çš„地,費用為å‡ä¸€åƒ¹ã€‚è·æ¥­é§•駛必須按照è¦åŠƒè·¯ç·šè¡Œé§›", + "You can decline a request without any cost": "ä½ å¯ä»¥å…費拒絕申請", + "Perfect for adventure seekers who want to experience something new and exciting": + "éžå¸¸é©åˆæƒ³å˜—試新奇刺激體驗的探險者", + "My current location is:": "我目å‰çš„ä½ç½®æ˜¯ï¼š", + "and I have a trip on": "我在有趟行程", + "App with Passenger": "å‘乘客æå‡ºç”³è«‹", + "You will be pay the cost to driver or we will get it from you on next trip": + "è²»ç”¨æœƒæ”¯ä»˜çµ¦è·æ¥­é§•駛,å¦å‰‡æˆ‘å€‘æœƒåœ¨ä¸‹è¶Ÿè¡Œç¨‹ä¸­å‘æ‚¨æ”¶å–", + "Trip has Steps": "此行程有個步驟", + "Distance from Passenger to destination is": "乘客與目的地的è·é›¢ç‚º", + "price is": "價格為", + "This ride type does not allow changes to the destination or additional stops": + "此行程類型ä¸å…許變更目的地或其他åœé é»ž", + "This price may be changed": "此價格å¯èƒ½æœƒæœ‰è®Šå‹•", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "沒有SIMå¡ï¼Œæ²’å•題ï¼è«‹ç›´æŽ¥é€éŽAppè¯çµ¡è·æ¥­é§•é§›ã€‚æˆ‘å€‘ä½¿ç”¨å…ˆé€²æŠ€è¡“ä¾†ç¢ºä¿æ‚¨çš„éš±ç§ã€‚", + "This ride type allows changes, but the price may increase": + "此旅程類型å…許變更,但價格å¯èƒ½æœƒä¸Šæ¼²", + "message From passenger": "來自乘客的訊æ¯", + "Select one message": "鏿“‡ä¸€å‰‡è¨Šæ¯", + "My location is correct. You can search for me using the navigation app": + "我的ä½ç½®æ­£ç¢ºã€‚ä½ å¯ä»¥ä½¿ç”¨å°Žèˆªæ‡‰ç”¨ç¨‹å¼æœå°‹æˆ‘", + "I'm waiting for you": "我在等你", + "Hello, I'm at the agreed-upon location": ",您好:我在約定的地點", + "We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "我們注æ„åˆ°è»Šé€Ÿè¶…éŽæ¯å°æ™‚100å…¬è£ã€‚為了您的安全,請放慢速度。如果你感到ä¸å®‰å…¨ï¼Œå¯ä»¥èˆ‡è¯çµ¡äººåˆ†äº«è¡Œç¨‹è©³ç´°è³‡æ–™ï¼Œæˆ–使用紅色é‡éšªæŒ‰éˆ•致電警方。", + "Warning: Intaleqing detected!": "è­¦å‘Šï¼šåµæ¸¬åˆ°è¶…速ï¼", + "Please help! Contact me as soon as possible.": "請幫幫我ï¼è«‹ç›¡å¿«èˆ‡æˆ‘è¯çµ¡ã€‚", + "Share Trip Details": "æä¾›è¡Œç¨‹è©³ç´°è³‡è¨Š", + "Car Plate is": "車牌號碼", + "the 3000 points equal 3000 L.E for you": "3000分等於3000 EGP", + "So go and gain your money": "é–‹å§‹è³ºå–æ”¶å…¥", + "the 3000 points equal 3000 L.E": "3000分等於3000 EGP", + "The payment was not approved. Please try again.": "付款未批準。請å†è©¦ä¸€æ¬¡ã€‚", + "Payment Failed": "付款失敗", + "Error": "錯誤", + "An error occurred during the payment process.": "您的付款發生錯誤。", + "The payment was approved.": "付款已批準。", + "Payment Successful": "付款æˆåŠŸ", + "No ride found yet": "尚未找到行程", + "Accept Order": "接å—é ç´„", + "reject your order.": "拒絕你的申請。", + "Bottom Bar Example": "底部欄範例", + "Driver phone": "è·æ¥­é§•駛電話", + "Statistics": "統計資料", + "Origin": "資產", + "Destination": "目的地", + "Driver Name": "è·æ¥­é§•駛姓å", + "Driver Car Plate": "駕駛車牌號碼", + "Available for rides": "å¯ä¾›é ç´„行程", + "Scan Id": "身分驗證", + "Camera not initilaized yet": "相機尚未設定", + "Scan ID MklGoogle": "MklGoogle身分檢查", + "Language": "語言", + "Jordan": "ç´„æ—¦", + "USA": "美國", + "Egypt": "埃åŠ", + "Turkey": "土耳其", + "Saudi Arabia": "沙特阿拉伯", + "Qatar": "å¡å¡”爾", + "Bahrain": "å·´æž—", + "Kuwait": "ç§‘å¨ç‰¹", + "But you have a negative salary of": "但你的負薪水是", + "Promo Code": "優惠碼", + "Your trip distance is": "你的行程è·é›¢ç‚º", + "Enter promo code": "輸入優惠åºè™Ÿ", + "You have promo!": "ä½ æœ‰æ™‰å‡æ©Ÿæœƒï¼", + "Cost Duration": "費用æŒçºŒæ™‚é–“", + "Duration is": "æŒçºŒæ™‚間為", + "Leave": "離開", + "Join": "加入", + "You Should be select reason.": "æ‚¨å¿…é ˆé¸æ“‡ä¸€å€‹åŽŸå› ã€‚", + "\$": "\$", + "Waiting for Driver ...": "æ­£åœ¨ç­‰å€™è·æ¥­é§•駛…", + "Latest Recent Trip": "最新行程", + "from your list": "從你的心水清單中", + "Do you want to change Work location": "您想變更工作地點嗎?", + "Do you want to change Home location": "您是å¦è¦æ›´æ”¹æˆ¿æºçš„ä½ç½®", + "We Are Sorry That we dont have cars in your Location!": + "很抱歉,你所在地å€ç„¡æ³•æä¾›è»Šè¼›æœå‹™ï¼", + "Choose from Map": "å¾žåœ°åœ–ä¸­é¸æ“‡", + "Pick your ride location on the map - Tap to confirm": + "åœ¨åœ°åœ–ä¸Šé¸æ“‡ä¸Šè»Šåœ°é»žï¼Œé»žæŒ‰å³å¯ç¢ºèª", + "To Work": "商務差旅", + "Are you want to go this site": "是å¦è¦å‰å¾€æ­¤åœ°é»ž", + "Closest & Cheapest": "è·é›¢æœ€è¿‘ã€åƒ¹æ ¼æœ€ä¾¿å®œ", + "Work Saved": "已儲存:", + "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": + "Intaleq是一款安全ã€å¯é ä¸”易於使用的å«è»ŠApp。", + "With Intaleq, you can get a ride to your destination in minutes.": + "é€éŽè¡Œç¨‹ï¼Œä½ å¯ä»¥åœ¨å¹¾åˆ†é˜å…§é ç´„行程å‰å¾€ç›®çš„地。", + "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": + "Safar致力於安全,我們所有的指æ®å®˜éƒ½ç¶“éŽä»”細審查和背景調查。", + "To Home": "å‰å¾€é¦–é ", + "Home Saved": "已儲存:", + "Destination selected": "å·²é¸å–目的地", + "Now select start pick": "ç¾åœ¨é¸æ“‡ã€Œé–‹å§‹é¸æ“‡ã€", + "Pick from map": "å¾žåœ°åœ–ä¸­é¸æ“‡", + "Click here point": "點擊此處", + "No Car in your site. Sorry!": "ä½ æ‰€åœ¨åœ°å€æ²’有車輛。糟糕ï¼", + "Nearest Car for you about": "è·é›¢æ‚¨æœ€è¿‘的車輛大約", + "N/A": "ç„¡ä¿¡æ¯", + "From :": "寄件人:", + "Get Details of Trip": "å–得旅程詳情", + "If you want add stop click here": "如果你想新增åœè»Šé»žï¼Œè«‹æŒ‰ä¸€ä¸‹æ­¤è™•", + "Driver": "è·æ¥­é§•é§›", + "Where you want go": "你想去哪裡?", + "My Card": "我的信用å¡", + "Start Record": "開始錄制", + "Wallet": "錢包", + "History of Trip": "行程日期", + "Helping Center": "說明中心", + "Record saved": "記錄已儲存", + "Trips recorded": "已記錄的行程", + "Select Your Country": "鏿“‡ä½ çš„國家ï¼åœ°å€", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "ç‚ºç¢ºä¿æ‚¨æœ‰æœ€æº–確的ä½ç½®è³‡è¨Šï¼Œè«‹åœ¨ä¸‹æ–¹é¸æ“‡æ‚¨çš„國家/地å€ã€‚這將有助於為您的國家/地å€è‡ªè¨‚應用程å¼é«”驗和內容。", + "Are you sure to delete recorded files": "您確定è¦åˆªé™¤è¨˜éŒ„的檔案嗎", + "Select recorded trip": "鏿“‡è¨˜éŒ„的行程", + "Card Number": "å¡è™Ÿ", + "Hi, Where to": "您好,想去哪裡?", + "Pick your destination from Map": "å¾žåœ°åœ–ä¸Šé¸æ“‡ç›®çš„地", + "Add Stops": "新增åœé é»ž", + "Get Direction": "å–得路線", + "Add Location": "新增地點", + "Switch Rider": "切æ›ä¹˜å®¢", + "You will arrive to your destination after timer end.": + "æ‚¨æœƒåœ¨è¨ˆæ™‚å™¨çµæŸå¾ŒæŠµé”目的地。", + "You can cancel trip": "ä½ å¯ä»¥å–消行程", + "The driver waitting you in picked location .": "è·æ¥­é§•駛正在指定地點等您。", + "Pay with Your": "付款方å¼ï¼š", + "Pay with Credit Card": "使用信用å¡ä»˜æ¬¾", + "Payment History": "付款紀錄", + "Show Promos to Charge": "顯示é‹é€å„ªæƒ ", + "Point": "一個點", + "Driver Wallet": "è·æ¥­é§•駛錢包", + "Total Points is": "總分為", + "Total Budget from trips is": "行程總é ç®—為", + "Total Amount:": "總金é¡ï¼š", + "Total Budget from trips by": "的總é ç®—行程費用", + "Credit card is": "信用å¡", + "This amount for all trip I get from Passengers": "此金é¡é©ç”¨æ–¼æˆ‘收到的所有乘客行程", + "Pay from my budget": "從我的é ç®—中支付", + "This amount for all trip I get from Passengers and Collected For me in": + "此金é¡é©ç”¨æ–¼æˆ‘從乘客收å–的所有行程", + "You can buy points from your budget": "您å¯ä»¥å¾žé ç®—中購買ç©åˆ†", + "insert amount": "輸入金é¡", + "You can buy Points to let you online": "您å¯ä»¥è³¼è²·ç©åˆ†ï¼Œä»¥ä¾¿ç·šä¸Šå­˜å–", + "by this list below": "é€éŽä»¥ä¸‹æ¸…å–®", + "Create Wallet to receive your money": "å»ºç«‹éŒ¢åŒ…ä»¥æ”¶å–æ¬¾é …", + "Enter your feedback here": "在此輸入您的æ„見回饋", + "Please enter your feedback.": "請輸入備註文字", + "Feedback": "æ„見回饋", + "Click here to Show it in Map": "按一下此處å³å¯åœ¨åœ°åœ–上查看", + "Canceled": "已喿¶ˆ", + "Type your Email": "輸入你的電郵", + "No I want": "ä¸ï¼Œæˆ‘想è¦", + "Email is": "é›»å­éƒµä»¶", + "Phone Number is": "電話號碼為", + "Date of Birth is": "出生日期為", + "Sex is": "性別為", + "Car Details": "車輛詳情", + "VIN is": "底盤編號", + "Color is": "é¡è‰²æ˜¯", + "Make is": "Make is", + "Model is": "表單來æºï¼š", + "Year is": "å¹´", + "Edit Your data": "編輯您的詳細資訊", + "write vin for your car": "寫下車輛的底盤號碼", + "VIN": "底盤編號", + "write Color for your car": "輸入車輛é¡è‰²", + "write Make for your car": "為你的車輛撰寫廠牌", + "write Model for your car": "輸入您的汽車型號", + "write Year for your car": "輸入車輛年份", + "write Expiration Date for your car": "輸入車輛的有效期é™", + "Tariffs": "定義", + "Minimum fare": "最低行程費用", + "Maximum fare": "最高價格", + "Flag-down fee": "中途åœç•™è²»ç”¨", + "Including Tax": "å«ç¨…", + "BookingFee": "é è¨‚è²»", + "Morning": "上åˆ", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "07:30 - 10:30 (周四ã€å‘¨äº”ã€å‘¨å…­ã€å‘¨ä¸€ï¼‰", + "Evening": "晚上", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "12:00 - 15:00 (周四ã€å‘¨äº”ã€å‘¨å…­ã€å‘¨ä¸€ï¼‰", + "Night": "晚", + "You have in account": "您在帳戶中有", + "Select Country": "鏿“‡åœ‹å®¶ï¼åœ°å€", + "Ride Today :": "ç«‹å³é ç´„行程:", + "After this period": "在此期間之後", + "You can't cancel!": "ä½ ä¸èƒ½å–消ï¼", + "from 23:59 till 05:30": "23:59 - 05:30", + "Rate Driver": "è·æ¥­é§•駛價值觀", + "Total Cost is": "總費用為", + "Write note": "撰寫備註", + "Time to arrive": "é è¨ˆæŠµé”時間", + "Ride Summaries": "旅程摘è¦", + "Total Cost": "總費用", + "Average of Hours of": "å¹³å‡å·¥ä½œæ™‚數", + "is ON for this month": "本月é‹è¡Œ", + "Days": "天", + "Total Hours on month": "æ¯æœˆç¸½æ™‚數", + "Counts of Hours on days": "å°æ™‚(天)", + "OrderId": "訂單編號", + "created time": "建立時間", + "Intaleq Over": "速度高於", + "I will slow down": "我會慢下來。", + "Map Passenger": "乘客地圖", + "Be Slowly": "慢一點", + "If you want to make Google Map App run directly when you apply order": + "如果您想在應用命令時直接啟動Google地圖", + "You can change the language of the app": "您å¯ä»¥è®Šæ›´App的語言", + "Your Budget less than needed": "您的é ç®—ä¸è¶³", + "You can change the Country to get all features": "您å¯ä»¥æ›´æ”¹åœ‹å®¶/地å€ä»¥ç²å¾—所有功能", + "Change Country": "éžåœ‹å®¶" + }, + "ar-gulf": { + "Order": "طلب", + "OrderVIP": "طلب VIP", + "Cancel Trip": "إلغاء الرحلة", + "Passenger Cancel Trip": "الراكب ألغى الرحلة", + "VIP Order": "طلب VIP", + "The driver accepted your trip": "السائق قبل رحلتك", + "message From passenger": "رسالة من الراكب", + "Cancel": "إلغاء", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "تم إلغاء الرحلة. سيتم Ø¥Ø¶Ø§ÙØ© ØªÙƒÙ„ÙØ© الرحلة إلى Ù…Ø­ÙØ¸ØªÙƒ.", + "token change": "تغيير الرمز", + "face detect": "كش٠الوجه", + "Face Detection Result": "نتيجة كش٠الوجه", + "similar": "مشابه", + "not similar": "غير مشابه", + "Hi ,I will go now": "هلا، أنا بروح الحين", + "Passenger come to you": "الراكب جاي لك", + "Call Income": "مكالمة واردة", + "Call Income from Passenger": "مكالمة واردة من الراكب", + "Criminal Document Required": "مطلوب وثيقة جنائية", + "You should have upload it .": "لازم تكون حملتها.", + "Call End": "انتهاء المكالمة", + "The order has been accepted by another driver.": + "الطلب تم قبوله من سائق ثاني.", + "The order Accepted by another Driver": "الطلب تم قبوله من سائق ثاني", + "We regret to inform you that another driver has accepted this order.": + "نتأس٠لإبلاغك أن سائق آخر قد قبل هذا الطلب.", + "Driver Applied the Ride for You": "السائق قدم طلب الرحلة لك", + "Applied": "تم التقديم", + "Hi ,I Arrive your site": "هلا، وصلت موقعك", + "Please go to Car Driver": "لو سمحت روح حق سائق السيارة", + "Ok I will go now.": "اوكي بروح الحين.", + "Accepted Ride": "تم قبول الرحلة", + "Driver Accepted the Ride for You": "السائق قبل الرحلة لك", + "Promo": "عرض", + "Show latest promo": "عرض أحدث عرض", + "Trip Monitoring": "مراقبة الرحلة", + "Driver Is Going To Passenger": "السائق ÙÙŠ طريقه حق الراكب", + "Please stay on the picked point.": + "لو سمحت خليك ÙÙŠ نقطة الالتقاط المحددة.", + "message From Driver": "رسالة من السائق", + "Trip is Begin": "الرحلة بدت", + "Cancel Trip from driver": "إلغاء الرحلة من السائق", + "We will look for a new driver.\nPlease wait.": + "بندور على سائق جديد.\nلو سمحت انتظر.", + "The driver canceled your ride.": "السائق ألغى رحلتك.", + "Driver Finish Trip": "السائق أنهى الرحلة", + "you will pay to Driver": "Ø¨ØªØ¯ÙØ¹ حق السائق", + "Don’t forget your personal belongings.": "لا تنسى أغراضك الشخصية.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "لو سمحت تأكد إن معاك كل أغراضك الشخصية وإن أي مبلغ متبقي، إذا Ùيه، تم Ø¥Ø¶Ø§ÙØªÙ‡ Ù„Ù…Ø­ÙØ¸ØªÙƒ قبل لا تمشي. شكراً لاستخدامك تطبيق Intaleq", + "Finish Monitor": "إنهاء المراقبة", + "Trip finished": "الرحلة انتهت", + "Call Income from Driver": "مكالمة واردة من السائق", + "Driver Cancelled Your Trip": "السائق ألغى رحلتك", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "Ø¨ØªØ¯ÙØ¹ حق السائق Ø¨ØªØ¯ÙØ¹ ØªÙƒÙ„ÙØ© وقت السائق Ø´ÙˆÙ Ù…Ø­ÙØ¸Ø© Intaleq مالتك", + "Order Applied": "تم تطبيق الطلب" + }, + "ar-ma": { + "Order": "طلب", + "OrderVIP": "طلب VIP", + "Cancel Trip": "إلغي الرحلة", + "Passenger Cancel Trip": "الزبون ألغى الرحلة", + "VIP Order": "طلب VIP", + "The driver accepted your trip": "السائق قبل الرحلة ديالك", + "message From passenger": "رسالة من الزبون", + "Cancel": "إلغاء", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "الرحلة ملغية. الÙلوس ديال الرحلة غادي تزاد ÙÙŠ الجيب ديالك.", + "token change": "تبديل الرمز", + "face detect": "كش٠الوجه", + "Face Detection Result": "نتيجة كش٠الوجه", + "similar": "مشابه", + "not similar": "ماشي مشابه", + "Hi ,I will go now": "مرحبا، أنا غادي نمشي دابا", + "Passenger come to you": "الزبون جاي عندك", + "Call Income": "مكالمة واردة", + "Call Income from Passenger": "مكالمة واردة من الزبون", + "Criminal Document Required": "مطلوب وثيقة جنائية", + "You should have upload it .": "خاصك تكون حملتيها.", + "Call End": "نهاية المكالمة", + "The order has been accepted by another driver.": + "الطلب تقبل من عند سائق آخر.", + "The order Accepted by another Driver": "الطلب تقبل من عند سائق آخر", + "We regret to inform you that another driver has accepted this order.": + "كنتأسÙوا نبلغوك باللي سائق آخر قبل هذا الطلب.", + "Driver Applied the Ride for You": "السائق قدم الطلب ليك", + "Applied": "تطبق", + "Hi ,I Arrive your site": "مرحبا، وصلت للموقع ديالك", + "Please go to Car Driver": "الله يرحم الوالدين سير عند سائق السيارة", + "Ok I will go now.": "واخا، غادي نمشي دابا.", + "Accepted Ride": "الرحلة مقبولة", + "Driver Accepted the Ride for You": "السائق قبل الرحلة ليك", + "Promo": "عرض ترويجي", + "Show latest promo": "عرض آخر عرض ترويجي", + "Trip Monitoring": "مراقبة الرحلة", + "Driver Is Going To Passenger": "السائق غادي ÙÙŠ الطريق ليك", + "Please stay on the picked point.": + "الله يرحم الوالدين بقا ÙÙŠ نقطة الالتقاط اللي تحددات.", + "message From Driver": "رسالة من السائق", + "Trip is Begin": "الرحلة بدات", + "Cancel Trip from driver": "إلغاء الرحلة من السائق", + "We will look for a new driver.\nPlease wait.": + "غادي نقلبوا على سائق جديد.\nالله يرحم الوالدين تسنى.", + "The driver canceled your ride.": "السائق ألغى الرحلة ديالك.", + "Driver Finish Trip": "السائق سالا الرحلة", + "you will pay to Driver": "غادي تخلص السائق", + "Don’t forget your personal belongings.": "متنساش حوايجك الشخصية.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app": + "الله يرحم الوالدين تأكد باللي معاك كل حوايجك الشخصية وباللي أي مبلغ باقي، إلا كان، تزاد ÙÙŠ الجيب ديالك قبل ما تمشي. شكرا لاستعمالك تطبيق Intaleq", + "Finish Monitor": "سالي المراقبة", + "Trip finished": "الرحلة سالات", + "Call Income from Driver": "مكالمة واردة من السائق", + "Driver Cancelled Your Trip": "السائق ألغى الرحلة ديالك", + "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": + "غادي تخلص السائق غادي تخلص ØªÙƒÙ„ÙØ© وقت السائق شو٠الجيب ديال Intaleq ديالك", + "Order Applied": "الطلب طبق", + + //firebase above + } + }; +} diff --git a/lib/controller/notification/notification_captain_controller.dart b/lib/controller/notification/notification_captain_controller.dart new file mode 100755 index 0000000..5fc65de --- /dev/null +++ b/lib/controller/notification/notification_captain_controller.dart @@ -0,0 +1,91 @@ +import 'dart:convert'; + +import 'package:flutter/cupertino.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/mydialoug.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/links.dart'; +import '../../main.dart'; +import '../functions/crud.dart'; + +class NotificationCaptainController extends GetxController { + bool isLoading = false; + Map notificationData = {}; + + getNotifications() async { + isLoading = true; + update(); + var res = await CRUD().get( + link: AppLink.getNotificationCaptain, + payload: {'driverID': box.read(BoxName.driverID)}); + if (res == "failure") { + // MyDialog().getDialog('There is no notification yet'.tr, '', () { + // Get.back(); + // Get.back(); + // }); + Get.dialog( + CupertinoAlertDialog( + title: Column( + children: [ + const Icon( + CupertinoIcons.bell_slash_fill, + color: CupertinoColors.systemGrey, + size: 40, + ), + const SizedBox(height: 12), + Text( + 'There is no notification yet'.tr, + style: const TextStyle( + fontSize: 17, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + actions: [ + CupertinoDialogAction( + onPressed: () { + Get.back(); + Get.back(); + }, + child: Text('Back'.tr), + ), + ], + ), + barrierDismissible: true, + transitionCurve: Curves.easeOutBack, + transitionDuration: const Duration(milliseconds: 200), + ); + } + notificationData = jsonDecode(res); + // sql.insertData(notificationData['message'], TableName.captainNotification); + + isLoading = false; + update(); + } + + updateNotification(String id) async { + await CRUD().post( + link: AppLink.updateNotificationCaptain, + payload: {'isShown': 'true', 'id': id}, + ); + } + + addNotificationCaptain(String driverId, title, body, isPin) async { + await CRUD().post(link: AppLink.addNotificationCaptain, payload: { + 'driverID': driverId, + 'title': title, + 'body': body, + 'isPin': isPin + }); + } + + @override + void onInit() { + getNotifications(); + super.onInit(); + } +} diff --git a/lib/controller/notification/passenger_notification_controller.dart b/lib/controller/notification/passenger_notification_controller.dart new file mode 100755 index 0000000..5a2ae3a --- /dev/null +++ b/lib/controller/notification/passenger_notification_controller.dart @@ -0,0 +1,65 @@ +import 'dart:convert'; + +import 'package:get/get.dart'; +import 'package:sefer_driver/controller/firebase/firbase_messge.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/links.dart'; +import '../../constant/style.dart'; +import '../../main.dart'; +import '../../views/widgets/elevated_btn.dart'; +import '../functions/crud.dart'; + +class PassengerNotificationController extends GetxController { + bool isloading = false; + Map notificationData = {}; + + getNotifications() async { + isloading = true; + update(); + var res = await CRUD().get( + link: AppLink.getNotificationPassenger, + payload: {'passenger_id': box.read(BoxName.passengerID)}); + if (res == "failure") { + Get.defaultDialog( + title: 'There is no notification yet'.tr, + titleStyle: AppStyle.title, + middleText: '', + confirm: MyElevatedButton( + title: 'Back', + onPressed: () { + Get.back(); + Get.back(); + })); + } + notificationData = jsonDecode(res); + // sql.insertData(notificationData['message'], TableName.captainNotification); + + isloading = false; + update(); + } + + updateNotification(String id) async { + await CRUD().post( + link: AppLink.updateNotificationPassenger, + payload: {'isShown': 'true', 'id': id}, + ); + Get.back(); + getNotifications(); + } + + addNotificationToPassenger(String title, body) async { + var res = CRUD().post(link: AppLink.addNotificationPassenger, payload: { + 'title': title, + 'body': body, + }); + FirebaseMessagesController() + .sendNotificationToPassengerToken(title, body, 'token', [], 'ding.wav'); + } + + @override + void onInit() { + getNotifications(); + super.onInit(); + } +} diff --git a/lib/controller/notification/ride_available_controller.dart b/lib/controller/notification/ride_available_controller.dart new file mode 100755 index 0000000..8dbac9d --- /dev/null +++ b/lib/controller/notification/ride_available_controller.dart @@ -0,0 +1,184 @@ +import 'dart:convert'; +import 'dart:math'; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/services.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/controller/functions/location_controller.dart'; +import 'package:geolocator/geolocator.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; + +import '../../constant/links.dart'; +import '../../main.dart'; +import '../../print.dart'; +import '../../views/widgets/mydialoug.dart'; +import '../functions/crud.dart'; + +class RideAvailableController extends GetxController { + bool isLoading = false; + Map rideAvailableMap = {}; + late LatLng southwest; + late LatLng northeast; + + LatLngBounds calculateBounds(double lat, double lng, double radiusInMeters) { + const double earthRadius = 6378137.0; // Earth's radius in meters + + double latDelta = (radiusInMeters / earthRadius) * (180 / pi); + double lngDelta = + (radiusInMeters / (earthRadius * cos(pi * lat / 180))) * (180 / pi); + + double minLat = lat - latDelta; + double maxLat = lat + latDelta; + + double minLng = lng - lngDelta; + double maxLng = lng + lngDelta; + + // Ensure the latitude is between -90 and 90 + minLat = max(-90.0, minLat); + maxLat = min(90.0, maxLat); + + // Ensure the longitude is between -180 and 180 + minLng = (minLng + 180) % 360 - 180; + maxLng = (maxLng + 180) % 360 - 180; + + // Ensure the bounds are in the correct order + if (minLng > maxLng) { + double temp = minLng; + minLng = maxLng; + maxLng = temp; + } + + return LatLngBounds( + southwest: LatLng(minLat, minLng), + northeast: LatLng(maxLat, maxLng), + ); + } + + double calculateDistance(String startLocation) { + List startLocationParts = startLocation.split(','); + double startLatitude = double.parse(startLocationParts[0]); + double startLongitude = double.parse(startLocationParts[1]); + + // Assuming currentLocation is the driver's location + double currentLatitude = Get.find().latitude; + double currentLongitude = Get.find().longitude; + + return Geolocator.distanceBetween( + currentLatitude, + currentLongitude, + startLatitude, + startLongitude, + ); + } + + // void sortRidesByDistance() { + // rideAvailableMap['message'].sort((a, b) { + // double distanceA = calculateDistance(a['start_location']); + // double distanceB = calculateDistance(b['start_location']); + // return distanceA.compareTo(distanceB); + // }); + // } + + getRideAvailable() async { + try { + isLoading = true; + update(); + + LatLngBounds bounds = calculateBounds( + Get.find().myLocation!.latitude, + Get.find().myLocation!.longitude, + 4000); + + var payload = { + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + 'northeastLon': bounds.northeast.longitude.toString(), + }; + + var res = + await CRUD().get(link: AppLink.getRideWaiting, payload: payload); + + if (res != 'failure') { + rideAvailableMap = jsonDecode(res); + isLoading = false; + update(); + } else { + HapticFeedback.lightImpact(); + Get.dialog( + CupertinoAlertDialog( + title: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon( + CupertinoIcons.car, + size: 44, + color: CupertinoColors.systemGrey, + ), + const SizedBox(height: 12), + Text( + "No Rides Available".tr, + style: const TextStyle( + fontSize: 17, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + content: Padding( + padding: const EdgeInsets.only(top: 8), + child: Text( + "Please check back later for available rides.".tr, + style: const TextStyle( + fontSize: 13, + color: CupertinoColors.systemGrey, + ), + ), + ), + actions: [ + CupertinoDialogAction( + onPressed: () { + Get.back(); + Get.back(); + }, + child: Text('OK'.tr), + ), + ], + ), + barrierDismissible: true, + transitionCurve: Curves.easeOutBack, + transitionDuration: const Duration(milliseconds: 200), + ); + } + } catch (e) { + isLoading = false; + update(); + Get.dialog( + CupertinoAlertDialog( + title: const Icon( + CupertinoIcons.exclamationmark_triangle_fill, + color: CupertinoColors.systemRed, + size: 44, + ), + content: Text( + "Error fetching rides. Please try again.".tr, + style: const TextStyle(fontSize: 14), + ), + actions: [ + CupertinoDialogAction( + onPressed: () => Get.back(), + child: Text('OK'.tr), + ), + ], + ), + ); + } + } + + @override + void onInit() { + getRideAvailable(); + super.onInit(); + } +} diff --git a/lib/controller/packages/lingo/lingo_hunter.dart b/lib/controller/packages/lingo/lingo_hunter.dart new file mode 100644 index 0000000..ed20691 --- /dev/null +++ b/lib/controller/packages/lingo/lingo_hunter.dart @@ -0,0 +1,221 @@ +import 'dart:io'; +import 'dart:convert'; + +import '../../../print.dart'; + +abstract class LingoHunter { + /// Extracts translatable strings... + static Future extractAndCreateTranslationFiles({ + required String baseLang, + required List langs, + String? projectDirectory, + String? outputDirectory, + bool translateBaseLang = true, + List? additionalRegExps, + bool overrideRegExps = false, + List fileExtensions = const ['.dart'], + }) async { + // 1. Find project root (improved logic) + String projectRoot; + if (projectDirectory != null) { + // Use provided directory, but check if it's valid + if (!await Directory(projectDirectory).exists()) { + throw ArgumentError( + "The provided projectDirectory '$projectDirectory' does not exist."); + } + projectRoot = projectDirectory; + } else { + projectRoot = await _findProjectRoot(); // Use the corrected function + } + + // 2. Use the project root as output directory if not specified + final String outputDir = outputDirectory ?? projectRoot; + + // 3. Output Directory Verification (Create if necessary) + final Directory outputDirObj = Directory(outputDir); + if (!await outputDirObj.exists()) { + try { + await outputDirObj.create(recursive: true); + } catch (e) { + throw Exception( + "Failed to create output directory: $outputDir. Error: $e"); + } + } + + print("Project root directory: $projectRoot"); + print("Output directory: $outputDir"); + + // 4. Extract translatable strings + final Set strings = await extractStringsFromFlutterProject( + directory: projectRoot, // Use the validated projectRoot + additionalRegExps: additionalRegExps, + overrideRegExps: overrideRegExps, + fileExtensions: fileExtensions, + ); + + // 5. Generate translation files + await _createTranslationFiles( + strings: strings, + outputDirectory: outputDir, + baseLang: baseLang, + langs: langs, + translateBaseLang: translateBaseLang, + ); + + print("Successfully extracted strings and generated translation files."); + } + + /// Finds the project's root directory (corrected) + static Future _findProjectRoot() async { + Directory current = Directory.current; + int maxIterations = 10; // Prevent infinite loop + int count = 0; + + while (count < maxIterations) { + if (await File('${current.path}/pubspec.yaml').exists()) { + return current.path; // Return the directory *containing* pubspec.yaml + } + + if (current.path == current.parent.path) { + break; // Reached root, stop searching + } + + current = current.parent; + count++; + } + + // If `pubspec.yaml` was not found, throw an exception + throw Exception( + "`pubspec.yaml` not found in the current directory or its parents."); + } + + /// Extracts translatable strings (no changes needed here) + static Future> extractStringsFromFlutterProject({ + required String directory, + List? additionalRegExps, + bool overrideRegExps = false, + List fileExtensions = const ['.dart'], + }) async { + // ... (rest of the function remains the same) ... + final List defaultPatterns = [ + RegExp(r'"([^"]+)"\.tr\(\)'), // "string".tr() + RegExp(r"'([^']+)'\.tr\(\)"), // 'string'.tr() + RegExp(r'"([^"]+)"\.tr'), // "string".tr + RegExp(r"'([^']+)'\.tr"), // 'string'.tr + RegExp(r'"([^"]+)"\.tr\(\w+\)'), // "string".tr(context) + RegExp(r"'([^']+)'\.tr\(\w+\)"), // 'string'.tr(context) + RegExp(r'context\.tr\("([^"]+)"\)'), // context.tr("string") + RegExp(r"context\.tr\('([^']+)'\)"), // context.tr('string') + RegExp(r'tr\(\w+, "([^"]+)"\)'), // tr(context, "string") + RegExp(r"tr\(\w+, '([^']+)'\)"), // tr(context, 'string') + RegExp(r'tr\("([^"]+)"\)'), // tr("string") + RegExp(r"tr\('([^']+)'\)"), // tr('string') + RegExp(r'"([^"]+)"\.tr\(args: \[.*?\]\)'), // "string".tr(args: []) + RegExp(r'"([^"]+)"\.plural\(\d+\)'), // "string".plural(3) + //Intl Package Patterns + RegExp(r'AppLocalizations\.of\(context\)!\.translate\("([^"]+)"\)'), + ]; + + // Determine the patterns to use + List patterns; + if (overrideRegExps && additionalRegExps != null) { + patterns = additionalRegExps; + } else { + patterns = [...defaultPatterns]; + if (additionalRegExps != null) { + patterns.addAll(additionalRegExps); + } + } + + final Set strings = {}; + final Directory projectDirObj = Directory(directory); + + // Check if the directory exists *before* listing + if (!await projectDirObj.exists()) { + throw ArgumentError("The directory '$directory' does not exist."); + } + + final List entities = + await projectDirObj.list(recursive: true).toList(); + + // Filter files by the specified extensions + final List filteredFiles = entities + .whereType() + .where((file) => fileExtensions.any((ext) => file.path.endsWith(ext))) + .toList(); + + // Extract strings from files + for (final File file in filteredFiles) { + final String content = await file.readAsString(); + + for (final RegExp pattern in patterns) { + final Iterable matches = pattern.allMatches(content); + + for (final RegExpMatch match in matches) { + if (match.groupCount >= 1 && match.group(1) != null) { + strings.add(match.group(1)!); + } + } + } + } + + return strings; + } + + /// Creates translation files (no changes needed) + static Future _createTranslationFiles({ + required Set strings, + required String outputDirectory, + required String baseLang, + required List langs, + bool translateBaseLang = true, + }) async { + // ... (rest of the function remains the same) ... + final Directory outputDir = Directory(outputDirectory); + if (!await outputDir.exists()) { + Log.print('outputDir: ${outputDir}'); + await outputDir.create(recursive: true); + } + + // Always create the base language file, even if `translateBaseLang` is false + final String baseFilePath = '$outputDirectory/translations_$baseLang.json'; + final Map baseStrings = { + for (final string in strings) string: translateBaseLang ? string : "" + }; + await _writeTranslationFile(baseFilePath, baseStrings); + + for (final String lang in langs) { + final String langFilePath = '$outputDirectory/translations_$lang.json'; + final Map langStrings = { + for (final string in strings) string: "" + }; + await _writeTranslationFile(langFilePath, langStrings); + } + } + + /// Writes a translation file (no changes needed) + static Future _writeTranslationFile( + String filePath, Map strings) async { + // ... (rest of the function remains the same) ... + final File file = File(filePath); + final StringBuffer content = StringBuffer(); + content.writeln('{'); + + int index = 0; + for (final MapEntry entry in strings.entries) { + final String comma = (index < strings.length - 1) ? ',' : ''; + final String key = + jsonEncode(entry.key).substring(1, jsonEncode(entry.key).length - 1); + final String value = entry.value.isEmpty + ? "" + : jsonEncode(entry.value) + .substring(1, jsonEncode(entry.value).length - 1); + + content.writeln(' "$key": "$value"$comma'); + index++; + } + + content.writeln('}'); + await file.writeAsString(content.toString()); + } +} diff --git a/lib/controller/payment/driver_payment_controller.dart b/lib/controller/payment/driver_payment_controller.dart new file mode 100755 index 0000000..8551550 --- /dev/null +++ b/lib/controller/payment/driver_payment_controller.dart @@ -0,0 +1,71 @@ +import 'dart:convert'; + +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/main.dart'; + +class DriverWalletHistoryController extends GetxController { + bool isLoading = false; + List archive = []; + List weeklyList = []; + + getArchivePayment() async { + isLoading = true; + update(); + var res = await CRUD().getWallet( + link: AppLink.getWalletByDriver, + payload: {'driverID': box.read(BoxName.driverID)}); + if (res == 'failure') { + Get.defaultDialog( + barrierDismissible: false, + title: 'There is no data yet.'.tr, + middleText: '', + confirm: MyElevatedButton( + title: 'Back'.tr, + onPressed: () { + Get.back(); + // Get.back(); + }, + )); + } + archive = jsonDecode(res)['message']; + + isLoading = false; + update(); + } + + getWeekllyArchivePayment() async { + isLoading = true; + update(); + var res = await CRUD().getWallet( + link: AppLink.getDriverWeekPaymentMove, + payload: {'driverID': box.read(BoxName.driverID)}); + if (res == 'failure') { + Get.defaultDialog( + barrierDismissible: false, + title: 'There is no data yet.'.tr, + middleText: '', + confirm: MyElevatedButton( + title: 'Back'.tr, + onPressed: () { + Get.back(); + // Get.back(); + }, + )); + } else { + weeklyList = jsonDecode(res)['message']; + } + + isLoading = false; + update(); + } + + @override + void onInit() { + // getArchivePayment(); + super.onInit(); + } +} diff --git a/lib/controller/payment/payment_controller.dart b/lib/controller/payment/payment_controller.dart new file mode 100755 index 0000000..fa746c2 --- /dev/null +++ b/lib/controller/payment/payment_controller.dart @@ -0,0 +1,730 @@ +import 'dart:convert'; +import 'package:sefer_driver/constant/api_key.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/functions/tts.dart'; +import 'package:sefer_driver/controller/payment/paymob/paymob_response.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:http/http.dart' as http; +import 'package:flutter/material.dart'; +import 'package:flutter_paypal/flutter_paypal.dart'; +import 'package:flutter_stripe/flutter_stripe.dart'; +import 'package:get/get.dart'; +import 'package:local_auth/local_auth.dart'; +import 'package:sefer_driver/views/widgets/mydialoug.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/colors.dart'; +import '../../constant/info.dart'; +import '../../constant/links.dart'; +import '../../main.dart'; +import '../../print.dart'; +import '../functions/crud.dart'; +import '../functions/encrypt_decrypt.dart'; +import '../functions/toast.dart'; +import 'paymob/paymob_wallet.dart'; + +class PaymentController extends GetxController { + bool isLoading = false; + bool isWalletChecked = true; + bool isCashChecked = false; + bool isWalletFound = false; + bool isPromoSheetDialogue = false; + final formKey = GlobalKey(); + final promo = TextEditingController(); + // double totalPassenger = + // double.parse(Get.find().totalPricePassenger); + int? selectedAmount = 0; + List totalPassengerWalletDetails = []; + final walletphoneController = TextEditingController(); + String passengerTotalWalletAmount = ''; + String ip = '1'; + DateTime now = DateTime.now(); + late int timestamp; + + void updateSelectedAmount(int value) { + selectedAmount = value; + update(); + } + + void changePromoSheetDialogue() { + isPromoSheetDialogue = !isPromoSheetDialogue; + update(); + } + + getPassengerWallet() async { + isLoading = true; + update(); + + await CRUD().getWallet( + link: AppLink.getWalletByPassenger, + payload: {'passenger_id': box.read(BoxName.passengerID)}).then((value) { + box.write(BoxName.passengerWalletTotal, + jsonDecode(value)['message'][0]['total'].toString()); + }); + isLoading = false; + update(); + } + + addPassengerWallet() async { + isLoading = true; + update(); + // double sallaryAccountNowBeforeAdding = + // double.parse(box.read(BoxName.passengerWalletTotal).toString()); + await CRUD().postWallet(link: AppLink.addPassengersWallet, payload: { + 'passenger_id': box.read(BoxName.passengerID).toString(), + 'balance': selectedAmount.toString() + }).then((value) { + getPassengerWallet(); + // sallaryAccountNowBeforeAdding = sallaryAccountNowBeforeAdding + + // double.parse(selectedAmount.toString()); + // box.write(BoxName.passengerWalletTotal, sallaryAccountNowBeforeAdding); + }); + + isLoading = false; + update(); + } + + // void onChangedPaymentMethodWallet(bool? value) { + // if (box.read(BoxName.passengerWalletTotal) == null || + // double.parse(box.read(BoxName.passengerWalletTotal).toString()) < + // totalPassenger) { + // isWalletChecked = false; + // isWalletChecked ? isCashChecked = true : isCashChecked = true; + // update(); + // } else { + // isWalletChecked = !isWalletChecked; + // isWalletChecked ? isCashChecked = false : isCashChecked = true; + // update(); + // } + // } + + // void onChangedPaymentMethodCash(bool? value) { + // if (box.read(BoxName.passengerWalletTotal) == null || + // double.parse(box.read(BoxName.passengerWalletTotal)) < totalPassenger) { + // isWalletChecked = false; + // isCashChecked = !isCashChecked; + // isCashChecked ? isWalletChecked = false : isWalletChecked = false; + // update(); + // } else { + // isCashChecked = !isCashChecked; + // isCashChecked ? isWalletChecked = false : isWalletChecked = true; + // update(); + // } + // } + + late String clientSecret; + + Future makePaymentStripe( + double amount, String currency, Function method) async { + var newAmount = (amount * 100).toInt(); + + try { + // Check if local authentication is available + bool isAvailable = await LocalAuthentication().isDeviceSupported(); + if (isAvailable) { + // Authenticate the user + bool didAuthenticate = await LocalAuthentication().authenticate( + localizedReason: 'Use Touch ID or Face ID to confirm payment', + ); + if (didAuthenticate) { + // User authenticated successfully, proceed with payment + clientSecret = await getClientSecret(newAmount.toString(), currency); + await initializePaymentSheet(clientSecret); + await Stripe.instance.presentPaymentSheet(); + method(); + } else { + // Authentication failed, handle accordingly + } + } else { + // Local authentication not available, proceed with payment without authentication + clientSecret = await getClientSecret(newAmount.toString(), currency); + await initializePaymentSheet(clientSecret); + await Stripe.instance.presentPaymentSheet(); + method(); + } + } catch (e) { + rethrow; + } + } + + Future initializePaymentSheet(String clientSecret) async { + await Stripe.instance.initPaymentSheet( + paymentSheetParameters: SetupPaymentSheetParameters( + // intentConfiguration: IntentConfiguration.fromJson({}), + // applePay: const PaymentSheetApplePay(merchantCountryCode: 'US'), + // googlePay: const PaymentSheetGooglePay(merchantCountryCode: 'US'), + paymentIntentClientSecret: clientSecret, + merchantDisplayName: AppInformation.appName, + billingDetails: BillingDetails( + name: (box.read(BoxName.nameDriver)), + email: (box.read(BoxName.emailDriver)), + phone: (box.read(BoxName.phoneDriver)), + address: Address( + city: 'city', + country: box.read(BoxName.countryCode), //'United States' + line1: '', + line2: '', + postalCode: '12345', + state: box.read(BoxName.countryCode) // 'Boston' + )), + allowsDelayedPaymentMethods: true, + customerEphemeralKeySecret: Stripe.merchantIdentifier, + appearance: const PaymentSheetAppearance( + shapes: PaymentSheetShape(borderRadius: 12), + colors: PaymentSheetAppearanceColors( + background: AppColor.secondaryColor, + ), + ), + billingDetailsCollectionConfiguration: + const BillingDetailsCollectionConfiguration( + name: CollectionMode.automatic, + phone: CollectionMode.automatic, + email: CollectionMode.automatic, + // address: CollectionMode.automatic, + ), + ), + ); + } + + Future getClientSecret(String amount, currency) async { + var res = await CRUD().postStripe( + link: 'https://api.stripe.com/v1/payment_intents', + payload: { + 'amount': amount, + 'currency': currency, + 'payment_method_types[0]': 'card' + }, + ); + + // Convert the res object to a JSON object + final jsonResponse = jsonDecode(res); + // Check if the client_secret property exists and is not null + if (jsonResponse.containsKey('client_secret') && + jsonResponse['client_secret'] != null) { + // Return the client_secret property + return jsonResponse['client_secret'] as String; + } else { + throw Exception('Failed to fetch client secret'); + } + } + + Future configure3dSecureFuture() async { + await Stripe.instance.openApplePaySetup(); + } + + Future makePaymentPayPal(BuildContext context) async { + try { + // Check if local authentication is available + bool isAvailable = await LocalAuthentication().isDeviceSupported(); + if (isAvailable) { + // Authenticate the user + bool didAuthenticate = await LocalAuthentication().authenticate( + localizedReason: 'Use Touch ID or Face ID to confirm payment', + ); + if (didAuthenticate) { + // User authenticated successfully, proceed with payment + + if (selectedAmount != 0) { + changePromoSheetDialogue(); + Navigator.of(context).push( + MaterialPageRoute( + builder: (BuildContext context) => UsePaypal( + sandboxMode: true, + clientId: AK.payPalClientId, + secretKey: AK.payPalSecret, + returnURL: AppInformation.website, + cancelURL: "${AppInformation.website}/cancel", + transactions: [ + { + "amount": { + //sb-opsju26682403@personal.example.com + "total": '$selectedAmount', + "currency": box.read(BoxName.countryCode) == 'Egypt' + ? 'EGP' + : "JOD", + "details": { + "subtotal": '$selectedAmount', + "shipping": '0', + "shipping_discount": 0 + } + }, + "description": "The payment transaction description.", + "payment_options": const { + "allowed_payment_method": "INSTANT_FUNDING_SOURCE" + }, + "item_list": { + "items": [ + { + "name": "${AppInformation.appName} Wallet ", + "quantity": 1, + "price": '$selectedAmount', + "currency": "USD" + } + ], + + // shipping address is not required though + "shipping_address": const { + "recipient_name": + "${AppInformation.appName} Wallet", + "line1": "Shafa Badran", + "line2": "", + "city": "Amman", + "country_code": "JO", + "postal_code": "13112", + "phone": "+962798583052", + "state": "Amman" + }, + } + } + ], + note: "Contact us for any questions on your order.".tr, + onSuccess: (Map params) async { + addPassengerWallet(); + changePromoSheetDialogue(); + await getPassengerWallet(); + }, + onError: (error) { + Toast.show(context, ' $error'.tr, AppColor.redColor); + }, + onCancel: (params) { + Toast.show(context, 'Pyament Cancelled .'.tr, + AppColor.yellowColor); + }), + ), + ); + } else { + Toast.show(context, 'You will choose one of above !'.tr, + AppColor.redColor); + } + } else { + // Authentication failed, handle accordingly + } + } + } catch (e) { + rethrow; + } + } + + Map licenseDetailsMap = {}; + Future getLicenseInfo() async { + var res = await CRUD().get( + link: AppLink.getLicense, + payload: {'driverID': box.read(BoxName.driverID)}); + licenseDetailsMap = jsonDecode(res); + } + + Future createConnectAccount() async { + String url = 'https://api.stripe.com/v1/accounts'; + await getLicenseInfo(); + DateTime dob = + DateTime.parse(licenseDetailsMap['message'][0]['dateOfBirth']); + int currentTimestamp = + (DateTime.now().millisecondsSinceEpoch / 1000).round(); + int day = dob.day; + int month = dob.month; + int year = dob.year; + await getIpAddress(); + final body = { + "type": "custom", + "business_profile[name]": box.read(BoxName.nameDriver), + "business_profile[product_description]": "Captain", + "business_profile[support_address][city]": "San Francisco", + "business_profile[support_address][country]": 'US', + "business_profile[support_address][line1]": + licenseDetailsMap['message'][0]['address'].toString().trim()[0], + "business_profile[support_address][postal_code]": + licenseDetailsMap['message'][0]['postalCode'], + "business_profile[support_address][state]": "MA", + "business_profile[support_email]": "support@sefer.live", + "business_profile[support_phone]": "555-123-4567", + "business_profile[url]": "https://sefer.live", + "business_type": "individual", + "capabilities[card_payments][requested]": "true", + "capabilities[transfers][requested]": "true", + "company[address][city]": "ATTLEBORO", + "company[address][country]": "US", + "company[address][line1]": "1249 NEWPORT AVE", + "company[address][postal_code]": "02703 ", + "company[address][state]": "MA", + "company[name]": AppInformation.companyName, + "country": "us", + "default_currency": "usd", + "email": "support@sefer.live", + // "individual[ssn]": "123-45-6789", // + "individual[id_number]": licenseDetailsMap['message'][0]['documentNo'], + // "individual[id_type]": "drivers_license", // + "individual[address][city]": "ATTLEBORO", + "individual[address][country]": "US", + "individual[address][line1]": licenseDetailsMap['message'][0]['address'], + // "individual[address][postal_code]": licenseDetailsMap['message'][0] + // ['postalCode'], + "individual[address][state]": "MA", + // "individual[ssn_last_4]": '1111', //////// + "individual[dob][day]": day.toString(), + "individual[dob][month]": month.toString(), + "individual[dob][year]": year.toString(), + "individual[email]": box.read(BoxName.emailDriver), + "individual[first_name]": + licenseDetailsMap['message'][0]['name'].toString().split(' ')[0], + "individual[gender]": + licenseDetailsMap['message'][0]['sex'] == 'M' ? 'male' : 'female', + "individual[last_name]": + licenseDetailsMap['message'][0]['name'].toString().split(' ')[1], + // "individual[phone]": box.read(BoxName.phoneDriver),//////////// + "tos_acceptance[date]": currentTimestamp.toString(), + "tos_acceptance[ip]": ip.toString() + }; + + final response = await CRUD().postStripe( + link: url, + payload: body, + ); + final responseData = jsonDecode(response); + final accountId = responseData['id']; + box.write(BoxName.accountIdStripeConnect, accountId); + await updateCaptainAccountBank(); + return accountId; + } + + Future updateCaptainAccountBank() async { + var res = await CRUD().post(link: AppLink.updateAccountBank, payload: { + 'id': box.read(BoxName.driverID), + 'accountBank': box.read(BoxName.accountIdStripeConnect), + }); + if (jsonDecode(res)['status'] == 'success') { + mySnackbarSuccess('Account Updated'.tr); + // Get.snackbar('Account Updated', ''); + } + } + + Future createTransactionToCaptain( + String amount, String account) async { + String url = 'https://api.stripe.com/v1/transfers'; + + final body = { + 'amount': amount, //amount + 'currency': 'usd', + 'destination': account //'acct_1OKIjQRgcWrsdyDT' //account id + }; + + final response = await CRUD().postStripe( + link: url, + payload: body, + ); + final responseData = jsonDecode(response); + final transactionId = responseData['id']; + + return transactionId; + } + + Future getIpAddress() async { + var url = Uri.parse('https://api.ipify.org?format=json'); + + var response = await http.get(url); + + if (response.statusCode == 200) { + ip = jsonDecode(response.body)['ip']; + } else {} + } + +// 'https://accept.paymob.com/unifiedcheckout/?publicKey=egy_pk_live_mbjDC9Ni6FSHKmsz8sOHiVk2xd7oWRve&clientSecret=egy_sk_live_c0904e9cf04506ae64f818d4e075b4a957e3713fdf7a22cb7da30a29e72442b5' + + Future payWithPayMob( + BuildContext context, String amount, currency, Function method) async { + String newAmount = (double.parse(amount) * 100).toStringAsFixed(2); + try { + bool isAvailable = await LocalAuthentication().isDeviceSupported(); + if (isAvailable) { + // Authenticate the user + bool didAuthenticate = await LocalAuthentication().authenticate( + localizedReason: 'Use Touch ID or Face ID to confirm payment', + options: AuthenticationOptions( + biometricOnly: true, + sensitiveTransaction: true, + )); + if (didAuthenticate) { + final PaymobResponse? response = await PaymobPayment.instance.pay( + context: context, + currency: currency, //"EGP", + amountInCents: newAmount, // 19.00 EGP + + billingData: PaymobBillingData(), + onPayment: (PaymobResponse response) {}, + ); + + if (response!.responseCode == 'APPROVED') { + Get.defaultDialog( + barrierDismissible: false, + title: 'Payment Successful'.tr, + titleStyle: AppStyle.title, + content: Text( + 'The payment was approved.'.tr, + style: AppStyle.title, + ), + confirm: MyElevatedButton( + title: 'OK'.tr, + kolor: AppColor.greenColor, + onPressed: () async { + Get.back(); + method(); + }, + ), + ); + } else { + Get.defaultDialog( + barrierDismissible: false, + // backgroundColor: AppColor.redColor, + title: 'Payment Failed'.tr, + content: Text( + 'The payment was not approved. Please try again.'.tr, + textAlign: TextAlign.center, + style: AppStyle.title, + ), + confirm: MyElevatedButton( + title: 'OK'.tr, + kolor: AppColor.redColor, + onPressed: () async { + Get.back(); + }, + ), + ); + } + } else { + Get.snackbar("Authentication Failed", + "Please enable Face ID or Fingerprint in your settings."); + + // Authentication failed, handle accordingly + } + } else { + MyDialog().getDialog('Biometric Authentication'.tr, + 'You should use Touch ID or Face ID to confirm payment'.tr, () { + Get.back(); + }); + // Authentication failed, handle accordingly + } + // else { + // final PaymobResponse? response = await PaymobPayment.instance.pay( + // context: context, + // currency: currency, //"EGP", + // amountInCents: newAmount, // 19.00 EGP + // billingData: PaymobBillingData(), + // onPayment: (PaymobResponse response) {}, + // ); + + // if (response!.responseCode == 'APPROVED') { + // Get.defaultDialog( + // barrierDismissible: false, + // title: 'Payment Successful'.tr, + // titleStyle: AppStyle.title, + // // backgroundColor: AppColor.greenColor, + // content: Text( + // 'The payment was approved.'.tr, + // style: AppStyle.title, + // ), + // confirm: MyElevatedButton( + // kolor: AppColor.greenColor, + // title: 'OK'.tr, + // onPressed: () async { + // Get.back(); + // method(); + // }, + // ), + // ); + // } else { + // Get.defaultDialog( + // barrierDismissible: false, + // // backgroundColor: AppColor.redColor, + // title: 'Payment Failed'.tr, + // content: Column( + // children: [ + // IconButton( + // onPressed: () { + // Get.find().speakText( + // 'The payment was not approved. Please try again.'.tr, + // ); + // }, + // icon: const Icon(Icons.headphones), + // ), + // Text( + // 'The payment was not approved. Please try again.'.tr, + // textAlign: TextAlign.center, + // style: AppStyle.title, + // ), + // Text( + // '${'The reason is'.tr} ${response.message!.tr}', + // textAlign: TextAlign.center, + // style: AppStyle.title.copyWith(color: AppColor.redColor), + // ), + // ], + // ), + // confirm: MyElevatedButton( + // title: 'OK'.tr, + // kolor: AppColor.redColor, + // onPressed: () async { + // Get.back(); + // }, + // ), + // ); + // } + + // } + } catch (e) { + Get.defaultDialog( + title: 'Error'.tr, + content: Text( + 'An error occurred during the payment process.'.tr, + style: AppStyle.title, + ), + ); + rethrow; + } + } + + Future payWithPayMobWallet( + BuildContext context, String amount, currency, Function method) async { + String newAmount = (double.parse(amount) * 100).toStringAsFixed(2); + try { + bool isAvailable = await LocalAuthentication().isDeviceSupported(); + if (isAvailable) { + // Authenticate the user + bool didAuthenticate = await LocalAuthentication().authenticate( + localizedReason: 'Use Touch ID or Face ID to confirm payment', + options: AuthenticationOptions( + biometricOnly: true, + sensitiveTransaction: true, + )); + if (didAuthenticate) { + final PaymobResponseWallet? response = + await PaymobPaymentWallet.instance.pay( + context: context, + currency: currency, //"EGP", + amountInCents: newAmount, // 19.00 EGP + + billingData: PaymobBillingDataWallet(), + onPayment: (PaymobResponseWallet response) {}, + ); + if (response!.success == true && + response.message.toString() == 'Approved') { + Toast.show(context, 'Payment Successful'.tr, AppColor.greenColor); + method(); + } else { + Get.defaultDialog( + barrierDismissible: false, + // backgroundColor: AppColor.redColor, + title: 'Payment Failed'.tr, + content: Column( + children: [ + IconButton( + onPressed: () { + Get.find().speakText( + 'The payment was not approved. Please try again.'.tr, + ); + }, + icon: const Icon(Icons.headphones), + ), + Text( + 'The payment was not approved. Please try again.'.tr, + textAlign: TextAlign.center, + style: AppStyle.title, + ), + Text( + '${'The reason is'.tr} ${response.message!.tr}', + textAlign: TextAlign.center, + style: AppStyle.title.copyWith(color: AppColor.redColor), + ), + ], + ), + confirm: MyElevatedButton( + title: 'OK'.tr, + kolor: AppColor.redColor, + onPressed: () async { + Get.back(); + }, + ), + ); + } + } else { + // Authentication failed, handle accordingly + MyDialog().getDialog('Authentication failed'.tr, ''.tr, () { + Get.back(); + }); + } + } else { + MyDialog().getDialog('Biometric Authentication'.tr, + 'You should use Touch ID or Face ID to confirm payment'.tr, () { + Get.back(); + }); + // final PaymobResponse? response = await PaymobPayment.instance.pay( + // context: context, + // currency: currency, //"EGP", + // amountInCents: newAmount, // 19.00 EGP + // billingData: PaymobBillingData(), + // onPayment: (PaymobResponse response) {}, + // ); + + // // if (response!.responseCode == 'APPROVED') { + // if (response!.responseCode == '200' && response.success == true) { + // Toast.show(context, 'Payment Successful'.tr, AppColor.greenColor); + // method(); + // Get.defaultDialog( + // barrierDismissible: false, + // title: 'Payment Successful'.tr, + // titleStyle: AppStyle.title, + // // backgroundColor: AppColor.greenColor, + // content: Text( + // 'The payment was approved.'.tr, + // style: AppStyle.title, + // ), + // confirm: MyElevatedButton( + // kolor: AppColor.greenColor, + // title: 'OK'.tr, + // onPressed: () async { + // Get.back(); + // method(); + // }, + // ), + // ); + // } else { + // Get.defaultDialog( + // barrierDismissible: false, + // // backgroundColor: AppColor.redColor, + // title: 'Payment Failed'.tr, + // content: Text( + // 'The payment was not approved. Please try again.'.tr, + // textAlign: TextAlign.center, + // style: AppStyle.title, + // ), + // confirm: MyElevatedButton( + // title: 'OK'.tr, + // kolor: AppColor.redColor, + // onPressed: () async { + // Get.back(); + // }, + // ), + // ); + // } + } + } catch (e) { + Get.defaultDialog( + title: 'Error'.tr, + content: Text( + 'An error occurred during the payment process.'.tr, + style: AppStyle.title, + ), + ); + rethrow; + } + } + + @override + void onInit() { + timestamp = now.millisecondsSinceEpoch; + if (box.read(BoxName.passengerWalletTotal) == null) { + box.write(BoxName.passengerWalletTotal, '0'); + } + // getPassengerWallet(); + final localAuth = LocalAuthentication(); + super.onInit(); + } +} diff --git a/lib/controller/payment/paymob.dart b/lib/controller/payment/paymob.dart new file mode 100755 index 0000000..73116bd --- /dev/null +++ b/lib/controller/payment/paymob.dart @@ -0,0 +1,154 @@ +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:dio/dio.dart' as dio; +import 'package:dio/dio.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import '../../constant/api_key.dart'; +import '../../main.dart'; +import '../functions/encrypt_decrypt.dart'; + +class PaymobManager extends GetxController { + String authanticationToken1 = ""; + String orderId1 = ""; + + Future getPaymentKey(int amount, String currency) async { + try { + String authanticationToken = await _getAuthanticationToken(); + + int orderId = await _getOrderId( + authanticationToken: authanticationToken, + amount: (100 * amount).toString(), + currency: currency, + ); + + String paymentKey = await _getPaymentKey( + authanticationToken: authanticationToken, + amount: (100 * amount).toString(), + currency: currency, + orderId: orderId.toString(), + ); + authanticationToken1 = authanticationToken.toString(); + orderId1 = orderId.toString(); + update(); + return paymentKey; + } catch (e) { + throw Exception(); + } + } + + Future payWithPayMob(int amount, String currency) async { + // 1. Fetch Payment Key (Assuming PaymobManager is a custom class) + String paymentToken; + try { + paymentToken = await PaymobManager().getPaymentKey(amount, currency); + } on Exception catch (e) { + // Handle errors gracefully, e.g., display error message to user + return; + } + + // 2. Prepare Payment Data Payload + final Map data = { + "source": { + "identifier": "01010101010", // Replace with actual source identifier + "subtype": "WALLET", + }, + "payment_token": paymentToken, + }; + + // 3. Make Payment Request using Dio + final dio = Dio(); + try { + final response = await dio.post( + 'https://accept.paymobsolutions.com/api/acceptance/payments/pay', + data: data, + ); + + // 4. Handle Payment Response + if (response.statusCode == 200) { + final paymentData = response.data; // Assuming JSON response + + // Navigate to success screen or display success message + launchUrl(Uri.parse(paymentData['iframe_redirection_url'])); + } else { + // Payment failed: Handle errors (e.g., display error message) + } + } on DioError catch (e) { + // Handle network or Dio-related errors + } + } + + Future _getStatusAfterPaid() async { + final dio.Response response = await Dio().post( + "https://accept.paymob.com/api/ecommerce/orders/transaction_inquiry", + data: { + "auth_token": authanticationToken1, + "merchant_order_id": "970960", + "order_id": orderId1 + }); + return response.data["success"]; + } + + Future _getAuthanticationToken() async { + final dio.Response response = + await Dio().post("https://accept.paymob.com/api/auth/tokens", data: { + "api_key": AK.payMobApikey, + 'username': AK.usernamePayMob, + "password": AK.passwordPayMob, + }); + return response.data["token"]; + } + + Future _getOrderId({ + required String authanticationToken, + required String amount, + required String currency, + }) async { + final dio.Response response = await Dio() + .post("https://accept.paymob.com/api/ecommerce/orders", data: { + "auth_token": authanticationToken, + "amount_cents": amount, + "currency": currency, + "delivery_needed": "false", + "items": [], + }); + return response.data["id"]; + } + + Future _getPaymentKey({ + required String authanticationToken, + required String orderId, + required String amount, + required String currency, + }) async { + final dio.Response response = await Dio() + .post("https://accept.paymob.com/api/acceptance/payment_keys", data: { + "expiration": 200, + "auth_token": authanticationToken.toString(), + "order_id": orderId.toString(), + "integration_id": + 4556056, ////todo wallet or online card int.parse(AK.integrationIdPayMob), + "lock_order_when_paid": "false", + "amount_cents": amount, + "currency": currency, + "billing_data": { + "first_name": (box.read(BoxName.nameDriver)), + "last_name": (box.read(BoxName.lastNameDriver)), + "email": (box.read(BoxName.emailDriver)), + "phone_number": (box.read(BoxName.phoneDriver)), + "apartment": "NA", + "floor": "NA", + "street": "NA", + "building": "NA", + "shipping_method": "NA", + "postal_code": "NA", + "city": "NA", + "country": box.read(BoxName.countryCode), + "state": "NA" + }, + }); + + return response.data["token"]; + } +} diff --git a/lib/controller/payment/paymob/paymob_response.dart b/lib/controller/payment/paymob/paymob_response.dart new file mode 100755 index 0000000..0ce3876 --- /dev/null +++ b/lib/controller/payment/paymob/paymob_response.dart @@ -0,0 +1,326 @@ +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/controller/functions/encrypt_decrypt.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:dio/dio.dart'; +import 'package:flutter/material.dart'; +import 'package:webview_flutter/webview_flutter.dart'; + +class PaymobResponse { + bool success; + String? transactionID; + String? responseCode; + String? message; + + PaymobResponse({ + this.transactionID, + required this.success, + this.responseCode, + this.message, + }); + + factory PaymobResponse.fromJson(Map json) { + return PaymobResponse( + success: json['success'] == 'true', + transactionID: json['id'], + message: json['message'], + responseCode: json['txn_response_code'], + ); + } +} + +class PaymobPayment { + static PaymobPayment instance = PaymobPayment(); + + bool _isInitialized = false; + + final Dio _dio = Dio(); + final _baseURL = 'https://accept.paymob.com/api/'; + late String _apiKey; + late int _integrationID; + late int _iFrameID; + late String _iFrameURL; + late int _userTokenExpiration; + + /// Initializing PaymobPayment instance. + Future initialize({ + /// It is a unique identifier for the merchant which used to authenticate your requests calling any of Accept's API. + /// from dashboard Select Settings -> Account Info -> API Key + required String apiKey, + + /// from dashboard Select Developers -> Payment Integrations -> Online Card ID + required int integrationID, + + /// from paymob Select Developers -> iframes + required int iFrameID, + + /// The expiration time of this payment token in seconds. (The maximum is 3600 seconds which is an hour) + int userTokenExpiration = 300, + }) async { + if (_isInitialized) { + return true; + } + _dio.options.baseUrl = _baseURL; + _dio.options.validateStatus = (status) => true; + _apiKey = apiKey; + _integrationID = integrationID; + _iFrameID = iFrameID; + _iFrameURL = + 'https://accept.paymobsolutions.com/api/acceptance/iframes/$_iFrameID?payment_token='; + _isInitialized = true; + _userTokenExpiration = userTokenExpiration; + return _isInitialized; + } + + /// Get authentication token, which is valid for one hour from the creation time. + Future _getAuthToken() async { + try { + final response = await _dio.post( + 'auth/tokens', + data: { + 'api_key': _apiKey, + }, + ); + + return response.data['token']; + } catch (e) { + rethrow; + } + } + + /// At this step, you will register an order to Accept's database, so that you can pay for it later using a transaction + Future _addOrder({ + required String authToken, + required String currency, + required String amount, + required List items, + }) async { + try { + final response = await _dio.post( + 'ecommerce/orders', + data: { + "auth_token": authToken, + "delivery_needed": "false", + "amount_cents": amount, + "currency": currency, + "items": items, + }, + ); + + return response.data['id']; + } catch (e) { + rethrow; + } + } + + /// At this step, you will obtain a payment_key token. This key will be used to authenticate your payment request. It will be also used for verifying your transaction request metadata. + Future _getPurchaseToken({ + required String authToken, + required String currency, + required int orderID, + required String amount, + required PaymobBillingData billingData, + }) async { + final response = await _dio.post( + 'acceptance/payment_keys', + data: { + "auth_token": authToken, + "amount_cents": amount, + "expiration": _userTokenExpiration, + "order_id": orderID, + "billing_data": billingData, + "currency": currency, + "integration_id": _integrationID, + "lock_order_when_paid": "false" + }, + ); + final message = response.data['message']; + if (message != null) { + throw Exception(message); + } + return response.data['token']; + } + + /// Proceed to pay with only calling this function. + /// Opens a WebView at Paymob redirectedURL to accept user payment info. + Future pay( + { + /// BuildContext for navigation to WebView + required BuildContext context, + + /// Which Currency you would pay in. + required String currency, + + /// Payment amount in cents EX: 20000 is an 200 EGP + required String amountInCents, + + /// Optional Callback if you can use return result of pay function or use this callback + void Function(PaymobResponse response)? onPayment, + + /// list of json objects contains the contents of the purchase. + List? items, + + /// The billing data related to the customer related to this payment. + PaymobBillingData? billingData}) async { + if (!_isInitialized) { + throw Exception( + 'PaymobPayment is not initialized call:`PaymobPayment.instance.initialize`'); + } + final authToken = await _getAuthToken(); + final orderID = await _addOrder( + authToken: authToken, + currency: currency, + amount: amountInCents, + items: items ?? [], + ); + final purchaseToken = await _getPurchaseToken( + authToken: authToken, + currency: currency, + orderID: orderID, + amount: amountInCents, + billingData: billingData ?? PaymobBillingData(), + ); + if (context.mounted) { + final response = await PaymobIFrame.show( + context: context, + redirectURL: _iFrameURL + purchaseToken, + onPayment: onPayment, + ); + return response; + } + return null; + } //51624 +} + +class PaymobBillingData { + String? email; + String? firstName; + String? lastName; + String? phoneNumber; + String? apartment; + String? floor; + String? street; + String? building; + String? postalCode; + String? city; + String? state; + String? country; + String? shippingMethod; + + PaymobBillingData({ + this.email, + this.firstName, + this.lastName, + this.phoneNumber, + this.apartment, + this.floor, + this.street, + this.building, + this.postalCode, + this.city, + this.state, + this.country, + this.shippingMethod, + }); + + Map toJson() { + return { + "email": (box.read(BoxName.emailDriver)), + "first_name": box.read(BoxName.nameDriver), + "last_name": box.read(BoxName.nameDriver), + "phone_number": (box.read(BoxName.phoneDriver)), + "apartment": apartment ?? "NA", + "floor": floor ?? "NA", + "building": building ?? "NA", + "street": street ?? "NA", + "postal_code": postalCode ?? "NA", + "city": city ?? "NA", + "state": state ?? "NA", + "country": country ?? "NA", + "shipping_method": shippingMethod ?? "NA", + }; + } +} + +class PaymobIFrame extends StatefulWidget { + const PaymobIFrame({ + Key? key, + required this.redirectURL, + this.onPayment, + }) : super(key: key); + + final String redirectURL; + final void Function(PaymobResponse)? onPayment; + + static Future show({ + required BuildContext context, + required String redirectURL, + void Function(PaymobResponse)? onPayment, + }) => + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) { + return PaymobIFrame( + onPayment: onPayment, + redirectURL: redirectURL, + ); + }, + ), + ); + + @override + State createState() => _PaymobIFrameState(); +} + +class _PaymobIFrameState extends State { + WebViewController? controller; + + @override + void initState() { + controller = WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setNavigationDelegate( + NavigationDelegate( + onNavigationRequest: (NavigationRequest request) { + if (request.url.contains('txn_response_code') && + request.url.contains('success') && + request.url.contains('id')) { + final params = _getParamFromURL(request.url); + final response = PaymobResponse.fromJson(params); + if (widget.onPayment != null) { + widget.onPayment!(response); + } + Navigator.pop(context, response); + return NavigationDecision.prevent; + } + return NavigationDecision.navigate; + }, + ), + ) + ..loadRequest(Uri.parse(widget.redirectURL)); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: controller == null + ? const Center( + child: CircularProgressIndicator.adaptive(), + ) + : SafeArea( + child: WebViewWidget( + controller: controller!, + ), + ), + ); + } + + Map _getParamFromURL(String url) { + final uri = Uri.parse(url); + Map data = {}; + uri.queryParameters.forEach((key, value) { + data[key] = value; + }); + return data; + } +} diff --git a/lib/controller/payment/paymob/paymob_wallet.dart b/lib/controller/payment/paymob/paymob_wallet.dart new file mode 100755 index 0000000..25437cb --- /dev/null +++ b/lib/controller/payment/paymob/paymob_wallet.dart @@ -0,0 +1,470 @@ +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/controller/functions/encrypt_decrypt.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:dio/dio.dart'; +import 'package:flutter/material.dart'; +import 'package:webview_flutter/webview_flutter.dart'; + +import '../../../print.dart'; + +class PaymobResponseWallet { + final bool success; + final String? transactionID; + final String? responseCode; + final String? message; + + PaymobResponseWallet({ + required this.success, + this.transactionID, + this.responseCode, + this.message, + }); + + factory PaymobResponseWallet.fromJson(Map json) { + return PaymobResponseWallet( + success: json['success'] == 'true', + transactionID: json['id'], + responseCode: json['txn_response_code'], + message: json['data']['message'], + ); + } +} + +class PaymobPaymentWallet { + static PaymobPaymentWallet instance = PaymobPaymentWallet(); + + bool _isInitializedWallet = false; + + final Dio _dio = Dio(); + final _baseURL = 'https://accept.paymob.com/api/'; + late String _apiKey; + late int _integrationID; + late int _iFrameID; + late String _iFrameURL; + late int _userTokenExpiration; + + /// Initializing PaymobPayment instance. + Future initialize({ + /// It is a unique identifier for the merchant which used to authenticate your requests calling any of Accept's API. + /// from dashboard Select Settings -> Account Info -> API Key + required String apiKey, + + /// from dashboard Select Developers -> Payment Integrations -> Online Card ID + required int integrationID, + + /// from paymob Select Developers -> iframes + required int iFrameID, + + /// The expiration time of this payment token in seconds. (The maximum is 3600 seconds which is an hour) + int userTokenExpiration = 300, + }) async { + if (_isInitializedWallet) { + return true; + } + _dio.options.baseUrl = _baseURL; + _dio.options.validateStatus = (status) => true; + _apiKey = apiKey; + _integrationID = integrationID; + _iFrameID = iFrameID; + _iFrameURL = + 'https://accept.paymobsolutions.com/api/acceptance/iframes/$_iFrameID?payment_token='; + _isInitializedWallet = true; + _userTokenExpiration = userTokenExpiration; + return _isInitializedWallet; + } + + /// Get authentication token, which is valid for one hour from the creation time. + Future _getAuthToken() async { + try { + final response = await _dio.post( + 'auth/tokens', + data: { + 'api_key': _apiKey, + }, + ); + return response.data['token']; + } catch (e) { + rethrow; + } + } + + /// At this step, you will register an order to Accept's database, so that you can pay for it later using a transaction + Future _addOrder({ + required String authToken, + required String currency, + required String amount, + required List items, + }) async { + try { + final response = await _dio.post( + 'ecommerce/orders', + data: { + "auth_token": authToken, + "delivery_needed": "false", + "amount_cents": amount, + "currency": currency, + "items": items, + }, + ); + return response.data['id']; + } catch (e) { + rethrow; + } + } + + /// At this step, you will obtain a payment_key token. This key will be used to authenticate your payment request. It will be also used for verifying your transaction request metadata. + Future _getPurchaseToken({ + required String authToken, + required String currency, + required int orderID, + required String amount, + required PaymobBillingDataWallet billingData, + }) async { + final response = await _dio.post( + 'acceptance/payment_keys', + data: { + "auth_token": authToken, + "amount_cents": amount, + "expiration": _userTokenExpiration, + "order_id": orderID, + "billing_data": billingData, + "currency": currency, + "integration_id": _integrationID, + "lock_order_when_paid": "false" + }, + ); + // final message = response.data['message']; + // if (message != null) { + // throw Exception(message); + // } + return response.data['token']; + } + + Future _getWalletUrl({ + required String paymentToken, + }) async { + final Map data = { + "source": { + "identifier": box.read(BoxName.phoneWallet).toString(), + "subtype": "WALLET", + }, + "payment_token": paymentToken, + }; + final dio = Dio(); + try { + final response = await dio.post( + 'https://accept.paymobsolutions.com/api/acceptance/payments/pay', + data: data, + ); + + // 4. Handle Payment Response + if (response.statusCode == 200) { + final paymentData = response.data; // Assuming JSON response + + return paymentData['iframe_redirection_url']; + // Navigate to success screen or display success message + } else { + // Payment failed: Handle errors (e.g., display error message) + } + } on DioError catch (e) { + // Handle network or Dio-related errors + } + return ''; + } + + /// Proceed to pay with only calling this function. + /// Opens a WebView at Paymob redirectedURL to accept user payment info. + Future pay( + { + /// BuildContext for navigation to WebView + required BuildContext context, + + /// Which Currency you would pay in. + required String currency, + + /// Payment amount in cents EX: 20000 is an 200 EGP + required String amountInCents, + + /// Optional Callback if you can use return result of pay function or use this callback + void Function(PaymobResponseWallet response)? onPayment, + + /// list of json objects contains the contents of the purchase. + List? items, + + /// The billing data related to the customer related to this payment. + PaymobBillingDataWallet? billingData}) async { + if (!_isInitializedWallet) { + throw Exception( + 'PaymobPayment is not initialized call:`PaymobPayment.instance.initialize`'); + } + final authToken = await _getAuthToken(); + final orderID = await _addOrder( + authToken: authToken, + currency: currency, + amount: amountInCents, + items: items ?? [], + ); + final purchaseToken = await _getPurchaseToken( + authToken: authToken, + currency: currency, + orderID: orderID, + amount: amountInCents, + billingData: billingData ?? + PaymobBillingDataWallet( + // email: box.read(BoxName.email) ?? box.read(BoxName.emailDriver), + // firstName: box.read(BoxName.name) ?? box.read(BoxName.nameDriver), + // lastName: + // box.read(BoxName.lastNameDriver) ?? box.read(BoxName.name), + // phoneNumber: + // box.read(BoxName.phone) ?? box.read(BoxName.phoneDriver), + ), + ); + final urlWallet = await _getWalletUrl(paymentToken: purchaseToken); + Log.print('urlWallet: ${urlWallet}'); + + if (context.mounted) { + final response = await PaymobIFrameWallet.show( + context: context, + redirectURL: urlWallet, + onPayment: onPayment, + ); + return response; + } + return null; + } +} + +class PaymobBillingDataWallet { + String? email; + String? firstName; + String? lastName; + String? phoneNumber; + String? apartment; + String? floor; + String? street; + String? building; + String? postalCode; + String? city; + String? state; + String? country; + String? shippingMethod; + + PaymobBillingDataWallet({ + this.email, + this.firstName, + this.lastName, + this.phoneNumber, + this.apartment, + this.floor, + this.street, + this.building, + this.postalCode, + this.city, + this.state, + this.country, + this.shippingMethod, + }); + + Map toJson() { + return { + "email": (box.read(BoxName.emailDriver)), + "first_name": box.read(BoxName.name) ?? box.read(BoxName.nameDriver), + "last_name": box.read(BoxName.name) ?? box.read(BoxName.nameDriver), + "phone_number": (box.read(BoxName.phoneWallet)), + "apartment": apartment ?? "NA", + "floor": floor ?? "NA", + "building": building ?? "NA", + "street": street ?? "NA", + "postal_code": postalCode ?? "NA", + "city": city ?? "NA", + "state": state ?? "NA", + "country": country ?? "NA", + "shipping_method": shippingMethod ?? "NA", + }; + } +} + +class PaymobIFrameWallet extends StatefulWidget { + const PaymobIFrameWallet({ + Key? key, + required this.redirectURL, + this.onPayment, + }) : super(key: key); + + final String redirectURL; + final void Function(PaymobResponseWallet)? onPayment; + + static Future show({ + required BuildContext context, + required String redirectURL, + void Function(PaymobResponseWallet)? onPayment, + }) => + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) { + return PaymobIFrameWallet( + onPayment: onPayment, + redirectURL: redirectURL, + ); + }, + ), + ); + + @override + State createState() => _PaymobIFrameState(); +} + +// class _PaymobIFrameState extends State { +// WebViewController? controller; + +// @override +// void initState() { +// controller = WebViewController() +// ..setJavaScriptMode(JavaScriptMode.unrestricted) +// ..setNavigationDelegate( +// NavigationDelegate( +// onNavigationRequest: (NavigationRequest request) { +// Log.print('request.url: ${request.url}'); +// if (request.url.contains('txn_response_code') && +// request.url.contains('success') && +// request.url.contains('id')) { +// final params = _getParamFromURL(request.url); +// final response = PaymobResponseWallet.fromJson(params); +// if (widget.onPayment != null) { +// widget.onPayment!(response); +// } +// Navigator.pop(context, response); +// return NavigationDecision.prevent; +// } +// return NavigationDecision.navigate; +// }, +// ), +// ) +// ..loadRequest(Uri.parse(widget.redirectURL)); +// super.initState(); +// } + +// @override +// Widget build(BuildContext context) { +// return Scaffold( +// body: controller == null +// ? const Center( +// child: CircularProgressIndicator.adaptive(), +// ) +// : SafeArea( +// child: WebViewWidget( +// controller: controller!, +// ), +// ), +// ); +// } + +// Map _getParamFromURL(String url) { +// final uri = Uri.parse(url); +// final queryParams = uri.queryParameters; +// final data = {}; + +// queryParams.forEach((key, value) { +// if (key.contains('.')) { +// final parts = key.split('.'); +// data.putIfAbsent(parts.first, () => {}); +// (data[parts.first] as Map)[parts.last] = value; +// } else { +// data[key] = value; +// } +// }); + +// return data; +// } +// } + +class _PaymobIFrameState extends State { + WebViewController? controller; + + @override + void initState() { + controller = WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setNavigationDelegate( + NavigationDelegate( + onNavigationRequest: (NavigationRequest request) { + Log.print('request.url: ${request.url}'); + + if (request.url.contains('txn_response_code') && + request.url.contains('success') && + request.url.contains('id')) { + final params = _getParamFromURL(request.url); + final response = PaymobResponseWallet.fromJson(params); + + if (widget.onPayment != null) { + widget.onPayment!(response); + } + + Navigator.pop(context, response); + + // Show a dialog after successful payment + // _showSuccessDialog(response); + + return NavigationDecision.prevent; + } + return NavigationDecision.navigate; + }, + ), + ) + ..loadRequest(Uri.parse(widget.redirectURL)); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: controller == null + ? const Center( + child: CircularProgressIndicator.adaptive(), + ) + : SafeArea( + child: WebViewWidget( + controller: controller!, + ), + ), + ); + } + + Map _getParamFromURL(String url) { + final uri = Uri.parse(url); + final queryParams = uri.queryParameters; + final data = {}; + + queryParams.forEach((key, value) { + if (key.contains('.')) { + final parts = key.split('.'); + data.putIfAbsent(parts.first, () => {}); + (data[parts.first] as Map)[parts.last] = value; + } else { + data[key] = value; + } + }); + + return data; + } + + void _showSuccessDialog(PaymobResponseWallet response) { + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: Text('Payment Successful'), + content: Text('Transaction ID: EGP'), + actions: [ + TextButton( + onPressed: () { + Navigator.of(context).pop(); // Close the dialog + }, + child: Text('OK'), + ), + ], + ); + }, + ); + } +} diff --git a/lib/controller/payment/stripe.dart b/lib/controller/payment/stripe.dart new file mode 100755 index 0000000..e69de29 diff --git a/lib/controller/profile/captain_profile_controller.dart b/lib/controller/profile/captain_profile_controller.dart new file mode 100755 index 0000000..47af5ed --- /dev/null +++ b/lib/controller/profile/captain_profile_controller.dart @@ -0,0 +1,97 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/main.dart'; + +class CaptainProfileController extends GetxController { + bool isLoading = false; + TextEditingController vin = TextEditingController(); + TextEditingController color = TextEditingController(); + TextEditingController make = TextEditingController(); + TextEditingController model = TextEditingController(); + TextEditingController year = TextEditingController(); + TextEditingController expirationDate = TextEditingController(); + + Future updateFields() async { + var payload = { + 'driverID': box.read(BoxName.driverID).toString(), + }; + + if (vin.text.isNotEmpty) { + payload['vin'] = vin.text; + } + + if (color.text.isNotEmpty) { + payload['color'] = color.text; + } + + if (model.text.isNotEmpty) { + payload['model'] = model.text; + } + + if (make.text.isNotEmpty) { + payload['make'] = make.text; + } + + if (year.text.isNotEmpty) { + payload['year'] = year.text; + } + + if (expirationDate.text.isNotEmpty) { + payload['expiration_date'] = expirationDate.text; + } + + var res = + await CRUD().post(link: AppLink.updateRegisrationCar, payload: payload); + + if (jsonDecode(res)['status'] == 'success') { + box.write(BoxName.vin, vin.text); + box.write(BoxName.color, color.text); + box.write(BoxName.model, model.text); + box.write(BoxName.make, make.text); + box.write(BoxName.year, year.text); + box.write(BoxName.expirationDate, expirationDate.text); + update(); + Get.back(); + } + } + + Map captainProfileData = {}; + Future getProfileData() async { + isLoading = true; + update(); + var res = await CRUD().get( + link: AppLink.getCaptainProfile, + payload: {'id': box.read(BoxName.driverID)}); + if (res != 'failure') { + var d = jsonDecode(res); + captainProfileData = d['message']; + update(); + box.write(BoxName.sexDriver, d['message']['gender']); + box.write(BoxName.dobDriver, d['message']['birthdate']); + box.write(BoxName.vin, d['message']['vin']); + box.write(BoxName.color, d['message']['color']); + box.write(BoxName.model, d['message']['model']); + box.write(BoxName.carPlate, d['message']['car_plate']); + box.write(BoxName.make, d['message']['make']); + box.write(BoxName.year, d['message']['year']); + box.write(BoxName.expirationDate, d['message']['expiration_date']); + // box.write(BoxName.acc, d['message']['accountBank']); + isLoading = false; + update(); + } + } + + @override + void onInit() { + // if (box.read(BoxName.dobDriver) == null) { + getProfileData(); + // } + + super.onInit(); + } +} diff --git a/lib/controller/profile/profile_controller.dart b/lib/controller/profile/profile_controller.dart new file mode 100755 index 0000000..5b3f163 --- /dev/null +++ b/lib/controller/profile/profile_controller.dart @@ -0,0 +1,111 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/widgets/my_textField.dart'; + +import '../../views/widgets/elevated_btn.dart'; + +class ProfileController extends GetxController { + bool isloading = false; + Map prfoileData = {}; + TextEditingController txtController = TextEditingController(); + List genders = ['Male', 'Female', 'Non-binary']; + + String gender = 'Male'; + + void setGender(String value) { + gender = value; + } + + String? selectedDegree; + + void setDegree(String? degree) { + selectedDegree = degree; + update(); + } + + String? selectedCountry; + + void setCountry(String? country) { + selectedCountry = country; + // box.write(BoxName.countryCode, country); + update(); + } + + updateColumn(Map payload) async { + isloading = true; + update(); + await CRUD().post(link: AppLink.updateprofile, payload: payload); + await getProfile(); + isloading = false; + update(); + } + + updatField(String columnName, TextInputType type) async { + Get.defaultDialog( + title: '${'Update'.tr} $columnName', + content: Column( + children: [ + SizedBox( + width: Get.width * .7, + child: MyTextForm( + controller: txtController, + label: 'type here'.tr, + hint: 'type here', + type: type) + // TextField( + // controller: txtController, + // decoration: const InputDecoration( + // border: OutlineInputBorder(), hintText: 'type here'), + // ), + + ), + MyElevatedButton( + title: 'Update'.tr, + onPressed: () { + updateColumn({ + 'id': box.read(BoxName.passengerID), + columnName: txtController.text, + }); + if (columnName == 'first_name') { + box.write(BoxName.name, txtController.text); + } + Get.back(); + txtController.clear(); + }, + ) + ], + ), + ); + } + + getProfile() async { + isloading = true; + update(); + var res = await CRUD().get(link: AppLink.getprofile, payload: { + 'id': box.read(BoxName.passengerID).toString(), + }); + + if (res.toString() == 'failure') { + // Get.snackbar('failure', 'message'); + isloading = false; + update(); + } else { + var jsonDecoded = jsonDecode(res); + prfoileData = jsonDecoded['data']; + isloading = false; + update(); + } + } + + @override + void onInit() { + getProfile(); + super.onInit(); + } +} diff --git a/lib/controller/profile/setting_controller.dart b/lib/controller/profile/setting_controller.dart new file mode 100755 index 0000000..bd8e7d9 --- /dev/null +++ b/lib/controller/profile/setting_controller.dart @@ -0,0 +1,28 @@ +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:get/get.dart'; + +class SettingController extends GetxController { + bool isGoogleMapsEnabled = false; + + void onChangMapApp() { + if (!isGoogleMapsEnabled) { + isGoogleMapsEnabled = true; + box.write(BoxName.googlaMapApp, true); + update(); + } else { + isGoogleMapsEnabled = false; + box.write(BoxName.googlaMapApp, false); + update(); + } + } + + @override + void onInit() { + if (box.read(BoxName.googlaMapApp) != null) { + isGoogleMapsEnabled = box.read(BoxName.googlaMapApp); + } + update(); + super.onInit(); + } +} diff --git a/lib/controller/rate/rate_app_controller.dart b/lib/controller/rate/rate_app_controller.dart new file mode 100755 index 0000000..e2658b3 --- /dev/null +++ b/lib/controller/rate/rate_app_controller.dart @@ -0,0 +1,94 @@ +import 'dart:convert'; + +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/controller/functions/encrypt_decrypt.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:sefer_driver/views/widgets/mydialoug.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +// Import url_launcher to open the app store +import 'package:url_launcher/url_launcher.dart'; + +class RatingController extends GetxController { + var userRating = 0.obs; + final comment = TextEditingController(); + void submitRating(int rating) { + userRating.value = rating; + + _saveRating(rating); + } + + void _redirectToAppStore() async { + // URLs for App Store and Google Play Store + const appStoreUrl = 'https://apps.apple.com/app/6502189302'; + const playStoreUrl = + 'https://play.google.com/store/apps/details?id=com.sefer_driver'; + final url = GetPlatform.isIOS ? appStoreUrl : playStoreUrl; + + if (await launchUrl(Uri.parse(url))) { + await launchUrl(Uri.parse(url)); + } else { + mySnackeBarError("Could not open the app store."); + } + } + + Future _saveRating(int rating) async { + // Build the payload with user data + final payload = { + "name": box.read(BoxName.driverID) != null + ? box.read(BoxName.nameDriver) + : box.read(BoxName.name), + "email": (box.read(BoxName.emailDriver)).toString(), + "phone": (box.read(BoxName.phoneDriver)).toString(), + "userId": box.read(BoxName.driverID), + "userType": "driver", + "rating": rating.toString(), + "comment": comment.text.isEmpty + ? 'nothing' + : comment.text, // Get actual text from comment controller + }; + + // Send the rating data to the backend + var res = await CRUD().post(link: AppLink.addRateApp, payload: payload); + + // Handle the response and check if it's JSON-formatted + if (res != 'failure') { + try { + // Attempt to parse the response as JSON + final parsedResponse = jsonDecode(res); + + if (parsedResponse['status'] == 'success') { + // Display a success message + CRUD().post(link: AppLink.sendEmailRateingApp, payload: { + "name": payload["name"], + "email": payload["email"], + "rating": rating.toString(), + "comment": payload["comment"], + }); + MyDialog().getDialog('Rating submitted successfully'.tr, '', () { + if (rating == 5) { + Get.back(); + _redirectToAppStore(); + } else { + Get.back(); + } + }); + + // Send confirmation email if the rating was successfully submitted + } else { + mySnackeBarError('Failed to submit rating'); + } + } catch (e) { + // If JSON decoding fails, log the response directly + // Get.snackbar('Success', 'Rating submitted successfully', + // backgroundColor: AppColor.greenColor); + } + } else { + mySnackeBarError('Failed to connect to the server'); + } + } +} diff --git a/lib/controller/rate/rate_conroller.dart b/lib/controller/rate/rate_conroller.dart new file mode 100755 index 0000000..c29d8f2 --- /dev/null +++ b/lib/controller/rate/rate_conroller.dart @@ -0,0 +1,152 @@ +import 'package:sefer_driver/controller/firebase/firbase_messge.dart'; +import 'package:sefer_driver/controller/home/captin/map_driver_controller.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/home/Captin/home_captain/home_captin.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; + +// import '../home/captin/home_captain_controller.dart'; + +class RateController extends GetxController { + double selectedRateItemId = -1; + TextEditingController comment = TextEditingController(); + TextEditingController passengerPayAmount = TextEditingController(); + String? rideId, passengerId, driverId, price; + late GlobalKey formKey; + bool ispassengerWantWalletFromDriver = false; + String walletChecked = ''; + @override + void onInit() { + formKey = GlobalKey(); + passengerId = Get.arguments['passengerId']; + rideId = Get.arguments['rideId']; + driverId = Get.arguments['driverId']; + price = Get.arguments['price']; + walletChecked = Get.arguments['walletChecked']; + super.onInit(); + } + + void passengerWantPay() { + ispassengerWantWalletFromDriver = true; + update(); + } + + Future addPassengerWallet() async { + if (formKey.currentState!.validate()) { + var priceOfTrip = double.parse(price.toString()); + // double.parse(Get.find().paymentAmount); + double remainingFee = double.parse(passengerPayAmount.text) - priceOfTrip; + if (remainingFee > 0) { + var paymentToken2 = await Get.find() + .generateTokenPassenger(remainingFee.toString()); + await CRUD().post(link: AppLink.addPassengersWallet, payload: { + 'passenger_id': passengerId, + 'balance': remainingFee.toString(), + 'token': paymentToken2, + }).then((value) async { + if (value != 'failure') { + mySnackbarSuccess('Wallet Added'.tr); + // if (double.parse( + // Get.find().totalAmountVisa) > + // remainingFee) { + var paymentToken3 = await Get.find() + .generateTokenDriver((-1 * remainingFee).toString()); + + await CRUD().post(link: AppLink.addDrivePayment, payload: { + 'rideId': 'remain$rideId', + 'amount': (-1 * remainingFee).toString(), + 'payment_method': 'Remainder', + 'passengerID': passengerId, + 'token': paymentToken3, + 'driverID': box.read(BoxName.driverID).toString(), + }); + + Get.find().sendNotificationToDriverMAP( + 'Wallet Added'.tr, + 'Wallet Added${(remainingFee).toStringAsFixed(0)}'.tr, + Get.find().tokenPassenger, + [], + 'tone2.wav'); + walletChecked = 'true'; + // } + + update(); + } + }); + } else { + Get.defaultDialog( + title: '${'The price must be over than '.tr} $priceOfTrip', + middleText: '', + confirm: MyElevatedButton( + title: 'Ok'.tr, + onPressed: () { + Get.back(); + })); + } + } + } + + void selectRateItem(double id) { + selectedRateItemId = id; + update(); + } + + void addRateToPassenger() async { + // HomeCaptainController homeCaptainController = + // Get.find(); + // Get.put(MapDriverController()); + if (selectedRateItemId < 1) { + Get.defaultDialog( + title: 'You Should choose rate figure'.tr, + titleStyle: AppStyle.title, + middleText: '', + confirm: MyElevatedButton(title: 'Ok', onPressed: () => Get.back())); + } else { + await CRUD().post( + link: "${AppLink.seferCairoServer}/ride/rate/add.php", + payload: { + 'passenger_id': passengerId, + 'driverID': box.read(BoxName.driverID).toString(), + 'rideId': rideId.toString(), + 'rating': selectedRateItemId.toString(), + 'comment': comment.text ?? 'none', + }); + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post(link: "${AppLink.endPoint}/ride/rate/add.php", payload: { + 'passenger_id': passengerId, + 'driverID': box.read(BoxName.driverID).toString(), + 'rideId': rideId.toString(), + 'rating': selectedRateItemId.toString(), + 'comment': comment.text ?? 'none', + }); + } + + CRUD().sendEmail(AppLink.sendEmailToPassengerForTripDetails, { + 'startLocation': + Get.find().passengerLocation.toString(), + 'endLocation': + Get.find().passengerDestination.toString(), + 'name': Get.find().passengerName.toString(), + 'timeOfTrip': Get.find().timeOfOrder.toString(), + 'fee': Get.find().totalPricePassenger.toString(), + 'duration': Get.find().duration.toString(), + 'phone': Get.find().passengerPhone.toString(), + 'email': Get.find().passengerEmail.toString(), + 'startNameLocation': + Get.find().startNameLocation.toString(), + 'endNameLocation': + Get.find().endNameLocation.toString(), + }); + // homeCaptainController.isActive = true; + // update(); + // homeCaptainController.getPaymentToday(); + Get.offAll(HomeCaptain()); + } + } +} diff --git a/lib/controller/themes/themes.dart b/lib/controller/themes/themes.dart new file mode 100755 index 0000000..8bc52be --- /dev/null +++ b/lib/controller/themes/themes.dart @@ -0,0 +1,147 @@ +import 'package:flutter/material.dart'; +import 'package:sefer_driver/constant/style.dart'; +import '../../constant/colors.dart'; + +ThemeData lightThemeEnglish = ThemeData( + brightness: Brightness.light, + fontFamily: "SFPro", + textTheme: TextTheme( + displaySmall: AppStyle.title, + displayLarge: AppStyle.headTitle, + displayMedium: AppStyle.headTitle2, + bodyLarge: AppStyle.title, + bodyMedium: AppStyle.subtitle, + ), + primarySwatch: Colors.blue, + dialogTheme: DialogThemeData( + backgroundColor: AppColor.secondaryColor, + contentTextStyle: AppStyle.title, + titleTextStyle: AppStyle.headTitle2, + ), + appBarTheme: AppBarTheme( + elevation: 0, + color: AppColor.secondaryColor, + centerTitle: true, + iconTheme: const IconThemeData( + color: AppColor.primaryColor, + ), + toolbarTextStyle: TextTheme( + titleSmall: AppStyle.subtitle, + headlineSmall: AppStyle.title, + titleLarge: AppStyle.headTitle2, + ).bodyMedium, + titleTextStyle: TextTheme( + titleSmall: AppStyle.subtitle, + headlineSmall: AppStyle.title, + titleLarge: AppStyle.headTitle2, + ).titleLarge, + ), +); + +ThemeData darkThemeEnglish = ThemeData( + brightness: Brightness.dark, + fontFamily: "SFPro", + textTheme: TextTheme( + displaySmall: AppStyle.title, + displayLarge: AppStyle.headTitle, + displayMedium: AppStyle.headTitle2, + bodyLarge: AppStyle.title, + bodyMedium: AppStyle.subtitle, + ), + primarySwatch: Colors.blue, + dialogTheme: DialogThemeData( + backgroundColor: AppColor.secondaryColor, + contentTextStyle: AppStyle.title, + titleTextStyle: AppStyle.headTitle2, + ), + appBarTheme: AppBarTheme( + elevation: 0, + color: AppColor.secondaryColor, + centerTitle: true, + iconTheme: const IconThemeData( + color: AppColor.primaryColor, + ), + toolbarTextStyle: TextTheme( + titleSmall: AppStyle.subtitle, + headlineSmall: AppStyle.title, + titleLarge: AppStyle.headTitle2, + ).bodyMedium, + titleTextStyle: TextTheme( + titleSmall: AppStyle.subtitle, + headlineSmall: AppStyle.title, + titleLarge: AppStyle.headTitle2, + ).titleLarge, + ), +); + +ThemeData lightThemeArabic = ThemeData( + brightness: Brightness.light, + fontFamily: 'SFArabic', + textTheme: TextTheme( + displaySmall: AppStyle.title, + displayLarge: AppStyle.headTitle, + displayMedium: AppStyle.headTitle2, + bodyLarge: AppStyle.title, + bodyMedium: AppStyle.subtitle, + ), + primarySwatch: Colors.blue, + dialogTheme: DialogThemeData( + backgroundColor: AppColor.secondaryColor, + contentTextStyle: AppStyle.title, + titleTextStyle: AppStyle.headTitle2, + ), + appBarTheme: AppBarTheme( + elevation: 0, + color: AppColor.secondaryColor, + centerTitle: true, + iconTheme: const IconThemeData( + color: AppColor.primaryColor, + ), + toolbarTextStyle: TextTheme( + titleSmall: AppStyle.subtitle, + headlineSmall: AppStyle.title, + titleLarge: AppStyle.headTitle2, + ).bodyMedium, + titleTextStyle: TextTheme( + titleSmall: AppStyle.subtitle, + headlineSmall: AppStyle.title, + titleLarge: AppStyle.headTitle2, + ).titleLarge, + ), +); + +ThemeData darkThemeArabic = ThemeData( + brightness: Brightness.dark, + fontFamily: 'SFArabic', + textTheme: TextTheme( + displaySmall: AppStyle.title, + displayLarge: AppStyle.headTitle, + displayMedium: AppStyle.headTitle2, + bodyLarge: AppStyle.title, + bodyMedium: AppStyle.subtitle, + ), + primarySwatch: Colors.blue, + dialogTheme: DialogThemeData( + backgroundColor: AppColor.secondaryColor, + contentTextStyle: AppStyle.title, + titleTextStyle: AppStyle.headTitle2, + ), + appBarTheme: AppBarTheme( + elevation: 0, + color: AppColor.secondaryColor, + centerTitle: true, + iconTheme: const IconThemeData( + color: AppColor.primaryColor, + ), + toolbarTextStyle: TextTheme( + titleSmall: AppStyle.subtitle, + headlineSmall: AppStyle.title, + titleLarge: AppStyle.headTitle2, + ).bodyMedium, + titleTextStyle: TextTheme( + titleSmall: AppStyle.subtitle, + headlineSmall: AppStyle.title, + titleLarge: AppStyle.headTitle2, + ).titleLarge, + ), +); diff --git a/lib/env/env.dart b/lib/env/env.dart new file mode 100755 index 0000000..e9953e6 --- /dev/null +++ b/lib/env/env.dart @@ -0,0 +1,332 @@ +import 'package:envied/envied.dart'; + +part 'env.g.dart'; + +@Envied() +abstract class Env { + @EnviedField(varName: 'basicAuthCredentials', obfuscate: true) + static final String basicAuthCredentials = _Env.basicAuthCredentials; + + @EnviedField(varName: 'email', obfuscate: true) + static final String email = _Env.email; + + @EnviedField(varName: 'basicCompareFaces', obfuscate: true) + static final String basicCompareFaces = _Env.basicCompareFaces; + +// @EnviedField(varName: 'getapiKey', obfuscate: true) +// static final String getapiKey = _Env.getapiKey; + + @EnviedField(varName: 'basicCompareFacesURL', obfuscate: true) + static final String basicCompareFacesURL = _Env.basicCompareFacesURL; + + @EnviedField(varName: 'accountSIDTwillo', obfuscate: true) + static final String accountSIDTwillo = _Env.accountSIDTwillo; + + @EnviedField(varName: 'serverAPI', obfuscate: true) + static final String serverAPI = _Env.serverAPI; + + @EnviedField(varName: 'mapAPIKEY', obfuscate: true) + static final String mapAPIKEY = _Env.mapAPIKEY; + + @EnviedField(varName: 'twilloRecoveryCode', obfuscate: true) + static final String twilloRecoveryCode = _Env.twilloRecoveryCode; + + @EnviedField(varName: 'authTokenTwillo', obfuscate: true) + static final String authTokenTwillo = _Env.authTokenTwillo; + + @EnviedField(varName: 'chatGPTkey', obfuscate: true) + static final String chatGPTkey = _Env.chatGPTkey; + + @EnviedField(varName: 'transactionCloude', obfuscate: true) + static final String transactionCloude = _Env.transactionCloude; + + @EnviedField(varName: 'visionApi', obfuscate: true) + static final String visionApi = _Env.visionApi; + + @EnviedField(varName: 'secretKey', obfuscate: true) + static final String secretKey = _Env.secretKey; + + @EnviedField(varName: 'stripe_publishableKe', obfuscate: true) + static final String stripePublishableKe = _Env.stripePublishableKe; + + @EnviedField(varName: 'chatGPTkeySefer', obfuscate: true) + static final String chatGPTkeySefer = _Env.chatGPTkeySefer; + + @EnviedField(varName: 'llamaKey', obfuscate: true) + static final String llamaKey = _Env.llamaKey; + + @EnviedField(varName: 'serverPHP', obfuscate: true) + static final String serverPHP = _Env.serverPHP; + @EnviedField( + varName: 'anthropicAIkeySeferNewHamzaayedpython', obfuscate: true) + static final String anthropicAIkeySeferNewHamzaayedpython = + _Env.anthropicAIkeySeferNewHamzaayedpython; + @EnviedField(varName: 'privateKeyFCM', obfuscate: true) + static final String privateKeyFCM = _Env.privateKeyFCM; + + @EnviedField(varName: 'seferAlexandriaServer', obfuscate: true) + static final String seferAlexandriaServer = _Env.seferAlexandriaServer; + + @EnviedField(varName: 'seferPaymentServer', obfuscate: true) + static final String seferPaymentServer = _Env.seferPaymentServer; + + @EnviedField(varName: 'seferCairoServer', obfuscate: true) + static final String seferCairoServer = _Env.seferCairoServer; + + @EnviedField(varName: 'seferGizaServer', obfuscate: true) + static final String seferGizaServer = _Env.seferGizaServer; + + @EnviedField(varName: 'chatGPTkeySeferNew', obfuscate: true) + static final String chatGPTkeySeferNew = _Env.chatGPTkeySeferNew; + + @EnviedField(varName: 'cohere', obfuscate: true) + static final String cohere = _Env.cohere; + + @EnviedField(varName: 'claudeAiAPI', obfuscate: true) + static final String claudeAiAPI = _Env.claudeAiAPI; + + @EnviedField(varName: 'payPalClientId', obfuscate: true) + static final String payPalClientId = _Env.payPalClientId; + + @EnviedField(varName: 'payPalSecret', obfuscate: true) + static final String payPalSecret = _Env.payPalSecret; + + @EnviedField(varName: 'geminiApi', obfuscate: true) + static final String geminiApi = _Env.geminiApi; + + @EnviedField(varName: 'geminiApiMasa', obfuscate: true) + static final String geminiApiMasa = _Env.geminiApiMasa; + + @EnviedField(varName: 'agoraAppId', obfuscate: true) + static final String agoraAppId = _Env.agoraAppId; + + @EnviedField(varName: 'agoraAppCertificate', obfuscate: true) + static final String agoraAppCertificate = _Env.agoraAppCertificate; + + @EnviedField(varName: 'payPalClientIdLive', obfuscate: true) + static final String payPalClientIdLive = _Env.payPalClientIdLive; + + @EnviedField(varName: 'payPalSecretLive', obfuscate: true) + static final String payPalSecretLive = _Env.payPalSecretLive; + + @EnviedField(varName: 'integrationIdPayMob', obfuscate: true) + static final String integrationIdPayMob = _Env.integrationIdPayMob; + + @EnviedField(varName: 'passwordPayMob', obfuscate: true) + static final String passwordPayMob = _Env.passwordPayMob; + + @EnviedField(varName: 'usernamePayMob', obfuscate: true) + static final String usernamePayMob = _Env.usernamePayMob; + + @EnviedField(varName: 'payMobApikey', obfuscate: true) + static final String payMobApikey = _Env.payMobApikey; + + @EnviedField(varName: 'integrationIdPayMobWallet', obfuscate: true) + static final String integrationIdPayMobWallet = + _Env.integrationIdPayMobWallet; + + @EnviedField(varName: 'smsPasswordEgypt', obfuscate: true) + static final String smsPasswordEgypt = _Env.smsPasswordEgypt; + + @EnviedField(varName: 'ocpApimSubscriptionKey', obfuscate: true) + static final String ocpApimSubscriptionKey = _Env.ocpApimSubscriptionKey; + + @EnviedField(varName: 'chatGPTkeySeferNew4', obfuscate: true) + static final String chatGPTkeySeferNew4 = _Env.chatGPTkeySeferNew4; + + @EnviedField(varName: 'anthropicAIkeySeferNew', obfuscate: true) + static final String anthropicAIkeySeferNew = _Env.anthropicAIkeySeferNew; + + @EnviedField(varName: 'llama3Key', obfuscate: true) + static final String llama3Key = _Env.llama3Key; + + @EnviedField(varName: 'payMobOutPassword', obfuscate: true) + static final String payMobOutPassword = _Env.payMobOutPassword; + + @EnviedField(varName: 'payMobOutUserName', obfuscate: true) + static final String payMobOutUserName = _Env.payMobOutUserName; + + @EnviedField(varName: 'A', obfuscate: true) + static final String A = _Env.A; + + @EnviedField(varName: 'B', obfuscate: true) + static final String B = _Env.B; + + @EnviedField(varName: 'C', obfuscate: true) + static final String C = _Env.C; + + @EnviedField(varName: 'D', obfuscate: true) + static final String D = _Env.D; + + @EnviedField(varName: 'E', obfuscate: true) + static final String E = _Env.E; + + @EnviedField(varName: 'F', obfuscate: true) + static final String F = _Env.F; + + @EnviedField(varName: 'G', obfuscate: true) + static final String G = _Env.G; + + @EnviedField(varName: 'H', obfuscate: true) + static final String H = _Env.H; + + @EnviedField(varName: 'I', obfuscate: true) + static final String I = _Env.I; + + @EnviedField(varName: 'J', obfuscate: true) + static final String J = _Env.J; + + @EnviedField(varName: 'K', obfuscate: true) + static final String K = _Env.K; + + @EnviedField(varName: 'L', obfuscate: true) + static final String L = _Env.L; + + @EnviedField(varName: 'M', obfuscate: true) + static final String M = _Env.M; + + @EnviedField(varName: 'N', obfuscate: true) + static final String N = _Env.N; + + @EnviedField(varName: 'O', obfuscate: true) + static final String O = _Env.O; + + @EnviedField(varName: 'P', obfuscate: true) + static final String P = _Env.P; + + @EnviedField(varName: 'Q', obfuscate: true) + static final String Q = _Env.Q; + + @EnviedField(varName: 'R', obfuscate: true) + static final String R = _Env.R; + + @EnviedField(varName: 'S', obfuscate: true) + static final String S = _Env.S; + + @EnviedField(varName: 'T', obfuscate: true) + static final String T = _Env.T; + + @EnviedField(varName: 'U', obfuscate: true) + static final String U = _Env.U; + + @EnviedField(varName: 'V', obfuscate: true) + static final String V = _Env.V; + + @EnviedField(varName: 'W', obfuscate: true) + static final String W = _Env.W; + + @EnviedField(varName: 'X', obfuscate: true) + static final String X = _Env.X; + + @EnviedField(varName: 'Y', obfuscate: true) + static final String Y = _Env.Y; + + @EnviedField(varName: 'Z', obfuscate: true) + static final String Z = _Env.Z; + @EnviedField(varName: 'a', obfuscate: true) + static final String a = _Env.a; + + @EnviedField(varName: 'b', obfuscate: true) + static final String b = _Env.b; + + @EnviedField(varName: 'c', obfuscate: true) + static final String c = _Env.c; + + @EnviedField(varName: 'd', obfuscate: true) + static final String d = _Env.d; + + @EnviedField(varName: 'e', obfuscate: true) + static final String e = _Env.e; + + @EnviedField(varName: 'f', obfuscate: true) + static final String f = _Env.f; + + @EnviedField(varName: 'g', obfuscate: true) + static final String g = _Env.g; + + @EnviedField(varName: 'h', obfuscate: true) + static final String h = _Env.h; + + @EnviedField(varName: 'i', obfuscate: true) + static final String i = _Env.i; + + @EnviedField(varName: 'j', obfuscate: true) + static final String j = _Env.j; + + @EnviedField(varName: 'k', obfuscate: true) + static final String k = _Env.k; + + @EnviedField(varName: 'l', obfuscate: true) + static final String l = _Env.l; + + @EnviedField(varName: 'm', obfuscate: true) + static final String m = _Env.m; + + @EnviedField(varName: 'n', obfuscate: true) + static final String n = _Env.n; + + @EnviedField(varName: 'o', obfuscate: true) + static final String o = _Env.o; + + @EnviedField(varName: 'p', obfuscate: true) + static final String p = _Env.p; + + @EnviedField(varName: 'q', obfuscate: true) + static final String q = _Env.q; + + @EnviedField(varName: 'r', obfuscate: true) + static final String r = _Env.r; + + @EnviedField(varName: 's', obfuscate: true) + static final String s = _Env.s; + + @EnviedField(varName: 't', obfuscate: true) + static final String t = _Env.t; + + @EnviedField(varName: 'u', obfuscate: true) + static final String u = _Env.u; + + @EnviedField(varName: 'v', obfuscate: true) + static final String v = _Env.v; + + @EnviedField(varName: 'w', obfuscate: true) + static final String w = _Env.w; + + @EnviedField(varName: 'x', obfuscate: true) + static final String x = _Env.x; + + @EnviedField(varName: 'y', obfuscate: true) + static final String y = _Env.y; + + @EnviedField(varName: 'z', obfuscate: true) + static final String z = _Env.z; + + @EnviedField(varName: 'keyOfApp', obfuscate: true) + static final String keyOfApp = _Env.keyOfApp; + + @EnviedField(varName: 'initializationVector', obfuscate: true) + static final String initializationVector = _Env.initializationVector; + + @EnviedField(varName: 'emailService', obfuscate: true) + static final String emailService = _Env.emailService; + @EnviedField(varName: 'sss_encryptionSalt', obfuscate: true) + static final String sss_encryptionSalt = _Env.sss_encryptionSalt; + + @EnviedField(varName: 'sss_pass', obfuscate: true) + static final String sss_pass = _Env.sss_pass; + + @EnviedField(varName: 'addd', obfuscate: true) + static final String addd = _Env.addd; + + @EnviedField(varName: 'passnpassenger', obfuscate: true) + static final String passnpassenger = _Env.passnpassenger; + + @EnviedField(varName: 'newId', obfuscate: true) + static final String newId = _Env.newId; + + @EnviedField(varName: 'allowed', obfuscate: true) + static final String allowed = _Env.allowed; + + @EnviedField(varName: 'allowedWallet', obfuscate: true) + static final String allowedWallet = _Env.allowedWallet; +} diff --git a/lib/env/env.g.dart b/lib/env/env.g.dart new file mode 100644 index 0000000..6369720 --- /dev/null +++ b/lib/env/env.g.dart @@ -0,0 +1,13377 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'env.dart'; + +// ************************************************************************** +// EnviedGenerator +// ************************************************************************** + +// coverage:ignore-file +// ignore_for_file: type=lint +// generated_from: .env +final class _Env { + static const List _enviedkeybasicAuthCredentials = [ + 2828032341, + 4171335553, + 2214958652, + 2601040300, + 3349152661, + 4000306892, + 3443126731, + 973416772, + 3022620677, + 835330066, + 3820435173, + 3241525418, + 233333575, + 2767108958, + 1534789061, + 74721387, + 3020593630, + 3534819046, + 1687427907, + 2139979640, + 1056336405, + 2073269260, + 2417930322, + 1388886822, + 4120033657, + 3320094903, + 1132793201, + 1084700786, + 3097628081, + 3433566986, + 3312527250, + ]; + + static const List _envieddatabasicAuthCredentials = [ + 2828032290, + 4171335664, + 2214958674, + 2601040321, + 3349152740, + 4000306877, + 3443126712, + 973416750, + 3022620796, + 835330148, + 3820435090, + 3241525440, + 233333553, + 2767108964, + 1534789035, + 74721306, + 3020593580, + 3534819007, + 1687427849, + 2139979560, + 1056336469, + 2073269309, + 2417930341, + 1388886805, + 4120033614, + 3320094959, + 1132793091, + 1084700714, + 3097628125, + 3433567048, + 3312527358, + ]; + + static final String basicAuthCredentials = String.fromCharCodes( + List.generate( + _envieddatabasicAuthCredentials.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatabasicAuthCredentials[i] ^ + _enviedkeybasicAuthCredentials[i])); + + static const List _enviedkeyemail = [ + 3780618474, + 1655646984, + 2869959535, + 3181915788, + 3360491333, + 1978296459, + 1361422631, + 2609963653, + 1634178154, + 1402153780, + 2595917671, + 715020790, + 3601484455, + 1357137205, + 3331622061, + ]; + + static const List _envieddataemail = [ + 3780618410, + 1655647073, + 2869959425, + 3181915896, + 3360491300, + 1978296551, + 1361422658, + 2609963764, + 1634178059, + 1402153796, + 2595917591, + 715020760, + 3601484484, + 1357137242, + 3331622080, + ]; + + static final String email = String.fromCharCodes(List.generate( + _envieddataemail.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataemail[i] ^ _enviedkeyemail[i])); + + static const List _enviedkeybasicCompareFaces = [ + 2137199864, + 3088022466, + 3486919964, + 169495613, + 2426636918, + 1079217428, + 559238478, + 4116850909, + 1438190808, + 3598026631, + 3336450420, + 1263650429, + 1877774269, + 3717834609, + 2700929642, + 4095864652, + 3209753500, + 4264598241, + 1150206955, + 3737729419, + 961831752, + 1408485255, + 2171009548, + 4110737162, + 3047513335, + 234902035, + 1542018113, + 1958596583, + ]; + + static const List _envieddatabasicCompareFaces = [ + 2137199746, + 3088022440, + 3486920041, + 169495639, + 2426636826, + 1079217505, + 559238463, + 4116850875, + 1438190760, + 3598026733, + 3336450382, + 1263650323, + 1877774284, + 3717834499, + 2700929587, + 4095864614, + 3209753580, + 4264598177, + 1150206938, + 3737729468, + 961831803, + 1408485296, + 2171009620, + 4110737272, + 3047513263, + 234902143, + 1542018051, + 1958596491, + ]; + + static final String basicCompareFaces = String.fromCharCodes( + List.generate( + _envieddatabasicCompareFaces.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatabasicCompareFaces[i] ^ _enviedkeybasicCompareFaces[i])); + + static const List _enviedkeybasicCompareFacesURL = [ + 548364265, + 3049413582, + 2092039719, + 958015356, + 185767921, + 547759842, + 3017435462, + 2177618882, + 4113162195, + 1582223178, + 1708953801, + 860994082, + 3410748928, + 796341317, + 2531197232, + 592867937, + 2067802628, + 3527697165, + 2766688883, + 3916768462, + 2242716973, + 3476468395, + 3921673345, + 3592673615, + 2449815514, + 2521207805, + 3216162864, + 3379639756, + 2176140430, + 2287442285, + 4120049966, + 3415062095, + 368051598, + 3356841657, + 741349667, + 2690709523, + 2108880554, + 3604194016, + 2574351370, + 507167813, + 2629408410, + 1260515324, + 3273907660, + 1142558278, + 4199700871, + 2385613023, + 18378274, + 3879096799, + 1846031920, + 1666649907, + 3404532142, + 2636029267, + 1777649808, + 3427832017, + 2922717080, + 2199934146, + 2018126584, + 2382102160, + 153217879, + 953526089, + ]; + + static const List _envieddatabasicCompareFacesURL = [ + 548364161, + 3049413562, + 2092039763, + 958015244, + 185767810, + 547759832, + 3017435497, + 2177618925, + 4113162165, + 1582223147, + 1708953770, + 860994119, + 3410748973, + 796341281, + 2531197269, + 592867861, + 2067802721, + 3527697262, + 2766688775, + 3916768483, + 2242717003, + 3476468381, + 3921673400, + 3592673661, + 2449815534, + 2521207758, + 3216162825, + 3379639806, + 2176140525, + 2287442265, + 4120049997, + 3415062136, + 368051616, + 3356841681, + 741349702, + 2690709601, + 2108880581, + 3604193931, + 2574351487, + 507167780, + 2629408490, + 1260515212, + 3273907682, + 1142558245, + 4199700968, + 2385612978, + 18378253, + 3879096764, + 1846031967, + 1666649950, + 3404532190, + 2636029234, + 1777649890, + 3427831988, + 2922717127, + 2199934116, + 2018126489, + 2382102259, + 153217842, + 953526074, + ]; + + static final String basicCompareFacesURL = String.fromCharCodes( + List.generate( + _envieddatabasicCompareFacesURL.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatabasicCompareFacesURL[i] ^ + _enviedkeybasicCompareFacesURL[i])); + + static const List _enviedkeyaccountSIDTwillo = [ + 985799655, + 3958492251, + 2004849783, + 4109935294, + 4215203458, + 3730335972, + 1843254670, + 1976127579, + 3952374369, + 4272711843, + 902207900, + 2288846315, + 2670379491, + 3667961711, + 2741584763, + 821252919, + 4265348787, + 2796692186, + 40089182, + 261260770, + 2116189525, + 3434481512, + 495896307, + 644732178, + 2617481125, + 2208696453, + 1359436433, + 3309319842, + 395174595, + 464611901, + 3008624168, + 2057752793, + 3162313442, + 1944479518, + 1906453004, + 2770682849, + 55170340, + 1406764678, + 3400666592, + 2477543321, + 3410564699, + ]; + + static const List _envieddataaccountSIDTwillo = [ + 985799606, + 3958492189, + 2004849679, + 4109935246, + 4215203571, + 3730335901, + 1843254714, + 1976127598, + 3952374359, + 4272711881, + 902207977, + 2288846209, + 2670379472, + 3667961687, + 2741584712, + 821252953, + 4265348746, + 2796692130, + 40089131, + 261260699, + 2116189543, + 3434481497, + 495896266, + 644732198, + 2617481172, + 2208696499, + 1359436451, + 3309319835, + 395174578, + 464611852, + 3008624206, + 2057752755, + 3162313426, + 1944479591, + 1906453051, + 2770682809, + 55170390, + 1406764766, + 3400666508, + 2477543387, + 3410564663, + ]; + + static final String accountSIDTwillo = String.fromCharCodes( + List.generate( + _envieddataaccountSIDTwillo.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataaccountSIDTwillo[i] ^ _enviedkeyaccountSIDTwillo[i])); + + static const List _enviedkeyserverAPI = [ + 1964472634, + 2706628580, + 3736815339, + 1244979740, + 2612480227, + 3189656714, + 4221675426, + 1328412285, + 3572316700, + 2002736149, + 3252522613, + 2395877550, + 4115346256, + 3351898021, + 1473486244, + 2940138987, + 1240661171, + 2129446036, + 2142135124, + 1978907334, + 2321019021, + 336961215, + 3033280853, + 2456091160, + 3634111717, + 3873388331, + 2266371402, + 580937515, + 4085138175, + 1145564549, + 586500748, + 2390250304, + 2304339994, + 3324522965, + 1690505852, + 2025779754, + 1661837796, + 2996135752, + 2514281579, + 1546454929, + 1911595265, + 1140347406, + 974550977, + 2093343311, + 1927344968, + 2563407038, + 33161981, + 2617902440, + 2652034177, + 1514039733, + 4233355543, + 171103904, + 3874745237, + 1632188018, + 1380938233, + 118373397, + 3739705046, + 301209692, + 729171578, + 898741916, + 2059979758, + 3079608318, + 578664752, + 3934197717, + 38831598, + 2764667484, + 1275299260, + 3577630195, + 1295020472, + 1213100593, + 3304991862, + 3570826239, + 1641979116, + 1772977787, + 1426556955, + 232528196, + 3943969041, + 175188250, + 777927161, + 1017004916, + 1308250706, + 3285475012, + 1016600629, + 1476116608, + 1251565656, + 1211324671, + 3889222797, + 1932254801, + 3226321399, + 1918229491, + 12323842, + 2338497601, + 4141304003, + 2012903127, + 4030186544, + 2814923270, + 913611457, + 2123344110, + 1266972682, + 3536324502, + 3274201807, + 2603964016, + 3309611589, + 429988847, + 3555207556, + 3163292763, + 3765741501, + 323496382, + 2874877402, + 3732005325, + 2255339263, + 773632793, + 1497578986, + 3378483221, + 3517288022, + 470077697, + 246184028, + 2375445445, + 1999686470, + 1220483692, + 200754164, + 2276136931, + 927640993, + 1789800388, + 3898505946, + 3096538283, + 1272340623, + 788139668, + 417155655, + 1629467569, + 1290552328, + 2881411617, + 419275940, + 279502905, + 1995689172, + 2083226291, + 2059611547, + 210020409, + 1325240887, + 2050913135, + 1929961470, + 3755391264, + 1741653315, + 4170953670, + 3346646111, + 1757182691, + 3627240044, + 2062378182, + 1697707679, + 525212945, + 3311786844, + 2773299932, + 3241040122, + 1203019373, + 1148820597, + 1794386313, + 3874302509, + 3717020446, + ]; + + static const List _envieddataserverAPI = [ + 1964472683, + 2706628533, + 3736815290, + 1244979789, + 2612480140, + 3189656808, + 4221675505, + 1328412175, + 3572316782, + 2002736211, + 3252522524, + 2395877524, + 4115346177, + 3351898099, + 1473486325, + 2940138963, + 1240661124, + 2129446124, + 2142135041, + 1978907377, + 2321019127, + 336961224, + 3033280790, + 2456091246, + 3634111624, + 3873388401, + 2266371376, + 580937585, + 4085138075, + 1145564644, + 586500852, + 2390250293, + 2304340041, + 3324522983, + 1690505754, + 2025779736, + 1661837783, + 2996135697, + 2514281567, + 1546455036, + 1911595387, + 1140347449, + 974550924, + 2093343285, + 1927344945, + 2563407089, + 33161863, + 2617902362, + 2652034233, + 1514039770, + 4233355635, + 171103890, + 3874745335, + 1632187904, + 1380938191, + 118373470, + 3739704975, + 301209637, + 729171487, + 898741978, + 2059979663, + 3079608234, + 578664806, + 3934197657, + 38831529, + 2764667503, + 1275299319, + 3577630144, + 1295020496, + 1213100617, + 3304991811, + 3570826149, + 1641979021, + 1772977710, + 1426557026, + 232528188, + 3943969062, + 175188351, + 777927072, + 1017004802, + 1308250643, + 3285474973, + 1016600645, + 1476116673, + 1251565582, + 1211324571, + 3889222854, + 1932254778, + 3226321370, + 1918229441, + 12323898, + 2338497655, + 4141303949, + 2012903043, + 4030186594, + 2814923375, + 913611506, + 2123344020, + 1266972793, + 3536324527, + 3274201766, + 2603963939, + 3309611530, + 429988737, + 3555207644, + 3163292719, + 3765741541, + 323496428, + 2874877331, + 3732005301, + 2255339148, + 773632878, + 1497578893, + 3378483238, + 3517287965, + 470077796, + 246183999, + 2375445383, + 1999686443, + 1220483615, + 200754072, + 2276136912, + 927641079, + 1789800380, + 3898505872, + 3096538258, + 1272340728, + 788139739, + 417155690, + 1629467591, + 1290552385, + 2881411665, + 419275987, + 279502924, + 1995689184, + 2083226339, + 2059611629, + 210020366, + 1325240915, + 2050913028, + 1929961398, + 3755391307, + 1741653275, + 4170953640, + 3346646070, + 1757182614, + 3627239956, + 2062378123, + 1697707724, + 525213013, + 3311786811, + 2773299851, + 3241040034, + 1203019295, + 1148820525, + 1794386405, + 3874302575, + 3717020530, + ]; + + static final String serverAPI = String.fromCharCodes(List.generate( + _envieddataserverAPI.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataserverAPI[i] ^ _enviedkeyserverAPI[i])); + + static const List _enviedkeymapAPIKEY = [ + 3070369502, + 2337460996, + 3897223951, + 3667495718, + 4088762227, + 383599496, + 2072501922, + 2810256530, + 1753818566, + 2504223263, + 2743680324, + 3274394056, + 2000380076, + 2360543849, + 3071521593, + 3065763704, + 539941228, + 2153196017, + 2841920575, + 13266399, + 1691705046, + 3446603596, + 1685112306, + 1006370953, + 718485381, + 3905803924, + 3767515145, + 2156478667, + 3662228266, + 263921487, + 3811475524, + 2022519752, + 2471285211, + 3360502729, + 1821063592, + 3144005428, + 1865749152, + 2034336124, + 4091262078, + ]; + + static const List _envieddatamapAPIKEY = [ + 3070369439, + 2337461069, + 3897224053, + 3667495751, + 4088762144, + 383599601, + 2072501985, + 2810256596, + 1753818549, + 2504223304, + 2743680262, + 3274394041, + 2000380122, + 2360543746, + 3071521633, + 3065763586, + 539941127, + 2153195968, + 2841920632, + 13266365, + 1691705083, + 3446603566, + 1685112241, + 1006371022, + 718485501, + 3905804003, + 3767515256, + 2156478623, + 3662228317, + 263921413, + 3811475477, + 2022519683, + 2471285138, + 3360502700, + 1821063648, + 3144005470, + 1865749224, + 2034336074, + 4091262026, + ]; + + static final String mapAPIKEY = String.fromCharCodes(List.generate( + _envieddatamapAPIKEY.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatamapAPIKEY[i] ^ _enviedkeymapAPIKEY[i])); + + static const List _enviedkeytwilloRecoveryCode = [ + 3994109820, + 1609992721, + 2047795649, + 896887998, + 4281343275, + 738814881, + 1486034042, + 916284600, + 4137730914, + 1241066815, + 2356038383, + 1338650687, + 1084036759, + 1278513824, + 2266495818, + 587968074, + 1454491391, + 11543619, + 1310454701, + 302985840, + 2632329109, + 2419247978, + 2166222669, + 1441308757, + 2719341435, + 40535969, + 2006608317, + 527264362, + 1978256922, + 988616838, + 259978160, + ]; + + static const List _envieddatatwilloRecoveryCode = [ + 3994109759, + 1609992784, + 2047795604, + 896887945, + 4281343250, + 738814949, + 1486033970, + 916284648, + 4137730858, + 1241066766, + 2356038317, + 1338650709, + 1084036818, + 1278513817, + 2266495770, + 587968031, + 1454491319, + 11543671, + 1310454760, + 302985764, + 2632329165, + 2419247934, + 2166222622, + 1441308685, + 2719341345, + 40536057, + 2006608335, + 527264306, + 1978257014, + 988616900, + 259978204, + ]; + + static final String twilloRecoveryCode = String.fromCharCodes( + List.generate( + _envieddatatwilloRecoveryCode.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatatwilloRecoveryCode[i] ^ _enviedkeytwilloRecoveryCode[i])); + + static const List _enviedkeyauthTokenTwillo = [ + 3001940567, + 4168736178, + 2190817898, + 2890527669, + 3927738308, + 1787456638, + 4027423491, + 28903150, + 1172371324, + 2150474504, + 2991567021, + 988078296, + 2864247527, + 32089478, + 546703852, + 3597109745, + 3585228209, + 1065127701, + 42539219, + 1085947520, + 409196613, + 2698623736, + 2836812284, + 3888574713, + 2980409450, + 3924202640, + 2442301936, + 3138108074, + 3982838783, + 2980323088, + 2492268909, + 4085964755, + 1261424603, + 3961582447, + 495045553, + 1039962994, + 1955412464, + 3467289045, + 2504681958, + ]; + + static const List _envieddataauthTokenTwillo = [ + 3001940576, + 4168736130, + 2190817823, + 2890527628, + 3927738364, + 1787456532, + 4027423606, + 28903134, + 1172371278, + 2150474553, + 2991567001, + 988078263, + 2864247455, + 32089598, + 546703832, + 3597109632, + 3585228161, + 1065127776, + 42539236, + 1085947572, + 409196661, + 2698623690, + 2836812228, + 3888574604, + 2980409434, + 3924202658, + 2442301889, + 3138108127, + 3982838731, + 2980323169, + 2492268824, + 4085964773, + 1261424622, + 3961582391, + 495045571, + 1039962922, + 1955412380, + 3467288983, + 2504681866, + ]; + + static final String authTokenTwillo = String.fromCharCodes(List.generate( + _envieddataauthTokenTwillo.length, + (int i) => i, + growable: false, + ).map( + (int i) => _envieddataauthTokenTwillo[i] ^ _enviedkeyauthTokenTwillo[i])); + + static const List _enviedkeychatGPTkey = [ + 2018462027, + 586442017, + 1286696174, + 1370745025, + 536646632, + 3166629974, + 4200215354, + 3736005891, + 3392791461, + 1356996111, + 2748795361, + 1046074280, + 3162608585, + 1994668946, + 682795345, + 3394512441, + 2611309563, + 3855825991, + 3727876221, + 1491832441, + 1898225226, + 1587679943, + 2434413252, + 329094694, + 2599075928, + 2165976807, + 785754060, + 2672586811, + 1142154531, + 2147480713, + 2749106806, + 1749198490, + 3983378935, + 3328656831, + 3493015637, + 2872695854, + 3453101311, + 2655313552, + 3789628533, + 3426948489, + 3020201923, + 3310281658, + 3266681179, + 2552225730, + 3619124567, + 3577594670, + 4119564267, + 816734097, + 4159485544, + 4236349041, + 3382511822, + 319239341, + 477292068, + 4062796323, + 3412816076, + 1265875395, + 3578159844, + 3552005533, + ]; + + static const List _envieddatachatGPTkey = [ + 2018462001, + 586442054, + 1286696131, + 1370745077, + 536646571, + 3166629988, + 4200215308, + 3736006002, + 3392791441, + 1356996188, + 2748795320, + 1046074319, + 3162608523, + 1994669017, + 682795264, + 3394512476, + 2611309491, + 3855825949, + 3727876153, + 1491832328, + 1898225185, + 1587679888, + 2434413227, + 329094737, + 2599075867, + 2165976798, + 785754004, + 2672586825, + 1142154587, + 2147480814, + 2749106723, + 1749198559, + 3983378833, + 3328656874, + 3493015596, + 2872695831, + 3453101237, + 2655313602, + 3789628418, + 3426948539, + 3020201905, + 3310281687, + 3266681197, + 2552225683, + 3619124581, + 3577594703, + 4119564175, + 816734195, + 4159485531, + 4236348954, + 3382511780, + 319239386, + 477292156, + 4062796369, + 3412816020, + 1265875375, + 3578159782, + 3552005617, + ]; + + static final String chatGPTkey = String.fromCharCodes(List.generate( + _envieddatachatGPTkey.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatachatGPTkey[i] ^ _enviedkeychatGPTkey[i])); + + static const List _enviedkeytransactionCloude = [ + 1570228735, + 1953423150, + 2972593530, + 1761017036, + 1732388718, + 3253384172, + 4073789351, + 404998204, + 2835024107, + 2157493864, + 3005134845, + 2156474180, + 380070130, + 138917247, + 1294163470, + 2857027440, + 3518329836, + 3587414611, + 1512719864, + 3724055481, + 450909266, + 3406060714, + 247436098, + 1460078041, + 3289885563, + 361021321, + 2430359520, + 3867022471, + 41012722, + 664543055, + 4184081824, + 401055523, + 3246255882, + 3668953695, + 1505764725, + 46020125, + 1056082633, + 504127198, + 275633841, + 1179695647, + 3934868709, + 1573977401, + 1587231687, + 4108837836, + 1695883658, + 2791406166, + 4141179273, + 2209979753, + 714876414, + 87995672, + 3480098614, + 973795513, + 3667301305, + 2999938403, + 118532862, + 1734156845, + 1320624684, + 2540579657, + 3626736376, + 1515676971, + 3006485385, + 167437125, + ]; + + static const List _envieddatatransactionCloude = [ + 1570228654, + 1953423174, + 2972593433, + 1761017019, + 1732388635, + 3253384069, + 4073789387, + 404998227, + 2835024006, + 2157493785, + 3005134750, + 2156474155, + 380070043, + 138917149, + 1294163508, + 2857027361, + 3518329786, + 3587414556, + 1512719783, + 3724055539, + 450909212, + 3406060787, + 247436039, + 1460077981, + 3289885513, + 361021393, + 2430359479, + 3867022534, + 41012672, + 664543097, + 4184081913, + 401055611, + 3246255937, + 3668953628, + 1505764679, + 46020169, + 1056082585, + 504127204, + 275633896, + 1179695700, + 3934868692, + 1573977469, + 1587231633, + 4108837764, + 1695883708, + 2791406085, + 4141179331, + 2209979691, + 714876365, + 87995689, + 3480098680, + 973795466, + 3667301353, + 2999938342, + 118532815, + 1734156920, + 1320624756, + 2540579643, + 3626736288, + 1515676999, + 3006485451, + 167437097, + ]; + + static final String transactionCloude = String.fromCharCodes( + List.generate( + _envieddatatransactionCloude.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatatransactionCloude[i] ^ _enviedkeytransactionCloude[i])); + + static const List _enviedkeyvisionApi = [ + 1886798562, + 839362138, + 3353485339, + 3168195339, + 2475264105, + 2236377469, + 851221453, + 3710100198, + 917121362, + 4185430406, + 1680680693, + 2595194432, + 4102122135, + 2692133015, + 3062646824, + 1756191271, + 3180832858, + 34231256, + 3153362986, + 1512858569, + 1604441845, + 2859433490, + 757777657, + 3126913297, + 109719070, + 4231462571, + 4064683763, + 3425024187, + 288267048, + 1564225903, + 4021112469, + 978091960, + 1745544936, + 4011440562, + 714975708, + 811018152, + 2342059727, + 1522501184, + ]; + + static const List _envieddatavisionApi = [ + 1886798545, + 839362090, + 3353485402, + 3168195399, + 2475264026, + 2236377356, + 851221406, + 3710100149, + 917121291, + 4185430482, + 1680680579, + 2595194426, + 4102122215, + 2692133025, + 3062646801, + 1756191350, + 3180832879, + 34231198, + 3153363047, + 1512858496, + 1604441746, + 2859433584, + 757777539, + 3126913403, + 109719129, + 4231462557, + 4064683689, + 3425024138, + 288267090, + 1564225796, + 4021112545, + 978092018, + 1745544880, + 4011440576, + 714975620, + 811018180, + 2342059661, + 1522501164, + ]; + + static final String visionApi = String.fromCharCodes(List.generate( + _envieddatavisionApi.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatavisionApi[i] ^ _enviedkeyvisionApi[i])); + + static const List _enviedkeysecretKey = [ + 2313762956, + 3167322526, + 3930384889, + 3614962180, + 3178915888, + 59251359, + 3864841337, + 3130308625, + 1813383767, + 1318196162, + 2647913840, + 55103949, + 264740268, + 1070269685, + 1207990540, + 3863512702, + 2263886136, + 2409469349, + 3547371380, + 3000253647, + 463860545, + 3788448705, + 3632928027, + 1445651087, + 3619414110, + 1246733305, + 309675825, + 100824327, + 3403088762, + 4052703571, + 270597834, + 1001193373, + 810515582, + 2013815877, + 635843573, + 412676013, + 110593541, + 2097561039, + 331475637, + 4246766412, + 3898446433, + 2486567003, + 3835441808, + 1513040497, + 2214169409, + 3485464141, + 4258676843, + 4050149103, + 218501658, + 1894319618, + 3874400063, + 2115702300, + 3423799987, + 2618526202, + 3626301887, + 3866647324, + 1417571397, + 916256171, + 2021620932, + 654655116, + 3645978350, + 2020487591, + 24820992, + 3355130264, + 209182626, + 4132541578, + 2937879623, + 1466429353, + 2756166818, + 2968667593, + 1435824812, + 2904816412, + 3074963891, + 2546704012, + 1052689141, + 2901980095, + 540592464, + 2854923215, + 2752309106, + 1738585005, + 790486076, + 3614900651, + 3079986210, + 4170878210, + 664861718, + 330262396, + 4041687070, + 60981970, + 1345886210, + 3953864091, + 1043005137, + 3126043859, + 2770809583, + 105001206, + 368838305, + 3899960121, + 3713044473, + 2373002162, + 4111989310, + 3043284508, + 1893986169, + 3311926430, + 4018856933, + 970114280, + 3534732382, + 2419704006, + 549384143, + 2012409185, + 197782948, + 4075985208, + 9907820, + 4030560425, + 1722549565, + 2767683097, + ]; + + static const List _envieddatasecretKey = [ + 2313763062, + 3167322617, + 3930384806, + 3614962294, + 3178915935, + 59251439, + 3864841235, + 3130308686, + 1813383778, + 1318196213, + 2647913785, + 55103908, + 264740314, + 1070269635, + 1207990652, + 3863512627, + 2263886206, + 2409469414, + 3547371318, + 3000253577, + 463860528, + 3788448754, + 3632928088, + 1445651133, + 3619414064, + 1246733263, + 309675896, + 100824415, + 3403088662, + 4052703550, + 270597792, + 1001193444, + 810515477, + 2013815861, + 635843469, + 412676073, + 110593640, + 2097560984, + 331475596, + 4246766463, + 3898446386, + 2486566924, + 3835441827, + 1513040391, + 2214169399, + 3485464085, + 4258676739, + 4050149081, + 218501666, + 1894319703, + 3874400126, + 2115702309, + 3423800039, + 2618526159, + 3626301945, + 3866647379, + 1417571351, + 916256255, + 2021620883, + 654655211, + 3645978297, + 2020487636, + 24821076, + 3355130283, + 209182613, + 4132541657, + 2937879603, + 1466429410, + 2756166865, + 2968667526, + 1435824892, + 2904816504, + 3074963908, + 2546704072, + 1052689041, + 2901980108, + 540592425, + 2854923255, + 2752308995, + 1738585087, + 790486021, + 3614900696, + 3079986256, + 4170878287, + 664861763, + 330262288, + 4041687147, + 60981939, + 1345886314, + 3953864168, + 1043005154, + 3126043837, + 2770809535, + 105001150, + 368838359, + 3899960158, + 3713044411, + 2373002195, + 4111989261, + 3043284527, + 1893986061, + 3311926489, + 4018856846, + 970114257, + 3534732398, + 2419703984, + 549384089, + 2012409172, + 197783036, + 4075985226, + 9907764, + 4030560453, + 1722549631, + 2767683189, + ]; + + static final String secretKey = String.fromCharCodes(List.generate( + _envieddatasecretKey.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatasecretKey[i] ^ _enviedkeysecretKey[i])); + + static const List _enviedkeystripePublishableKe = [ + 1581912536, + 1430692029, + 1249105457, + 4208695055, + 2597927320, + 2209918851, + 1586670591, + 2547959986, + 3384497248, + 2656318267, + 4137193382, + 3712622870, + 1716894885, + 1768693817, + 1409224108, + 4122603787, + 2545922532, + 375585260, + 3520487271, + 183628634, + 2592162193, + 1169120824, + 353324037, + 1380737347, + 3899088394, + 4098668685, + 615934158, + 3637635217, + 1395422756, + 3711623764, + 3677887786, + 951287450, + 685328787, + 1419478732, + 3730176114, + 2889646751, + 1784034273, + 85081582, + 2392460008, + 275728670, + 1464704971, + 1007457864, + 3729662595, + 3717689422, + 742404591, + 2899668564, + 1849021837, + 4258306985, + 4117869621, + 3640224334, + 4060443251, + 1347015987, + 3588175652, + 959643522, + 1858639271, + 1206590392, + 1012506438, + 3632670071, + 315668290, + 4249072829, + 1501931813, + 3242584884, + 2654329327, + 3441188343, + 3407974634, + 4192654713, + 164264943, + 2351865416, + 4001955212, + 1387828825, + 621971334, + 2985960504, + 1309909939, + 2129545186, + 156597267, + 1736203452, + 1924204010, + 1767885866, + 3993181224, + 2787075299, + 3440084076, + 1490846770, + 1149567929, + 2150425534, + 1626490417, + 2793616014, + 1737961633, + 129440942, + 709730737, + 3240389372, + 3068675760, + 3847736130, + 1098545036, + 1484408162, + 942342359, + 306277747, + 4110242386, + 2409428837, + 3109464760, + 1833280104, + 2420604681, + 1113071990, + 3525786591, + 1020778503, + 229109942, + 1703329787, + 1321106569, + 2158931458, + 3812806342, + 217130754, + 1078508130, + 2993492161, + 238201022, + 3848602240, + ]; + + static const List _envieddatastripePublishableKe = [ + 1581912494, + 1430692058, + 1249105518, + 4208695167, + 2597927402, + 2209918956, + 1586670479, + 2547960024, + 3384497215, + 2656318222, + 4137193361, + 3712622943, + 1716894924, + 1768693839, + 1409224090, + 4122603846, + 2545922466, + 375585199, + 3520487205, + 183628572, + 2592162272, + 1169120779, + 353324102, + 1380737393, + 3899088484, + 4098668731, + 615934117, + 3637635295, + 1395422830, + 3711623738, + 3677887856, + 951287512, + 685328874, + 1419478682, + 3730176068, + 2889646833, + 1784034196, + 85081514, + 2392459932, + 275728710, + 1464704942, + 1007457905, + 3729662666, + 3717689380, + 742404522, + 2899668484, + 1849021890, + 4258307023, + 4117869661, + 3640224291, + 4060443139, + 1347016055, + 3588175696, + 959643605, + 1858639306, + 1206590412, + 1012506485, + 3632670010, + 315668238, + 4249072879, + 1501931797, + 3242584915, + 2654329278, + 3441188231, + 3407974531, + 4192654641, + 164264844, + 2351865369, + 4001955297, + 1387828760, + 621971392, + 2985960565, + 1309909990, + 2129545138, + 156597345, + 1736203494, + 1924203913, + 1767885849, + 3993181305, + 2787075210, + 3440084015, + 1490846838, + 1149567955, + 2150425542, + 1626490483, + 2793616084, + 1737961709, + 129440972, + 709730761, + 3240389304, + 3068675827, + 3847736177, + 1098545129, + 1484408068, + 942342319, + 306277668, + 4110242346, + 2409428767, + 3109464715, + 1833280091, + 2420604779, + 1113071905, + 3525786519, + 1020778550, + 229109996, + 1703329692, + 1321106683, + 2158931569, + 3812806302, + 217130864, + 1078508090, + 2993492141, + 238201084, + 3848602348, + ]; + + static final String stripePublishableKe = String.fromCharCodes( + List.generate( + _envieddatastripePublishableKe.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatastripePublishableKe[i] ^ + _enviedkeystripePublishableKe[i])); + + static const List _enviedkeychatGPTkeySefer = [ + 2232363825, + 4006379536, + 3923142638, + 653694762, + 1100490281, + 3484300994, + 842162489, + 2759372360, + 2239425232, + 2746173892, + 504120748, + 2625604262, + 1609613669, + 3484550135, + 58057841, + 1097950200, + 1274060323, + 1494460125, + 2025849241, + 2777540316, + 3441165048, + 1419392407, + 1615207725, + 1683719114, + 528464482, + 781218717, + 1327626970, + 2020572218, + 2304228293, + 1367763202, + 574355226, + 2857466821, + 3093783905, + 2973584751, + 830553961, + 1874404331, + 602224851, + 3395608738, + 191737410, + 3914974242, + 2315437574, + 406284880, + 1852638999, + 3923394942, + 692148825, + 2591366105, + 3112636304, + 2228950280, + 904828934, + 3194298922, + 2465735476, + 4215278589, + 836433174, + 1473696899, + 2829132606, + 10654496, + 2219294159, + 572504120, + ]; + + static const List _envieddatachatGPTkeySefer = [ + 2232363851, + 4006379639, + 3923142595, + 653694819, + 1100490304, + 3484300944, + 842162442, + 2759372321, + 2239425252, + 2746173867, + 504120771, + 2625604316, + 1609613572, + 3484550084, + 58057768, + 1097950094, + 1274060363, + 1494460075, + 2025849339, + 2777540325, + 3441164938, + 1419392461, + 1615207750, + 1683719163, + 528464417, + 781218724, + 1327626882, + 2020572232, + 2304228285, + 1367763301, + 574355279, + 2857466752, + 3093783889, + 2973584643, + 830553937, + 1874404225, + 602224769, + 3395608816, + 191737368, + 3914974288, + 2315437646, + 406284858, + 1852639012, + 3923394863, + 692148796, + 2591366124, + 3112636353, + 2228950352, + 904829014, + 3194298950, + 2465735493, + 4215278507, + 836433230, + 1473697009, + 2829132646, + 10654540, + 2219294093, + 572504148, + ]; + + static final String chatGPTkeySefer = String.fromCharCodes(List.generate( + _envieddatachatGPTkeySefer.length, + (int i) => i, + growable: false, + ).map( + (int i) => _envieddatachatGPTkeySefer[i] ^ _enviedkeychatGPTkeySefer[i])); + + static const List _enviedkeyllamaKey = [ + 1340259389, + 2272314266, + 2538226140, + 3643370283, + 2057633472, + 739519769, + 1790469646, + 1393191827, + 2288139432, + 2865901774, + 589167437, + 3382371210, + 3403888472, + 3158662748, + 3824953423, + 3733798824, + 1824733178, + 3448820148, + 3053289231, + 2209154918, + 256881759, + 634781674, + 508782537, + 3542076119, + 1126141342, + 1944704221, + 1300675652, + 3148952459, + 3103377290, + 1874153591, + 918471875, + 254452456, + 3964790403, + 806809887, + 2555550249, + 3872078195, + 95829292, + 2184241333, + 2808900397, + 1651674525, + 682696790, + 165752390, + 3705348352, + 1978615520, + 367355339, + 2585722840, + 3794946109, + 3352233910, + 4233047910, + 1384138406, + 902530242, + 368660408, + 3714079306, + 129432361, + 1603513582, + 2232702821, + 1395092831, + 1843990108, + 875497299, + 3732245951, + 353935793, + 1209527003, + 2265189601, + 1746700406, + 1353536950, + 3927042979, + 1392092864, + 3706342500, + 745872705, + 2022825741, + 1261719501, + 1007608458, + 830300070, + 2450299345, + ]; + + static const List _envieddatallamaKey = [ + 1340259439, + 2272314312, + 2538226161, + 3643370350, + 2057633461, + 739519840, + 1790469729, + 1393191893, + 2288139500, + 2865901723, + 589167419, + 3382371308, + 3403888394, + 3158662680, + 3824953357, + 3733798855, + 1824733072, + 3448820096, + 3053289273, + 2209154816, + 256881669, + 634781601, + 508782472, + 3542076067, + 1126141397, + 1944704151, + 1300675703, + 3148952573, + 3103377381, + 1874153530, + 918471931, + 254452389, + 3964790519, + 806809896, + 2555550239, + 3872078155, + 95829327, + 2184241381, + 2808900424, + 1651674583, + 682696704, + 165752433, + 3705348423, + 1978615470, + 367355311, + 2585722777, + 3794946134, + 3352233958, + 4233047858, + 1384138477, + 902530214, + 368660449, + 3714079346, + 129432422, + 1603513482, + 2232702728, + 1395092838, + 1843990066, + 875497319, + 3732245976, + 353935830, + 1209526940, + 2265189520, + 1746700351, + 1353536899, + 3927043044, + 1392092857, + 3706342411, + 745872665, + 2022825855, + 1261719445, + 1007608550, + 830300132, + 2450299325, + ]; + + static final String llamaKey = String.fromCharCodes(List.generate( + _envieddatallamaKey.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatallamaKey[i] ^ _enviedkeyllamaKey[i])); + + static const List _enviedkeyserverPHP = [ + 1955100110, + 991760262, + 814006192, + 4302754, + 535377021, + 592363005, + 4174409820, + 1011162695, + 3032428038, + 4214480696, + 418824077, + 2617013464, + 3134615516, + 2946659390, + 2362126279, + 755446817, + 3922496535, + 1728629233, + 266558599, + 2748410552, + 2940849722, + 2712877101, + 3928415508, + 3661746672, + 2970208960, + 1648362779, + 3989244127, + 1353552375, + ]; + + static const List _envieddataserverPHP = [ + 1955100070, + 991760370, + 814006212, + 4302802, + 535376910, + 592362951, + 4174409843, + 1011162728, + 3032428135, + 4214480712, + 418824164, + 2617013494, + 3134615471, + 2946659419, + 2362126241, + 755446852, + 3922496613, + 1728629215, + 266558699, + 2748410577, + 2940849740, + 2712877128, + 3928415547, + 3661746563, + 2970208933, + 1648362877, + 3989244090, + 1353552261, + ]; + + static final String serverPHP = String.fromCharCodes(List.generate( + _envieddataserverPHP.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataserverPHP[i] ^ _enviedkeyserverPHP[i])); + + static const List _enviedkeyanthropicAIkeySeferNewHamzaayedpython = + [ + 3967016825, + 3118339271, + 2632852979, + 2380882761, + 2513666185, + 930108041, + 1314877061, + 2088291231, + 629415990, + 3494022323, + 779870925, + 14142310, + 450831385, + 2288509854, + 4271163623, + 3977776275, + 1940999669, + 1391592244, + 1206766135, + 3073520716, + 3026324283, + 707940835, + 2991048710, + 2265594670, + 660365453, + 3220682037, + 2682554163, + 3046269016, + 1606686436, + 1243829286, + 2066848844, + 2936194884, + 2689571022, + 3421583546, + 4116711921, + 1069393473, + 3563257900, + 2904223868, + 3247887645, + 3585713292, + 3273438471, + 3312918479, + 4254726922, + 3330455851, + 1704358533, + 1408031809, + 2989297742, + 3994497505, + 3175095041, + 4175335086, + 1354874289, + 2140385181, + 2523494875, + 4055129148, + 917519960, + 3160654555, + 2429309565, + 702430600, + 1637619558, + 906654508, + 3084113526, + 1819950767, + 549450116, + 3550422718, + 3658430360, + 2339251780, + 2535368116, + 1864869520, + 4039554662, + 2798550940, + 2269639472, + 885746347, + 1563092671, + 4269676067, + 1447203664, + 1459215427, + 2780205146, + 4061188860, + 1045152089, + 3473460038, + 1746786219, + 1250944038, + 3462230686, + 1352383782, + 3706404714, + 1829434329, + 479683860, + 159613756, + 2188271774, + 113116064, + 2168280101, + 4282738548, + 4631394, + 409072338, + 2122454857, + 567504436, + 2785794952, + 1647974907, + 880230984, + 2359478156, + 2485287113, + 1885807540, + 534617302, + 4008702885, + 1015301371, + 2253973518, + 2180568460, + 1263756469, + 1878347619, + 799738390, + 3263982087, + 2861631269, + 3123022178, + 871234094, + ]; + + static const List _envieddataanthropicAIkeySeferNewHamzaayedpython = + [ + 3967016707, + 3118339232, + 2632852958, + 2380882744, + 2513666283, + 930108138, + 1314877096, + 2088291310, + 629416000, + 3494022364, + 779870974, + 14142303, + 450831412, + 2288509928, + 4271163556, + 3977776337, + 1940999640, + 1391592291, + 1206766169, + 3073520694, + 3026324350, + 707940756, + 2991048768, + 2265594720, + 660365516, + 3220682055, + 2682554236, + 3046269032, + 1606686397, + 1243829322, + 2066848792, + 2936194853, + 2689571006, + 3421583564, + 4116711831, + 1069393449, + 3563257944, + 2904223761, + 3247887738, + 3585713401, + 3273438540, + 3312918424, + 4254727033, + 3330455923, + 1704358607, + 1408031762, + 2989297669, + 3994497424, + 3175095142, + 4175335153, + 1354874367, + 2140385223, + 2523494792, + 4055129174, + 917519888, + 3160654489, + 2429309476, + 702430686, + 1637619518, + 906654561, + 3084113452, + 1819950820, + 549450165, + 3550422727, + 3658430413, + 2339251727, + 2535368076, + 1864869544, + 4039554613, + 2798551027, + 2269639506, + 885746383, + 1563092700, + 4269676104, + 1447203590, + 1459215475, + 2780205073, + 4061188745, + 1045152009, + 3473460007, + 1746786281, + 1250944078, + 3462230702, + 1352383813, + 3706404661, + 1829434254, + 479683932, + 159613768, + 2188271833, + 113116115, + 2168280183, + 4282738491, + 4631357, + 409072358, + 2122454906, + 567504397, + 2785795032, + 1647974841, + 880230947, + 2359478177, + 2485287084, + 1885807494, + 534617223, + 4008702932, + 1015301276, + 2253973605, + 2180568541, + 1263756516, + 1878347579, + 799738468, + 3263982175, + 2861631305, + 3123022112, + 871234114, + ]; + + static final String anthropicAIkeySeferNewHamzaayedpython = + String.fromCharCodes(List.generate( + _envieddataanthropicAIkeySeferNewHamzaayedpython.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataanthropicAIkeySeferNewHamzaayedpython[i] ^ + _enviedkeyanthropicAIkeySeferNewHamzaayedpython[i])); + + static const List _enviedkeyprivateKeyFCM = [ + 3909266921, + 4058000546, + 1713020989, + 992719216, + 4170994394, + 945703488, + 1098515712, + 118911372, + 2794206805, + 437977184, + 2402308314, + 3593855869, + 220306176, + 1612662565, + 3144326782, + 2510964094, + 3355114524, + 1119447420, + 4063732016, + 2306475202, + 3969475511, + 2739522768, + 1568614799, + 2250834281, + 4109840519, + 3755432244, + 1953403444, + 3252605416, + 1259056156, + 629276170, + 1992641754, + 3444523615, + 2457593883, + 3717590517, + 1452941615, + 60284563, + 2579485104, + 3858432466, + 923262026, + 2490235814, + 4269429032, + 1617321760, + 2973005841, + 839524665, + 2938348503, + 4060752296, + 2567386115, + 890882902, + 2000641905, + 1319171184, + 1535242627, + 804485321, + 1887876636, + 3291730928, + 2628636401, + 1358407958, + 2470702040, + 3276059935, + 1818216398, + 3524938065, + 393355810, + 3707934358, + 61581215, + 3767650949, + 894361063, + 903600820, + 2702163678, + 1099119346, + 4260314648, + 503828949, + 2127912317, + 2308021000, + 2763223139, + 2263898699, + 2794375366, + 724106636, + 2765711693, + 164403684, + 2552336565, + 2626188431, + 2530923539, + 117246183, + 1303956188, + 1801430645, + 2532548706, + 304984609, + 1048036008, + 3282077559, + 889321724, + 929589813, + 3177674924, + 3117107958, + 1065781755, + 3801791792, + 1583143462, + 2699425815, + 1487455667, + 2159274393, + 3336927192, + 3856512381, + 2885400992, + 2337280769, + 3250099739, + 1172741805, + 2961724591, + 477052138, + 1247156829, + 1217590219, + 53664815, + 2953783996, + 3837234045, + 3455767308, + 1119750921, + 2003556520, + 923716949, + 386815953, + 574996642, + 2943600203, + 1358331656, + 3577065692, + 3597122186, + 3278120267, + 3083177628, + 3969259104, + 2157603523, + 688027571, + 896229422, + 878109824, + 2503543433, + 858091448, + 3293762015, + 3455912121, + 2388780602, + 2163827603, + 986361364, + 2085948061, + 3912932723, + 2676230194, + 2166120950, + 853820239, + 1251635975, + 3882616212, + 3915024886, + 1358954224, + 3093630361, + 2039406693, + 4090391221, + 3825524367, + 479547799, + 1877215918, + 2880055389, + 2025680842, + 4241704906, + 238767648, + 3317486361, + 3808370494, + 1556849350, + 2755517792, + 2796187724, + 3488913388, + 40256845, + 789341382, + 238259500, + 632381294, + 2102217865, + 1576786937, + 2506874329, + 1276207300, + 541410686, + 3915897519, + 2288248369, + 1912557027, + 1015656297, + 2504024125, + 534864475, + 1677685346, + 751532801, + 1866048269, + 119941339, + 1334129705, + 3462557520, + 144370828, + 2035833753, + 209652708, + 3571187644, + 3636994125, + 285785775, + 3387977586, + 1216177615, + 355600347, + 949619948, + 78656102, + 3447717371, + 474620325, + 3165778972, + 130834893, + 47818662, + 4235611452, + 419685128, + 2224972042, + 265289783, + 1102947072, + 3203287245, + 4281392790, + 1538426284, + 850188741, + 2449503159, + 358768354, + 3579157559, + 3030846872, + 2136932010, + 242195908, + 3222233328, + 3689667228, + 1135730096, + 4043775275, + 1837833254, + 1312784846, + 1664790440, + 686239367, + 3693925394, + 1792075361, + 3255813389, + 1481243752, + 486775338, + 3182769526, + 28588847, + 282542587, + 4175625385, + 3500152279, + 2906579151, + 1014303484, + 1815859256, + 3334263807, + 1784577882, + 1327970539, + 2001157220, + 3864122566, + 934330004, + 1511647327, + 1084493245, + 1804879269, + 4275936770, + 563426541, + 3370582618, + 2808416139, + 3263435055, + 1917615052, + 3560116322, + 2980809772, + 2872078688, + 354541267, + 3108795463, + 1072372775, + 2220692600, + 2183069395, + 2857817601, + 2705458556, + 1731233341, + 258604882, + 4178207365, + 4177120202, + 913357267, + 1841864889, + 1753435088, + 3804460293, + 233156669, + 3714320453, + 1878860184, + 4240748307, + 615868831, + 4248722433, + 980381011, + 2084088850, + 1123685899, + 1083462273, + 1332285390, + 4074992082, + 418955918, + 2842036117, + 3884383295, + 229891539, + 1471576991, + 3545189746, + 1472916514, + 3937618001, + 698023941, + 2080681580, + 1651333635, + 2495618668, + 1935593663, + 3156649123, + 1589022754, + 674047541, + 1065493267, + 3440973284, + 3284657204, + 2817891764, + 3961545871, + 1699605808, + 2627264676, + 2463868686, + 247960606, + 1708896232, + 4086364116, + 573015358, + 1740871342, + 1515117976, + 1249906525, + 4211101781, + 2052389723, + 3682803459, + 2520464682, + 1680335395, + 4030523039, + 3399817084, + 3172195859, + 2115836784, + 2363403240, + 1003022253, + 2833262128, + 768893550, + 3195982768, + 3630486420, + 1047204669, + 4142251723, + 731403976, + 3018069803, + 2780044903, + 1278086543, + 4122232673, + 3325674112, + 1886367228, + 780748462, + 3028780534, + 4175519642, + 4138096570, + 3027882718, + 237908144, + 3143948898, + 2235796086, + 3841481317, + 3352800697, + 3539873945, + 2186389330, + 1126662937, + 3141088967, + 56376165, + 2557197031, + 2265526605, + 3241118445, + 1853383896, + 4235213666, + 4048915162, + 2712180596, + 671844887, + 3696087454, + 2068817785, + 1310928995, + 2920806757, + 1781692678, + 4210698453, + 1715536479, + 3494873206, + 69612905, + 1477318314, + 2183442326, + 4274048654, + 3561122613, + 745208997, + 1685720052, + 2619313346, + 2042896378, + 3327419412, + 2271013802, + 4037367542, + 3901401401, + 1809590905, + 4031229990, + 203998498, + 399415926, + 3681623370, + 1121277167, + 559023257, + 1092601478, + 2673008582, + 1820147073, + 4067130650, + 1259288490, + 3523437096, + 2028392291, + 2377799873, + 3106487531, + 2850301089, + 2589882158, + 138446874, + 2938637100, + 2306238595, + 4022896307, + 5030670, + 1615686776, + 2726426377, + 253331688, + 3710770451, + 451984084, + 629200416, + 697845533, + 667893197, + 1431980502, + 74152058, + 3752817454, + 2301969054, + 408423468, + 2908162822, + 2344507079, + 1972651546, + 2523758582, + 3440348878, + 3691254817, + 3617908792, + 3203162967, + 229263960, + 2919098501, + 1132141601, + 1326184191, + 3825355343, + 2612585078, + 1010887180, + 397720784, + 3192075586, + 1704960690, + 3892960175, + 1736383365, + 1989521786, + 2098973824, + 3516200917, + 1405772122, + 2161110186, + 69439154, + 3684871279, + 3530440025, + 1230522509, + 3965592500, + 3595152735, + 4258009554, + 1995209276, + 2674555282, + 2102741377, + 1156090813, + 4211863296, + 1602424142, + 392668773, + 1272529396, + 1232401999, + 3115100498, + 3865273968, + 4200009402, + 3086527023, + 2629780028, + 3939978572, + 368691904, + 17258172, + 4234247796, + 3328308343, + 973258282, + 532030034, + 4263608715, + 2204337243, + 3887897390, + 2631462547, + 2569309307, + 3334499447, + 2422167035, + 975515093, + 1258697525, + 1719187367, + 124803825, + 4120345446, + 3933059071, + 1788802760, + 571776594, + 1996193325, + 578599904, + 538682131, + 714340868, + 3351007708, + 3296067583, + 3091642161, + 3771500309, + 2724439305, + 1846572935, + 2879773426, + 4254565255, + 3851420916, + 1881953434, + 2119644679, + 2769799329, + 3167120968, + 3712936765, + 3317525282, + 71217013, + 2711342165, + 2249312693, + 2464172585, + 3065697185, + 968286003, + 663501814, + 3998360963, + 3620731667, + 2292462361, + 371062004, + 1266126322, + 4091788591, + 1245613105, + 810737407, + 1147058798, + 3810285203, + 1374693243, + 1203821735, + 568740853, + 1537049235, + 815969563, + 197721778, + 1642429804, + 3162637014, + 2423309451, + 2562103164, + 1162316113, + 2904417185, + 391533465, + 2717680103, + 3067627961, + 3065760587, + 1503691492, + 2923156703, + 2475941460, + 3192629735, + 3001390473, + 334641041, + 1408575000, + 2372409380, + 1443471238, + 3756843175, + 996790647, + 2124085568, + 458492097, + 2786651301, + 4108109324, + 1925842703, + 1846729799, + 807440269, + 3355224050, + 1885253632, + 1654605201, + 2120840630, + 1274130407, + 2086534345, + 3863788012, + 18962334, + 2478327679, + 817288909, + 2112580148, + 1317140225, + 3405309795, + 3498529728, + 39796269, + 3458373489, + 516819404, + 4061703706, + 3125072513, + 1687476699, + 2493586122, + 2819972049, + 1879676454, + 1832781142, + 941893323, + 3326911251, + 675945360, + 2734281448, + 3591229111, + 2874763588, + 1780151284, + 1722812866, + 1357809776, + 747512889, + 3012154653, + 2312936018, + 3704664348, + 1512000529, + 2527135418, + 776853039, + 2402968092, + 14500205, + 1461198446, + 637498417, + 2588850383, + 2300433164, + 2117441361, + 1374433288, + 3116150625, + 1552852161, + 155896633, + 822454167, + 1786787092, + 4174092262, + 4290797046, + 1935320218, + 2228206408, + 737614772, + 450300428, + 4130604827, + 3133668862, + 4117225646, + 715257102, + 2426453317, + 1149210487, + 4285759760, + 674792694, + 2491849245, + 2427848689, + 1123744235, + 719784904, + 2684360741, + 1038577451, + 3895535954, + 3877638900, + 1961033906, + 1126966790, + 4277614285, + 66026537, + 2059745251, + 2294258350, + 3101615533, + 2788222126, + 2787122791, + 3883350065, + 1282957117, + 2517997635, + 3309376438, + 1673717742, + 1091233959, + 1531157671, + 686609798, + 2981118159, + 3339769310, + 1388917198, + 2917594741, + 3801227366, + 333277549, + 1672816185, + 490760006, + 495537213, + 3830960368, + 284092822, + 3000343274, + 3467005179, + 1594605617, + 2700356653, + 2755568960, + 1364462875, + 3712584227, + 3055013582, + 2082650549, + 2490354386, + 2800308984, + 1944434099, + 1086259567, + 3964787123, + 2985271055, + 2015741341, + 2256394881, + 3340656396, + 2741505368, + 1024225685, + 4143221553, + 2808249170, + 1561486627, + 1452554252, + 3427333629, + 1421103959, + 3298040918, + 3724611322, + 2765175338, + 4230456529, + 159182279, + 1896161701, + 3357023754, + 1774468375, + 3662834486, + 2064479646, + 766546847, + 1336953324, + 3469133883, + 1540323032, + 1038049699, + 2039359194, + 3020361659, + 2283316373, + 404167362, + 2297609681, + 1797147276, + 3560649875, + 917589435, + 892812942, + 354759432, + 480401651, + 1937615378, + 3902092172, + 3226442771, + 4096665482, + 303338662, + 3072924978, + 2121677121, + 2468404112, + 1791041176, + 714266416, + 1471899579, + 1929543923, + 3432156651, + 2469667672, + 1018943519, + 278966546, + 1029168761, + 4202523757, + 277238257, + 4018939878, + 3386662861, + 3211389407, + 4002051603, + 3815557874, + 3671114265, + 3722737257, + 264725025, + 965747602, + 1928292587, + 2263434737, + 3401419853, + 2123625690, + 3022459323, + 1483341838, + 3719393170, + 2553974253, + 1052865048, + 3993766127, + 3132116550, + 2772968063, + 2958475915, + 3213577716, + 1942172017, + 992849325, + 2546544910, + 3147224679, + 2904167930, + 1534487259, + 3833032635, + 805112103, + 269506976, + 652123876, + 3806349611, + 2385048346, + 3474900311, + 3377901994, + 3210802479, + 1510254973, + 491125412, + 113116742, + 719168364, + 385062871, + 3019925932, + 3608660, + 95251332, + 512434864, + 1028072109, + 3009193165, + 2986894617, + 1727150691, + 3457431780, + 3662208319, + 3604079324, + 3199563549, + 1187157323, + 683529109, + 449988982, + 2015819460, + 1011019318, + 672172644, + 1470923434, + 3452174007, + 1504845618, + 1063005948, + 3202805670, + 3718418636, + 3320504691, + 773167273, + 2303603064, + 2968835030, + 1669896466, + 1248223413, + 3039589132, + 3979278635, + 2973678896, + 2281370347, + 2986107175, + 4193776136, + 545796068, + 475455354, + 4042154329, + 3282630144, + 3275694597, + 399644767, + 1664441402, + 1308393368, + 918405234, + 4121187583, + 3302719525, + 2636702196, + 3079569408, + 1430761314, + 804657865, + 1645431890, + 2687135852, + 3317881235, + 1631854487, + 1025563301, + 4092009077, + 409045837, + 4011865778, + 2813776867, + 187585594, + 1962779395, + 3028535905, + 8692832, + 1404371571, + 2370470881, + 1537979528, + 368796635, + 885533369, + 2928791752, + 2321256348, + 2843238805, + 4236287281, + 2697205388, + 3853829395, + 478261225, + 1974617215, + 2906000514, + 836708807, + 3837809115, + 1792028379, + 3050250912, + 2076117424, + 2653444525, + 736863878, + 4059049354, + 994581210, + 2360529301, + 3183662043, + 2898076422, + 3636127244, + 1735751332, + 239481614, + 1109774062, + 2979038163, + 3051036223, + 3251976026, + 1211102917, + 38691305, + 1097163274, + 351037877, + 822373375, + 2907084895, + 1412388429, + 3395600364, + 3774137920, + 1887340269, + 2133630724, + 3896455458, + 904497851, + 926912474, + 2806552315, + 221335532, + 4153902589, + 3080224265, + 1860623821, + 2360918091, + 3338162706, + 802127541, + 2660545943, + 640190345, + 3089269726, + 2022222334, + 139007819, + 775950290, + 902692305, + 1004022304, + 2271847213, + 1394369097, + 2902207892, + 2419005296, + 308617257, + 3843658490, + 2767195735, + 2829599179, + 1095093115, + 3755211029, + 3153633527, + 3611103095, + 1967011679, + 3341816566, + 3333030732, + 1808666522, + 2817399101, + 2861989441, + 949066196, + 3596241291, + 1358897427, + 1102114896, + 1722073452, + 1287245101, + 2614366061, + 154870599, + 3546757729, + 3666969035, + 2799379591, + 2569393073, + 1286677972, + 1467658664, + 4240996252, + 787212157, + 506507014, + 1938222667, + 2020923930, + 321018807, + 4038750684, + 45026770, + 686045749, + 2755063051, + 1946726205, + 3646325955, + 916254984, + 3411200028, + 2930738271, + 2139358992, + 904685384, + 1811046133, + 2581861175, + 320441610, + 2396028249, + 1054088489, + 1424575799, + 3444566435, + 2608179701, + 720230624, + 2079855838, + 3855710774, + 710094137, + 1254594393, + 3989737962, + 3496644222, + 1743792835, + 2021868123, + 1088221431, + 1965642096, + 1181791487, + 3804125717, + 720093095, + 4255332993, + 2466013706, + 696787657, + 1232001128, + 919906693, + 3972717602, + 2277347262, + 4063551337, + 1665429660, + 632527531, + 2511331061, + 2954950899, + 1194130689, + 3931814929, + 2745667776, + 1158673823, + 383303401, + 166255137, + 27883370, + 2992871019, + 3134388360, + 4008719790, + 2761428989, + 263722246, + 343583399, + 2395359059, + 3418276306, + 460769944, + 1502107394, + 2734264236, + 418284635, + 3893320016, + 98080938, + 3649360958, + 1948722235, + 2997692931, + 2941356126, + 3973871633, + 3674761802, + 2338518785, + 2299362303, + 3536038750, + 1409956101, + 3743596357, + 3114882296, + 372337244, + 2087042355, + 2779079852, + 1567949908, + 1949944757, + 3205215483, + 4160238350, + 1755073332, + 3037585411, + 2682149168, + 2463910619, + 435540453, + 95641274, + 702908515, + 2672829695, + 2715699087, + 2086864498, + 954633830, + 1942499448, + 3056998548, + 3185770226, + 4010983309, + 2115205801, + 567759899, + 2015579113, + 52349182, + 3627442781, + 1202596950, + 1517876666, + 1572248703, + 2545646585, + 1384270005, + 54450957, + 2346477124, + 1893041719, + 2930470151, + 341766947, + 36535055, + 976341859, + 3709770163, + 963254382, + 3551632650, + 148954306, + 4050715385, + 3948921456, + 1923302388, + 388594867, + 3695530378, + 4089311578, + 2848130295, + 2211950256, + 1996104116, + 266329378, + 2637114366, + 2573501734, + 2801149084, + 3186453535, + 3702958007, + 1333096931, + 1854994256, + 3766454648, + 3982839204, + 1964843520, + 1718384060, + 891622475, + 454869549, + 2905736021, + 4008089382, + 4038083131, + 2898526871, + 4037892474, + 3621766688, + 1166598163, + 2923144760, + 3059550579, + 823109263, + 3673571257, + 1527691085, + 2107557247, + 1795507322, + 52873721, + 3665562018, + 540172591, + 4128734306, + 1499578602, + 2704449666, + 3864575273, + 2451271075, + 429566640, + 423308832, + 431082479, + 611310987, + 2100629277, + 3659853490, + 4279379861, + 1445932222, + 1291455311, + 56940010, + 660894492, + 1000905073, + 3895267587, + 658063474, + 4134848583, + 2526523414, + 827432274, + 2609535997, + 3945807062, + 300492147, + 2742115050, + 1847738501, + 697036307, + 869904002, + 2275078340, + 3834921224, + 3333562986, + 685006851, + 1091279828, + 2917790609, + 3735245090, + 34434277, + 742036167, + 2400401711, + 2558969849, + 2006074325, + 1687553561, + 1257158903, + 2294032671, + 1711039385, + 3203081045, + 817690833, + 3658270546, + 1721990438, + 4110062573, + 3664016924, + 1324441640, + 3177058687, + 2943364415, + 3784310660, + 255802447, + 162962244, + 1241192692, + 1125547290, + 1027979237, + 2571310097, + 3766505094, + 4039892552, + 1532501697, + 927811809, + 709598941, + 3337062989, + 1871854861, + 511250531, + 1022833822, + 268958514, + 1623538054, + 2165765557, + 4186573119, + 3560707738, + 1259727200, + 3183624747, + 291690950, + 3372387217, + 2783879008, + 3864507684, + 3372146132, + 4196057105, + 3818269482, + 3239025976, + 2848805373, + 415111216, + 1827561666, + 3720588871, + 2119251110, + 779650202, + 2538817064, + 2617095395, + 2249104494, + 110531646, + 2960829035, + 3879936105, + 3286113424, + 1343541561, + 3400119587, + 1576673048, + 105967320, + 2544076567, + 814253718, + 1472731991, + 1010337895, + 891312579, + 1148671772, + 3110204845, + 3459534163, + 401226661, + 2868253886, + 4272331362, + 4137000779, + 3922339190, + 928875381, + 102561731, + 669511346, + 3874663219, + 920919923, + 272777938, + 3061609367, + 2302443326, + 696222403, + 2125481654, + 2444187801, + 1337583655, + 1968606602, + 1452397376, + 4179253701, + 2853218945, + 3256732918, + 3576012287, + 3642707874, + 1985222044, + 3064091727, + 3363226811, + 960932522, + 4109712715, + 1576091832, + 474046723, + 834186456, + 1994800764, + 4279420853, + 2305727748, + 3231544898, + 3938628161, + 1247573387, + 890976697, + 1381558611, + 1805262179, + 2006742403, + 1791338771, + 1383728646, + 1099125997, + 247898327, + 1627561611, + 3608258108, + 3371597253, + 3993525395, + 2799568172, + 4133505344, + 2137671560, + 691150411, + 3185341439, + 3612249500, + 4219882372, + 3054076817, + 2449511508, + 852946822, + 2950781127, + 2676899282, + 430901393, + 1361269068, + 464942854, + 2993298298, + 2704191301, + 3814558415, + 1979211385, + 1519652577, + 3987591990, + 1457706061, + 2342720950, + 2728738314, + 2307283840, + 4006329261, + 1692228681, + 2253970802, + 3112700978, + 1388352538, + 2756193996, + 437366497, + 699237533, + 2823739888, + 1331733202, + 645547641, + 497766458, + 786870889, + 2144080770, + 2411471641, + 1800152549, + 4078891204, + 3110537201, + 1214733153, + 93814048, + 3203733755, + 1713497425, + 1569891196, + 2185799423, + 3745324295, + 1953658964, + 563239135, + 3713721603, + 2305388526, + 38116490, + 4078582173, + 2331971834, + 290507627, + 3099540248, + 3755853690, + 2852981642, + 3311304791, + 655711254, + 604149772, + 984820077, + 1510666047, + 2163079276, + 2457849197, + 1829334970, + 388406064, + 3394519114, + 927648851, + 759546195, + 2293127391, + 1246017241, + 392293246, + 194909481, + 1798847171, + 1454852697, + 1639875240, + 588249868, + 292031409, + 3643720372, + 1433373063, + 757324738, + 1363720480, + 883827015, + 1025492334, + 49418618, + 1811374826, + 3322705553, + 353404764, + 837906294, + 2621987931, + 855455175, + 1178063169, + 576069414, + 3304328125, + 3948158570, + 254533219, + 3852194965, + 1340853006, + 28658265, + 2979432108, + 3460081628, + 122249035, + 245507780, + 2497475278, + 3637474922, + 214225656, + 1195808881, + 71104284, + 1000734635, + 753937884, + 2292714058, + 4213374150, + 529226299, + 2425411630, + 2602434061, + 510726581, + 1311916504, + 3522149513, + 2020602895, + 3696395716, + 3771837698, + 1366111031, + 983079832, + 2549067616, + 3717036853, + 2579928434, + 1448602915, + 2132385247, + 251392106, + 3444886406, + 242241583, + 2733829025, + 2645440002, + 3545011147, + 2095452140, + 2335430049, + 597521995, + 1484616065, + 4174467979, + 4183525645, + 3013885726, + 3059238413, + 3112064637, + 1838982418, + 4159117778, + 520816255, + 3308232525, + 1182353808, + 2692232619, + 162146291, + 2405631737, + 1822770737, + 487013028, + 1517713139, + 343002259, + 3138898704, + 3093968705, + 1598887986, + 3669281482, + 3836084839, + 3113619555, + 310902184, + 616320927, + 3461172031, + 2977247933, + 1433612658, + 1413947218, + 1643228999, + 3900905095, + 4262770442, + 1678175045, + 765531384, + 2488109074, + 3865551735, + 2188631311, + 1349496447, + 1205330507, + 2740935473, + 3604685540, + 2673683913, + 4234892342, + 2639033503, + 2682096390, + 2523254954, + 3317102872, + 3235354014, + 1162142029, + 2886920222, + 1533306780, + 2110313337, + 3732769000, + 289559001, + 1906120900, + 1304283584, + 78907007, + 659704506, + 2921104138, + 4113289677, + 2032108314, + 1444793758, + 3520237629, + 1146495375, + 3550774797, + 3526374878, + 1057619187, + 1825411052, + 3847102877, + 2569781686, + 3120534305, + 1341793821, + 4237616100, + 1251825358, + 3764457483, + 2108575059, + 1351099150, + 3223851620, + 2386115033, + 2285106713, + 64145806, + 532756218, + 2122004737, + 1804123516, + 3765319661, + 809023561, + 2234026176, + 1984391293, + 2666163636, + 2321335132, + 4259844141, + 1001583079, + 1602568803, + 4078086721, + 2550842478, + 3016061891, + 771256854, + 1549755671, + 3824743902, + 930971859, + 1622677782, + 3661003825, + 210641632, + 2721316043, + 3092941981, + 481471609, + 2681319341, + 1599429326, + 2312752860, + 3388312040, + 2445893243, + 525657301, + 2865796417, + 2756230652, + 1505207394, + 3083246572, + 1289535424, + 1833972692, + 2930207413, + 2762349974, + 442025410, + 1175737893, + 3418522970, + 2403585331, + 2755145598, + 707814073, + 570198532, + 3369272240, + 2259728902, + 1147572898, + 1822259577, + 4174675165, + 3589053768, + 2200936990, + 1894653964, + 3826617525, + 2379747704, + 742173764, + 255755812, + 2401574889, + 3565415427, + 381035133, + 1319338280, + 2777187826, + 1839592048, + 2140270474, + 2151304044, + 1012446680, + 2419586421, + 1250946127, + 1835486402, + 3718020992, + 813005717, + 524732123, + 4116832347, + 1893269138, + 1930037419, + 66524967, + 890564277, + 2522900126, + 2975909875, + 3250354052, + 2885205597, + 688885937, + 1280846063, + 3272119059, + 1146905636, + 3513016338, + 4117339618, + 3500434337, + 4119573416, + 1811657708, + 3749637130, + 3227998261, + 1356195292, + 1372243756, + 2812456853, + 3482642915, + 3119543917, + 2181748795, + 1961961692, + 1665334107, + 265531111, + 834568759, + 3873687896, + 1864739044, + 2174265236, + 957126446, + 1607293679, + 2742001569, + 3747509479, + 2521214864, + 1128214491, + 2094985338, + 447354545, + 3210196307, + 3288793047, + 3386756463, + 2931530223, + 3431081829, + 4266280946, + 1255930237, + 173348546, + 2076928651, + 2848404845, + 2719632351, + 1816796620, + 3008427538, + 637343448, + 1471753967, + 175594162, + 753666689, + 2883192310, + 76719598, + 2305656096, + 3454086940, + 3842727169, + 3842763296, + 550694122, + 1345825481, + 1251174660, + 1023942514, + 2491683521, + 2564151785, + 3608675440, + 1926494363, + 3939411296, + 4288251396, + 1290241362, + 2084616909, + 185180454, + 3623408656, + 310118813, + 3872446566, + 717111452, + 3973935625, + 3054547578, + 894745879, + 751070407, + 2977938094, + 2478826518, + 4066129196, + 1587166157, + 204132902, + 178400928, + 1650441676, + 1848535058, + 1084485766, + 3921215707, + 855320284, + 3995476319, + 759514788, + 4273436827, + 2982888826, + 1065554914, + 349934353, + 3835925115, + 3489765549, + 1512859458, + 3228732244, + 3750541438, + 12170666, + 3658413339, + 1356626051, + 1387342282, + 1370405933, + 2416189435, + 415045437, + 3587299685, + 3796698070, + 2359146054, + 2952826099, + 3950247824, + 2721767390, + 3772904908, + 2544234882, + 3923250901, + 3096816110, + 3587063227, + 3134518469, + 3007667834, + 3711364494, + 2059707983, + 1912368131, + 3469736167, + 1515069139, + 680705671, + 2600136258, + 54985284, + 3214179673, + 512981591, + 1895861613, + 1250918722, + 614181374, + 3769240611, + 708910659, + 3816223184, + 3945682984, + 2060844751, + 2247112161, + 685465040, + 2729431156, + 4039837818, + 370644847, + 3384484238, + 3405618794, + 1468655388, + 986049546, + 2834525501, + 2219281229, + 2716457389, + 3488099080, + 1826789329, + 4116252706, + 1017570060, + 362335219, + 3092619944, + 3635124876, + 597846807, + 445598393, + 209039838, + 495572998, + 3699163274, + 3394063136, + 1811078255, + 2785192289, + 3397506006, + 3114282996, + 4074779003, + 2152960083, + 1667869244, + 3413297322, + 978448188, + 912123403, + 2075489369, + 1940768142, + 2129570002, + 2034694137, + 3912057561, + 3479510901, + 2740182048, + 1863263649, + 3485005972, + 403129949, + 1957091552, + 4091764732, + 2406403265, + 3538249253, + 3231927561, + 2429316200, + 485238611, + 128650354, + 3109646634, + 4189329046, + 340018413, + 3763059575, + 3327834575, + 4290374934, + 1102114534, + 3801700012, + 2684186493, + 3372749924, + 273916881, + 724058706, + 3912176054, + 375038838, + 2477988084, + 3866334991, + 548641974, + 771748266, + 808039680, + 2953704748, + 756418829, + 3759617512, + 1687700820, + 647974012, + 1513446615, + 2186741818, + 1868647543, + 2529047743, + 910638851, + 1691789481, + 1726709449, + 2166369033, + 2314732772, + 2235416104, + 1332765559, + 3476947536, + 1486590889, + 3976514288, + 3415224241, + 3006226979, + 2627420042, + 20108269, + 3048485979, + 2913276383, + 2607047925, + 2650391384, + 1909423794, + 4222550189, + 3376228142, + 2173631057, + 1189644478, + 3152165044, + 3732488464, + 142481046, + 1237862773, + 1530194493, + 3352149092, + 2993668532, + 553006134, + 99325503, + 3711133688, + 2779594275, + 2882168863, + 1112689207, + 2883485736, + 1361784915, + 3886685658, + 1885953817, + 3276750981, + 698442383, + 1896149143, + 742022574, + 1893572624, + 3872673291, + 626299547, + 722850398, + 128799235, + 1356544415, + 2226467870, + 829410720, + 2988302194, + 1057039205, + 2502222138, + 3068155817, + 1640925437, + 3810438778, + 3263544511, + 3971894898, + 2607286323, + 3204562388, + 2705634595, + 196306030, + 2958472703, + 281934021, + 225620553, + 1063460183, + 792292993, + 888232324, + 1964507461, + 232092191, + 2714137196, + 1483555141, + 120880982, + 2555439192, + 1436793544, + 1119967012, + 1482845462, + 1480042336, + 3884546427, + 1921953621, + 1351756262, + 3048832534, + 285136227, + 4168303441, + 864523055, + 4042949738, + 800345479, + 2630004022, + 2966396586, + 3740172871, + 2935321907, + 1376317269, + 424571161, + 2728788731, + 2761296211, + 3468640836, + 3078221094, + 558164273, + 2804077329, + 4020956779, + 4112309665, + 1632600742, + 3580417139, + 2920622646, + 882989347, + 1201087908, + 3146717562, + 367463860, + 1588090269, + 2283715894, + 2310717857, + 3011646851, + 1480098437, + 106057511, + 543062155, + 1928329107, + 1361650094, + 1583353426, + 3015744372, + 1404072328, + 2925206211, + 2223115073, + 1508718521, + 400701351, + 591184376, + 2558146899, + 1827873012, + 116190718, + 3128306450, + 2319277427, + 1331684305, + 4139843334, + 441474687, + 1902844639, + 2021736073, + 1957323426, + 2293302812, + 2226751592, + 1753989816, + 2711426382, + 2527182617, + 2871380008, + 2612997097, + 466620849, + 2492530503, + 1861075499, + 2176087980, + 2961064275, + 4053304787, + 3514124630, + 927610758, + 3031264728, + 4292671139, + 385004642, + 753385652, + 1658379546, + 1156312526, + 636230987, + 2766303452, + 2282464836, + 2276693655, + 3126926219, + 3959688293, + 4034180871, + 3067302167, + 421851876, + 362057897, + 2069215556, + 2204585110, + 1443205316, + 2659388746, + 566404975, + 584258847, + 449935150, + 4245138823, + 829695173, + 1047207699, + 2174465802, + 3367208255, + 2926049621, + 1105603183, + 3695500826, + 2319738174, + 653209595, + 2605877399, + 2858969815, + 2031015391, + 1950450105, + 2229019787, + 110338305, + 1700756879, + 3602686745, + 3148545660, + 3210132020, + 2761572293, + 680115695, + 2174395300, + 1315858805, + 1716090950, + 3523989075, + 1412697670, + 1924988855, + 3376542976, + 3430689594, + 3921146666, + 352454470, + 389193810, + 2652685741, + 2887284868, + 890313925, + 72031568, + 2151212279, + 2195569930, + 1694421854, + 4159709410, + 3046178876, + 3677380906, + 3035449777, + 2298723026, + 3611829346, + 2987907129, + 361952645, + 3885827970, + 896277201, + 2393963682, + 1399542446, + 961294560, + 2751810827, + 3134743266, + 4172174, + 773641154, + 4254883124, + 3581776605, + 1826320347, + 626575911, + 2204366677, + 3098545898, + 785349971, + 3143808702, + 1594953670, + 864101619, + 3976601150, + 2951818495, + 2104644468, + 2915721896, + 2257246973, + 2601999766, + 2768887764, + 2034372933, + 671807597, + 2630078026, + 494806144, + 404836065, + 1416371145, + 3930137982, + 3482301181, + 3701658245, + 629483559, + 2051160916, + 1234213171, + 2588895292, + 538192501, + 498271393, + 706967863, + 2558654362, + 924585462, + 3636471787, + 1477602467, + 836399986, + 170467121, + 3310366305, + 844094971, + 3149125238, + 2065793797, + 1957377166, + 3416788385, + 867312159, + 3796676035, + 4014940174, + 2363805713, + 733416662, + 3598135245, + 3314025140, + 2331315599, + 759430987, + 1152150117, + 559621861, + 4208885138, + 1625735161, + 602774008, + 1719604388, + 3191219968, + 3090929697, + 2827163975, + 4215730033, + 1829292029, + 369704756, + 1795582642, + 4122509391, + 1372952031, + 1027209597, + 3507021128, + 132245390, + 3360159293, + 1148599479, + 2042372183, + 510893170, + 1831982884, + 268123241, + 4075902096, + 176030885, + 196820450, + 2686451670, + 868676277, + 2893770977, + 443617365, + 1354119070, + 2698527071, + 3116151960, + 1810829759, + 376921301, + 2941739940, + 2016883276, + 1308362531, + 593756456, + 3225317921, + 186401127, + 1302033381, + 3475161725, + 2052309019, + 3875926273, + 2538151681, + 2713598962, + 4382044, + 4210551575, + 827925851, + 1344680901, + 3196120765, + 1702546871, + 2559142473, + 2249058040, + 357385311, + 3422458714, + 2866697166, + 1445011586, + 614581445, + 4049344015, + 1682120060, + 1480744169, + 230912382, + 361664333, + 1204693276, + 4177281638, + 3756377821, + 1627569346, + 2567945363, + 1246527918, + 2724660888, + 1757866975, + 1043672731, + 3070925714, + 2091394827, + 3208250739, + 1002636226, + 2686083310, + 3527374292, + 2909881354, + 3849822886, + 2952863241, + 230624199, + 1061328294, + 2861968064, + 469991057, + 4110499004, + 2673354697, + 2022699072, + 1580761845, + 3078280043, + 2136028749, + 1972922608, + 2747353570, + 928929467, + 1938600250, + 1355202708, + 4004824280, + 1627514921, + 2544504617, + 3748675212, + 1146087386, + 3071070719, + 3251498690, + 3406153557, + 1771825982, + 1703062932, + 775993197, + 130297510, + 3452011385, + 3149232377, + 2665861009, + 658893646, + 3140321741, + 2062056519, + 3380286650, + 240891436, + 993473335, + 685984310, + 2259659223, + 2009725211, + 1246700242, + 4059285828, + 3664118896, + 589572396, + 640887657, + 1433736183, + 2985608721, + 1776200435, + 3595983579, + 539253060, + 1995981646, + 3143495423, + 2855963629, + 2183430389, + 2454517053, + 2115589905, + 893359740, + 1009473371, + 1117478527, + 1397641749, + 2473774183, + 3395070896, + 4203516133, + 1477632526, + 127956258, + 760566371, + 1001384464, + 998447432, + 2109623130, + 588066241, + 176100500, + 2836052431, + 3974023369, + 3749678310, + 714937834, + 1528029088, + 1393994994, + 2077073314, + 1435894754, + 1073256577, + 2363954429, + 3967458088, + 2389436840, + 1586954751, + 3137652285, + 361297489, + 2333173565, + 1615903209, + 2648634499, + 4018373602, + 1654987857, + 3364636603, + 3597973863, + 1286501600, + 2830460777, + 827818991, + 1579468831, + 2961040402, + 3860837520, + 284473705, + 2632730337, + 2641849541, + 4189137070, + 994213663, + 3326853165, + 148943214, + 3054991624, + 2954250829, + 4256001324, + 1022781652, + 1155292472, + 2160280895, + 4006217171, + 131909495, + 3278347061, + 680220249, + 3910358870, + 3997300405, + 1682427911, + 3654150756, + 1369428105, + 71948130, + 3807670677, + 2751584328, + 3460093162, + 1309692753, + 1837832550, + 822444885, + 4235835013, + 4264571285, + 1874282697, + 1073983482, + 1408391064, + 2372815301, + 1631414230, + 3366761864, + 2256292454, + 1504440009, + 2688944133, + 3630237544, + 2017867542, + 119218594, + 2688184559, + 2377353421, + 2844808659, + 2316800690, + 3631804796, + 1757346763, + 3884084417, + 1776540835, + 3160543776, + 307816437, + 2443224733, + 3873894080, + 288257846, + 325357110, + 4264643961, + 1946524279, + 301774416, + 2463483189, + 2243837499, + 4139143696, + 643417070, + 374605590, + 3298718615, + 3395728917, + 1135153203, + 2613803228, + 3260811462, + 1989135053, + 1972353577, + 35794993, + 2656136171, + 2765244157, + 966295540, + 2698423095, + 3899527062, + 3958373622, + 3076204250, + 1482912107, + 3287440258, + 759687441, + 1084951209, + 2825937713, + 4091595210, + 537126875, + 206322315, + 1918255645, + 2092173837, + 2472380486, + 3372054914, + 3461101949, + 913586152, + 3401783722, + 2500830259, + 2565023539, + 1878149586, + 1177214854, + 1157972010, + 1162112653, + 2703410667, + 1501139665, + 932100092, + 4244261344, + 3845199633, + 77749032, + 740089842, + 3300684321, + 996359861, + 2745378622, + 2126879861, + 172022586, + 147710948, + 2081623598, + 1316009656, + 1896653988, + 1336761256, + 2517268129, + 2687319531, + 2570842422, + 70450025, + 4054555987, + 3281476811, + 564082852, + 3238703206, + 2625718039, + 4252888843, + 1929167212, + 3407287095, + 497211052, + 3520780510, + 912673885, + 509607542, + 1588267957, + 349340904, + 1859685364, + 3780207356, + 470950247, + 3071288339, + 943780121, + 4080455607, + 2538436459, + 1782288583, + 158316635, + 533606354, + 3959497094, + 2579600398, + 3446799812, + 1232296392, + 3702672726, + 3056179467, + 559613338, + 2747705892, + 3091029675, + 4232463958, + 1014562534, + 3806083505, + 3570614470, + 3633268949, + 381949410, + 1853344824, + 3101554022, + 889961188, + 160852123, + 1787559659, + 98616444, + 1176880532, + 877578836, + 3690998387, + 503565249, + 2248632782, + 72691058, + 3172653029, + 133951314, + 2827900249, + 1422667602, + 2310197569, + 1686916745, + 2781076320, + 3146472998, + 4193071078, + 2556763019, + 1678171053, + 955217592, + 1966594590, + 280813729, + 2069214158, + 4033422276, + 1940542849, + 3480488445, + 5659252, + 2125575706, + 477846960, + 2284377737, + 1045661390, + 2190498285, + 3105691129, + 2334649155, + 79575278, + 3864551853, + 1294182602, + 2875664198, + 4020679616, + 2708135456, + 3987384091, + 2914245063, + 2359269231, + 2179031162, + 2855848053, + 518897462, + 3862460515, + 2714703231, + 3495300244, + 3329581495, + 4087767829, + 2902971073, + 3972430542, + 3192015163, + 3215882944, + 1839416257, + 477917300, + 1629267886, + 457759418, + 2958833718, + 2665660725, + 3687403016, + 2477563011, + 3613528514, + 1946933787, + 2721421627, + 1572291969, + 265376438, + 65382981, + 1286264908, + 995512327, + 1590703132, + 1926925019, + 1962160129, + 2142250259, + 2360976071, + 161296174, + 1697935878, + 2050346417, + 3559563923, + 313167558, + 1427949845, + 2690863799, + 3350312674, + 550673580, + 3727484418, + 3534900308, + 1673116374, + 3200316422, + 1408087397, + 3267905085, + 3234961522, + 3568751207, + 2475083037, + 1240377457, + 1415036748, + 912359207, + 2928958711, + 2700508806, + 4034021674, + 369832658, + 842864971, + 3869855337, + 1663441815, + 2590706621, + 259939711, + 3998930907, + 4087164911, + 763947379, + 1799495738, + 1909674208, + 2578530104, + 10601380, + 1411609353, + 4069202935, + 2777348819, + 1735961657, + 1549275647, + 2735512108, + 3366569653, + 1636043565, + 1833917622, + 2602330097, + 204146186, + 2289909376, + 4154151913, + 3749070082, + 976765926, + 2630568749, + 4274727473, + 3998343771, + 2031471434, + 4208037877, + 3762578714, + 3270971254, + 3922120617, + 2501544918, + 162616084, + 1016082818, + 538842943, + 869297627, + 2902911289, + 2124937893, + 2376846953, + 3818191894, + 3632554165, + 207615840, + 2904209846, + 219308473, + 2404468680, + 1708320925, + 912834408, + 1808016929, + 1526874271, + 2563355951, + 1774115854, + 130637797, + 2081301143, + 873871070, + 4093819523, + 1418026887, + 4005514130, + 1891042819, + 2219996840, + 473062274, + 3826410048, + 2914802771, + 207830675, + 2945577024, + 781181253, + 2624216483, + 3460235148, + 3164140957, + 2893779620, + 1977705149, + 2247418615, + 2340936125, + 2617623055, + 1832967260, + 2924677552, + 278792571, + 1458899785, + 1349293102, + 4292236818, + 1313056804, + 1903497953, + 1263161720, + 1510220098, + 3314716179, + 3360473141, + 1957394111, + 3505170750, + 281696664, + 3051020692, + 647922037, + 3126132955, + 3463844411, + 4068819810, + 3705153844, + 2499572358, + 3518535261, + 498065493, + 2305870299, + 2426877078, + 665003791, + 2807386344, + 2809976163, + 2403313729, + 725324159, + 963768547, + 1218713961, + 3809395462, + 2701821500, + 3053257880, + 2649737569, + 2576384013, + 2491411097, + 1800188644, + 3214912334, + 2809084744, + 2134539731, + 3588488112, + 2056678509, + 3853703617, + 4005583707, + 1491224147, + 3794605265, + 4149797909, + 2907577371, + 3985538118, + 258125468, + 61409756, + 3483055273, + 2475062031, + 2179040532, + 2620341428, + 743652283, + 3827948499, + 3690131961, + 2056448092, + 1638321475, + 1706126164, + 1173687260, + 3419096089, + 1255654087, + 4246048625, + 1686739978, + 2596006238, + 4066030998, + 3786108703, + 3207234241, + 1185157761, + 2549931497, + 3842678231, + 118800297, + 3044975979, + 368787945, + 3212878665, + 584200926, + 3514653945, + 3981253869, + 2538210121, + 3081785850, + 3221529899, + 89830386, + 1859739621, + 3511790990, + 2409249259, + 2596774896, + 3019060641, + 4000442192, + 1759191979, + 3793651842, + 1819251144, + 1852833420, + 1504376547, + 138783773, + 3581285742, + 3266122165, + 506495218, + 1332755753, + 4170185284, + 2170108626, + 2364822548, + 2082559763, + 1557098923, + 643826400, + 1394173942, + 3564216019, + 3394547085, + 4155525260, + 1151802206, + 1174458872, + 3826562697, + 968612088, + 2562908850, + 3233452611, + 620337783, + 824931552, + 296004133, + 895287337, + 391185713, + 1315506675, + 3585062755, + 1670751959, + 2144951926, + 3841285301, + 3395795218, + 2385756175, + 834235816, + 3613462920, + 472200564, + 2193182653, + 569931789, + 2292365961, + 3034494712, + 581917399, + 3021885145, + 3888603413, + 3297347597, + 3073782912, + 3464501042, + 659557573, + 3188107534, + 2766129051, + 3053618692, + 457889651, + 2850818786, + 3100465423, + 3045643242, + 2798139615, + 3549765754, + 2816280217, + 1104407656, + 1040448284, + 420622518, + 298995046, + 1140960962, + 3604554970, + 3615944516, + 3898813636, + 2110514009, + 197676784, + 1736587825, + 1487110451, + 125510969, + 3476224343, + 1462800276, + 1909650493, + 2888384340, + 1747415972, + 2583819866, + 2842466231, + 526065296, + 1130448722, + 2225067052, + 1125791444, + 717345665, + 397280858, + 3903888722, + 2797559592, + 385514617, + 3955292905, + 3171550191, + 787663769, + 2756452868, + 4100771362, + 2530417580, + 1017336266, + 418932988, + 1607146416, + 3140341935, + 3961293572, + 2589953976, + 148013408, + 3746757540, + 1748018448, + 3381032724, + 21395260, + 1541332012, + 3909362564, + 3085405981, + 1526447666, + 2141648409, + 3255414603, + 721420290, + 2688667715, + 3689279369, + 2481415708, + 3948355364, + 1790093682, + 2309455948, + 4176890169, + 3968710367, + 2976356309, + 3096020724, + 382073363, + 4255594043, + 2096502958, + 1185544577, + 1421821180, + 2638053795, + 2301231674, + 3799405639, + 3819475490, + 1369080547, + 3548374640, + 3748690312, + 1697401854, + 978874653, + 4058584867, + 3287159983, + 2394814225, + 17725164, + 3180227183, + 1576050830, + 2875273495, + 3440027589, + 1363135590, + 2422640895, + 347419608, + 2213286639, + 3251331314, + 442718947, + 1022891242, + 1560278074, + 3124160135, + 3668025558, + 1067729130, + 2219763232, + 3813321587, + 1207802987, + 273048234, + 442222294, + 3755009634, + 3364193856, + 1668243961, + 2076554410, + 3619374126, + 2462831131, + 243099129, + 707553404, + 3269249269, + 2677636314, + 1968229654, + 3755884761, + 3589326395, + 2568638568, + 336868211, + 3153831894, + 2245931559, + 777925817, + 2083472098, + 561946612, + 920585219, + 3245071027, + 1918550265, + 3850656952, + 1268409931, + 2247549052, + 227754265, + 3339910287, + 297155855, + 160188224, + 1448914301, + 1876557190, + 111834467, + 3518671563, + 2019129318, + 2420110359, + 2474189417, + 3028661663, + 1891966710, + 3790456265, + 4018717930, + 1300752249, + 4104876567, + 1958733204, + 650199847, + 2986830528, + 2005562891, + 968377080, + 1751251455, + 2808601169, + 3623036958, + 768284453, + 1152776350, + 1894729516, + 4247096978, + 770688743, + 3492037177, + 185720338, + 758373830, + 121622728, + 1342252963, + 1366514794, + 1259708949, + 1927429995, + 3824356419, + 263202549, + 2303515519, + 3520602491, + 1318139121, + 2138346691, + 3292046948, + 389999910, + 1170025944, + 935295594, + 2208697309, + 2144167382, + 4077174379, + 1819113030, + 635316380, + 1627512381, + 2740771988, + 2377374968, + 705120822, + 415147255, + 3513519536, + 2256647614, + 332774961, + 155787964, + 145886608, + 2775746083, + 2154186336, + 630146934, + 1687892920, + 4086454580, + 2585281958, + 387638118, + 2159669425, + 2361472780, + 2523475981, + 1110159159, + 2508723068, + 2270802329, + 1974210558, + 1756641086, + 362251583, + 1959665313, + 2122505138, + 2518939020, + 3590066382, + 2405795979, + 1370010491, + 186081968, + 2584973944, + 3167254837, + 2649829185, + 1339081963, + 1905255969, + 3573902957, + 190007077, + 563512396, + 3873808596, + 1984927628, + 2041413086, + 2426109895, + 453342375, + 1715472756, + 390400329, + 116132504, + 3485750036, + 4118162215, + 3374089282, + 3945867619, + 1306518863, + 1569091181, + 3307892712, + 1552367744, + 1101018560, + 2205372679, + 2788296639, + 3287542861, + 1710156155, + 1659016668, + 2464546998, + 1140756945, + 1040536394, + 381024389, + 2666087166, + 4190992359, + 2324408496, + 4236934380, + 4061080050, + 929565459, + 405799263, + 4239332623, + 2175974221, + 3293832684, + 1636172953, + 1915171808, + 511132715, + 2601196191, + 232729875, + 297670805, + 676310263, + 964995407, + 2794824981, + 4074461536, + 3373767000, + 603931039, + 1052689179, + 3255551879, + 1095441214, + 1556767125, + 3818745338, + 2079039389, + 584170190, + 3973935698, + 4002049097, + 870480805, + 3703018178, + 3099042019, + 239026173, + 1749472040, + 4005915836, + 210101333, + 4121480141, + 3691702606, + 1737352161, + 3618907702, + 389100875, + 1615825213, + 3745009397, + 1674991226, + 4288726278, + 1904032451, + 2553025066, + 2567610191, + 663383429, + 3731022589, + 1635294095, + 394092982, + 1114355649, + 1803798720, + 573506468, + 2329855515, + 2339685317, + 2708364203, + 1986583139, + 934381201, + 201956002, + 1983405399, + 1159130179, + 500723263, + 3614197877, + 3768947975, + 3496350603, + 902418833, + 4269757270, + 602889764, + 3533589546, + 2247409701, + 3035292124, + 2535793791, + 139614728, + 2533191294, + 3280519433, + 1358819868, + 975898881, + 1793731253, + 3016049139, + 2055885943, + 3962529077, + 2456812567, + 2452206216, + 1792908935, + 840942891, + 534182311, + 575722159, + 4252640827, + 1608557014, + 2701955913, + 3401766275, + 540100224, + 1360238798, + 3816142207, + 2435786455, + 1132963976, + 1648619133, + 1677992684, + 287233228, + 4213771314, + 488348849, + 1899593782, + 608855801, + 2930407246, + 2872185841, + 262504955, + 3160336679, + 3380077624, + 1418107278, + 4108376968, + 263089774, + 905854921, + 2908350427, + 4250273816, + 960183655, + 2315846816, + 3148848237, + 2571057188, + 723692346, + 3150783682, + 156602143, + 19113704, + 1642193908, + 3811341416, + 1589286356, + 286915965, + 1426309393, + 180087874, + 3815650825, + 3334848699, + 1253019543, + 605711929, + 1085209326, + 823280758, + 3436830017, + 441619636, + 3949512826, + 4236286893, + 3071968611, + 564922087, + 2340011780, + 3703242570, + 1221946593, + 3664522054, + 3659181318, + 1394281846, + 3655476565, + 2944386853, + 2288819844, + 2129598916, + 3775632942, + 26969601, + 1818196770, + 1126734396, + 1507893826, + 503305055, + 4232128914, + 1355371001, + 3126142813, + 779610238, + 2772406666, + 1418094832, + 3809219023, + 3466887938, + 3662325937, + 428770659, + ]; + + static const List _envieddataprivateKeyFCM = [ + 3909266878, + 4058000632, + 1713021038, + 992719160, + 4170994349, + 945703436, + 1098515797, + 118911426, + 2794206748, + 437977167, + 2402308269, + 3593855761, + 220306297, + 1612662633, + 3144326699, + 2510963975, + 3355114581, + 1119447334, + 4063732088, + 2306475163, + 3969475537, + 2739522815, + 1568614911, + 2250834190, + 4109840584, + 3755432283, + 1953403394, + 3252605346, + 1259056198, + 629276282, + 1992641718, + 3444523531, + 2457593930, + 3717590404, + 1452941668, + 60284632, + 2579485058, + 3858432410, + 923261952, + 2490235851, + 4269429085, + 1617321843, + 2973005915, + 839524626, + 2938348453, + 4060752284, + 2567386186, + 890882863, + 2000641814, + 1319171082, + 1535242668, + 804485278, + 1887876663, + 3291730880, + 2628636354, + 1358408035, + 2470701982, + 3276059983, + 1818216328, + 3524937986, + 393355798, + 3707934463, + 61581267, + 3767651059, + 894361043, + 903600885, + 2702163607, + 1099119239, + 4260314690, + 503828960, + 2127912278, + 2308021119, + 2763223077, + 2263898633, + 2794375298, + 724106713, + 2765711732, + 164403587, + 2552336595, + 2626188477, + 2530923559, + 117246167, + 1303956154, + 1801430546, + 2532548616, + 304984649, + 1048036034, + 3282077501, + 889321627, + 929589828, + 3177674909, + 3117107860, + 1065781644, + 3801791833, + 1583143537, + 2699425827, + 1487455719, + 2159274475, + 3336927156, + 3856512297, + 2885401032, + 2337280821, + 3250099778, + 1172741829, + 2961724650, + 477052062, + 1247156757, + 1217590177, + 53664838, + 2953784044, + 3837233961, + 3455767374, + 1119750986, + 2003556545, + 923716912, + 386815933, + 574996693, + 2943600130, + 1358331755, + 3577065605, + 3597122252, + 3278120249, + 3083177716, + 3969259026, + 2157603503, + 688027639, + 896229402, + 878109944, + 2503543493, + 858091500, + 3293761943, + 3455912168, + 2388780665, + 2163827627, + 986361458, + 2085948152, + 3912932640, + 2676230248, + 2166120835, + 853820181, + 1251636019, + 3882616288, + 3915024837, + 1358954119, + 3093630403, + 2039406636, + 4090391270, + 3825524445, + 479547889, + 1877215967, + 2880055351, + 2025680831, + 4241704835, + 238767705, + 3317486444, + 3808370443, + 1556849406, + 2755517721, + 2796187684, + 3488913323, + 40256888, + 789341326, + 238259482, + 632381274, + 2102217947, + 1576786832, + 2506874303, + 1276207270, + 541410618, + 3915897498, + 2288248404, + 1912556933, + 1015656195, + 2504024135, + 534864414, + 1677685332, + 751532874, + 1866048327, + 119941272, + 1334129728, + 3462557478, + 144370916, + 2035833808, + 209652628, + 3571187684, + 3636994094, + 285785828, + 3387977543, + 1216177572, + 355600362, + 949619864, + 78656085, + 3447717321, + 474620361, + 3165779025, + 130834851, + 47818698, + 4235611504, + 419685187, + 2224972144, + 265289831, + 1102947179, + 3203287198, + 4281392871, + 1538426363, + 850188791, + 2449503181, + 358768268, + 3579157620, + 3030846912, + 2136932083, + 242195884, + 3222233250, + 3689667282, + 1135730175, + 4043775354, + 1837833315, + 1312784770, + 1664790403, + 686239476, + 3693925459, + 1792075277, + 3255813473, + 1481243653, + 486775419, + 3182769464, + 28588895, + 282542515, + 4175625471, + 3500152238, + 2906579192, + 1014303408, + 1815859321, + 3334263704, + 1784577832, + 1327970515, + 2001157206, + 3864122623, + 934330078, + 1511647283, + 1084493192, + 1804879332, + 4275936877, + 563426472, + 3370582575, + 2808416195, + 3263435074, + 1917614997, + 3560116231, + 2980809801, + 2872078627, + 354541215, + 3108795400, + 1072372846, + 2220692482, + 2183069317, + 2857817652, + 2705458451, + 1731233392, + 258604854, + 4178207437, + 4177120186, + 913357186, + 1841864958, + 1753435028, + 3804460353, + 233156732, + 3714320420, + 1878860255, + 4240748344, + 615868925, + 4248722542, + 980381034, + 2084088907, + 1123685999, + 1083462368, + 1332285434, + 4074992060, + 418955965, + 2842036166, + 3884383246, + 229891485, + 1471577031, + 3545189692, + 1472916579, + 3937617958, + 698024016, + 2080681567, + 1651333739, + 2495618644, + 1935593674, + 3156649204, + 1589022801, + 674047597, + 1065493362, + 3440973221, + 3284657276, + 2817891815, + 3961545918, + 1699605853, + 2627264719, + 2463868777, + 247960700, + 1708896220, + 4086364141, + 573015317, + 1740871369, + 1515118028, + 1249906455, + 4211101700, + 2052389655, + 3682803557, + 2520464706, + 1680335441, + 4030523111, + 3399816984, + 3172195961, + 2115836738, + 2363403138, + 1003022306, + 2833262200, + 768893484, + 3195982722, + 3630486492, + 1047204700, + 4142251678, + 731403913, + 3018069788, + 2780044846, + 1278086646, + 4122232600, + 3325674224, + 1886367146, + 780748534, + 3028780450, + 4175519710, + 4138096591, + 3027882651, + 237908202, + 3143948824, + 2235796015, + 3841481239, + 3352800736, + 3539874026, + 2186389373, + 1126662962, + 3141088958, + 56376110, + 2557197013, + 2265526533, + 3241118363, + 1853383861, + 4235213604, + 4048915126, + 2712180496, + 671844920, + 3696087512, + 2068817672, + 1310928919, + 2920806738, + 1781692776, + 4210698417, + 1715536392, + 3494873095, + 69612812, + 1477318340, + 2183442416, + 4274048738, + 3561122561, + 745209076, + 1685719937, + 2619313396, + 2042896337, + 3327419494, + 2271013765, + 4037367484, + 3901401452, + 1809590844, + 4031230062, + 203998538, + 399415831, + 3681623309, + 1121277090, + 559023327, + 1092601544, + 2673008557, + 1820147176, + 4067130713, + 1259288514, + 3523437150, + 2028392215, + 2377799831, + 3106487459, + 2850301131, + 2589882210, + 138446930, + 2938637160, + 2306238668, + 4022896369, + 5030777, + 1615686735, + 2726426451, + 253331610, + 3710770535, + 451984057, + 629200405, + 697845622, + 667893129, + 1431980460, + 74151949, + 3752817500, + 2301969128, + 408423509, + 2908162916, + 2344507012, + 1972651596, + 2523758508, + 3440348829, + 3691254867, + 3617908834, + 3203162902, + 229263919, + 2919098575, + 1132141655, + 1326184074, + 3825355307, + 2612584994, + 1010887227, + 397720757, + 3192075544, + 1704960728, + 3892960253, + 1736383465, + 1989521699, + 2098973938, + 3516200881, + 1405772087, + 2161110168, + 69439169, + 3684871236, + 3530439983, + 1230522552, + 3965592549, + 3595152747, + 4258009509, + 1995209322, + 2674555379, + 2102741496, + 1156090879, + 4211863411, + 1602424098, + 392668711, + 1272529315, + 1232402047, + 3115100512, + 3865273915, + 4200009454, + 3086526976, + 2629780074, + 3939978558, + 368691864, + 17258230, + 4234247687, + 3328308226, + 973258362, + 532029976, + 4263608768, + 2204337199, + 3887897447, + 2631462564, + 2569309207, + 3334499397, + 2422166929, + 975515037, + 1258697551, + 1719187438, + 124803751, + 4120345424, + 3933058994, + 1788802808, + 571776548, + 1996193344, + 578599853, + 538682187, + 714340945, + 3351007716, + 3296067469, + 3091642205, + 3771500404, + 2724439393, + 1846572981, + 2879773333, + 4254565332, + 3851420834, + 1881953526, + 2119644734, + 2769799419, + 3167120912, + 3712936709, + 3317525327, + 71216953, + 2711342125, + 2249312726, + 2464172664, + 3065697228, + 968285956, + 663501727, + 3998361044, + 3620731761, + 2292462421, + 371061901, + 1266126245, + 4091788663, + 1245613057, + 810737324, + 1147058778, + 3810285307, + 1374693138, + 1203821791, + 568740763, + 1537049332, + 815969644, + 197721729, + 1642429730, + 3162637053, + 2423309537, + 2562103115, + 1162316070, + 2904417229, + 391533549, + 2717680038, + 3067627969, + 3065760530, + 1503691403, + 2923156667, + 2475941426, + 3192629644, + 3001390538, + 334641141, + 1408575058, + 2372409422, + 1443471286, + 3756843237, + 996790547, + 2124085541, + 458492041, + 2786651285, + 4108109398, + 1925842764, + 1846729732, + 807440326, + 3355223966, + 1885253730, + 1654605264, + 2120840696, + 1274130324, + 2086534370, + 3863787904, + 18962383, + 2478327577, + 817288952, + 2112580188, + 1317140296, + 3405309721, + 3498529706, + 39796294, + 3458373426, + 516819451, + 4061703752, + 3125072610, + 1687476616, + 2493586089, + 2819972067, + 1879676510, + 1832781060, + 941893285, + 3326911326, + 675945470, + 2734281433, + 3591229146, + 2874763559, + 1780151181, + 1722812851, + 1357809701, + 747512917, + 3012154710, + 2312936034, + 3704664414, + 1512000632, + 2527135444, + 776853062, + 2402968143, + 14500106, + 1461198380, + 637498466, + 2588850342, + 2300433268, + 2117441301, + 1374433339, + 3116150571, + 1552852133, + 155896649, + 822454224, + 1786787116, + 4174092211, + 4290796962, + 1935320287, + 2228206353, + 737614817, + 450300473, + 4130604917, + 3133668760, + 4117225722, + 715257176, + 2426453281, + 1149210384, + 4285759843, + 674792590, + 2491849270, + 2427848599, + 1123744136, + 719784894, + 2684360783, + 1038577486, + 3895535975, + 3877638832, + 1961033950, + 1126966889, + 4277614242, + 66026527, + 2059745177, + 2294258380, + 3101615553, + 2788222181, + 2787122693, + 3883350136, + 1282957163, + 2517997609, + 3309376467, + 1673717718, + 1091234001, + 1531157711, + 686609843, + 2981118082, + 3339769229, + 1388917128, + 2917594655, + 3801227307, + 333277535, + 1672816192, + 490759988, + 495537161, + 3830960286, + 284092889, + 3000343194, + 3467005081, + 1594605664, + 2700356696, + 2755569017, + 1364462894, + 3712584277, + 3055013505, + 2082650594, + 2490354429, + 2800308882, + 1944434144, + 1086259510, + 3964787174, + 2985271141, + 2015741424, + 2256394931, + 3340656475, + 2741505311, + 1024225765, + 4143221569, + 2808249105, + 1561486670, + 1452554364, + 3427333567, + 1421103873, + 3298040879, + 3724611245, + 2765175411, + 4230456502, + 159182251, + 1896161749, + 3357023806, + 1774468438, + 3662834522, + 2064479728, + 766546920, + 1336953256, + 3469133941, + 1540322974, + 1038049775, + 2039359210, + 3020361610, + 2283316453, + 404167409, + 2297609659, + 1797147389, + 3560649912, + 917589386, + 892813015, + 354759521, + 480401547, + 1937615426, + 3902092248, + 3226442825, + 4096665568, + 303338696, + 3072924994, + 2121677173, + 2468404178, + 1791041269, + 714266372, + 1471899619, + 1929543860, + 3432156546, + 2469667615, + 1018943574, + 278966599, + 1029168663, + 4202523648, + 277238171, + 4018939812, + 3386662824, + 3211389340, + 4002051618, + 3815557834, + 3671114330, + 3722737208, + 264725012, + 965747617, + 1928292505, + 2263434646, + 3401419878, + 2123625659, + 3022459372, + 1483341944, + 3719393239, + 2553974234, + 1052865101, + 3993766019, + 3132116489, + 2772967986, + 2958476024, + 3213577627, + 1942171928, + 992849375, + 2546545001, + 3147224626, + 2904167883, + 1534487170, + 3833032592, + 805112147, + 269507041, + 652123804, + 3806349649, + 2385048440, + 3474900271, + 3377901981, + 3210802459, + 1510254853, + 491125456, + 113116703, + 719168266, + 385062832, + 3019925986, + 3608638, + 95251429, + 512434886, + 1028072148, + 3009193097, + 2986894642, + 1727150628, + 3457431696, + 3662208362, + 3604079243, + 3199563638, + 1187157252, + 683529167, + 449988902, + 2015819440, + 1011019389, + 672172599, + 1470923518, + 3452174034, + 1504845664, + 1063005911, + 3202805654, + 3718418617, + 3320504625, + 773167323, + 2303602974, + 2968834946, + 1669896567, + 1248223453, + 3039589194, + 3979278688, + 2973678850, + 2281370335, + 2986107254, + 4193776241, + 545795988, + 475455274, + 4042154348, + 3282630223, + 3275694673, + 399644780, + 1664441438, + 1308393418, + 918405136, + 4121187518, + 3302719570, + 2636702118, + 3079569494, + 1430761228, + 804657836, + 1645431851, + 2687135807, + 3317881303, + 1631854557, + 1025563370, + 4092008965, + 409045806, + 4011865827, + 2813776802, + 187585539, + 1962779515, + 3028535859, + 8692741, + 1404371498, + 2370470801, + 1537979586, + 368796604, + 885533398, + 2928791711, + 2321256366, + 2843238828, + 4236287350, + 2697205494, + 3853829469, + 478261157, + 1974617137, + 2906000588, + 836708776, + 3837809054, + 1792028300, + 3050250891, + 2076117382, + 2653444504, + 736863950, + 4059049411, + 994581163, + 2360529356, + 3183661962, + 2898076465, + 3636127323, + 1735751375, + 239481688, + 1109773956, + 2979038179, + 3051036261, + 3251976043, + 1211102963, + 38691248, + 1097163333, + 351037912, + 822373278, + 2907084912, + 1412388378, + 3395600260, + 3774137874, + 1887340249, + 2133630793, + 3896455537, + 904497907, + 926912397, + 2806552203, + 221335459, + 4153902480, + 3080224376, + 1860623797, + 2360918045, + 3338162771, + 802127596, + 2660546008, + 640190458, + 3089269657, + 2022222222, + 139007761, + 775950245, + 902692328, + 1004022385, + 2271847235, + 1394369050, + 2902207974, + 2419005225, + 308617222, + 3843658425, + 2767195665, + 2829599109, + 1095093059, + 3755211104, + 3153633468, + 3611103007, + 1967011590, + 3341816486, + 3333030671, + 1808666542, + 2817399151, + 2861989382, + 949066139, + 3596241349, + 1358897499, + 1102114877, + 1722073351, + 1287245080, + 2614365998, + 154870551, + 3546757713, + 3666969017, + 2799379667, + 2569393151, + 1286677909, + 1467658648, + 4240996335, + 787212036, + 506507124, + 1938222601, + 2020923977, + 321018759, + 4038750596, + 45026690, + 686045811, + 2755063160, + 1946726263, + 3646326011, + 916255102, + 3411200116, + 2930738232, + 2139359066, + 904685349, + 1811046071, + 2581861125, + 320441725, + 2396028211, + 1054088572, + 1424575812, + 3444566423, + 2608179651, + 720230569, + 2079855770, + 3855710830, + 710094092, + 1254594349, + 3989737900, + 3496644108, + 1743792806, + 2021868040, + 1088221376, + 1965641985, + 1181791435, + 3804125812, + 720093151, + 4255333106, + 2466013765, + 696787610, + 1232001040, + 919906783, + 3972717679, + 2277347305, + 4063551290, + 1665429709, + 632527559, + 2511330983, + 2954950843, + 1194130786, + 3931815017, + 2745667731, + 1158673915, + 383303326, + 166255207, + 27883324, + 2992870954, + 3134388461, + 4008719838, + 2761428927, + 263722319, + 343583425, + 2395359036, + 3418276245, + 460769999, + 1502107466, + 2734264319, + 418284558, + 3893319997, + 98081007, + 3649360910, + 1948722248, + 2997693051, + 2941356078, + 3973871714, + 3674761776, + 2338518826, + 2299362202, + 3536038697, + 1409956166, + 3743596321, + 3114882209, + 372337192, + 2087042409, + 2779079902, + 1567949827, + 1949944812, + 3205215422, + 4160238398, + 1755073374, + 3037585524, + 2682149237, + 2463910570, + 435540364, + 95641326, + 702908426, + 2672829620, + 2715699165, + 2086864451, + 954633771, + 1942499404, + 3056998652, + 3185770114, + 4010983395, + 2115205776, + 567759947, + 2015579096, + 52349075, + 3627442708, + 1202596966, + 1517876729, + 1572248631, + 2545646475, + 1384270044, + 54451003, + 2346477105, + 1893041765, + 2930470226, + 341767034, + 36535101, + 976341802, + 3709770206, + 963254358, + 3551632700, + 148954281, + 4050715276, + 3948921397, + 1923302323, + 388594930, + 3695530431, + 4089311517, + 2848130226, + 2211950217, + 1996104161, + 266329360, + 2637114310, + 2573501713, + 2801149166, + 3186453584, + 3702958018, + 1333096833, + 1854994182, + 3766454587, + 3982839234, + 1964843587, + 1718384023, + 891622402, + 454869589, + 2905735936, + 4008089362, + 4038083149, + 2898526936, + 4037892372, + 3621766766, + 1166598266, + 2923144712, + 3059550534, + 823109353, + 3673571319, + 1527691129, + 2107557139, + 1795507248, + 52873612, + 3665562070, + 540172619, + 4128734266, + 1499578496, + 2704449781, + 3864575308, + 2451271147, + 429566718, + 423308823, + 431082403, + 611311034, + 2100629319, + 3659853560, + 4279379873, + 1445932278, + 1291455359, + 56939947, + 660894575, + 1000905015, + 3895267685, + 658063361, + 4134848639, + 2526523463, + 827432289, + 2609535925, + 3945806981, + 300492091, + 2742114977, + 1847738599, + 697036413, + 869904055, + 2275078281, + 3834921308, + 3333562912, + 685006934, + 1091279800, + 2917790679, + 3735245072, + 34434199, + 742036139, + 2400401735, + 2558969783, + 2006074298, + 1687553652, + 1257158842, + 2294032755, + 1711039445, + 3203080991, + 817690815, + 3658270464, + 1721990484, + 4110062505, + 3664016998, + 1324441713, + 3177058582, + 2943364460, + 3784310734, + 255802489, + 162962227, + 1241192637, + 1125547384, + 1027979175, + 2571310153, + 3766505212, + 4039892508, + 1532501753, + 927811721, + 709598959, + 3337063038, + 1871854938, + 511250491, + 1022833870, + 268958591, + 1623538120, + 2165765575, + 4186573163, + 3560707825, + 1259727106, + 3183624771, + 291691006, + 3372387270, + 2783878923, + 3864507764, + 3372146081, + 4196057206, + 3818269551, + 3239026024, + 2848805263, + 415111232, + 1827561714, + 3720588811, + 2119251186, + 779650275, + 2538817122, + 2617095338, + 2249104476, + 110531657, + 2960828958, + 3879936027, + 3286113493, + 1343541585, + 3400119627, + 1576673096, + 105967249, + 2544076667, + 814253799, + 1472731933, + 1010337808, + 891312517, + 1148671871, + 3110204893, + 3459534137, + 401226739, + 2868253928, + 4272331281, + 4137000719, + 3922339099, + 928875315, + 102561672, + 669511391, + 3874663271, + 920919810, + 272777887, + 3061609458, + 2302443353, + 696222345, + 2125481669, + 2444187891, + 1337583646, + 1968606665, + 1452397432, + 4179253678, + 2853219017, + 3256732831, + 3576012167, + 3642707955, + 1985222067, + 3064091684, + 3363226818, + 960932606, + 4109712763, + 1576091897, + 474046839, + 834186377, + 1994800719, + 4279420868, + 2305727824, + 3231544852, + 3938628153, + 1247573484, + 890976753, + 1381558531, + 1805262156, + 2006742458, + 1791338877, + 1383728766, + 1099125908, + 247898274, + 1627561708, + 3608258128, + 3371597203, + 3993525481, + 2799568200, + 4133505317, + 2137671666, + 691150394, + 3185341331, + 3612249566, + 4219882420, + 3054076840, + 2449511469, + 852946889, + 2950781101, + 2676899204, + 430901503, + 1361269053, + 464942889, + 2993298178, + 2704191248, + 3814558436, + 1979211287, + 1519652495, + 3987592034, + 1457706037, + 2342720900, + 2728738392, + 2307283928, + 4006329236, + 1692228729, + 2253970750, + 3112700994, + 1388352636, + 2756194045, + 437366488, + 699237551, + 2823739828, + 1331733216, + 645547594, + 497766472, + 786870842, + 2144080884, + 2411471725, + 1800152467, + 4078891170, + 3110537142, + 1214733141, + 93814124, + 3203733690, + 1713497378, + 1569891150, + 2185799305, + 3745324395, + 1953658939, + 563239060, + 3713721711, + 2305388420, + 38116545, + 4078582234, + 2331971786, + 290507538, + 3099540305, + 3755853629, + 2852981732, + 3311304739, + 655711312, + 604149830, + 984819983, + 1510666070, + 2163079175, + 2457849134, + 1829334985, + 388406086, + 3394519163, + 927648817, + 759546114, + 2293127353, + 1246017153, + 392293129, + 194909512, + 1798847223, + 1454852666, + 1639875312, + 588249966, + 292031367, + 3643720410, + 1433373166, + 757324713, + 1363720531, + 883827059, + 1025492248, + 49418573, + 1811374723, + 3322705635, + 353404703, + 837906204, + 2621987863, + 855455165, + 1178063108, + 576069458, + 3304328132, + 3948158499, + 254533159, + 3852195055, + 1340853092, + 28658176, + 2979432141, + 3460081597, + 122248984, + 245507726, + 2497475245, + 3637474906, + 214225567, + 1195808770, + 71104298, + 1000734610, + 753937832, + 2292714035, + 4213374131, + 529226326, + 2425411689, + 2602434109, + 510726615, + 1311916475, + 3522149566, + 2020602958, + 3696395694, + 3771837768, + 1366111062, + 983079852, + 2549067553, + 3717036867, + 2579928320, + 1448602983, + 2132385195, + 251392044, + 3444886501, + 242241607, + 2733829103, + 2645440048, + 3545011110, + 2095452117, + 2335430129, + 597521939, + 1484616134, + 4174468045, + 4183525730, + 3013885777, + 3059238469, + 3112064574, + 1838982434, + 4159117751, + 520816187, + 3308232448, + 1182353889, + 2692232653, + 162146226, + 2405631671, + 1822770770, + 487013014, + 1517713061, + 343002345, + 3138898788, + 3093968674, + 1598888043, + 3669281446, + 3836084769, + 3113619494, + 310902245, + 616320983, + 3461171983, + 2977247995, + 1433612546, + 1413947261, + 1643228945, + 3900905204, + 4262770499, + 1678175024, + 765531281, + 2488109126, + 3865551672, + 2188631388, + 1349496374, + 1205330546, + 2740935525, + 3604685463, + 2673683883, + 4234892302, + 2639033576, + 2682096492, + 2523255032, + 3317102964, + 3235354092, + 1162141992, + 2886920297, + 1533306797, + 2110313290, + 3732768941, + 289558952, + 1906120851, + 1304283541, + 78906919, + 659704564, + 2921104190, + 4113289717, + 2032108393, + 1444793836, + 3520237675, + 1146495431, + 3550774892, + 3526374808, + 1057619093, + 1825410965, + 3847102917, + 2569781731, + 3120534370, + 1341793919, + 4237616055, + 1251825342, + 3764457582, + 2108575030, + 1351099234, + 3223851530, + 2386114984, + 2285106778, + 64145899, + 532756168, + 2122004784, + 1804123449, + 3765319578, + 809023502, + 2234026127, + 1984391181, + 2666163666, + 2321335099, + 4259844188, + 1001582976, + 1602568758, + 4078086690, + 2550842395, + 3016061932, + 771256867, + 1549755712, + 3824743866, + 930971815, + 1622677839, + 3661003897, + 210641611, + 2721316014, + 3092941994, + 481471551, + 2681319325, + 1599429268, + 2312752879, + 3388311952, + 2445893135, + 525657219, + 2865796471, + 2756230544, + 1505207352, + 3083246498, + 1289535409, + 1833972610, + 2930207362, + 2762350075, + 442025365, + 1175737980, + 3418522927, + 2403585354, + 2755145479, + 707814111, + 570198589, + 3369272307, + 2259728959, + 1147572978, + 1822259471, + 4174675124, + 3589053710, + 2200937078, + 1894654012, + 3826617583, + 2379747645, + 742173703, + 255755887, + 2401574833, + 3565415530, + 381035019, + 1319338319, + 2777187780, + 1839591942, + 2140270584, + 2151303996, + 1012446700, + 2419586309, + 1250946110, + 1835486342, + 3718021075, + 813005795, + 524732078, + 4116832302, + 1893269157, + 1930037394, + 66525053, + 890564318, + 2522900172, + 2975909827, + 3250354149, + 2885205513, + 688885975, + 1280846043, + 3272119072, + 1146905706, + 3513016386, + 4117339540, + 3500434406, + 4119573498, + 1811657637, + 3749637187, + 3227998311, + 1356195306, + 1372243812, + 2812456951, + 3482642825, + 3119543833, + 2181748752, + 1961961617, + 1665334056, + 265531022, + 834568708, + 3873687835, + 1864738991, + 2174265319, + 957126524, + 1607293571, + 2742001645, + 3747509397, + 2521214942, + 1128214499, + 2094985225, + 447354562, + 3210196287, + 3288793007, + 3386756393, + 2931530121, + 3431081767, + 4266280902, + 1255930151, + 173348507, + 2076928763, + 2848404796, + 2719632316, + 1816796555, + 3008427647, + 637343388, + 1471753879, + 175594214, + 753666789, + 2883192262, + 76719512, + 2305656150, + 3454087026, + 3842727264, + 3842763346, + 550694028, + 1345825468, + 1251174708, + 1023942423, + 2491683515, + 2564151699, + 3608675397, + 1926494428, + 3939411253, + 4288251440, + 1290241299, + 2084616853, + 185180519, + 3623408675, + 310118872, + 3872446468, + 717111464, + 3973935739, + 3054547491, + 894745971, + 751070374, + 2977938113, + 2478826580, + 4066129183, + 1587166080, + 204132980, + 178400984, + 1650441658, + 1848535152, + 1084485844, + 3921215645, + 855320307, + 3995476333, + 759514858, + 4273436886, + 2982888734, + 1065554835, + 349934451, + 3835925072, + 3489765600, + 1512859511, + 3228732221, + 3750541358, + 12170750, + 3658413389, + 1356626148, + 1387342232, + 1370406007, + 2416189388, + 415045451, + 3587299592, + 3796698002, + 2359146037, + 2952826042, + 3950247935, + 2721767353, + 3772904889, + 2544234934, + 3923250842, + 3096816090, + 3587063248, + 3134518434, + 3007667722, + 3711364567, + 2059707905, + 1912368233, + 3469736119, + 1515069078, + 680705717, + 2600136192, + 54985330, + 3214179695, + 512981510, + 1895861527, + 1250918765, + 614181309, + 3769240641, + 708910609, + 3816223129, + 3945682974, + 2060844684, + 2247112120, + 685464982, + 2729431093, + 4039837716, + 370644777, + 3384484285, + 3405618719, + 1468655471, + 986049601, + 2834525527, + 2219281187, + 2716457443, + 3488099172, + 1826789352, + 4116252745, + 1017570105, + 362335121, + 3092620014, + 3635124928, + 597846831, + 445598429, + 209039848, + 495573118, + 3699163297, + 3394063205, + 1811078176, + 2785192251, + 3397505975, + 3114282924, + 4074778902, + 2152960097, + 1667869278, + 3413297392, + 978448212, + 912123462, + 2075489301, + 1940768187, + 2129569945, + 2034694102, + 3912057590, + 3479510785, + 2740182114, + 1863263635, + 3485006016, + 403129902, + 1957091495, + 4091764624, + 2406403316, + 3538249319, + 3231927678, + 2429316191, + 485238560, + 128650300, + 3109646669, + 4189329137, + 340018350, + 3763059522, + 3327834617, + 4290375005, + 1102114455, + 3801700067, + 2684186424, + 3372749867, + 273916854, + 724058724, + 3912176097, + 375038744, + 2477988016, + 3866335046, + 548642009, + 771748307, + 808039732, + 2953704802, + 756418935, + 3759617426, + 1687700765, + 647973905, + 1513446579, + 2186741762, + 1868647486, + 2529047802, + 910638946, + 1691789508, + 1726709436, + 2166369107, + 2314732672, + 2235416131, + 1332765470, + 3476947505, + 1486590920, + 3976514210, + 3415224285, + 3006226971, + 2627420065, + 20108226, + 3048485899, + 2913276396, + 2607047864, + 2650391330, + 1909423769, + 4222550223, + 3376228125, + 2173631075, + 1189644427, + 3152165087, + 3732488522, + 142481132, + 1237862708, + 1530194519, + 3352149078, + 2993668561, + 553006105, + 99325450, + 3711133598, + 2779594310, + 2882168903, + 1112689240, + 2883485789, + 1361784867, + 3886685666, + 1885953871, + 3276751018, + 698442439, + 1896149155, + 742022603, + 1893572724, + 3872673346, + 626299624, + 722850327, + 128799300, + 1356544506, + 2226467927, + 829410762, + 2988302138, + 1057039147, + 2502222159, + 3068155900, + 1640925398, + 3810438677, + 3263544523, + 3971894840, + 2607286283, + 3204562328, + 2705634674, + 196306007, + 2958472634, + 281933995, + 225620484, + 1063460113, + 792293062, + 888232421, + 1964507423, + 232092281, + 2714137095, + 1483555116, + 120880948, + 2555439159, + 1436793472, + 1119966995, + 1482845552, + 1480042245, + 3884546364, + 1921953636, + 1351756209, + 3048832569, + 285136141, + 4168303465, + 864523100, + 4042949680, + 800345542, + 2630004058, + 2966396639, + 3740172852, + 2935321950, + 1376317218, + 424571258, + 2728788619, + 2761296182, + 3468640781, + 3078221173, + 558164351, + 2804077427, + 4020956696, + 4112309706, + 1632600805, + 3580417054, + 2920622695, + 882989416, + 1201087979, + 3146717518, + 367463808, + 1588090354, + 2283715967, + 2310717849, + 3011646916, + 1480098485, + 106057584, + 543062236, + 1928329169, + 1361650142, + 1583353374, + 3015744314, + 1404072423, + 2925206263, + 2223115118, + 1508718476, + 400701417, + 591184310, + 2558146914, + 1827872930, + 116190666, + 3128306506, + 2319277318, + 1331684225, + 4139843393, + 441474601, + 1902844592, + 2021736128, + 1957323466, + 2293302884, + 2226751545, + 1753989867, + 2711426305, + 2527182715, + 2871380068, + 2612997037, + 466620915, + 2492530447, + 1861075524, + 2176088062, + 2961064231, + 4053304743, + 3514124603, + 927610827, + 3031264662, + 4292671211, + 385004562, + 753385607, + 1658379646, + 1156312473, + 636230973, + 2766303479, + 2282464790, + 2276693678, + 3126926296, + 3959688232, + 4034180991, + 3067302232, + 421851793, + 362057946, + 2069215539, + 2204585166, + 1443205278, + 2659388691, + 566404892, + 584258899, + 449935227, + 4245138893, + 829695105, + 1047207718, + 2174465916, + 3367208307, + 2926049553, + 1105603164, + 3695500915, + 2319738119, + 653209505, + 2605877485, + 2858969749, + 2031015338, + 1950450165, + 2229019897, + 110338371, + 1700756971, + 3602686832, + 3148545591, + 3210132051, + 2761572227, + 680115588, + 2174395283, + 1315858695, + 1716090896, + 3523989013, + 1412697648, + 1924988899, + 3376543090, + 3430689600, + 3921146651, + 352454405, + 389193755, + 2652685764, + 2887284934, + 890313857, + 72031515, + 2151212178, + 2195569996, + 1694421802, + 4159709332, + 3046178929, + 3677380931, + 3035449844, + 2298722996, + 3611829287, + 2987907149, + 361952726, + 3885828049, + 896277120, + 2393963721, + 1399542503, + 961294549, + 2751810917, + 3134743180, + 4172262, + 773641203, + 4254883152, + 3581776533, + 1826320264, + 626575967, + 2204366599, + 3098545848, + 785349905, + 3143808716, + 1594953643, + 864101556, + 3976601183, + 2951818448, + 2104644385, + 2915721957, + 2257246904, + 2601999801, + 2768887728, + 2034372870, + 671807497, + 2630077976, + 494806215, + 404835981, + 1416371135, + 3930137898, + 3482301095, + 3701658352, + 629483631, + 2051160851, + 1234213213, + 2588895309, + 538192478, + 498271473, + 706967888, + 2558654416, + 924585392, + 3636471687, + 1477602507, + 836399921, + 170467074, + 3310366222, + 844094882, + 3149125178, + 2065793863, + 1957377254, + 3416788462, + 867312213, + 3796676000, + 4014940281, + 2363805735, + 733416675, + 3598135212, + 3314025159, + 2331315655, + 759430912, + 1152150024, + 559621852, + 4208885158, + 1625735053, + 602773919, + 1719604456, + 3191220069, + 3090929766, + 2827163938, + 4215729958, + 1829291943, + 369704717, + 1795582695, + 4122509366, + 1372951979, + 1027209528, + 3507021102, + 132245499, + 3360159307, + 1148599490, + 2042372123, + 510893120, + 1831982915, + 268123168, + 4075902161, + 176030960, + 196820407, + 2686451623, + 868676313, + 2893770961, + 443617318, + 1354119122, + 2698527029, + 3116152063, + 1810829777, + 376921218, + 2941740006, + 2016883235, + 1308362585, + 593756432, + 3225317909, + 186401087, + 1302033318, + 3475161622, + 2052309077, + 3875926359, + 2538151756, + 2713598882, + 4382062, + 4210551665, + 827925785, + 1344680949, + 3196120830, + 1702546910, + 2559142527, + 2249057974, + 357385246, + 3422458680, + 2866697116, + 1445011684, + 614581376, + 4049344062, + 1682119942, + 1480744099, + 230912278, + 361664373, + 1204693324, + 4177281584, + 3756377749, + 1627569319, + 2567945449, + 1246527976, + 2724660974, + 1757866921, + 1043672798, + 3070925789, + 2091394919, + 3208250699, + 1002636169, + 2686083224, + 3527374210, + 2909881441, + 3849822954, + 2952863352, + 230624129, + 1061328338, + 2861968058, + 469991107, + 4110499021, + 2673354670, + 2022699028, + 1580761731, + 3078279936, + 2136028673, + 1972922534, + 2747353549, + 928929496, + 1938600272, + 1355202771, + 4004824288, + 1627514955, + 2544504671, + 3748675270, + 1146087337, + 3071070635, + 3251498659, + 3406153501, + 1771826005, + 1703063032, + 775993096, + 130297548, + 3452011296, + 3149232328, + 2665861029, + 658893607, + 3140321723, + 2062056556, + 3380286666, + 240891499, + 993473287, + 685984337, + 2259659150, + 2009725249, + 1246700262, + 4059285763, + 3664118811, + 589572421, + 640887560, + 1433736130, + 2985608827, + 1776200325, + 3595983496, + 539253054, + 1995981577, + 3143495326, + 2855963614, + 2183430332, + 2454517095, + 2115589972, + 893359629, + 1009473331, + 1117478448, + 1397641810, + 2473774162, + 3395070936, + 4203516093, + 1477632611, + 127956327, + 760566305, + 1001384540, + 998447403, + 2109623064, + 588066210, + 176100594, + 2836052415, + 3974023422, + 3749678247, + 714937754, + 1528029169, + 1393994951, + 2077073383, + 1435894680, + 1073256686, + 2363954317, + 3967458140, + 2389436817, + 1586954682, + 3137652343, + 361297415, + 2333173584, + 1615903197, + 2648634536, + 4018373513, + 1654987779, + 3364636652, + 3597973842, + 1286501518, + 2830460734, + 827818925, + 1579468841, + 2961040459, + 3860837568, + 284473600, + 2632730256, + 2641849511, + 4189137108, + 994213753, + 3326853207, + 148943190, + 3054991689, + 2954250799, + 4256001307, + 1022781691, + 1155292493, + 2160280937, + 4006217189, + 131909424, + 3278347132, + 680220174, + 3910358789, + 3997300479, + 1682428008, + 3654150691, + 1369428158, + 71948036, + 3807670693, + 2751584291, + 3460093117, + 1309692768, + 1837832461, + 822444848, + 4235835088, + 4264571361, + 1874282629, + 1073983427, + 1408391115, + 2372815254, + 1631414244, + 3366761958, + 2256292436, + 1504439942, + 2688944253, + 3630237487, + 2017867557, + 119218673, + 2688184543, + 2377353365, + 2844808580, + 2316800760, + 3631804686, + 1757346706, + 3884084398, + 1776540909, + 3160543769, + 307816320, + 2443224825, + 3873894038, + 288257856, + 325357151, + 4264643903, + 1946524179, + 301774396, + 2463483136, + 2243837564, + 4139143777, + 643417002, + 374605671, + 3298718659, + 3395729011, + 1135153232, + 2613803240, + 3260811433, + 1989135017, + 1972353648, + 35794952, + 2656136093, + 2765244105, + 966295442, + 2698423123, + 3899527104, + 3958373573, + 3076204216, + 1482912038, + 3287440357, + 759687492, + 1084951193, + 2825937665, + 4091595251, + 537126792, + 206322354, + 1918255716, + 2092173883, + 2472380450, + 3372054988, + 3461101871, + 913586048, + 3401783747, + 2500830208, + 2565023585, + 1878149511, + 1177214930, + 1157972043, + 1162112707, + 2703410594, + 1501139634, + 932100006, + 4244261288, + 3845199696, + 77749118, + 740089744, + 3300684388, + 996359929, + 2745378574, + 2126879779, + 172022626, + 147710878, + 2081623670, + 1316009719, + 1896654029, + 1336761223, + 2517268179, + 2687319519, + 2570842495, + 70449962, + 4054555961, + 3281476742, + 564082914, + 3238703166, + 2625718113, + 4252888924, + 1929167162, + 3407287153, + 497211028, + 3520780454, + 912673796, + 509607502, + 1588268007, + 349340812, + 1859685310, + 3780207276, + 470950146, + 3071288439, + 943780204, + 4080455566, + 2538436387, + 1782288526, + 158316601, + 533606289, + 3959497170, + 2579600511, + 3446799855, + 1232296348, + 3702672646, + 3056179569, + 559613397, + 2747705923, + 3091029723, + 4232463902, + 1014562441, + 3806083568, + 3570614408, + 3633268911, + 381949327, + 1853344768, + 3101553972, + 889961102, + 160852214, + 1787559641, + 98616341, + 1176880546, + 877578782, + 3690998342, + 503565205, + 2248632706, + 72690983, + 3172652931, + 133951267, + 2827900221, + 1422667521, + 2310197622, + 1686916807, + 2781076265, + 3146473070, + 4193070991, + 2556763116, + 1678171029, + 955217653, + 1966594603, + 280813773, + 2069214112, + 4033422253, + 1940542905, + 3480488397, + 5659172, + 2125575798, + 477847039, + 2284377829, + 1045661344, + 2190498176, + 3105691038, + 2334649141, + 79575172, + 3864551883, + 1294182655, + 2875664181, + 4020679670, + 2708135536, + 3987384172, + 2914245030, + 2359269147, + 2179031048, + 2855847959, + 518897528, + 3862460501, + 2714703150, + 3495300319, + 3329581562, + 4087767917, + 2902971050, + 3972430582, + 3192015193, + 3215882919, + 1839416311, + 477917240, + 1629267905, + 457759475, + 2958833668, + 2665660748, + 3687403087, + 2477563130, + 3613528567, + 1946933842, + 2721421688, + 1572292043, + 265376387, + 65382945, + 1286264866, + 995512420, + 1590703210, + 1926924984, + 1962160211, + 2142250300, + 2360976000, + 161296201, + 1697935954, + 2050346441, + 3559563995, + 313167491, + 1427949925, + 2690863821, + 3350312657, + 550673613, + 3727484521, + 3534900282, + 1673116290, + 3200316514, + 1408087336, + 3267905100, + 3234961464, + 3568751146, + 2475083131, + 1240377352, + 1415036703, + 912359283, + 2928958656, + 2700508869, + 4034021703, + 369832603, + 842864955, + 3869855293, + 1663441880, + 2590706664, + 259939635, + 3998930846, + 4087164832, + 763947335, + 1799495744, + 1909674125, + 2578530129, + 10601455, + 1411609467, + 4069202848, + 2777348746, + 1735961679, + 1549275529, + 2735512128, + 3366569712, + 1636043584, + 1833917655, + 2602330000, + 204146290, + 2289909431, + 4154151811, + 3749070131, + 976765824, + 2630568807, + 4274727518, + 3998343713, + 2031471486, + 4208037804, + 3762578731, + 3270971180, + 3922120603, + 2501544943, + 162616142, + 1016082927, + 538842888, + 869297648, + 2902911316, + 2124937954, + 2376846928, + 3818191994, + 3632554226, + 207615762, + 2904209909, + 219308524, + 2404468646, + 1708321006, + 912834365, + 1808016920, + 1526874332, + 2563356021, + 1774115937, + 130637732, + 2081301221, + 873871089, + 4093819623, + 1418026924, + 4005514228, + 1891042927, + 2219996898, + 473062380, + 3826410003, + 2914802692, + 207830756, + 2945576996, + 781181234, + 2624216523, + 3460235200, + 3164140978, + 2893779702, + 1977705189, + 2247418527, + 2340936136, + 2617623076, + 1832967212, + 2924677586, + 278792464, + 1458899757, + 1349293147, + 4292236832, + 1313056835, + 1903497909, + 1263161621, + 1510220069, + 3314716202, + 3360473172, + 1957394125, + 3505170698, + 281696757, + 3051020771, + 647921946, + 3126132892, + 3463844450, + 4068819730, + 3705153805, + 2499572417, + 3518535218, + 498065460, + 2305870270, + 2426877168, + 665003880, + 2807386283, + 2809976106, + 2403313716, + 725324047, + 963768458, + 1218713893, + 3809395506, + 2701821544, + 3053257899, + 2649737515, + 2576384104, + 2491411186, + 1800188586, + 3214912285, + 2809084775, + 2134539678, + 3588488134, + 2056678400, + 3853703579, + 4005583645, + 1491224113, + 3794605240, + 4149797970, + 2907577443, + 3985538090, + 258125480, + 61409672, + 3483055359, + 2475062105, + 2179040635, + 2620341462, + 743652305, + 3827948518, + 3690131892, + 2056448047, + 1638321434, + 1706126108, + 1173687229, + 3419096174, + 1255654027, + 4246048514, + 1686740031, + 2596006173, + 4066031023, + 3786108766, + 3207234213, + 1185157883, + 2549931395, + 3842678162, + 118800348, + 3044975904, + 368787935, + 3212878626, + 584200874, + 3514653832, + 3981253804, + 2538210107, + 3081785802, + 3221529924, + 89830339, + 1859739548, + 3511791085, + 2409249193, + 2596774791, + 3019060679, + 4000442170, + 1759191965, + 3793651892, + 1819251107, + 1852833529, + 1504376466, + 138783822, + 3581285632, + 3266122208, + 506495173, + 1332755810, + 4170185237, + 2170108599, + 2364822640, + 2082559870, + 1557098951, + 643826340, + 1394173829, + 3564216032, + 3394547157, + 4155525345, + 1151802162, + 1174458809, + 3826562808, + 968611996, + 2562908917, + 3233452584, + 620337729, + 824931510, + 296004119, + 895287403, + 391185780, + 1315506560, + 3585062740, + 1670751992, + 2144951828, + 3841285278, + 3395795312, + 2385756265, + 834235869, + 3613463005, + 472200510, + 2193182666, + 569931836, + 2292366031, + 3034494619, + 581917326, + 3021885119, + 3888603436, + 3297347648, + 3073782998, + 3464501098, + 659557512, + 3188107615, + 2766129141, + 3053618762, + 457889602, + 2850818706, + 3100465517, + 3045643182, + 2798139540, + 3549765680, + 2816280271, + 1104407580, + 1040448382, + 420622493, + 298995004, + 1140960944, + 3604554940, + 3615944559, + 3898813573, + 2110513920, + 197676705, + 1736587784, + 1487110486, + 125510989, + 3476224258, + 1462800324, + 1909650509, + 2888384295, + 1747416011, + 2583819806, + 2842466255, + 526065407, + 1130448703, + 2225067038, + 1125791386, + 717345739, + 397280776, + 3903888693, + 2797559618, + 385514515, + 3955292813, + 3171550108, + 787663829, + 2756452975, + 4100771438, + 2530417637, + 1017336218, + 418932868, + 1607146485, + 3140342005, + 3961293618, + 2589954032, + 148013354, + 3746757622, + 1748018513, + 3381032785, + 21395295, + 1541332034, + 3909362636, + 3085406053, + 1526447622, + 2141648416, + 3255414542, + 721420368, + 2688667752, + 3689279475, + 2481415806, + 3948355392, + 1790093630, + 2309455975, + 4176890126, + 3968710290, + 2976356254, + 3096020635, + 382073471, + 4255594105, + 2096503036, + 1185544699, + 1421821072, + 2638053876, + 2301231630, + 3799405610, + 3819475576, + 1369080491, + 3548374588, + 3748690385, + 1697401749, + 978874734, + 4058584896, + 3287160009, + 2394814313, + 17725147, + 3180227085, + 1576050943, + 2875273536, + 3440027551, + 1363135509, + 2422640823, + 347419629, + 2213286591, + 3251331206, + 442718857, + 1022891182, + 1560278090, + 3124160190, + 3668025491, + 1067729038, + 2219763217, + 3813321483, + 1207802889, + 273048290, + 442222246, + 3755009551, + 3364193847, + 1668243903, + 2076554440, + 3619374168, + 2462831148, + 243099041, + 707553322, + 3269249223, + 2677636279, + 1968229711, + 3755884735, + 3589326440, + 2568638524, + 336868165, + 3153831832, + 2245931602, + 777925761, + 2083472006, + 561946552, + 920585306, + 3245071064, + 1918550230, + 3850656910, + 1268409916, + 2247548951, + 227754336, + 3339910357, + 297155958, + 160188194, + 1448914187, + 1876557246, + 111834379, + 3518671493, + 2019129219, + 2420110374, + 2474189374, + 3028661749, + 1891966681, + 3790456317, + 4018717829, + 1300752210, + 4104876670, + 1958733273, + 650199925, + 2986830510, + 2005562948, + 968376971, + 1751251388, + 2808601092, + 3623037055, + 768284502, + 1152776394, + 1894729493, + 4247097045, + 770688684, + 3492037247, + 185720352, + 758373795, + 121622706, + 1342253004, + 1366514703, + 1259709055, + 1927429978, + 3824356369, + 263202469, + 2303515397, + 3520602421, + 1318139074, + 2138346628, + 3292046862, + 389999959, + 1170025866, + 935295578, + 2208697274, + 2144167344, + 4077174297, + 1819113000, + 635316472, + 1627512403, + 2740772000, + 2377374920, + 705120848, + 415147183, + 3513519606, + 2256647632, + 332774917, + 155788025, + 145886626, + 2775746125, + 2154186328, + 630146878, + 1687892968, + 4086454540, + 2585282037, + 387638061, + 2159669460, + 2361472847, + 2523476069, + 1110159198, + 2508722994, + 2270802431, + 1974210517, + 1756641045, + 362251639, + 1959665380, + 2122505160, + 2518939118, + 3590066356, + 2405796079, + 1370010434, + 186082001, + 2584973903, + 3167254865, + 2649829163, + 1339081907, + 1905256036, + 3573902942, + 190007165, + 563512355, + 3873808570, + 1984927668, + 2041413105, + 2426109861, + 453342406, + 1715472689, + 390400296, + 116132556, + 3485750081, + 4118162277, + 3374089225, + 3945867577, + 1306518810, + 1569091074, + 3307892641, + 1552367834, + 1101018617, + 2205372744, + 2788296697, + 3287542836, + 1710156043, + 1659016585, + 2464546973, + 1140756868, + 1040536367, + 381024490, + 2666087118, + 4190992292, + 2324408570, + 4236934300, + 4061079995, + 929565482, + 405799196, + 4239332725, + 2175974152, + 3293832581, + 1636173033, + 1915171718, + 511132787, + 2601196271, + 232729888, + 297670905, + 676310192, + 964995334, + 2794825080, + 4074461494, + 3373766960, + 603931116, + 1052689279, + 3255551958, + 1095441268, + 1556767143, + 3818745275, + 2079039466, + 584170140, + 3973935676, + 4002049040, + 870480787, + 3703018122, + 3099041928, + 239026085, + 1749472123, + 4005915787, + 210101345, + 4121480126, + 3691702570, + 1737352153, + 3618907650, + 389100923, + 1615825269, + 3745009292, + 1674991139, + 4288726396, + 1904032391, + 2553025133, + 2567610115, + 663383477, + 3731022527, + 1635294135, + 394093019, + 1114355607, + 1803798710, + 573506499, + 2329855562, + 2339685298, + 2708364274, + 1986583081, + 934381248, + 201956059, + 1983405332, + 1159130216, + 500723271, + 3614197821, + 3768948053, + 3496350694, + 902418911, + 4269757187, + 602889826, + 3533589605, + 2247409692, + 3035292073, + 2535793688, + 139614821, + 2533191190, + 3280519494, + 1358819953, + 975898969, + 1793731300, + 3016049049, + 2055885857, + 3962529115, + 2456812668, + 2452206299, + 1792909011, + 840942866, + 534182399, + 575722206, + 4252640881, + 1608556966, + 2701955876, + 3401766316, + 540100342, + 1360238777, + 3816142123, + 2435786390, + 1132964049, + 1648619087, + 1677992660, + 287233167, + 4213771293, + 488348912, + 1899593818, + 608855752, + 2930407207, + 2872185786, + 262504854, + 3160336746, + 3380077650, + 1418107336, + 4108377081, + 263089721, + 905854859, + 2908350361, + 4250273878, + 960183564, + 2315846873, + 3148848191, + 2571057262, + 723692382, + 3150783732, + 156602227, + 19113660, + 1642193793, + 3811341339, + 1589286380, + 286915914, + 1426309503, + 180087851, + 3815650899, + 3334848713, + 1253019580, + 605711949, + 1085209246, + 823280652, + 3436829955, + 441619684, + 3949512758, + 4236286970, + 3071968597, + 564922039, + 2340011870, + 3703242510, + 1221946496, + 3664521991, + 3659181413, + 1394281765, + 3655476576, + 2944386884, + 2288819920, + 2129598868, + 3775633021, + 26969646, + 1818196806, + 1126734410, + 1507893874, + 503305070, + 4232128965, + 1355370956, + 3126142778, + 779610162, + 2772406767, + 1418094773, + 3809218983, + 3466888003, + 3662325900, + 428770654, + ]; + + static final String privateKeyFCM = String.fromCharCodes(List.generate( + _envieddataprivateKeyFCM.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataprivateKeyFCM[i] ^ _enviedkeyprivateKeyFCM[i])); + + static const List _enviedkeyseferAlexandriaServer = [ + 3323392380, + 451808109, + 308299188, + 1662234803, + 3400024259, + 2793995573, + 2293928494, + 639368954, + 1453094544, + 3120479288, + 89933538, + 3461824430, + 1374545148, + 114538176, + 1836348853, + 3863811751, + 1618339458, + 2190241816, + 3595166286, + 2686267537, + 3419400192, + 3445576610, + 2130445075, + 548857936, + 434963251, + 3315738591, + 196596210, + 529059517, + 2989680000, + 1224029467, + 2749499734, + 2399424405, + 1652599237, + 1409658532, + ]; + + static const List _envieddataseferAlexandriaServer = [ + 3323392276, + 451808025, + 308299200, + 1662234819, + 3400024240, + 2793995535, + 2293928449, + 639368917, + 1453094627, + 3120479325, + 89933444, + 3461824459, + 1374545038, + 114538145, + 1836348889, + 3863811778, + 1618339578, + 2190241913, + 3595166240, + 2686267637, + 3419400306, + 3445576651, + 2130445170, + 548857982, + 434963264, + 3315738550, + 196596102, + 529059544, + 2989680047, + 1224029544, + 2749499699, + 2399424499, + 1652599200, + 1409658582, + ]; + + static final String seferAlexandriaServer = String.fromCharCodes( + List.generate( + _envieddataseferAlexandriaServer.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataseferAlexandriaServer[i] ^ + _enviedkeyseferAlexandriaServer[i])); + + static const List _enviedkeyseferPaymentServer = [ + 2495699168, + 1415332555, + 4030313059, + 1919650466, + 2384474271, + 1488748050, + 2994248723, + 753065028, + 3347187684, + 1606831763, + 4271234166, + 3325458941, + 3350205570, + 4180566583, + 2260668450, + 1559562939, + 3119749619, + 2512464849, + 2803703992, + 4165135243, + 4186922461, + 1288827219, + 4102098137, + 2358005862, + 731031481, + 701713192, + ]; + + static const List _envieddataseferPaymentServer = [ + 2495699080, + 1415332543, + 4030312983, + 1919650514, + 2384474348, + 1488748072, + 2994248764, + 753065067, + 3347187607, + 1606831862, + 4271234064, + 3325458840, + 3350205680, + 4180566599, + 2260668501, + 1559562901, + 3119749504, + 2512464825, + 2803704023, + 4165135355, + 4186922482, + 1288827168, + 4102098108, + 2358005760, + 731031516, + 701713242, + ]; + + static final String seferPaymentServer = String.fromCharCodes( + List.generate( + _envieddataseferPaymentServer.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataseferPaymentServer[i] ^ _enviedkeyseferPaymentServer[i])); + + static const List _enviedkeyseferCairoServer = [ + 3964826528, + 2959563995, + 1195990890, + 775287464, + 2178388155, + 364545112, + 1012978534, + 3501554317, + 2616892861, + 2654781338, + 243052486, + 2859244341, + 355477263, + 1952413113, + 3293986594, + 1165931296, + 1970391437, + 1616462267, + 3016749379, + 1820434829, + 2578979261, + 2486690848, + 2502075596, + 1091866093, + 3121914013, + 565791598, + 3095480398, + 2379223993, + 1842067378, + 3951950741, + 316268648, + 832617609, + 720366456, + 1576495736, + 2682615900, + 3765902799, + 859070812, + 1827996004, + 2725273659, + 159255360, + 2976066827, + 507722126, + 2065717339, + ]; + + static const List _envieddataseferCairoServer = [ + 3964826568, + 2959563951, + 1195990814, + 775287512, + 2178388168, + 364545122, + 1012978505, + 3501554338, + 2616892878, + 2654781439, + 243052468, + 2859244355, + 355477354, + 1952413131, + 3293986572, + 1165931347, + 1970391528, + 1616462301, + 3016749350, + 1820434943, + 2578979219, + 2486690892, + 2502075557, + 1091866011, + 3121914104, + 565791553, + 3095480381, + 2379224028, + 1842067412, + 3951950832, + 316268570, + 832617639, + 720366363, + 1576495636, + 2682615861, + 3765902764, + 859070775, + 1827995979, + 2725273672, + 159255333, + 2976066925, + 507722219, + 2065717289, + ]; + + static final String seferCairoServer = String.fromCharCodes( + List.generate( + _envieddataseferCairoServer.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataseferCairoServer[i] ^ _enviedkeyseferCairoServer[i])); + + static const List _enviedkeyseferGizaServer = [ + 399311197, + 1372901590, + 152715604, + 2940066630, + 3871047611, + 2375804437, + 1710374812, + 2907954073, + 3078862502, + 2195180778, + 874382951, + 1122014396, + 2447499823, + 1629313765, + 3043145166, + 2536763964, + 1950907419, + 3401216084, + 301422707, + 1115818662, + 1171180482, + 1171862057, + 2637702033, + 3750000043, + 1631941470, + 759815348, + 3759426990, + 825097635, + 1465672791, + 2517942289, + ]; + + static const List _envieddataseferGizaServer = [ + 399311157, + 1372901538, + 152715552, + 2940066614, + 3871047624, + 2375804463, + 1710374835, + 2907954102, + 3078862529, + 2195180675, + 874382877, + 1122014429, + 2447499868, + 1629313664, + 3043145128, + 2536763993, + 1950907497, + 3401216122, + 301422620, + 1115818696, + 1171180462, + 1171862080, + 2637702143, + 3750000078, + 1631941489, + 759815367, + 3759427019, + 825097669, + 1465672754, + 2517942371, + ]; + + static final String seferGizaServer = String.fromCharCodes(List.generate( + _envieddataseferGizaServer.length, + (int i) => i, + growable: false, + ).map( + (int i) => _envieddataseferGizaServer[i] ^ _enviedkeyseferGizaServer[i])); + + static const List _enviedkeychatGPTkeySeferNew = [ + 549894541, + 1222253266, + 564282148, + 466444652, + 2653833328, + 2520749849, + 3069007673, + 1928093058, + 2034535386, + 797371180, + 4082315187, + 652811804, + 386989207, + 2616737962, + 361164035, + 2434496505, + 683273049, + 762751597, + 3389148940, + 4069025970, + 1857201518, + 2117792496, + 1331567656, + 3733623856, + 419542641, + 940080832, + 2218094629, + 3150229882, + 144128700, + 1072897565, + 676231156, + 3281744950, + 1654260591, + 1710114715, + 1693175623, + 412168175, + 503291569, + 3695340431, + 1386320874, + 3137636604, + 750083717, + 600909210, + 132538857, + 3247929073, + 1188183448, + 1276388376, + 1914712786, + 637144169, + 2829049263, + 41807924, + 1212151295, + 3241173792, + 324079918, + 3119954700, + 3608417050, + 1067830673, + 2252243903, + 2108714766, + ]; + + static const List _envieddatachatGPTkeySeferNew = [ + 549894647, + 1222253237, + 564282121, + 466444598, + 2653833284, + 2520749942, + 3069007736, + 1928093128, + 2034535353, + 797371245, + 4082315233, + 652811859, + 386989296, + 2616738020, + 361164123, + 2434496403, + 683273022, + 762751519, + 3389149001, + 4069026043, + 1857201467, + 2117792456, + 1331567694, + 3733623931, + 419542578, + 940080889, + 2218094717, + 3150229768, + 144128708, + 1072897658, + 676231073, + 3281745011, + 1654260571, + 1710114762, + 1693175603, + 412168093, + 503291587, + 3695340515, + 1386320795, + 3137636557, + 750083836, + 600909299, + 132538780, + 3247928969, + 1188183464, + 1276388466, + 1914712734, + 637144154, + 2829049291, + 41807997, + 1212151211, + 3241173875, + 324079990, + 3119954814, + 3608417090, + 1067830781, + 2252243965, + 2108714850, + ]; + + static final String chatGPTkeySeferNew = String.fromCharCodes( + List.generate( + _envieddatachatGPTkeySeferNew.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatachatGPTkeySeferNew[i] ^ _enviedkeychatGPTkeySeferNew[i])); + + static const List _enviedkeycohere = [ + 3785916541, + 3171198353, + 861631813, + 2953184464, + 1283846325, + 1370283825, + 1167950034, + 213762766, + 2295844768, + 127363127, + 3157747323, + 815736060, + 923280450, + 3417408445, + 2607094591, + 3481883402, + 2808159413, + 2327223721, + 2315144096, + 1653712121, + 1678731327, + 601466775, + 773601461, + 1147826594, + 4130006672, + 4238373051, + 3418418566, + 3423960446, + 4076531700, + 227479266, + 1061857365, + 2452715424, + 347590568, + 405136702, + 448536915, + 1415196715, + 3036632169, + 2548234418, + 2910457157, + 967511719, + 3974835473, + 3477291631, + 1670900339, + 834240422, + 606570715, + 307404303, + 1820133813, + ]; + + static const List _envieddatacohere = [ + 3785916476, + 3171198436, + 861631785, + 2953184423, + 1283846353, + 1370283785, + 1167949995, + 213762811, + 2295844851, + 127363175, + 3157747244, + 815735955, + 923280433, + 3417408397, + 2607094615, + 3481883456, + 2808159453, + 2327223749, + 2315144167, + 1653712073, + 1678731339, + 601466872, + 773601504, + 1147826628, + 4130006696, + 4238373084, + 3418418633, + 3423960342, + 4076531617, + 227479223, + 1061857319, + 2452715472, + 347590606, + 405136651, + 448536834, + 1415196697, + 3036632125, + 2548234466, + 2910457128, + 967511793, + 3974835542, + 3477291575, + 1670900225, + 834240510, + 606570679, + 307404365, + 1820133849, + ]; + + static final String cohere = String.fromCharCodes(List.generate( + _envieddatacohere.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatacohere[i] ^ _enviedkeycohere[i])); + + static const List _enviedkeyclaudeAiAPI = [ + 1001533680, + 3600836818, + 2121635453, + 1419920361, + 1585514372, + 1793878673, + 1592750910, + 4030975558, + 2709026357, + 2932355521, + 1337480728, + 4287763854, + 1797030078, + 2479889829, + 1534898402, + 1392931074, + 3629989656, + 1856456633, + 4008714041, + 1899499279, + 2547095439, + 3109071336, + 3823692418, + 3059817642, + 1822782625, + 3475904914, + 2380720540, + 2298894155, + 730350584, + 1481642211, + 3765354797, + 2388732464, + 2976944552, + 2939568865, + 514766949, + 3439085071, + 2229395099, + 2021265813, + 3794398785, + 1768320344, + 1752475482, + 2796928388, + 1761120559, + 1851062302, + 762327347, + 3919591535, + 2273787975, + 2513283744, + 259867416, + 1353256298, + 3677217530, + 2299005143, + 405043990, + 480840517, + 487584215, + 3122076141, + 2403702444, + 2680530313, + 919413216, + 195685231, + 3143336355, + 876099369, + 751676678, + 2791901347, + 2662866748, + 1092807712, + 1962333226, + 1477520845, + 4162484008, + 4144641963, + 3743372463, + 780408693, + 563757716, + 3985738010, + 3418866737, + 4102508062, + 2684640206, + 2575866676, + 1266684680, + 2438990194, + 1561806727, + 1452278594, + 3300931544, + 639562000, + 2932785656, + 2480356456, + 3244849698, + 571648595, + 1294756651, + 2479650580, + 1561785855, + 1104067678, + 3591680648, + 1652340117, + 62764380, + 1115410247, + 35450079, + 3418988717, + 2107250088, + 919008786, + 2529789447, + 826615625, + 738755059, + 2247495214, + 803147703, + 300051014, + 2378968951, + 2325207576, + 1639379332, + 3196006982, + 2374347051, + 566825924, + 3636699207, + 4189079295, + 3090972118, + ]; + + static const List _envieddataclaudeAiAPI = [ + 1001533578, + 3600836789, + 2121635408, + 1419920280, + 1585514470, + 1793878770, + 1592750867, + 4030975543, + 2709026371, + 2932355502, + 1337480747, + 4287763895, + 1797030098, + 2479889800, + 1534898330, + 1392931157, + 3629989719, + 1856456641, + 4008714096, + 1899499336, + 2547095544, + 3109071295, + 3823692502, + 3059817701, + 1822782683, + 3475904977, + 2380720602, + 2298894089, + 730350486, + 1481642154, + 3765354868, + 2388732515, + 2976944611, + 2939568810, + 514766861, + 3439085161, + 2229395170, + 2021265903, + 3794398750, + 1768320275, + 1752475404, + 2796928453, + 1761120601, + 1851062380, + 762327419, + 3919591490, + 2273788017, + 2513283839, + 259867436, + 1353256240, + 3677217471, + 2299005085, + 405044058, + 480840563, + 487584239, + 3122076074, + 2403702515, + 2680530392, + 919413154, + 195685159, + 3143336337, + 876099359, + 751676777, + 2791901382, + 2662866792, + 1092807791, + 1962333287, + 1477520768, + 4162484039, + 4144642042, + 3743372506, + 780408594, + 563757741, + 3985738065, + 3418866756, + 4102508113, + 2684640164, + 2575866718, + 1266684739, + 2438990113, + 1561806807, + 1452278557, + 3300931481, + 639562020, + 2932785579, + 2480356443, + 3244849777, + 571648518, + 1294756719, + 2479650680, + 1561785757, + 1104067622, + 3591680730, + 1652340140, + 62764344, + 1115410226, + 35449993, + 3418988759, + 2107250119, + 919008835, + 2529789482, + 826615556, + 738754968, + 2247495286, + 803147752, + 300050963, + 2378968870, + 2325207625, + 1639379413, + 3196006942, + 2374347097, + 566825884, + 3636699179, + 4189079229, + 3090972090, + ]; + + static final String claudeAiAPI = String.fromCharCodes(List.generate( + _envieddataclaudeAiAPI.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataclaudeAiAPI[i] ^ _enviedkeyclaudeAiAPI[i])); + + static const List _enviedkeypayPalClientId = [ + 2741446479, + 1181500136, + 4032051846, + 2960041001, + 2269867652, + 3544445256, + 2705194780, + 3837302546, + 26042447, + 1442171340, + 2339001321, + 18030541, + 2635633483, + 2978052245, + 3935315998, + 2118797144, + 3399361684, + 2555294937, + 1376382790, + 2462365364, + 2557507480, + 2234690806, + 1795056129, + 1182624493, + 3515692493, + 2867811651, + 2359262573, + 2944443731, + 2416574777, + 38746287, + 2007848790, + 464474153, + 748229244, + 33578060, + 2953886060, + 1522192093, + 1002880698, + 173186395, + 2621233775, + 3712473928, + 3465728509, + 127396739, + 3101838017, + 1043940013, + 421287793, + 3288907459, + 253227719, + 2863576099, + 1922702405, + 1822313238, + 1708240135, + 3246806578, + 1772856311, + 1864171700, + 1533002329, + 2586231209, + 3769367274, + 1435134939, + 530423958, + 1309788808, + 3875911369, + 64920184, + 293738102, + 3899109693, + 4234967275, + 2070829677, + 398067659, + 3389071006, + 1857394252, + 3826724723, + 1147006508, + 40647964, + 2727850100, + 4007575790, + 1246632481, + 1635365952, + 2586587955, + 1733200794, + 3196092796, + 2279630722, + 3505728266, + 1089698450, + 2729240952, + 3321734311, + 2075020727, + 2366692762, + 175960096, + ]; + + static const List _envieddatapayPalClientId = [ + 2741446430, + 1181500073, + 4032051914, + 2960041040, + 2269867753, + 3544445220, + 2705194874, + 3837302620, + 26042374, + 1442171385, + 2339001277, + 18030519, + 2635633471, + 2978052257, + 3935316077, + 2118797173, + 3399361773, + 2555294890, + 1376382761, + 2462365390, + 2557507502, + 2234690688, + 1795056197, + 1182624473, + 3515692434, + 2867811629, + 2359262492, + 2944443659, + 2416574729, + 38746364, + 2007848707, + 464474205, + 748229143, + 33577999, + 2953886003, + 1522192044, + 1002880739, + 173186317, + 2621233730, + 3712473885, + 3465728410, + 127396840, + 3101838068, + 1043940042, + 421287696, + 3288907406, + 253227672, + 2863576091, + 1922702367, + 1822313275, + 1708240236, + 3246806613, + 1772856259, + 1864171768, + 1533002348, + 2586231194, + 3769367169, + 1435134947, + 530424003, + 1309788925, + 3875911345, + 64920103, + 293738050, + 3899109719, + 4234967214, + 2070829626, + 398067603, + 3389071066, + 1857394215, + 3826724669, + 1147006556, + 40648004, + 2727850035, + 4007575741, + 1246632566, + 1635365904, + 2586587971, + 1733200851, + 3196092678, + 2279630790, + 3505728332, + 1089698506, + 2729240842, + 3321734399, + 2075020763, + 2366692824, + 175960140, + ]; + + static final String payPalClientId = String.fromCharCodes(List.generate( + _envieddatapayPalClientId.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatapayPalClientId[i] ^ _enviedkeypayPalClientId[i])); + + static const List _enviedkeypayPalSecret = [ + 3370328981, + 3415547493, + 3892781562, + 47295870, + 3496094294, + 2719958631, + 2749551261, + 15076733, + 919730627, + 3804169241, + 3240239418, + 1752408533, + 770229683, + 4217619731, + 2208653122, + 4077082811, + 1185312176, + 2038021634, + 1414787598, + 2280675631, + 2712959515, + 572911764, + 83589233, + 4195790893, + 4116032602, + 1480718016, + 3894935486, + 520965396, + 2038069274, + 2454872272, + 2625424049, + 1152253488, + 3563595424, + 3081222660, + 1046497515, + 1543246895, + 1838293709, + 3092179387, + 2556773294, + 4053764512, + 2396742685, + 687853570, + 3615190260, + 2738238453, + 1364533814, + 3278054565, + 1904476445, + 3686570353, + 4192768676, + 2314946307, + 968760651, + 462913862, + 905442800, + 522278706, + 4122685924, + 1938602970, + 2155462912, + 874878835, + 1048695402, + 1660480142, + 1586253923, + 3607271143, + 510474897, + 598778302, + 2010815137, + 84785184, + 5487714, + 1574564372, + 979572160, + 2842733266, + 2587153433, + 4079878708, + 2101168500, + 1450657574, + 537009458, + 2886137894, + 2754193842, + 4115838730, + 1556614824, + 3405748831, + 3169474388, + 2057845130, + 2687320093, + 243711831, + 2103206276, + 2007507862, + ]; + + static const List _envieddatapayPalSecret = [ + 3370329055, + 3415547431, + 3892781499, + 47295807, + 3496094240, + 2719958550, + 2749551319, + 15076652, + 919730564, + 3804169292, + 3240239433, + 1752408478, + 770229751, + 4217619747, + 2208653080, + 4077082833, + 1185312216, + 2038021686, + 1414787653, + 2280675653, + 2712959614, + 572911863, + 83589131, + 4195790933, + 4116032572, + 1480717954, + 3894935544, + 520965484, + 2038069303, + 2454872291, + 2625424009, + 1152253539, + 3563595460, + 3081222760, + 1046497417, + 1543246950, + 1838293662, + 3092179342, + 2556773272, + 4053764598, + 2396742735, + 687853647, + 3615190220, + 2738238395, + 1364533874, + 3278054595, + 1904476536, + 3686570311, + 4192768713, + 2314946409, + 968760582, + 462913827, + 905442730, + 522278776, + 4122685836, + 1938602900, + 2155462988, + 874878777, + 1048695311, + 1660480229, + 1586253910, + 3607271103, + 510474998, + 598778351, + 2010815202, + 84785233, + 5487657, + 1574564439, + 979572104, + 2842733222, + 2587153483, + 4079878738, + 2101168450, + 1450657643, + 537009496, + 2886137972, + 2754193867, + 4115838759, + 1556614862, + 3405748839, + 3169474316, + 2057845240, + 2687320133, + 243711803, + 2103206342, + 2007507962, + ]; + + static final String payPalSecret = String.fromCharCodes(List.generate( + _envieddatapayPalSecret.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatapayPalSecret[i] ^ _enviedkeypayPalSecret[i])); + + static const List _enviedkeygeminiApi = [ + 252547226, + 266851085, + 1486505863, + 1655609857, + 3710374870, + 345486440, + 437195509, + 1550902077, + 3668213971, + 3735693513, + 1897852662, + 3873329470, + 95554030, + 3426131645, + 1045266239, + 3583212433, + 1569566815, + 3797443615, + 365219595, + 1001124719, + 1473100342, + 3147271018, + 535332359, + 1679789031, + 3306532046, + 3150690158, + 1661503649, + 1089424286, + 1364895678, + 839966953, + 2519820975, + 2204429180, + 666706575, + 2396543554, + 1611328498, + 4231185996, + 2232613084, + 3578335437, + 2018122491, + 1795497205, + 903161833, + 3002518215, + 1918213357, + 728096342, + 4128279824, + 3134580787, + ]; + + static const List _envieddatageminiApi = [ + 252547275, + 266851138, + 1486505962, + 1655609968, + 3710374796, + 345486363, + 437195428, + 1550902116, + 3668213950, + 3735693561, + 1897852622, + 3873329480, + 95553922, + 3426131698, + 1045266254, + 3583212539, + 1569566742, + 3797443624, + 365219680, + 1001124611, + 1473100384, + 3147270944, + 535332449, + 1679788945, + 3306531998, + 3150690138, + 1661503734, + 1089424348, + 1364895736, + 839966892, + 2519820992, + 2204429081, + 666706658, + 2396543528, + 1611328405, + 4231185973, + 2232613103, + 3578335476, + 2018122445, + 1795497116, + 903161777, + 3002518197, + 1918213301, + 728096314, + 4128279890, + 3134580831, + ]; + + static final String geminiApi = String.fromCharCodes(List.generate( + _envieddatageminiApi.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatageminiApi[i] ^ _enviedkeygeminiApi[i])); + + static const List _enviedkeygeminiApiMasa = [ + 343819939, + 4289431823, + 2305599633, + 2137606650, + 1365933438, + 4030851545, + 561815013, + 2441228310, + 1185118102, + 370457063, + 870528500, + 2791949683, + 1132003949, + 593505187, + 3584896243, + 3504992792, + 3141366349, + 2780197762, + 2230178545, + 2692067948, + 3657789169, + 2578025984, + 2655842967, + 264941429, + 1979768449, + 1135736850, + 3649854316, + 2017949541, + 1562897630, + 3713906149, + 475702766, + 521811694, + 758453545, + 2364883562, + 4053332151, + 2051186325, + 2244989836, + 3224841683, + 2652919158, + 441642327, + 168460843, + 1163236444, + 819292297, + 3566524619, + 1918419621, + 1398028995, + ]; + + static const List _envieddatageminiApiMasa = [ + 343820018, + 4289431872, + 2305599740, + 2137606539, + 1365933348, + 4030851498, + 561814964, + 2441228383, + 1185118182, + 370456963, + 870528441, + 2791949639, + 1132003887, + 593505265, + 3584896128, + 3504992851, + 3141366304, + 2780197859, + 2230178485, + 2692067878, + 3657789118, + 2578026064, + 2655842976, + 264941329, + 1979768539, + 1135736930, + 3649854297, + 2017949512, + 1562897597, + 3713906131, + 475702688, + 521811641, + 758453583, + 2364883465, + 4053332191, + 2051186338, + 2244989916, + 3224841618, + 2652919066, + 441642246, + 168460915, + 1163236398, + 819292369, + 3566524583, + 1918419687, + 1398028975, + ]; + + static final String geminiApiMasa = String.fromCharCodes(List.generate( + _envieddatageminiApiMasa.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatageminiApiMasa[i] ^ _enviedkeygeminiApiMasa[i])); + + static const List _enviedkeyagoraAppId = [ + 1227521398, + 3992191736, + 1608106441, + 3625673377, + 2146507811, + 3554133798, + 3745829851, + 236761369, + 3698286461, + 2738462895, + 236778467, + 233721543, + 3643282641, + 3807969516, + 2300596465, + 2639811510, + 3427244525, + 1239776086, + 1146674762, + 689528700, + 3389518861, + 4184615139, + 1460223036, + 2050206774, + 94605123, + 2707204634, + 1280198518, + 3700380489, + 4024379045, + 2409352990, + 803739234, + 1715320625, + 1353049306, + 3269010024, + 4159884898, + 2014063845, + 1115218124, + 1591140999, + 904692926, + ]; + + static const List _envieddataagoraAppId = [ + 1227521345, + 3992191689, + 1608106481, + 3625673369, + 2146507795, + 3554133824, + 3745829865, + 236761459, + 3698286411, + 2738462876, + 236778453, + 233721512, + 3643282660, + 3807969500, + 2300596424, + 2639811548, + 3427244511, + 1239776098, + 1146674739, + 689528649, + 3389518911, + 4184615130, + 1460222984, + 2050206722, + 94605179, + 2707204650, + 1280198415, + 3700380538, + 4024379029, + 2409353067, + 803739226, + 1715320581, + 1353049314, + 3269009968, + 4159884816, + 2014063805, + 1115218080, + 1591141061, + 904692946, + ]; + + static final String agoraAppId = String.fromCharCodes(List.generate( + _envieddataagoraAppId.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataagoraAppId[i] ^ _enviedkeyagoraAppId[i])); + + static const List _enviedkeyagoraAppCertificate = [ + 2314570727, + 2153943346, + 3036296833, + 4050312459, + 2071460948, + 2972237967, + 3685155387, + 235531266, + 4048034499, + 431263751, + 4005159035, + 2502727253, + 1012606866, + 880624299, + 1561608412, + 1224221725, + 2237335902, + 3570490990, + 3183299819, + 2474573542, + 1856747356, + 4220684480, + 4027151474, + 3644000975, + 500062452, + 2522518421, + 3662405400, + 3932234319, + 1621351730, + 4220837392, + 2278663467, + 2191645869, + 23810331, + 2070415276, + 2017989497, + 2832737677, + 2214169503, + 1310450770, + 2364574784, + 1175751474, + ]; + + static const List _envieddataagoraAppCertificate = [ + 2314570637, + 2153943299, + 3036296886, + 4050312570, + 2071460973, + 2972238011, + 3685155343, + 235531383, + 4048034551, + 431263806, + 4005158984, + 2502727276, + 1012606882, + 880624321, + 1561608372, + 1224221804, + 2237335913, + 3570490971, + 3183299795, + 2474573459, + 1856747373, + 4220684534, + 4027151430, + 3644001014, + 500062400, + 2522518433, + 3662405408, + 3932234302, + 1621351680, + 4220837481, + 2278663453, + 2191645909, + 23810429, + 2070415321, + 2017989409, + 2832737791, + 2214169543, + 1310450750, + 2364574722, + 1175751518, + ]; + + static final String agoraAppCertificate = String.fromCharCodes( + List.generate( + _envieddataagoraAppCertificate.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataagoraAppCertificate[i] ^ + _enviedkeyagoraAppCertificate[i])); + + static const List _enviedkeypayPalClientIdLive = [ + 1463666944, + 1106893182, + 4233108035, + 1594090336, + 2424651660, + 577130837, + 2809031347, + 3457995666, + 2425749831, + 3619371171, + 3507400280, + 3471996195, + 294209420, + 1674695260, + 2602039655, + 504010588, + 355314172, + 3429437686, + 2465289993, + 2522193838, + 736837833, + 1565233918, + 3146891210, + 2508121291, + 1010809787, + 2262405301, + 2167794409, + 1494983716, + 4096117899, + 3363427399, + 1123888392, + 4071300298, + 889809414, + 146085346, + 2575349106, + 3621359423, + 3403406937, + 2842920184, + 2921236810, + 3766500406, + 2909247088, + 1928980223, + 2212633567, + 190058238, + 1655579814, + 3011436899, + 2704568729, + 334257643, + 4005046970, + 2008998284, + 409140474, + 21586765, + 1723547497, + 2711186972, + 2482405412, + 211971298, + 1108873016, + 2435029495, + 796007528, + 2803105682, + 4155480067, + 622018827, + 3633820613, + 1630736846, + 3630930374, + 3372683200, + 3118687429, + 1647640355, + 2719266794, + 2578489492, + 1874961562, + 3471960835, + 999200291, + 2651618469, + 1748682547, + 3840945888, + 2736323321, + 1490048900, + 3012912831, + 3578249568, + 2091053773, + 4074008026, + 2767943571, + 2057168426, + 1898552585, + 3007819111, + 2237031368, + ]; + + static const List _envieddatapayPalClientIdLive = [ + 1463667025, + 1106893092, + 4233107973, + 1594090251, + 2424651750, + 577130772, + 2809031388, + 3457995720, + 2425749793, + 3619371236, + 3507400236, + 3471996237, + 294209515, + 1674695186, + 2602039572, + 504010553, + 355314062, + 3429437594, + 2465290085, + 2522193816, + 736837819, + 1565233869, + 3146891177, + 2508121224, + 1010809742, + 2262405251, + 2167794353, + 1494983752, + 4096117946, + 3363427380, + 1123888478, + 4071300230, + 889809495, + 146085257, + 2575349020, + 3621359370, + 3403406909, + 2842920117, + 2921236776, + 3766500431, + 2909246997, + 1928980125, + 2212633527, + 190058116, + 1655579884, + 3011436858, + 2704568748, + 334257618, + 4005047039, + 2008998365, + 409140425, + 21586725, + 1723547411, + 2711186987, + 2482405501, + 211971226, + 1108873049, + 2435029426, + 796007449, + 2803105751, + 4155480135, + 622018898, + 3633820565, + 1630736794, + 3630930323, + 3372683142, + 3118687398, + 1647640434, + 2719266749, + 2578489573, + 1874961644, + 3471960934, + 999200371, + 2651618500, + 1748682594, + 3840945877, + 2736323244, + 1490048974, + 3012912885, + 3578249526, + 2091053727, + 4074007938, + 2767943649, + 2057168498, + 1898552677, + 3007819045, + 2237031332, + ]; + + static final String payPalClientIdLive = String.fromCharCodes( + List.generate( + _envieddatapayPalClientIdLive.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatapayPalClientIdLive[i] ^ _enviedkeypayPalClientIdLive[i])); + + static const List _enviedkeypayPalSecretLive = [ + 3156310840, + 3026823593, + 1814525044, + 1830974649, + 1894987695, + 668350867, + 1193133168, + 1527139369, + 2273134689, + 1130411932, + 2465306733, + 3430517080, + 4230556166, + 2723680255, + 4078920248, + 3075433073, + 1896795207, + 3874177518, + 3498572779, + 3050155546, + 2266824335, + 938315939, + 2665811891, + 1905643925, + 3578835324, + 1860709041, + 2701693813, + 395415897, + 4134713596, + 1509456593, + 1057491787, + 3425872958, + 4142494147, + 1908362004, + 1411773884, + 4212805374, + 2426546860, + 3545618013, + 2481544277, + 2836974305, + 2540197682, + 4280151429, + 3094456354, + 2988291790, + 3268802016, + 1170213471, + 1397205835, + 215026838, + 2028941694, + 3122348589, + 1162866969, + 2729615363, + 1685676914, + 3564609395, + 3295594671, + 3068628799, + 2907924381, + 3792012026, + 2319943725, + 3134469993, + 261474837, + 3293378750, + 422480463, + 774204704, + 3756659520, + 3367096367, + 366188863, + 4078852052, + 1457935152, + 3003496709, + 3384510800, + 1104976425, + 2901466920, + 2361782240, + 2146648117, + 2158264486, + 412298082, + 1626390027, + 2169681729, + 2270704402, + 2547833050, + 1344862296, + 2685262, + 3229175886, + 1855076448, + 1584559762, + 1723361645, + 806389572, + ]; + + static const List _envieddatapayPalSecretLive = [ + 3156310898, + 3026823672, + 1814524976, + 1830974712, + 1894987771, + 668350946, + 1193133083, + 1527139394, + 2273134607, + 1130411992, + 2465306635, + 3430517041, + 4230556224, + 2723680143, + 4078920317, + 3075433008, + 1896795145, + 3874177496, + 3498572763, + 3050155601, + 2266824397, + 938315927, + 2665811907, + 1905643986, + 3578835212, + 1860709109, + 2701693716, + 395415827, + 4134713494, + 1509456552, + 1057491770, + 3425873020, + 4142494082, + 1908362096, + 1411773829, + 4212805268, + 2426546900, + 3545617936, + 2481544215, + 2836974257, + 2540197698, + 4280151551, + 3094456437, + 2988291739, + 3268802001, + 1170213391, + 1397205882, + 215026941, + 2028941645, + 3122348645, + 1162866984, + 2729615465, + 1685676840, + 3564609307, + 3295594750, + 3068628821, + 2907924467, + 3792011981, + 2319943710, + 3134469932, + 261474909, + 3293378765, + 422480388, + 774204785, + 3756659502, + 3367096398, + 366188808, + 4078852064, + 1457935200, + 3003496765, + 3384510752, + 1104976400, + 2901466896, + 2361782152, + 2146648146, + 2158264553, + 412297996, + 1626390086, + 2169681696, + 2270704453, + 2547832970, + 1344862223, + 2685206, + 3229175868, + 1855076408, + 1584559870, + 1723361583, + 806389544, + ]; + + static final String payPalSecretLive = String.fromCharCodes( + List.generate( + _envieddatapayPalSecretLive.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatapayPalSecretLive[i] ^ _enviedkeypayPalSecretLive[i])); + + static const List _enviedkeyintegrationIdPayMob = [ + 2448999241, + 2932678555, + 3045729219, + 1535999847, + 1088213747, + 3325750771, + 2941306718, + 2572845528, + 991708343, + 4201133058, + 2595020866, + 2118665635, + 1070436497, + ]; + + static const List _envieddataintegrationIdPayMob = [ + 2448999289, + 2932678569, + 3045729264, + 1535999824, + 1088213701, + 3325750720, + 2941306734, + 2572845440, + 991708357, + 4201133146, + 2595020846, + 2118665697, + 1070436605, + ]; + + static final String integrationIdPayMob = String.fromCharCodes( + List.generate( + _envieddataintegrationIdPayMob.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataintegrationIdPayMob[i] ^ + _enviedkeyintegrationIdPayMob[i])); + + static const List _enviedkeypasswordPayMob = [ + 418235034, + 3471271953, + 3650060240, + 154808765, + 3028591694, + 2835297603, + 3786077605, + 2382783186, + 2301756582, + 2905238547, + 2852315308, + 3913844055, + 3540225579, + 1340907814, + 2577322544, + 1258099922, + 2569630951, + 4199002730, + 2601649029, + 3529143294, + 1812559155, + 313505944, + ]; + + static const List _envieddatapasswordPayMob = [ + 418235133, + 3471272017, + 3650060222, + 154808790, + 3028591626, + 2835297649, + 3786077574, + 2382783211, + 2301756575, + 2905238648, + 2852315277, + 3913844031, + 3540225647, + 1340907897, + 2577322526, + 1258099877, + 2569630911, + 4199002648, + 2601649117, + 3529143186, + 1812559217, + 313506036, + ]; + + static final String passwordPayMob = String.fromCharCodes(List.generate( + _envieddatapasswordPayMob.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatapasswordPayMob[i] ^ _enviedkeypasswordPayMob[i])); + + static const List _enviedkeyusernamePayMob = [ + 54434150, + 899171996, + 2988222035, + 1320319711, + 1823693581, + 1244402809, + 3562265048, + 2275527748, + 1457559891, + 337100069, + 3254426749, + 2520300683, + 198211503, + 3097389410, + 1635986143, + 1205441657, + 460686342, + ]; + + static const List _envieddatausernamePayMob = [ + 54434133, + 899172011, + 2988222048, + 1320319726, + 1823693620, + 1244402760, + 3562265064, + 2275527792, + 1457559907, + 337100048, + 3254426703, + 2520300755, + 198211549, + 3097389370, + 1635986099, + 1205441595, + 460686442, + ]; + + static final String usernamePayMob = String.fromCharCodes(List.generate( + _envieddatausernamePayMob.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatausernamePayMob[i] ^ _enviedkeyusernamePayMob[i])); + + static const List _enviedkeypayMobApikey = [ + 2461488093, + 414479442, + 1389500447, + 322901642, + 1177331867, + 1202979599, + 1173283827, + 2791181118, + 14444448, + 1362061445, + 704549628, + 1563024989, + 1208142367, + 1916971305, + 747093762, + 3453353499, + 2204232707, + 2826332126, + 3708736164, + 4157137812, + 1825264462, + 487863668, + 4023227057, + 1120983976, + 3282264578, + 1680378222, + 3335796625, + 1559203164, + 2974202284, + 1186636096, + 979975930, + 1921439332, + 1307019979, + 1041690435, + 609799624, + 691661871, + 891600297, + 4046986912, + 729827775, + 889476154, + 866914250, + 2093343748, + 3224007577, + 801287563, + 2519437686, + 660602746, + 1823766398, + 3663780317, + 51952399, + 3142623981, + 339771425, + 1424312965, + 3163529693, + 3079462778, + 824797325, + 1428562666, + 2348640654, + 3060845243, + 1952579720, + 1313788061, + 3229257782, + 1245750200, + 1068496685, + 897623263, + 1482572838, + 283680402, + 3336905232, + 2502728358, + 3669906221, + 1785790655, + 299078281, + 245202702, + 2986643998, + 3912073465, + 2820687781, + 2151137019, + 3291762705, + 1912125682, + 3147619188, + 873693266, + 561445227, + 3377567790, + 3904020804, + 3934426232, + 1033078546, + 3092723758, + 439197705, + 1872473747, + 120831544, + 3292786218, + 3631689258, + 3419235772, + 2720794797, + 1876300034, + 3445212874, + 2562298427, + 1684375649, + 531803456, + 2114308246, + 3548473373, + 684634902, + 4223140900, + 848911725, + 3158380719, + 4241747542, + 3994863678, + 1020646846, + 848368005, + 2588446485, + 1110389164, + 461375848, + 3305119899, + 3210438992, + 1747585523, + 1883439225, + 1046267736, + 4088477135, + 458708982, + 1557700925, + 4243859817, + 2662234432, + 1012038507, + 3570235912, + 1033589828, + 2170668712, + 3657780968, + 1996246569, + 2644759515, + 707941734, + 206986757, + 2197172081, + 2279454853, + 136903015, + 3106084079, + 2244112002, + 3641582074, + 2028203371, + 3587358251, + 785650297, + 1574247833, + 1030456183, + 3172214014, + 3826926096, + 1489520045, + 3269789050, + 600170104, + 51921900, + 96926100, + 3526103779, + 707459931, + 1254497832, + 3322899798, + 1439684103, + 3851009832, + 2839614203, + 1496039345, + 4253091929, + 127611162, + 816564408, + 3723976815, + 673865743, + 1343287008, + 4118052674, + 749988271, + 4292713131, + 910185361, + 385205657, + 2876931475, + 105439183, + 2160984942, + 2309892774, + 1113539665, + 2292296971, + 520912007, + 989572809, + 124236047, + 450899327, + 3127073843, + 3590760819, + 701116791, + 1583233343, + 3962106867, + 3462768182, + 3612247786, + 1295288254, + 688684708, + 3041448414, + 3865602966, + 326269051, + 1651665191, + 567152900, + 961096325, + 3865840122, + 3178677877, + 126483104, + 930287127, + 3215843913, + 2976642460, + 2744274778, + 1761774754, + 1790909831, + 740365745, + 3377877436, + 4095609575, + 4157065038, + 879573369, + 275696305, + 1187476819, + 1935992679, + 1100414877, + 946729990, + 3763029596, + 1233041576, + 2679387054, + 542482709, + 4103104642, + 441601710, + 1873152806, + 2402818227, + 3784454478, + 1522464158, + 3661675935, + 856847828, + 3173047454, + 4284967975, + 1009046955, + 423019411, + 1393587229, + 1667170259, + 2760739640, + 545666362, + 1932244904, + 156697086, + 4022064584, + 2855925031, + 418721880, + 2164569452, + 1975150835, + 1332305517, + 628165529, + 1585075787, + 2232169913, + 302727713, + 1463043557, + 3394885706, + 361733918, + 3564798773, + 101299551, + 1475878139, + 1816800807, + 3152061474, + 3575171386, + 750980408, + 2895604331, + 3636037810, + 572687621, + 3022289676, + 2731768222, + 3620750731, + 3638003810, + 3027199732, + 633823354, + 23383638, + 2305648598, + 2383682758, + 3677159331, + 3738097111, + 3274630390, + 3344342235, + 1522490029, + 3377481413, + 312255467, + 310813332, + 1521805715, + 2086347419, + 2842014675, + 2666342826, + 4248896621, + 213441732, + 1529849666, + 108552013, + 2811427776, + 2682640469, + 883836567, + 3491869384, + 2173173657, + ]; + + static const List _envieddatapayMobApikey = [ + 2461488016, + 414479382, + 1389500525, + 322901709, + 1177331946, + 1202979652, + 1173283766, + 2791181161, + 14444531, + 1362061492, + 704549518, + 1563024907, + 1208142446, + 1916971329, + 747093864, + 3453353596, + 2204232804, + 2826332054, + 3708736210, + 4157137873, + 1825264414, + 487863600, + 4023227079, + 1120984056, + 3282264680, + 1680378148, + 3335796646, + 1559203114, + 2974202358, + 1186636036, + 979975864, + 1921439265, + 1307019955, + 1041690417, + 609799559, + 691661848, + 891600378, + 4046986899, + 729827837, + 889476223, + 866914184, + 2093343843, + 3224007659, + 801287655, + 2519437584, + 660602671, + 1823766281, + 3663780233, + 51952462, + 3142623966, + 339771464, + 1424313008, + 3163529615, + 3079462676, + 824797405, + 1428562655, + 2348640724, + 3060845269, + 1952579838, + 1313788146, + 3229257850, + 1245750155, + 1068496736, + 897623277, + 1482572917, + 283680427, + 3336905314, + 2502728419, + 3669906287, + 1785790680, + 299078395, + 245202786, + 2986644048, + 3912073389, + 2820687809, + 2151136926, + 3291762793, + 1912125626, + 3147619137, + 873693218, + 561445183, + 3377567870, + 3904020770, + 3934426191, + 1033078620, + 3092723812, + 439197819, + 1872473829, + 120831553, + 3292786203, + 3631689304, + 3419235801, + 2720794871, + 1876300104, + 3445212860, + 2562298378, + 1684375605, + 531803438, + 2114308257, + 3548473447, + 684634992, + 4223140883, + 848911643, + 3158380795, + 4241747487, + 3994863738, + 1020646855, + 848368114, + 2588446591, + 1110389220, + 461375759, + 3305119914, + 3210438931, + 1747585476, + 1883439157, + 1046267709, + 4088477110, + 458708933, + 1557700869, + 4243859745, + 2662234388, + 1012038447, + 3570236017, + 1033589770, + 2170668777, + 3657780955, + 1996246623, + 2644759532, + 707941682, + 206986837, + 2197171991, + 2279454945, + 136902943, + 3106084005, + 2244112112, + 3641581979, + 2028203283, + 3587358234, + 785650187, + 1574247918, + 1030456103, + 3172213907, + 3826926144, + 1489520089, + 3269788983, + 600170034, + 51921813, + 96926190, + 3526103698, + 707459856, + 1254497901, + 3322899727, + 1439684189, + 3851009869, + 2839614108, + 1496039385, + 4253091880, + 127611177, + 816564469, + 3723976730, + 673865795, + 1343286965, + 4118052656, + 749988329, + 4292713187, + 910185378, + 385205720, + 2876931490, + 105439118, + 2160984841, + 2309892846, + 1113539634, + 2292297027, + 520912054, + 989572860, + 124236108, + 450899237, + 3127073802, + 3590760742, + 701116694, + 1583233381, + 3962106791, + 3462768250, + 3612247717, + 1295288262, + 688684746, + 3041448361, + 3865602982, + 326268985, + 1651665267, + 567152992, + 961096447, + 3865840050, + 3178677821, + 126483154, + 930287189, + 3215843848, + 2976642542, + 2744274739, + 1761774801, + 1790909917, + 740365780, + 3377877454, + 4095609522, + 4157064963, + 879573292, + 275696356, + 1187476777, + 1935992637, + 1100414892, + 946730052, + 3763029554, + 1233041642, + 2679387083, + 542482768, + 4103104747, + 441601732, + 1873152878, + 2402818245, + 3784454400, + 1522464244, + 3661675974, + 856847768, + 3173047536, + 4284968052, + 1009046938, + 423019473, + 1393587272, + 1667170202, + 2760739707, + 545666423, + 1932244928, + 156697005, + 4022064549, + 2855925111, + 418721840, + 2164569389, + 1975150786, + 1332305496, + 628165616, + 1585075757, + 2232169969, + 302727768, + 1463043507, + 3394885691, + 361733973, + 3564798832, + 101299474, + 1475878067, + 1816800880, + 3152061531, + 3575171441, + 750980468, + 2895604233, + 3636037835, + 572687728, + 3022289733, + 2731768270, + 3620750845, + 3638003713, + 3027199676, + 633823299, + 23383555, + 2305648563, + 2383682698, + 3677159312, + 3738097057, + 3274630316, + 3344342178, + 1522490089, + 3377481379, + 312255446, + 310813431, + 1521805797, + 2086347512, + 2842014603, + 2666342872, + 4248896565, + 213441704, + 1529849600, + 108551969, + 2811427746, + 2682640439, + 883836661, + 3491869354, + 2173173755, + ]; + + static final String payMobApikey = String.fromCharCodes(List.generate( + _envieddatapayMobApikey.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatapayMobApikey[i] ^ _enviedkeypayMobApikey[i])); + + static const List _enviedkeyintegrationIdPayMobWallet = [ + 2198846114, + 3818230387, + 2392982328, + 682414580, + 3924435485, + 1115701960, + 1350286237, + 367992399, + 3471783588, + 2731061673, + 1131141258, + 1951250377, + 4194949947, + ]; + + static const List _envieddataintegrationIdPayMobWallet = [ + 2198846098, + 3818230337, + 2392982287, + 682414531, + 3924435498, + 1115702011, + 1350286244, + 367992343, + 3471783638, + 2731061745, + 1131141350, + 1951250315, + 4194949975, + ]; + + static final String integrationIdPayMobWallet = String.fromCharCodes( + List.generate( + _envieddataintegrationIdPayMobWallet.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataintegrationIdPayMobWallet[i] ^ + _enviedkeyintegrationIdPayMobWallet[i])); + + static const List _enviedkeysmsPasswordEgypt = [ + 1537958084, + 3309782776, + 3800849983, + 101358689, + 2155765878, + 279607587, + 3667546419, + 3867851452, + 4175841469, + 3062659526, + 1977790893, + 1251293314, + 2312937745, + 2446531090, + 1937302889, + 61591700, + ]; + + static const List _envieddatasmsPasswordEgypt = [ + 1537958030, + 3309782737, + 3800850025, + 101358601, + 2155765835, + 279607634, + 3667546449, + 3867851411, + 4175841533, + 3062659467, + 1977790965, + 1251293424, + 2312937801, + 2446531198, + 1937302827, + 61591800, + ]; + + static final String smsPasswordEgypt = String.fromCharCodes( + List.generate( + _envieddatasmsPasswordEgypt.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatasmsPasswordEgypt[i] ^ _enviedkeysmsPasswordEgypt[i])); + + static const List _enviedkeyocpApimSubscriptionKey = [ + 1125342962, + 1741622990, + 3812276491, + 1041722084, + 3166458224, + 3393084396, + 1810118768, + 2451972550, + 3308141477, + 1875847651, + 72242542, + 3877433676, + 2874901929, + 439745722, + 1604463863, + 3729037846, + 3256371046, + 3774587419, + 2687064163, + 1855383082, + 3220041046, + 2346434583, + 3001603354, + 852867594, + 2901964507, + 1994643379, + 469270172, + 3246207860, + 36198647, + 1044631903, + 1599267179, + 1071348165, + ]; + + static const List _envieddataocpApimSubscriptionKey = [ + 1125342914, + 1741622952, + 3812276542, + 1041721984, + 3166458129, + 3393084303, + 1810118675, + 2451972517, + 3308141505, + 1875847553, + 72242445, + 3877433641, + 2874901917, + 439745675, + 1604463812, + 3729037863, + 3256370948, + 3774587434, + 2687064066, + 1855383071, + 3220041008, + 2346434606, + 3001603375, + 852867640, + 2901964514, + 1994643338, + 469270186, + 3246207815, + 36198599, + 1044631917, + 1599267086, + 1071348214, + ]; + + static final String ocpApimSubscriptionKey = String.fromCharCodes( + List.generate( + _envieddataocpApimSubscriptionKey.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataocpApimSubscriptionKey[i] ^ + _enviedkeyocpApimSubscriptionKey[i])); + + static const List _enviedkeychatGPTkeySeferNew4 = [ + 998802489, + 898000082, + 884478545, + 1818318807, + 3350924357, + 1295454930, + 3208413090, + 3575628430, + 3429632656, + 2122458912, + 1914632238, + 2866754877, + 3420894486, + 1313630942, + 3716419529, + 1578055251, + 2553452982, + 2452096756, + 1306839238, + 3496298334, + 2430181806, + 3857202296, + 3990037756, + 2767869541, + 1867790103, + 3903303788, + 424682810, + 4184178238, + 280870333, + 2047890161, + 3349069268, + 3004399721, + 455379218, + 3974844078, + 1645075984, + 3134518456, + 3635207917, + 902825432, + 1504693053, + 3050673782, + 784095186, + 1168203981, + 2528994268, + 3699037530, + 1481649947, + 948533103, + 759178550, + 813188781, + 4284411554, + 337628317, + 1265566679, + 2308182428, + 3435978866, + 1467021564, + 2587856404, + 606231379, + 252677545, + 3928550465, + 903150532, + 119894164, + 3229897459, + 4257705579, + 3738722108, + ]; + + static const List _envieddatachatGPTkeySeferNew4 = [ + 998802499, + 898000053, + 884478588, + 1818318753, + 3350924329, + 1295454907, + 3208413127, + 3575628451, + 3429632674, + 2122458956, + 1914632223, + 2866754919, + 3420894586, + 1313630894, + 3716419505, + 1578055226, + 2553453019, + 2452096696, + 1306839180, + 3496298344, + 2430181849, + 3857202217, + 3990037683, + 2767869459, + 1867790197, + 3903303694, + 424682766, + 4184178282, + 280870355, + 2047890098, + 3349069293, + 3004399665, + 455379296, + 3974844118, + 1645076087, + 3134518509, + 3635207848, + 902825377, + 1504693099, + 3050673703, + 784095131, + 1168203960, + 2528994282, + 3699037454, + 1481650002, + 948533035, + 759178498, + 813188828, + 4284411634, + 337628329, + 1265566609, + 2308182473, + 3435978791, + 1467021453, + 2587856507, + 606231296, + 252677532, + 3928550425, + 903150518, + 119894220, + 3229897375, + 4257705513, + 3738722128, + ]; + + static final String chatGPTkeySeferNew4 = String.fromCharCodes( + List.generate( + _envieddatachatGPTkeySeferNew4.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatachatGPTkeySeferNew4[i] ^ + _enviedkeychatGPTkeySeferNew4[i])); + + static const List _enviedkeyanthropicAIkeySeferNew = [ + 252633682, + 4066651849, + 2859289896, + 293410641, + 3430475513, + 1775373431, + 970394508, + 1548575568, + 3069344118, + 1977724439, + 2242567525, + 3180523139, + 1027313897, + 213789153, + 372790964, + 1044853302, + 1047498707, + 2548057810, + 2122076000, + 3670363249, + 3864087403, + 2936304866, + 3849288888, + 2824464157, + 2197871345, + 1888981846, + 2353219931, + 1962542010, + 84959575, + 168937366, + 3488221140, + 1974554197, + 3025778932, + 1182585797, + 787160768, + 2300809537, + 3361446442, + 1383379411, + 1483112418, + 3751398532, + 3987618197, + 1629693525, + 460760908, + 1192570829, + 1305386730, + 3787776486, + 1910239351, + 4114177462, + 4149220976, + 1373296977, + 4139046304, + 642876842, + 264668473, + 3747450429, + 988360086, + 2052515025, + 3353662243, + 2971256083, + 4075825131, + 1015381466, + 1810089438, + 2361524036, + 4080420141, + 2256733954, + 1879138460, + 192308982, + 397943256, + 1998060811, + 4159659185, + 338971809, + 3797273177, + 1844936541, + 2745268114, + 2587094594, + 1627805960, + 2914124212, + 3888322233, + 4244837239, + 3434330249, + 3133372462, + 2786985440, + 211632847, + 3289087920, + 166923399, + 2469204499, + 1542632921, + 1749133840, + 3767312524, + 1413984583, + 2191982892, + 2177923009, + 2122276835, + 528268060, + 1778815331, + 1644215556, + 3288689368, + 218069362, + 1957536668, + 471175773, + 24773631, + 2000788424, + 3031449378, + 126470676, + 361885224, + 3138920524, + 981330200, + 1634591586, + 3731799312, + 261920375, + 674689512, + 548839758, + 3327755864, + 2983247279, + 1018794843, + 4140984228, + ]; + + static const List _envieddataanthropicAIkeySeferNew = [ + 252633640, + 4066651822, + 2859289861, + 293410592, + 3430475419, + 1775373332, + 970394529, + 1548575521, + 3069344000, + 1977724536, + 2242567510, + 3180523194, + 1027313860, + 213789068, + 372791002, + 1044853250, + 1047498629, + 2548057782, + 2122075949, + 3670363168, + 3864087390, + 2936304780, + 3849288909, + 2824464215, + 2197871252, + 1888981791, + 2353219842, + 1962542034, + 84959514, + 168937432, + 3488221152, + 1974554117, + 3025778864, + 1182585756, + 787160754, + 2300809590, + 3361446491, + 1383379388, + 1483112346, + 3751398583, + 3987618232, + 1629693473, + 460760958, + 1192570788, + 1305386715, + 3787776426, + 1910239263, + 4114177409, + 4149220881, + 1373296927, + 4139046388, + 642876910, + 264668511, + 3747450468, + 988360144, + 2052515068, + 3353662308, + 2971256181, + 4075825107, + 1015381421, + 1810089398, + 2361523985, + 4080420199, + 2256734040, + 1879138527, + 192308869, + 397943276, + 1998060860, + 4159659252, + 338971844, + 3797273148, + 1844936497, + 2745268185, + 2587094572, + 1627806000, + 2914124267, + 3888322284, + 4244837140, + 3434330340, + 3133372539, + 2786985389, + 211632802, + 3289087961, + 166923476, + 2469204575, + 1542632888, + 1749133942, + 3767312572, + 1413984530, + 2191982950, + 2177922982, + 2122276819, + 528268120, + 1778815253, + 1644215633, + 3288689332, + 218069283, + 1957536750, + 471175705, + 24773515, + 2000788453, + 3031449365, + 126470690, + 361885291, + 3138920478, + 981330282, + 1634591497, + 3731799361, + 261920294, + 674689456, + 548839740, + 3327755776, + 2983247299, + 1018794777, + 4140984264, + ]; + + static final String anthropicAIkeySeferNew = String.fromCharCodes( + List.generate( + _envieddataanthropicAIkeySeferNew.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddataanthropicAIkeySeferNew[i] ^ + _enviedkeyanthropicAIkeySeferNew[i])); + + static const List _enviedkeyllama3Key = [ + 2547655488, + 2050634362, + 4074228454, + 3726830756, + 1474865384, + 2284074815, + 2398955563, + 2860496486, + 2728608129, + 1054102572, + 34235992, + 1642264532, + 3854586150, + 774798956, + 398016553, + 2516339709, + 2574694679, + 155785521, + 1618796666, + 836228295, + 4008696766, + 3750077337, + 2684631333, + 2015164091, + 818103691, + 2146965235, + 360114763, + 1963971447, + 4088054211, + 219387836, + 194033182, + 507741839, + 3780232454, + 1592760078, + 184428740, + 4275769311, + 2988705653, + 3275979418, + 4175961441, + 3951131098, + 3881266300, + 3724014717, + 2032136580, + 3421525637, + 1173104986, + 654601366, + 2862784246, + 4212999172, + 1278650239, + 2624148764, + 3973122935, + 677128135, + 2765767502, + 3966873878, + 4193408211, + 1089769707, + 1109635270, + 2535018969, + 2546667444, + 825720845, + 3736508435, + 1589801373, + 1275178834, + ]; + + static const List _envieddatallama3Key = [ + 2547655467, + 2050634240, + 4074228353, + 3726830843, + 1474865309, + 2284074859, + 2398955635, + 2860496415, + 2728608178, + 1054102601, + 34236001, + 1642264464, + 3854586212, + 774798862, + 398016618, + 2516339628, + 2574694694, + 155785591, + 1618796564, + 836228234, + 4008696825, + 3750077428, + 2684631389, + 2015164130, + 818103804, + 2146965159, + 360114688, + 1963971342, + 4088054192, + 219387844, + 194033191, + 507741914, + 3780232533, + 1592760127, + 184428710, + 4275769258, + 2988705543, + 3275979490, + 4175961387, + 3951131056, + 3881266248, + 3724014619, + 2032136642, + 3421525746, + 1173104917, + 654601468, + 2862784147, + 4212999216, + 1278650163, + 2624148806, + 3973122869, + 677128082, + 2765767432, + 3966873949, + 4193408153, + 1089769656, + 1109635319, + 2535018881, + 2546667462, + 825720917, + 3736508543, + 1589801439, + 1275178814, + ]; + + static final String llama3Key = String.fromCharCodes(List.generate( + _envieddatallama3Key.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatallama3Key[i] ^ _enviedkeyllama3Key[i])); + + static const List _enviedkeypayMobOutPassword = [ + 1463401918, + 3590619914, + 590083692, + 2488503098, + 1085556654, + 1718572022, + 1127158614, + 3576079299, + 463957996, + 1312536195, + 2026070740, + 3078144281, + 3006806684, + 3414677000, + 301445477, + 3662348894, + 4018075996, + 983371925, + 1462129568, + 3752292031, + 3360224359, + 866768902, + 3613159890, + 720764019, + 95969025, + 2968254502, + 760880716, + 3856089989, + 833591533, + 3672054088, + 1779360326, + 1224730386, + ]; + + static const List _envieddatapayMobOutPassword = [ + 1463401978, + 3590619960, + 590083606, + 2488503152, + 1085556712, + 1718571918, + 1127158589, + 3576079238, + 463957967, + 1312536271, + 2026070682, + 3078144370, + 3006806703, + 3414677118, + 301445407, + 3662348909, + 4018076004, + 983372015, + 1462129554, + 3752292059, + 3360224318, + 866769022, + 3613159842, + 720763965, + 95969127, + 2968254577, + 760880660, + 3856090103, + 833591477, + 3672054052, + 1779360260, + 1224730494, + ]; + + static final String payMobOutPassword = String.fromCharCodes( + List.generate( + _envieddatapayMobOutPassword.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatapayMobOutPassword[i] ^ _enviedkeypayMobOutPassword[i])); + + static const List _enviedkeypayMobOutUserName = [ + 3420253699, + 3477718125, + 1213356666, + 951143012, + 1936181228, + 3901665832, + 4193583998, + 979856114, + 1912172788, + 2714323578, + 373909890, + 299884989, + 1093865556, + 3420340911, + 130042737, + 1998370872, + 1524132278, + 21672379, + 2080979472, + 3349176321, + 3127423379, + 1171428039, + 2522326191, + 1041417147, + ]; + + static const List _envieddatapayMobOutUserName = [ + 3420253817, + 3477718023, + 1213356559, + 951142926, + 1936181120, + 3901665911, + 4193583887, + 979856004, + 1912172699, + 2714323493, + 373909988, + 299885002, + 1093865535, + 3420340933, + 130042647, + 1998370911, + 1524132316, + 21672407, + 2080979528, + 3349176435, + 3127423435, + 1171428011, + 2522326253, + 1041417175, + ]; + + static final String payMobOutUserName = String.fromCharCodes( + List.generate( + _envieddatapayMobOutUserName.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatapayMobOutUserName[i] ^ _enviedkeypayMobOutUserName[i])); + + static const List _enviedkeyA = [3702312050]; + + static const List _envieddataA = [3702311971]; + + static final String A = String.fromCharCodes(List.generate( + _envieddataA.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataA[i] ^ _enviedkeyA[i])); + + static const List _enviedkeyB = [1828707171]; + + static const List _envieddataB = [1828707131]; + + static final String B = String.fromCharCodes(List.generate( + _envieddataB.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataB[i] ^ _enviedkeyB[i])); + + static const List _enviedkeyC = [256709476]; + + static const List _envieddataC = [256709410]; + + static final String C = String.fromCharCodes(List.generate( + _envieddataC.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataC[i] ^ _enviedkeyC[i])); + + static const List _enviedkeyD = [1575322131]; + + static const List _envieddataD = [1575322186]; + + static final String D = String.fromCharCodes(List.generate( + _envieddataD.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataD[i] ^ _enviedkeyD[i])); + + static const List _enviedkeyE = [1279957510]; + + static const List _envieddataE = [1279957580]; + + static final String E = String.fromCharCodes(List.generate( + _envieddataE.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataE[i] ^ _enviedkeyE[i])); + + static const List _enviedkeyF = [3126095128]; + + static const List _envieddataF = [3126095181]; + + static final String F = String.fromCharCodes(List.generate( + _envieddataF.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataF[i] ^ _enviedkeyF[i])); + + static const List _enviedkeyG = [859046969]; + + static const List _envieddataG = [859047026]; + + static final String G = String.fromCharCodes(List.generate( + _envieddataG.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataG[i] ^ _enviedkeyG[i])); + + static const List _enviedkeyH = [396779598]; + + static const List _envieddataH = [396779545]; + + static final String H = String.fromCharCodes(List.generate( + _envieddataH.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataH[i] ^ _enviedkeyH[i])); + + static const List _enviedkeyI = [3808495826]; + + static const List _envieddataI = [3808495773]; + + static final String I = String.fromCharCodes(List.generate( + _envieddataI.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataI[i] ^ _enviedkeyI[i])); + + static const List _enviedkeyJ = [1107506515]; + + static const List _envieddataJ = [1107506454]; + + static final String J = String.fromCharCodes(List.generate( + _envieddataJ.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataJ[i] ^ _enviedkeyJ[i])); + + static const List _enviedkeyK = [1771338837]; + + static const List _envieddataK = [1771338770]; + + static final String K = String.fromCharCodes(List.generate( + _envieddataK.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataK[i] ^ _enviedkeyK[i])); + + static const List _enviedkeyL = [198679949]; + + static const List _envieddataL = [198680031]; + + static final String L = String.fromCharCodes(List.generate( + _envieddataL.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataL[i] ^ _enviedkeyL[i])); + + static const List _enviedkeyM = [696708511]; + + static const List _envieddataM = [696708561]; + + static final String M = String.fromCharCodes(List.generate( + _envieddataM.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataM[i] ^ _enviedkeyM[i])); + + static const List _enviedkeyN = [2651464140]; + + static const List _envieddataN = [2651464078]; + + static final String N = String.fromCharCodes(List.generate( + _envieddataN.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataN[i] ^ _enviedkeyN[i])); + + static const List _enviedkeyO = [3870997780]; + + static const List _envieddataO = [3870997853]; + + static final String O = String.fromCharCodes(List.generate( + _envieddataO.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataO[i] ^ _enviedkeyO[i])); + + static const List _enviedkeyP = [4212758232]; + + static const List _envieddataP = [4212758158]; + + static final String P = String.fromCharCodes(List.generate( + _envieddataP.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataP[i] ^ _enviedkeyP[i])); + + static const List _enviedkeyQ = [15007986]; + + static const List _envieddataQ = [15007923]; + + static final String Q = String.fromCharCodes(List.generate( + _envieddataQ.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataQ[i] ^ _enviedkeyQ[i])); + + static const List _enviedkeyR = [112165618]; + + static const List _envieddataR = [112165566]; + + static final String R = String.fromCharCodes(List.generate( + _envieddataR.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataR[i] ^ _enviedkeyR[i])); + + static const List _enviedkeyS = [1845284497]; + + static const List _envieddataS = [1845284555]; + + static final String S = String.fromCharCodes(List.generate( + _envieddataS.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataS[i] ^ _enviedkeyS[i])); + + static const List _enviedkeyT = [3654626386]; + + static const List _envieddataT = [3654626321]; + + static final String T = String.fromCharCodes(List.generate( + _envieddataT.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataT[i] ^ _enviedkeyT[i])); + + static const List _enviedkeyU = [3353279899]; + + static const List _envieddataU = [3353279955]; + + static final String U = String.fromCharCodes(List.generate( + _envieddataU.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataU[i] ^ _enviedkeyU[i])); + + static const List _enviedkeyV = [583072553]; + + static const List _envieddataV = [583072633]; + + static final String V = String.fromCharCodes(List.generate( + _envieddataV.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataV[i] ^ _enviedkeyV[i])); + + static const List _enviedkeyW = [230788298]; + + static const List _envieddataW = [230788254]; + + static final String W = String.fromCharCodes(List.generate( + _envieddataW.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataW[i] ^ _enviedkeyW[i])); + + static const List _enviedkeyX = [1898138223]; + + static const List _envieddataX = [1898138155]; + + static final String X = String.fromCharCodes(List.generate( + _envieddataX.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataX[i] ^ _enviedkeyX[i])); + + static const List _enviedkeyY = [3897874586]; + + static const List _envieddataY = [3897874633]; + + static final String Y = String.fromCharCodes(List.generate( + _envieddataY.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataY[i] ^ _enviedkeyY[i])); + + static const List _enviedkeyZ = [3721809572]; + + static const List _envieddataZ = [3721809641]; + + static final String Z = String.fromCharCodes(List.generate( + _envieddataZ.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataZ[i] ^ _enviedkeyZ[i])); + + static const List _enviedkeya = [4073233479]; + + static const List _envieddataa = [4073233462]; + + static final String a = String.fromCharCodes(List.generate( + _envieddataa.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataa[i] ^ _enviedkeya[i])); + + static const List _enviedkeyb = [3000632639]; + + static const List _envieddatab = [3000632647]; + + static final String b = String.fromCharCodes(List.generate( + _envieddatab.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatab[i] ^ _enviedkeyb[i])); + + static const List _enviedkeyc = [3888133910]; + + static const List _envieddatac = [3888134000]; + + static final String c = String.fromCharCodes(List.generate( + _envieddatac.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatac[i] ^ _enviedkeyc[i])); + + static const List _enviedkeyd = [2948285184]; + + static const List _envieddatad = [2948285305]; + + static final String d = String.fromCharCodes(List.generate( + _envieddatad.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatad[i] ^ _enviedkeyd[i])); + + static const List _enviedkeye = [4182928438]; + + static const List _envieddatae = [4182928476]; + + static final String e = String.fromCharCodes(List.generate( + _envieddatae.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatae[i] ^ _enviedkeye[i])); + + static const List _enviedkeyf = [2033943155]; + + static const List _envieddataf = [2033943046]; + + static final String f = String.fromCharCodes(List.generate( + _envieddataf.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataf[i] ^ _enviedkeyf[i])); + + static const List _enviedkeyg = [201368192]; + + static const List _envieddatag = [201368299]; + + static final String g = String.fromCharCodes(List.generate( + _envieddatag.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatag[i] ^ _enviedkeyg[i])); + + static const List _enviedkeyh = [2605967467]; + + static const List _envieddatah = [2605967388]; + + static final String h = String.fromCharCodes(List.generate( + _envieddatah.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatah[i] ^ _enviedkeyh[i])); + + static const List _enviedkeyi = [293856466]; + + static const List _envieddatai = [293856445]; + + static final String i = String.fromCharCodes(List.generate( + _envieddatai.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatai[i] ^ _enviedkeyi[i])); + + static const List _enviedkeyj = [4027328303]; + + static const List _envieddataj = [4027328330]; + + static final String j = String.fromCharCodes(List.generate( + _envieddataj.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataj[i] ^ _enviedkeyj[i])); + + static const List _enviedkeyk = [2661455738]; + + static const List _envieddatak = [2661455645]; + + static final String k = String.fromCharCodes(List.generate( + _envieddatak.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatak[i] ^ _enviedkeyk[i])); + + static const List _enviedkeyl = [2856207848]; + + static const List _envieddatal = [2856207770]; + + static final String l = String.fromCharCodes(List.generate( + _envieddatal.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatal[i] ^ _enviedkeyl[i])); + + static const List _enviedkeym = [2704847057]; + + static const List _envieddatam = [2704847039]; + + static final String m = String.fromCharCodes(List.generate( + _envieddatam.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatam[i] ^ _enviedkeym[i])); + + static const List _enviedkeyn = [3715423622]; + + static const List _envieddatan = [3715423716]; + + static final String n = String.fromCharCodes(List.generate( + _envieddatan.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatan[i] ^ _enviedkeyn[i])); + + static const List _enviedkeyo = [2517146543]; + + static const List _envieddatao = [2517146566]; + + static final String o = String.fromCharCodes(List.generate( + _envieddatao.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatao[i] ^ _enviedkeyo[i])); + + static const List _enviedkeyp = [593449872]; + + static const List _envieddatap = [593449958]; + + static final String p = String.fromCharCodes(List.generate( + _envieddatap.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatap[i] ^ _enviedkeyp[i])); + + static const List _enviedkeyq = [3887645581]; + + static const List _envieddataq = [3887645676]; + + static final String q = String.fromCharCodes(List.generate( + _envieddataq.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataq[i] ^ _enviedkeyq[i])); + + static const List _enviedkeyr = [1040606890]; + + static const List _envieddatar = [1040606918]; + + static final String r = String.fromCharCodes(List.generate( + _envieddatar.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatar[i] ^ _enviedkeyr[i])); + + static const List _enviedkeys = [2337855234]; + + static const List _envieddatas = [2337855352]; + + static final String s = String.fromCharCodes(List.generate( + _envieddatas.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatas[i] ^ _enviedkeys[i])); + + static const List _enviedkeyt = [246861627]; + + static const List _envieddatat = [246861656]; + + static final String t = String.fromCharCodes(List.generate( + _envieddatat.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatat[i] ^ _enviedkeyt[i])); + + static const List _enviedkeyu = [2811530176]; + + static const List _envieddatau = [2811530152]; + + static final String u = String.fromCharCodes(List.generate( + _envieddatau.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatau[i] ^ _enviedkeyu[i])); + + static const List _enviedkeyv = [2348670832]; + + static const List _envieddatav = [2348670720]; + + static final String v = String.fromCharCodes(List.generate( + _envieddatav.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatav[i] ^ _enviedkeyv[i])); + + static const List _enviedkeyw = [1395346662]; + + static const List _envieddataw = [1395346578]; + + static final String w = String.fromCharCodes(List.generate( + _envieddataw.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataw[i] ^ _enviedkeyw[i])); + + static const List _enviedkeyx = [1601888595]; + + static const List _envieddatax = [1601888567]; + + static final String x = String.fromCharCodes(List.generate( + _envieddatax.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatax[i] ^ _enviedkeyx[i])); + + static const List _enviedkeyy = [3141445202]; + + static const List _envieddatay = [3141445153]; + + static final String y = String.fromCharCodes(List.generate( + _envieddatay.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatay[i] ^ _enviedkeyy[i])); + + static const List _enviedkeyz = [4007171354]; + + static const List _envieddataz = [4007171447]; + + static final String z = String.fromCharCodes(List.generate( + _envieddataz.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataz[i] ^ _enviedkeyz[i])); + + static const List _enviedkeykeyOfApp = [ + 3226321941, + 3271677650, + 2192815642, + 2111163290, + 784158438, + 1847845170, + 861850425, + 2413012536, + 1394479585, + 1673108987, + 3141956591, + 2442706393, + 1473674421, + 3397875548, + 3587716275, + 3474984408, + 3404744673, + 1542857030, + 1475036017, + 4192786039, + 3717168971, + 1502748934, + 1613697687, + 4017504266, + 1192589726, + 1490159512, + 1568257885, + 2705083954, + 3405311091, + 2891797243, + 3717010836, + 2424791306, + 3030079626, + 1233580755, + 2931824712, + 3121024757, + 3259771227, + 1655173930, + ]; + + static const List _envieddatakeyOfApp = [ + 3226322039, + 3271677619, + 2192815734, + 2111163369, + 784158339, + 1847845188, + 861850489, + 2413012495, + 1394479575, + 1673108930, + 3141956569, + 2442706349, + 1473674452, + 3397875518, + 3587716317, + 3474984377, + 3404744576, + 1542857020, + 1475035924, + 4192785924, + 3717168934, + 1502749027, + 1613697791, + 4017504367, + 1192589804, + 1490159613, + 1568257850, + 2705083976, + 3405310979, + 2891797149, + 3717010942, + 2424791397, + 3030079698, + 1233580705, + 2931824656, + 3121024647, + 3259771161, + 1655173976, + ]; + + static final String keyOfApp = String.fromCharCodes(List.generate( + _envieddatakeyOfApp.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatakeyOfApp[i] ^ _enviedkeykeyOfApp[i])); + + static const List _enviedkeyinitializationVector = [ + 2998506936, + 3160285951, + 216410372, + 539929899, + 2850058480, + 1876471456, + 1045045415, + 3266694389, + 1053338506, + 1955229790, + 588268149, + 3540547903, + 3707916675, + 962014079, + 2325447759, + 2821783649, + 1912989418, + 3824488537, + 1966596638, + 2823425551, + 2221046851, + 2876036181, + ]; + + static const List _envieddatainitializationVector = [ + 2998506953, + 3160285831, + 216410466, + 539929938, + 2850058394, + 1876471509, + 1045045452, + 3266694274, + 1053338597, + 1955229755, + 588268050, + 3540547917, + 3707916781, + 962013981, + 2325447718, + 2821783575, + 1912989362, + 3824488491, + 1966596678, + 2823425661, + 2221046785, + 2876036135, + ]; + + static final String initializationVector = String.fromCharCodes( + List.generate( + _envieddatainitializationVector.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatainitializationVector[i] ^ + _enviedkeyinitializationVector[i])); + + static const List _enviedkeyemailService = [ + 3058898630, + 1780126321, + 3157328763, + 698412827, + 1233078799, + 627817927, + 582653494, + 2376805258, + 1254539367, + 3691399402, + 1420101600, + 2351003362, + 4048537808, + 2755717562, + 3530936124, + 907950620, + 4204803975, + 3770522904, + 328249965, + 3806116678, + 2538709394, + 4161276021, + ]; + + static const List _envieddataemailService = [ + 3058898613, + 1780126228, + 3157328669, + 698412926, + 1233078909, + 627817908, + 582653523, + 2376805368, + 1254539281, + 3691399299, + 1420101507, + 2351003271, + 4048537744, + 2755717597, + 3530936145, + 907950717, + 4204804078, + 3770522996, + 328249923, + 3806116645, + 2538709501, + 4161275928, + ]; + + static final String emailService = String.fromCharCodes(List.generate( + _envieddataemailService.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataemailService[i] ^ _enviedkeyemailService[i])); + + static const List _enviedkeysss_encryptionSalt = [ + 2439214796, + 2690611147, + 17513318, + 3218019821, + 1167076649, + 1516072070, + 928544515, + 2012037734, + 3581614863, + 3391794499, + 237785495, + 2635233502, + 321913960, + 2133335032, + 4257326089, + 2369222678, + 3334503091, + 2337344252, + 3763603650, + 1383202326, + 1940084103, + 4237855082, + 2261476372, + 227250875, + 2989696415, + 2488513486, + 1182757823, + 877024975, + 1253202367, + 2765080737, + 1566936852, + 2528897189, + 2877512862, + 33570095, + 2333952412, + 905716685, + 3877244761, + 1565892881, + 1508075519, + 2425472701, + 630475876, + 624009159, + 1373787444, + 1313932129, + 3973377498, + 3628805220, + 2002846151, + 1136903308, + 111737061, + 466379736, + 2598420799, + 1935458722, + 455860410, + 3636141022, + 43990671, + 3872293160, + 3738677914, + 3232239738, + 4215791973, + 2244696620, + 340458145, + 2741241966, + 3040024891, + ]; + + static const List _envieddatasss_encryptionSalt = [ + 2439214774, + 2690611116, + 17513291, + 3218019739, + 1167076674, + 1516072170, + 928544618, + 2012037635, + 3581614882, + 3391794545, + 237785595, + 2635233519, + 321913906, + 2133334932, + 4257326201, + 2369222766, + 3334503130, + 2337344176, + 3763603592, + 1383202336, + 1940084208, + 4237855035, + 2261476443, + 227250893, + 2989696509, + 2488513452, + 1182757771, + 877024923, + 1253202385, + 2765080802, + 1566936877, + 2528897277, + 2877512940, + 33570135, + 2333952507, + 905716632, + 3877244700, + 1565892968, + 1508075433, + 2425472748, + 630475821, + 624009138, + 1373787394, + 1313932085, + 3973377427, + 3628805152, + 2002846195, + 1136903421, + 111737013, + 466379756, + 2598420857, + 1935458807, + 455860463, + 3636140975, + 43990752, + 3872293243, + 3738677935, + 3232239650, + 4215791895, + 2244696692, + 340458189, + 2741241900, + 3040024919, + ]; + + static final String sss_encryptionSalt = String.fromCharCodes( + List.generate( + _envieddatasss_encryptionSalt.length, + (int i) => i, + growable: false, + ).map((int i) => + _envieddatasss_encryptionSalt[i] ^ _enviedkeysss_encryptionSalt[i])); + + static const List _enviedkeysss_pass = [ + 3197968951, + 52280138, + 4033845608, + 2403475127, + 657569283, + 983132184, + 1675023512, + 1325820209, + 3921640272, + 3398711702, + 4294040877, + 991885459, + 3428608797, + 2148145534, + 3853955384, + 3344120490, + 1901757816, + 1227221498, + 4077972539, + 3429492754, + 3959106111, + 2966901390, + 2587625918, + 25190045, + 1636894000, + 2903579726, + 3915117056, + 2930707400, + 4270690013, + 3508089871, + 2999060244, + 733856551, + ]; + + static const List _envieddatasss_pass = [ + 3197968960, + 52280123, + 4033845510, + 2403475162, + 657569394, + 983132265, + 1675023595, + 1325820251, + 3921640233, + 3398711776, + 4294040922, + 991885541, + 3428608807, + 2148145424, + 3853955401, + 3344120536, + 1901757717, + 1227221411, + 4077972593, + 3429492802, + 3959106175, + 2966901439, + 2587625865, + 25190062, + 1636893959, + 2903579766, + 3915117144, + 2930707386, + 4270689925, + 3508089955, + 2999060310, + 733856587, + ]; + + static final String sss_pass = String.fromCharCodes(List.generate( + _envieddatasss_pass.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatasss_pass[i] ^ _enviedkeysss_pass[i])); + + static const List _enviedkeyaddd = [ + 2198669152, + 299470375, + 1677086914, + 2164591770, + 3152205821, + 889230701, + ]; + + static const List _envieddataaddd = [ + 2198669090, + 299470411, + 1677086848, + 2164591862, + 3152205747, + 889230593, + ]; + + static final String addd = String.fromCharCodes(List.generate( + _envieddataaddd.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataaddd[i] ^ _enviedkeyaddd[i])); + + static const List _enviedkeypassnpassenger = [ + 1053714707, + 1995228865, + 59239579, + 2402520740, + 1333085789, + 2787540181, + 3091616810, + 1485098171, + 2307510745, + 1076856627, + 2703275354, + 4122412765, + 3071586773, + ]; + + static const List _envieddatapassnpassenger = [ + 1053714811, + 1995228835, + 59239676, + 2402520774, + 1333085748, + 2787540129, + 3091616840, + 1485098211, + 2307510699, + 1076856683, + 2703275304, + 4122412703, + 3071586727, + ]; + + static final String passnpassenger = String.fromCharCodes(List.generate( + _envieddatapassnpassenger.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatapassnpassenger[i] ^ _enviedkeypassnpassenger[i])); + + static const List _enviedkeynewId = [ + 1679055883, + 3457216101, + 2450093188, + ]; + + static const List _envieddatanewId = [ + 1679055973, + 3457216000, + 2450093299, + ]; + + static final String newId = String.fromCharCodes(List.generate( + _envieddatanewId.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddatanewId[i] ^ _enviedkeynewId[i])); + + static const List _enviedkeyallowed = [ + 2590804869, + 3196428741, + 393942765, + 2918718070, + 1432725040, + 54119466, + 2473997145, + 1814635799, + 34951963, + 288371060, + 4097286735, + 2663452997, + ]; + + static const List _envieddataallowed = [ + 2590804945, + 3196428727, + 393942660, + 2918717958, + 1432725066, + 54119534, + 2473997099, + 1814635902, + 34952045, + 288370961, + 4097286717, + 2663453055, + ]; + + static final String allowed = String.fromCharCodes(List.generate( + _envieddataallowed.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataallowed[i] ^ _enviedkeyallowed[i])); + + static const List _enviedkeyallowedWallet = [ + 1257086550, + 4249584309, + 556723499, + 2854826394, + 1429085279, + 1678220990, + 3427155929, + 2318352316, + 985002879, + 4213630816, + 4089198438, + 1405932804, + ]; + + static const List _envieddataallowedWallet = [ + 1257086466, + 4249584327, + 556723522, + 2854826474, + 1429085221, + 1678221033, + 3427155896, + 2318352336, + 985002771, + 4213630725, + 4089198354, + 1405932862, + ]; + + static final String allowedWallet = String.fromCharCodes(List.generate( + _envieddataallowedWallet.length, + (int i) => i, + growable: false, + ).map((int i) => _envieddataallowedWallet[i] ^ _enviedkeyallowedWallet[i])); +} diff --git a/lib/firebase_options.dart b/lib/firebase_options.dart new file mode 100644 index 0000000..8df83fc --- /dev/null +++ b/lib/firebase_options.dart @@ -0,0 +1,70 @@ +// File generated by FlutterFire CLI. +// ignore_for_file: type=lint +import 'package:firebase_core/firebase_core.dart' show FirebaseOptions; +import 'package:flutter/foundation.dart' + show defaultTargetPlatform, kIsWeb, TargetPlatform; + +/// Default [FirebaseOptions] for use with your Firebase apps. +/// +/// Example: +/// ```dart +/// import 'firebase_options.dart'; +/// // ... +/// await Firebase.initializeApp( +/// options: DefaultFirebaseOptions.currentPlatform, +/// ); +/// ``` +class DefaultFirebaseOptions { + static FirebaseOptions get currentPlatform { + if (kIsWeb) { + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for web - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + } + switch (defaultTargetPlatform) { + case TargetPlatform.android: + return android; + case TargetPlatform.iOS: + return ios; + case TargetPlatform.macOS: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for macos - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + case TargetPlatform.windows: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for windows - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + case TargetPlatform.linux: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for linux - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + default: + throw UnsupportedError( + 'DefaultFirebaseOptions are not supported for this platform.', + ); + } + } + + static const FirebaseOptions android = FirebaseOptions( + apiKey: 'AIzaSyCFsWBqvkXzk1Gb-bCGxwqTwJQKIeHjH64', + appId: '1:1086900987150:android:e3daebe53bf691de77a35f', + messagingSenderId: '1086900987150', + projectId: 'intaleq-d48a7', + storageBucket: 'intaleq-d48a7.firebasestorage.app', + ); + + static const FirebaseOptions ios = FirebaseOptions( + apiKey: 'AIzaSyAwG09AeehwBfktpKKJwCKQOtEUpHtr-p0', + appId: '1:1086900987150:ios:4de021170777304677a35f', + messagingSenderId: '1086900987150', + projectId: 'intaleq-d48a7', + storageBucket: 'intaleq-d48a7.firebasestorage.app', + androidClientId: '1086900987150-060srlmdjocdcav377rbur4ka14m90b7.apps.googleusercontent.com', + iosClientId: '1086900987150-litln2luehoflug5ild2vfkc9fh1mcfs.apps.googleusercontent.com', + iosBundleId: 'com.example.intaleqDriver', + ); +} diff --git a/lib/main.dart b/lib/main.dart new file mode 100755 index 0000000..5b8f69e --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,208 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; +import 'package:sefer_driver/views/home/Captin/orderCaptin/order_request_page.dart'; +import 'package:firebase_core/firebase_core.dart'; +import 'package:firebase_messaging/firebase_messaging.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:flutter_overlay_window/flutter_overlay_window.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:flutter_stripe/flutter_stripe.dart'; +import 'package:get/get.dart'; +import 'package:get_storage/get_storage.dart'; +import 'package:flutter/services.dart'; +import 'package:wakelock_plus/wakelock_plus.dart'; +import 'constant/api_key.dart'; +import 'constant/info.dart'; +import 'controller/firebase/firbase_messge.dart'; +import 'controller/firebase/local_notification.dart'; +import 'controller/functions/encrypt_decrypt.dart'; +import 'controller/functions/secure_storage.dart'; +import 'controller/local/local_controller.dart'; +import 'controller/local/translations.dart'; +import 'firebase_options.dart'; +import 'models/db_sql.dart'; +import 'print.dart'; +import 'splash_screen_page.dart'; +import 'views/home/Captin/driver_map_page.dart'; +import 'views/home/Captin/orderCaptin/order_over_lay.dart'; + +final box = GetStorage(); +const storage = FlutterSecureStorage(); +DbSql sql = DbSql.instance; +final GlobalKey navigatorKey = GlobalKey(); +const platform = MethodChannel('com.example.intaleq_driver/app_control'); + +@pragma('vm:entry-point') +Future backgroundMessageHandler(RemoteMessage message) async { + WidgetsFlutterBinding.ensureInitialized(); + await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); + await GetStorage.init(); + + if (!Get.isRegistered()) { + Get.put(NotificationController()); + } + if (!Get.isRegistered()) { + Get.put(FirebaseMessagesController()); + } + + if (!await FlutterOverlayWindow.isPermissionGranted()) { + Log.print("Overlay permission not granted; showing only notification."); + } + + if (Platform.isAndroid) { + if (message.notification != null && message.notification!.title != null) { + Log.print('message.notification!.title: ${message.notification!.title}'); + + if (message.notification?.title == 'Order' || + message.notification?.title == 'OrderSpeed') { + var myListString = message.data['DriverList'] ?? '[]'; + Log.print('myListString: $myListString'); + + List myList; + try { + myList = jsonDecode(myListString) as List; + } catch (e) { + Log.print('Error decoding JSON: $e'); + myList = []; + } + + bool isOverlayActive = await FlutterOverlayWindow.isActive(); + if (isOverlayActive) { + await FlutterOverlayWindow.shareData(myList); + } else { + await FlutterOverlayWindow.showOverlay( + enableDrag: true, + flag: OverlayFlag.focusPointer, + positionGravity: PositionGravity.auto, + height: 1400, + width: WindowSize.matchParent, + startPosition: const OverlayPosition(0, -30), + ); + await FlutterOverlayWindow.shareData(myList); + } + + NotificationController().showNotification( + message.notification!.title.toString(), + message.notification!.body.toString(), + 'order', + myListString, + ); + } else { + FirebaseMessagesController().fireBaseTitles(message); + } + } + } +} + +@pragma('vm:entry-point') +void notificationTapBackground(NotificationResponse notificationResponse) { + Log.print('Notification tapped in background!'); + NotificationController().handleNotificationResponse(notificationResponse); +} + +@pragma('vm:entry-point') +void overlayMain() async { + WidgetsFlutterBinding.ensureInitialized(); + await GetStorage.init(); + await Firebase.initializeApp( + options: DefaultFirebaseOptions.currentPlatform, + ); + + if (!Get.isRegistered()) { + Get.put(NotificationController()); + } + + runApp(const MaterialApp( + debugShowCheckedModeBanner: false, + home: OrderOverlay(), + )); +} + +Future closeOverLay() async { + bool isOverlayActive = await FlutterOverlayWindow.isActive(); + if (isOverlayActive) { + await FlutterOverlayWindow.closeOverlay(); + } +} + +void main() async { + WidgetsFlutterBinding.ensureInitialized(); + await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); + + await WakelockPlus.enable(); + await GetStorage.init(); + Stripe.publishableKey = AK.publishableKeyStripe; + SystemChrome.setPreferredOrientations([ + DeviceOrientation.portraitUp, + DeviceOrientation.portraitDown, + ]); + + runApp(const MyApp()); +} + +class MyApp extends StatefulWidget { + const MyApp({Key? key}) : super(key: key); + + @override + _MyAppState createState() => _MyAppState(); +} + +class _MyAppState extends State with WidgetsBindingObserver { + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addObserver(this); + _initApp(); + } + + @override + void dispose() { + super.dispose(); + } + + Future _initApp() async { + try { + final AppInitializer initializer = AppInitializer(); + await initializer.initializeApp(); + await EncryptionHelper.initialize(); + + if (!Get.isRegistered()) { + Get.put(NotificationController()); + } + + if (!Get.isRegistered()) { + Get.put(FirebaseMessagesController()); + } + + await FirebaseMessaging.instance.requestPermission(); + FirebaseMessaging.onBackgroundMessage(backgroundMessageHandler); + await FirebaseMessagesController().getToken(); + await NotificationController().initNotifications(); + } catch (e) { + Log.print("Error during _initApp: $e"); + } + } + + @override + Widget build(BuildContext context) { + LocaleController localController = Get.put(LocaleController()); + return GetMaterialApp( + navigatorKey: navigatorKey, + title: AppInformation.appName, + translations: MyTranslation(), + debugShowCheckedModeBanner: false, + locale: localController.language, + theme: localController.appTheme, + initialRoute: '/', + getPages: [ + GetPage(name: '/', page: () => SplashScreen()), + GetPage(name: '/order-page', page: () => OrderRequestPage()), + GetPage( + name: '/passenger-location-map', + page: () => PassengerLocationMapPage()), + ], + ); + } +} diff --git a/lib/models/ai_query.sql b/lib/models/ai_query.sql new file mode 100755 index 0000000..c2e7b7b --- /dev/null +++ b/lib/models/ai_query.sql @@ -0,0 +1,154 @@ +-- Retrieving data for a specific passenger complaint: +SELECT + c.id AS complaint_id, + r.id AS ride_id, + p.id AS passenger_id, + p.first_name, + p.last_name, + p.phone, + p.email, + c.complaint_type, + c.description, + c.date_filed, + c.statusComplaint AS complaint_status, + c.resolution, + c.date_resolved +FROM + complaint c +JOIN ride r ON + c.ride_id = r.id +JOIN `passengers` p ON + c.passenger_id = p.id +WHERE + c.complaint_type = 'Passenger' AND c.passenger_id = '100393163265770158312'; + + -- Admin panel dashboard +SELECT + COALESCE(( + SELECT + COUNT(`email`) + FROM + `passengers` + ), 0) AS countPassengers, + COALESCE(( + SELECT + COUNT(`email`) + FROM + `driver` + ), 0) AS countDriver, + COALESCE(( + SELECT + COUNT(`id`) + FROM + `ride` + ), 0) AS countRide, + COALESCE(( + SELECT + COUNT(`id`) + FROM + `passengers` + WHERE + `passengers`.`created_at` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE) + ), 0) AS countPassengersThisMonth, + COALESCE(( + SELECT + COUNT(`id`) + FROM + `ride` + WHERE + `ride`.`created_at` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE) + ), 0) AS countRideThisMonth, + COALESCE(( + SELECT + COUNT(`id`) + FROM + `driver` + WHERE + `driver`.`created_at` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE) + ), 0) AS countDriverThisMonth, + COALESCE(( + SELECT + COUNT(`id`) + FROM + `CarRegistration` + WHERE + `CarRegistration`.`created_at` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE) + ), 0) AS countCarRegistrationThisMonth, + COALESCE(( + SELECT + COUNT(`id`) + FROM + `complaint` + WHERE + `complaint`.`date_filed` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE) + ), 0) AS countComplaintThisMonth, + COALESCE(( + SELECT + COUNT(`id`) + FROM + `complaint` + WHERE + `complaint`.`date_filed` BETWEEN DATE_FORMAT( + DATE_SUB( + CURRENT_DATE, + INTERVAL WEEKDAY(CURRENT_DATE) DAY + ), + '%Y-%m-%d' + ) AND DATE_FORMAT( + DATE_ADD( + DATE_SUB( + CURRENT_DATE, + INTERVAL WEEKDAY(CURRENT_DATE) DAY + ), + INTERVAL 6 DAY + ), + '%Y-%m-%d' + ) + ), 0) AS countComplaintThisWeek, + COALESCE(( + SELECT + COUNT(`id`) + FROM + `complaint` + WHERE + `complaint`.`date_filed` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-%d') AND DATE_FORMAT(CURRENT_DATE, '%Y-%m-%d') + ), 0) AS countComplaintToday, + COALESCE(( + SELECT + SUM(`payments`.`amount`) + FROM + `payments` + WHERE + `payments`.`created_at` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE) + AND + `payments`.`payment_method` IN('visa-in', 'visa', 'visaRide', 'TransferFrom', 'payout', 'TransferTo') + ), 0) AS payments, + COALESCE(( + SELECT + SUM(`driverWallet`.`amount`) + FROM + `driverWallet` + WHERE + `driverWallet`.`dateCreated` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE) + AND + `driverWallet`.`paymentMethod` IN('visa', '') + ), 0) AS driverWallet, + COALESCE(( + SELECT + SUM(`passengerWallet`.`balance`) + FROM + `passengerWallet` + WHERE + `passengerWallet`.`created_at` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE) + ), 0) AS passengerWallet, + COALESCE(( + SELECT + SUM(`seferWallet`.`amount`) + FROM + `seferWallet` + WHERE + `seferWallet`.`createdAt` BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-01') AND LAST_DAY(CURRENT_DATE) + ), 0) AS seferWallet +FROM + `passengers` +LIMIT 1; \ No newline at end of file diff --git a/lib/models/db_sql.dart b/lib/models/db_sql.dart new file mode 100755 index 0000000..ed5d1b5 --- /dev/null +++ b/lib/models/db_sql.dart @@ -0,0 +1,171 @@ +import 'package:sefer_driver/constant/table_names.dart'; +import 'package:sqflite/sqflite.dart'; +import 'package:path/path.dart'; + +class DbSql { + static final DbSql instance = DbSql._(); + + static Database? _database; + + DbSql._(); + + Future get database async { + if (_database != null) return _database!; + _database = await _initDatabase(); + return _database!; + } + + Future _initDatabase() async { + String path = join(await getDatabasesPath(), 'my_database.db'); + return await openDatabase( + path, + version: 3, + onCreate: (db, version) async => await _createTables(db), + onUpgrade: (db, oldVersion, newVersion) async => await _createTables(db), + ); + } + + Future _createTables(Database db) async { + await db.execute(''' + CREATE TABLE IF NOT EXISTS ${TableName.carLocations}( + id INTEGER PRIMARY KEY AUTOINCREMENT, + driver_id TEXT, + latitude REAL, + longitude REAL, + created_at TEXT, + updated_at TEXT + ) + '''); + await db.execute(''' + CREATE TABLE IF NOT EXISTS ${TableName.placesFavorite}( + id INTEGER PRIMARY KEY AUTOINCREMENT, + latitude REAL, + longitude REAL, + name TEXT UNIQUE, + rate TEXT + ) + '''); + await db.execute(''' + CREATE TABLE IF NOT EXISTS ${TableName.recentLocations}( + id INTEGER PRIMARY KEY AUTOINCREMENT, + latitude REAL, + longitude REAL, + name TEXT , + rate TEXT + ) + '''); + await db.execute(''' + CREATE TABLE IF NOT EXISTS ${TableName.driverOrdersRefuse}( + id INTEGER PRIMARY KEY AUTOINCREMENT, + order_id TEXT UNIQUE, + created_at TEXT, + driver_id TEXT + ) + '''); + await db.execute(''' + CREATE TABLE IF NOT EXISTS ${TableName.rideLocation}( + id INTEGER PRIMARY KEY AUTOINCREMENT, + order_id TEXT , + created_at TEXT, + lat TEXT, + lng TEXT + ) + '''); + await db.execute(''' + CREATE TABLE IF NOT EXISTS ${TableName.faceDetectTimes}( + id INTEGER PRIMARY KEY AUTOINCREMENT, + faceDetectTimes INTEGER + ) + '''); + + await db.execute(''' + CREATE TABLE IF NOT EXISTS ${TableName.behavior} ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + driver_id TEXT, + latitude REAL, + longitude REAL, + acceleration REAL, + created_at TEXT, + updated_at TEXT + ); + '''); + await db.execute(''' + CREATE TABLE IF NOT EXISTS ${TableName.captainNotification}( + id INTEGER PRIMARY KEY AUTOINCREMENT, + faceDetectTimes INTEGER + ) + '''); + await db.execute(''' + CREATE TABLE IF NOT EXISTS ${TableName.applyRideFromOverLay}( + id INTEGER PRIMARY KEY AUTOINCREMENT, + start_location_lat TEXT, + start_location_lng TEXT, + end_location_lat TEXT, + end_location_lng TEXT, + total_passenger TEXT, + total_driver TEXT, + duration_to_ride TEXT, + distance TEXT, + driver_id TEXT, + passenger_id TEXT, + passenger_name TEXT, + passenger_token_fcm TEXT, + passenger_phone TEXT, + duration_by_passenger TEXT, + distance_by_passenger TEXT, + is_wallet_checked TEXT, + driver_token TEXT, + duration_to_passenger TEXT, + ride_id TEXT, + ride_timer_begin TEXT, + driver_id_duplicate TEXT, + duration_to_ride_duplicate TEXT, + way_points TEXT, + place_coordinate_0 TEXT, + place_coordinate_1 TEXT, + place_coordinate_2 TEXT, + place_coordinate_3 TEXT, + place_coordinate_4 TEXT, + cost_for_driver TEXT, + passenger_wallet_total TEXT, + passenger_email TEXT, + start_name_address TEXT, + end_name_address TEXT, + car_type TEXT, + kazan TEXT, + passenger_rate TEXT + ) +'''); + } + + Future>> getAllData(String table) async { + Database db = await instance.database; + return await db.query(table); + } + + Future>> getCustomQuery(String query) async { + Database db = await instance.database; + return await db.rawQuery(query); + } + + Future insertData(Map map, String table) async { + Database db = await instance.database; + return await db.insert(table, map); + } + + Future updateData(Map map, String table, int id) async { + Database db = await instance.database; + + return await db.update(table, map, where: 'id = ?', whereArgs: [id]); + } + + Future deleteData(String table, int id) async { + Database db = await instance.database; + return await db.delete(table, where: 'id = ?', whereArgs: [id]); + } + + Future deleteAllData(String table) async { + Database db = await instance.database; + return await db.delete(table); + } +} diff --git a/lib/models/model/admin/monthly_ride.dart b/lib/models/model/admin/monthly_ride.dart new file mode 100755 index 0000000..df4d600 --- /dev/null +++ b/lib/models/model/admin/monthly_ride.dart @@ -0,0 +1,21 @@ +class MonthlyDataModel { + final int year; + final int month; + final int day; + final int ridesCount; + + MonthlyDataModel({ + required this.year, + required this.month, + required this.day, + required this.ridesCount, + }); + + factory MonthlyDataModel.fromJson(Map json) => + MonthlyDataModel( + year: json['year'] as int, + month: json['month'] as int, + day: json['day'] as int, + ridesCount: json['rides_count'] as int, + ); +} diff --git a/lib/models/model/admin/passenger_model.dart b/lib/models/model/admin/passenger_model.dart new file mode 100755 index 0000000..ed920bb --- /dev/null +++ b/lib/models/model/admin/passenger_model.dart @@ -0,0 +1,79 @@ +class Passenger { + String id; + String phone; + String email; + String gender; + String status; + String birthdate; + String site; + String firstName; + String lastName; + String sosPhone; + String education; + String employmentType; + String maritalStatus; + String createdAt; + String updatedAt; + int countPassenger; + int countFeedback; + double ratingPassenger; + int countDriverRate; + int countPassengerCancel; + double passengerAverageRating; + int countPassengerRate; + int countPassengerRide; + + Passenger({ + required this.id, + required this.phone, + required this.email, + required this.gender, + required this.status, + required this.birthdate, + required this.site, + required this.firstName, + required this.lastName, + required this.sosPhone, + required this.education, + required this.employmentType, + required this.maritalStatus, + required this.createdAt, + required this.updatedAt, + required this.countPassenger, + required this.countFeedback, + required this.ratingPassenger, + required this.countDriverRate, + required this.countPassengerCancel, + required this.passengerAverageRating, + required this.countPassengerRate, + required this.countPassengerRide, + }); + + factory Passenger.fromJson(Map json) { + return Passenger( + id: json['id'], + phone: json['phone'], + email: json['email'], + gender: json['gender'], + status: json['status'], + birthdate: json['birthdate'], + site: json['site'], + firstName: json['first_name'], + lastName: json['last_name'], + sosPhone: json['sosPhone'], + education: json['education'], + employmentType: json['employmentType'], + maritalStatus: json['maritalStatus'], + createdAt: json['created_at'], + updatedAt: json['updated_at'], + countPassenger: json['countPassenger'], + countFeedback: json['countFeedback'], + ratingPassenger: json['ratingPassenger'].toDouble(), + countDriverRate: json['countDriverRate'], + countPassengerCancel: json['countPassengerCancel'], + passengerAverageRating: json['passengerAverageRating'].toDouble(), + countPassengerRate: json['countPassengerRate'], + countPassengerRide: json['countPassengerRide'], + ); + } +} diff --git a/lib/models/model/driver/rides_summary_model.dart b/lib/models/model/driver/rides_summary_model.dart new file mode 100755 index 0000000..56973fb --- /dev/null +++ b/lib/models/model/driver/rides_summary_model.dart @@ -0,0 +1,43 @@ +class MonthlyDataModel { + int day; + int totalDuration; + + MonthlyDataModel({required this.day, required this.totalDuration}); + + factory MonthlyDataModel.fromJson(Map json) => + MonthlyDataModel( + day: int.parse(json['day'].toString().split('-')[2]), + totalDuration: + int.parse(json['total_duration'].toString().split(':')[0])); +} + +class MonthlyRideModel { + int day; + int countRide; + int totalCount; + + MonthlyRideModel( + {required this.day, required this.countRide, required this.totalCount}); + + factory MonthlyRideModel.fromJson(Map json) => + MonthlyRideModel( + day: int.parse(json['day'].toString().split('-')[2]), + countRide: int.parse(json['countRide'].toString()), + totalCount: int.parse(json['totalCount'].toString()), + ); +} + +class MonthlyPriceDriverModel { + int day; + // int price; + double pricePerDay; + + MonthlyPriceDriverModel({required this.day, required this.pricePerDay}); + + factory MonthlyPriceDriverModel.fromJson(Map json) => + MonthlyPriceDriverModel( + day: int.parse(json['day'].toString().split('-')[2]), + // price: int.parse(json['price'].toString()), + pricePerDay: double.parse(json['pricePerDay'].toString()), + ); +} diff --git a/lib/models/model/locations.dart b/lib/models/model/locations.dart new file mode 100755 index 0000000..3b18b60 --- /dev/null +++ b/lib/models/model/locations.dart @@ -0,0 +1,34 @@ +class CarLocationModel { + String id; + String driverId; + double latitude; + double heading; + double speed; + double longitude; + DateTime createdAt; + DateTime updatedAt; + + CarLocationModel({ + required this.id, + required this.driverId, + required this.latitude, + required this.longitude, + required this.heading, + required this.speed, + required this.createdAt, + required this.updatedAt, + }); + + factory CarLocationModel.fromJson(Map json) { + return CarLocationModel( + id: json['id'], + driverId: json['driver_id'], + latitude: double.parse(json['latitude'].toString()), + longitude: double.parse(json['longitude'].toString()), + heading: double.parse(json['heading'].toString()), + speed: double.parse(json['speed'].toString()), + createdAt: DateTime.parse(json['created_at']), + updatedAt: DateTime.parse(json['updated_at']), + ); + } +} diff --git a/lib/models/model/onboarding_model.dart b/lib/models/model/onboarding_model.dart new file mode 100755 index 0000000..b845c9f --- /dev/null +++ b/lib/models/model/onboarding_model.dart @@ -0,0 +1,30 @@ +import 'package:get/get.dart'; + +List onBoardingList = [ + OnBoardingModel( + title: 'Welcome to Intaleq!'.tr, + image: 'assets/images/on1.png', + body: + 'Intaleq is the ride-hailing app that is safe, reliable, and accessible.' + .tr, + ), + OnBoardingModel( + title: 'Get to your destination quickly and easily.'.tr, + image: 'assets/images/on2.png', + body: 'With Intaleq, you can get a ride to your destination in minutes.'.tr, + ), + OnBoardingModel( + title: 'Enjoy a safe and comfortable ride.'.tr, + image: 'assets/images/on3.png', + body: + 'Intaleq is committed to safety, and all of our captains are carefully screened and background checked.' + .tr, + ), +]; + +class OnBoardingModel { + final String? title; + final String? image; + final String? body; + OnBoardingModel({this.body, this.title, this.image}); +} diff --git a/lib/models/model/order_data.dart b/lib/models/model/order_data.dart new file mode 100755 index 0000000..62ea9d9 --- /dev/null +++ b/lib/models/model/order_data.dart @@ -0,0 +1,185 @@ +// lib/models/model/order_data.dart + +class OrderData { + final String customerName; + final String customerToken; + final double tripDistanceKm; // The total trip distance in kilometers + final String price; + final String startLocationAddress; + final String endLocationAddress; + + final double + distanceToPassengerKm; // The distance to the passenger in kilometers + final int tripDurationMinutes; // Total trip duration in minutes (rounded up) + final int + durationToPassengerMinutes; // Duration to reach the passenger in minutes (rounded up) + + final String rideType; + final String orderId; + final String passengerId; + final String passengerRate; + + final String? rawStartCoordinates; + final String? rawEndCoordinates; + + OrderData({ + required this.customerName, + required this.customerToken, + required this.tripDistanceKm, + required this.price, + required this.startLocationAddress, + required this.endLocationAddress, + required this.distanceToPassengerKm, + required this.tripDurationMinutes, + required this.durationToPassengerMinutes, + required this.rideType, + required this.orderId, + required this.passengerId, + required this.passengerRate, + this.rawStartCoordinates, + this.rawEndCoordinates, + }); + + // --- NEW: Factory constructor to create an instance from a Map --- + // This is the missing method that was causing the error. + factory OrderData.fromMap(Map map) { + return OrderData( + // For strings, provide a default value in case the map key is null + customerName: map['customerName']?.toString() ?? 'Unknown Customer', + customerToken: map['customerToken']?.toString() ?? 'Unknown token', + + // For numbers, cast from 'num' to handle both int and double, with a default value + tripDistanceKm: (map['tripDistanceKm'] as num?)?.toDouble() ?? 0.0, + + price: map['price']?.toString() ?? '0', + startLocationAddress: + map['startLocationAddress']?.toString() ?? 'Unknown Address', + endLocationAddress: + map['endLocationAddress']?.toString() ?? 'Unknown Address', + + distanceToPassengerKm: + (map['distanceToPassengerKm'] as num?)?.toDouble() ?? 0.0, + + tripDurationMinutes: (map['tripDurationMinutes'] as num?)?.toInt() ?? 0, + durationToPassengerMinutes: + (map['durationToPassengerMinutes'] as num?)?.toInt() ?? 0, + + rideType: map['rideType']?.toString() ?? 'Unknown', + orderId: map['orderId']?.toString() ?? 'N/A', + passengerId: map['passengerId']?.toString() ?? 'N/A', + passengerRate: map['passengerRate']?.toString() ?? 'N/A', + + // For nullable strings, direct access is fine as it returns null if the key doesn't exist + rawStartCoordinates: map['rawStartCoordinates'], + rawEndCoordinates: map['rawEndCoordinates'], + ); + } + + // A helper function to convert seconds to rounded-up minutes + static int _secondsToRoundedUpMinutes(String secondsString) { + final seconds = double.tryParse(secondsString) ?? 0.0; + if (seconds <= 0) return 0; + return (seconds / 60) + .ceil(); // .ceil() rounds up (e.g., 0.1 minutes becomes 1 minute) + } + + // Your existing factory for creating an instance from a List + factory OrderData.fromList(List list) { + double distanceToPassengerMeters = + list.length > 12 ? (double.tryParse(list[12].toString()) ?? 0.0) : 0.0; + + return OrderData( + customerName: list.length > 8 ? list[8].toString() : 'Unknown Customer', + customerToken: list.length > 9 ? list[9].toString() : 'Unknown token', + tripDistanceKm: + list.length > 5 ? (double.tryParse(list[5].toString()) ?? 0.0) : 0.0, + price: list.length > 2 ? list[2].toString().split('.')[0] : '0', + startLocationAddress: + list.length > 29 ? list[29].toString() : 'Unknown Address', + endLocationAddress: + list.length > 30 ? list[30].toString() : 'Unknown Address', + + distanceToPassengerKm: + distanceToPassengerMeters / 1000.0, // Convert meters to kilometers + + tripDurationMinutes: + list.length > 4 ? _secondsToRoundedUpMinutes(list[4].toString()) : 0, + durationToPassengerMinutes: list.length > 15 + ? _secondsToRoundedUpMinutes(list[15].toString()) + : 0, + + rideType: + list.length > 31 ? _getRideType(list[31].toString()) : 'Unknown', + orderId: list.length > 16 ? list[16].toString() : 'N/A', + passengerId: list.length > 7 ? list[7].toString() : 'N/A', + passengerRate: list.length > 33 ? list[33].toString() : 'N/A', + + rawStartCoordinates: list.isNotEmpty ? list[0].toString() : null, + rawEndCoordinates: list.length > 1 ? list[1].toString() : null, + ); + } + + static String _getRideType(String type) { + switch (type) { + case 'Comfort': + return 'â€ÙƒÙ…Ùورت â„ï¸'; + case 'Lady': + return 'â€Ù„يدي 👩'; + case 'Speed': + return 'â€â€â€Ø³Ø¨ÙŠØ¯ 🔻'; + case 'Mashwari': + return 'â€Ù…شواري'; + case 'Rayeh Gai': + return 'رايح جاي'; + default: + return type; + } + } + + // Getter to parse start coordinates + Map? get startCoordinates { + if (rawStartCoordinates == null) return null; + final parts = rawStartCoordinates!.split(','); + if (parts.length == 2) { + return { + 'lat': double.tryParse(parts[0].trim()), + 'lng': double.tryParse(parts[1].trim()) + }; + } + return null; + } + + // Getter to parse end coordinates + Map? get endCoordinates { + if (rawEndCoordinates == null) return null; + final parts = rawEndCoordinates!.split(','); + if (parts.length == 2) { + return { + 'lat': double.tryParse(parts[0].trim()), + 'lng': double.tryParse(parts[1].trim()) + }; + } + return null; + } + + // Your existing method to convert the object TO a Map. + // This is used to pass the data from the overlay to the main app. + Map toMap() { + return { + 'customerName': customerName, + 'tripDistanceKm': tripDistanceKm, + 'price': price, + 'startLocationAddress': startLocationAddress, + 'endLocationAddress': endLocationAddress, + 'distanceToPassengerKm': distanceToPassengerKm, + 'tripDurationMinutes': tripDurationMinutes, + 'durationToPassengerMinutes': durationToPassengerMinutes, + 'rideType': rideType, + 'orderId': orderId, + 'passengerId': passengerId, + 'passengerRate': passengerRate, + 'rawStartCoordinates': rawStartCoordinates, + 'rawEndCoordinates': rawEndCoordinates, + }; + } +} diff --git a/lib/models/overlay_service.dart b/lib/models/overlay_service.dart new file mode 100644 index 0000000..64d74a3 --- /dev/null +++ b/lib/models/overlay_service.dart @@ -0,0 +1,13 @@ +import 'package:flutter/services.dart'; + +class OverlayMethodChannel { + static const _channel = MethodChannel('com.sefer_driver/app_control'); + + static Future bringToForeground() async { + try { + await _channel.invokeMethod('bringToForeground'); + } on PlatformException catch (e) { + print('Error bringing app to foreground: $e'); + } + } +} diff --git a/lib/onbording_page.dart b/lib/onbording_page.dart new file mode 100755 index 0000000..c676aee --- /dev/null +++ b/lib/onbording_page.dart @@ -0,0 +1,113 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import 'constant/colors.dart'; +import 'controller/auth/onboarding_controller.dart'; +import 'models/model/onboarding_model.dart'; + +// The main PageView widget, now cleaner. +class CustomSliderOnBoarding extends GetView { + const CustomSliderOnBoarding({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return PageView.builder( + controller: controller.pageController, + onPageChanged: (val) { + controller.onPageChanged(val); + }, + itemCount: onBoardingList.length, + itemBuilder: (context, i) => OnBoardingPageContent( + model: onBoardingList[i], + ), + ); + } +} + +// This is the new widget for the content of each onboarding page. +class OnBoardingPageContent extends StatelessWidget { + final OnBoardingModel model; + + const OnBoardingPageContent({Key? key, required this.model}) + : super(key: key); + + @override + Widget build(BuildContext context) { + // Use the app's text theme for consistent styling + final textTheme = Theme.of(context).textTheme; + + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 20.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const Spacer(flex: 2), // Pushes content down + ClipRRect( + borderRadius: + BorderRadius.circular(20.0), // Rounded corners for the image + child: Image.asset( + model.image!, + height: Get.width * 0.6, // Slightly larger image + width: Get.width * 0.8, + fit: BoxFit.cover, // BoxFit.cover prevents image distortion + ), + ), + const Spacer(flex: 2), + Text( + model.title!, + textAlign: TextAlign.center, + style: textTheme.displayLarge?.copyWith( + color: AppColor.primaryColor, + fontWeight: FontWeight.bold, + fontSize: 24, // Consistent font size + ), + ), + const SizedBox(height: 16), + Text( + model.body!, + textAlign: TextAlign.center, + style: textTheme.titleMedium?.copyWith( + color: AppColor.accentColor, + height: 1.5, // Improved line spacing + fontSize: 16), + ), + const Spacer(flex: 3), // Pushes the content up from the dots + ], + ), + ); + } +} + +// The refined dot controller. +class CustomDotControllerOnBoarding extends StatelessWidget { + const CustomDotControllerOnBoarding({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return GetBuilder( + builder: (controller) => Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ...List.generate( + onBoardingList.length, + (index) => AnimatedContainer( + margin: const EdgeInsets.only(right: 8), // Increased spacing + duration: const Duration(milliseconds: 400), + width: controller.currentPage == index + ? 25 + : 8, // More distinct width change + height: 8, + decoration: BoxDecoration( + // Use a lighter color for inactive dots + color: controller.currentPage == index + ? AppColor.primaryColor + : AppColor.primaryColor.withOpacity(0.3), + borderRadius: BorderRadius.circular(10), + ), + ), + ) + ], + ), + ); + } +} diff --git a/lib/print.dart b/lib/print.dart new file mode 100755 index 0000000..ccc2fb5 --- /dev/null +++ b/lib/print.dart @@ -0,0 +1,13 @@ +import 'dart:developer' as developer; + +class Log { + Log._(); + + static void print(String value, {StackTrace? stackTrace}) { + developer.log(value, name: 'LOG', stackTrace: stackTrace); + } + + static Object? inspect(Object? object) { + return developer.inspect(object); + } +} diff --git a/lib/splash_screen_page.dart b/lib/splash_screen_page.dart new file mode 100755 index 0000000..dba0067 --- /dev/null +++ b/lib/splash_screen_page.dart @@ -0,0 +1,128 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'controller/home/splash_screen_controlle.dart'; +import 'main.dart'; + +class SplashScreen extends StatelessWidget { + const SplashScreen({super.key}); + + @override + Widget build(BuildContext context) { + final SplashScreenController splashScreenController = + Get.put(SplashScreenController()); + final textTheme = Theme.of(context).textTheme; + final size = MediaQuery.of(context).size; + + // Define our new green color palette here + const Color primaryGreen = Color(0xFF1A535C); + const Color secondaryGreen = Color(0xFF4ECDC4); + const Color logoBackgroundColor = Colors.white; + const Color logoIconColor = primaryGreen; + const Color textColor = Colors.white; + + return Scaffold( + body: Container( + width: double.infinity, + height: double.infinity, + decoration: const BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + primaryGreen, + secondaryGreen, + ], + ), + ), + child: Stack( + children: [ + // Centered Logo and Slogan with Animation + Center( + child: AnimatedBuilder( + animation: splashScreenController.animation, + builder: (context, child) => FadeTransition( + opacity: splashScreenController.animation, + child: Transform.translate( + offset: Offset( + 0, 50 * (1 - splashScreenController.animation.value)), + child: child, + ), + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // Elegant and Clear Logo + Container( + padding: const EdgeInsets.all(25), + decoration: const BoxDecoration( + shape: BoxShape.circle, + color: logoBackgroundColor, + boxShadow: [ + BoxShadow( + color: Colors.black26, + blurRadius: 10, + offset: Offset(0, 4), + ) + ]), + child: Image.asset('assets/images/logo.gif'), + ), + const SizedBox(height: 24), + // App Name - now using a variable for color + Text( + 'Intaleq', // Replace with AppInformation.appName if needed + style: textTheme.headlineMedium?.copyWith( + color: textColor, + fontWeight: FontWeight.bold, + letterSpacing: 2, + ), + ), + const SizedBox(height: 12), + // Slogan - now using a variable for color + Text( + 'Your Journey Begins Here'.tr, + style: textTheme.titleMedium?.copyWith( + color: textColor.withOpacity(0.9), + ), + ), + ], + ), + ), + ), + + // Bottom Loading Bar and Version Info + Align( + alignment: Alignment.bottomCenter, + child: Padding( + padding: EdgeInsets.only( + bottom: size.height * 0.05, left: 40, right: 40), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Obx(() => ClipRRect( + borderRadius: BorderRadius.circular(10), + child: LinearProgressIndicator( + value: splashScreenController.progress.value, + backgroundColor: textColor.withOpacity(0.2), + valueColor: + const AlwaysStoppedAnimation(textColor), + minHeight: 5, + ), + )), + const SizedBox(height: 16), + Text( + 'Version: ${box.read(BoxName.packagInfo) ?? '1.0.0'}', + style: textTheme.bodySmall?.copyWith( + color: textColor.withOpacity(0.7), + ), + ), + ], + ), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/translations_ar.json b/lib/translations_ar.json new file mode 100644 index 0000000..7c3a703 --- /dev/null +++ b/lib/translations_ar.json @@ -0,0 +1,753 @@ +{ + "You have finished all times ": "", + "Are you sure to cancel?": "", + "Enter your first name": "", + "License Categories": "", + "Expired Driver’s License": "", + "Please enter an phone address": "", + "Approve Driver Documents": "", + "km": "", + "Recharge my Account": "", + "You have received a gift token!": "", + "\\)'), // context.tr(": "", + "You will choose one of above !": "", + "ID Documents Front": "", + "Select Your Country": "", + "I Agree": "", + "Not updated": "", + " in your wallet": "", + "You have successfully charged your account": "", + "your ride is applied": "", + "Criminal Document Required": "", + "Show my Cars": "", + "Pay": "", + "\\)\"), // tr(": "", + "No questions asked yet.": "", + "Please enter a health insurance status.": "", + "Order Cancelled by Passenger": "", + "You must be recharge your Account": "", + "Contact us for any questions on your order.": "", + "JOD": "", + "Transaction successful": "", + "\\$": "", + "You should restart app to change language": "", + "from 23:59 till 05:30": "", + "Are you Sure to LogOut?": "", + "Please wait": "", + "If You Want be Driver \\nClick Here.": "", + "Total price from ": "", + "You don't have enough money in your SEFER wallet": "", + "Enter phone number": "", + "Help Details": "", + "Car Kind": "", + "Passenger come to you": "", + "Would you like to proceed with health insurance?": "", + "car_model": "", + "This ride is already taken by another driver.": "", + "No Response yet.": "", + "Reject": "", + "GPS Required Allow !.": "", + "Are you sure you want to cancel this trip?": "", + "The order Accepted by another Driver": "", + "Submit Rating": "", + "\\.tr\\(\\)\"), // ": "", + "I Arrive": "", + "Distance is": "", + "What are the order details we provide to you?": "", + "Toggle Traffic": "", + "General Authority For Supply Commodities": "", + "Error fetching rides. Please try again.": "", + "Please enter Your Email.": "", + "Health Insurance": "", + "Please enter your first name.": "", + "Payment Method": "", + "wallet_credited_message": "", + "similar": "", + "Send Invite": "", + "Refuse Order": "", + "Driver Is Going To Passenger": "", + "Ride Summaries": "", + "Flag-down fee": "", + "Expiry Date: ": "", + "Morning Promo": "", + "Total Connection Duration:": "", + "Capture Image of Non-Egyptian ID Back": "", + "Egyptian Gulf Bank": "", + "You can change the language of the app": "", + "gender": "", + "Type something": "", + "No data yet!": "", + "face detect": "", + "Transfer": "", + "Marital Status": "", + "Edit Profile": "", + "Capture Image of Non-Egyptian ID Front": "", + "Tax Expiry Date": "", + "Drivers": "", + "Enter your feedback here": "", + "Send Verfication Code": "", + "Account": "", + "Male": "", + "Total Invites": "", + "scams operations": "", + "incorrect_document_title": "", + "High School Diploma": "", + "ID Mismatch": "", + "An error occurred while saving driver data": "", + "Code approved": "", + "Cost Of Trip IS ": "", + "You deserve the gift": "", + "License Type": "", + "Detect Your Face ": "", + "Go to passenger Location": "", + "you must insert token code ": "", + "Delete": "", + "id_card_back": "", + "OrderId": "", + "Show maintenance center near my location": "", + "OK": "", + "Can I cancel my ride?": "", + "year :": "", + "$pricePoint": "", + "car_plate": "", + "Password": "", + "minutes before trying again.": "", + "Hi ,I will go now": "", + "Insert Wallet phone number": "", + "Please check back later for available rides.": "", + "has been added to your budget": "", + "Scan ID Tesseract": "", + "Weekly Budget": "", + "Add Question": "", + "Deleted": "", + "Displacement": "", + "Drivers License Class: ": "", + "Pay with Wallet": "", + "Welcome to Tripz!": "", + "from 3 times Take Attention": "", + "Times of Trip": "", + "The driver accepted your trip": "", + "How to use SEFER": "", + "Not Connected": "", + "An error occurred while picking contacts: $e": "", + "Install our app:": "", + "before": "", + "Capture an Image of Your Driver License": "", + "Change Country": "", + "Faisal Islamic Bank of Egypt": "", + " SAFAR Wallet": "", + "Made :": "", + "*Tripz DRIVER CODE*": "", + "*Tripz APP CODE*": "", + "\\)'), // tr(context, ": "", + "Scan ID Api": "", + "What types of vehicles are available?": "", + "id_card_front": "", + "Camera Access Denied.": "", + "You should use Touch ID or Face ID to confirm payment": "", + "you can show video how to setup": "", + "Banque Misr": "", + "Log Out Page": "", + "phone number of driver": "", + "Send Email": "", + "Image detecting result is ": "", + "Slide to End Trip": "", + "You have got a gift": "", + "You have 50": "", + "You have gift 300 L.E": "", + "Status is": "", + ", obfuscate: true)\n static final String secretKey = _Env.secretKey;\n\n @EnviedField(varName: ": "", + ". I am at least 18 years of age.": "", + "birthdate": "", + "Speed Order": "", + "Sign In by Google": "", + "You Are Stopped For this Day !": "", + "What safety measures does Sefer offer?": "", + "Total budgets on month": "", + "Verify Email For Driver": "", + "OrderVIP": "", + "Enter your Question here": "", + "Document Number: ": "", + "Expiration Date": "", + "Please enter your last name.": "", + "Emergency Number": "", + "Language Options": "", + "Insert card number": "", + "Percent Completed": "", + "No data yet": "", + "joined": "", + "Total net": "", + "My current location is:": "", + "Age": "", + "Do you have a disease for a long time?": "", + "History of Trip": "", + "MIDBANK": "", + "I've been trying to reach you but your phone is off.": "", + "Non Egypt": "", + "Why do you want to cancel this trip?": "", + "National ID": "", + "Arab Investment Bank": "", + "Order Under Review": "", + "Hi": "", + "National Number": "", + "Suez Canal Bank": "", + "Which method you will pay": "", + "Your location is being tracked in the background.": "", + "BookingFee": "", + "Rate Passenger": "", + "Total Budget from trips is ": "", + "Passenger Name is": "", + "Choose a contact option": "", + "Frequently Questions": "", + "No Promo for today .": "", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": "", + "Address": "", + "\\)\"), // tr(context, ": "", + "A promotion record for this driver already exists for today.": "", + "Choose from contact": "", + "Occupation": "", + "Fuel": "", + "ID Documents Back": "", + "Trip has Steps": "", + "Evening": "", + "Yes": "", + "re eligible for a special offer!": "", + "Today": "", + "error_processing_document": "", + "Citi Bank N.A. Egypt": "", + "Submit": "", + "Reject Order": "", + "What is Types of Trips in Sefer?": "", + "\\.tr'), // ": "", + "string": "", + "Please slow down": "", + "Insert Account Bank": "", + "Most Secure Methods": "", + "Total Points is": "", + "Driver Wallet": "", + "Activities": "", + "Payment Successful": "", + "You haven't moved sufficiently!": "", + "Days": "", + "Card ID": "", + "Take Picture Of Driver License Card": "", + "H and": "", + "Vehicle Details Front": "", + "The payment was not approved. Please try again.": "", + "Please make sure to read the license carefully.": "", + "Hello, this is Driver": "", + "Log Off": "", + ",\n ": "", + "Morning": "", + "s License": "", + "Non-Egyptian ID Front": "", + "Do you want to collect your earnings?": "", + "passenger amount to me": "", + "--": "", + "Counts of budgets on days": "", + "Minimum fare": "", + "Commercial International Bank - Egypt S.A.E": "", + "Change Map Type": "", + "Sign in with Google for easier email and name entry": "", + "Pyament Cancelled .": "", + "Be sure for take accurate images please\\nYou have": "", + "Error": "", + "Email Us": "", + "Sign in with Apple": "", + "Please upload this license.": "", + "Accept Order": "", + "Email": "", + "An error occurred during the payment process.": "", + "Helping Center": "", + "car_license_front": "", + "Choose Language": "", + "car_license_back": "", + "You have transfer to your wallet from": "", + "Hi ,I Arrive your site": "", + "Your Journey Begins Here": "", + "Please enter your City.": "", + "Show My Trip Count": "", + "My Location": "", + "VIP Order Accepted": "", + "Authentication failed": "", + "Next": "", + "Wallet": "", + "image verified": "", + "Take Picture Of ID Card": "", + "detected": "", + "We sent 5 digit to your Email provided": "", + "Pay from my budget": "", + "Value": "", + "You can buy points from your budget": "", + "Accepted Ride": "", + "change device": "", + "Year": "", + "\\)\"), // context.tr(": "", + "You will receive code in sms message": "", + "you will pay to Driver": "", + "Arab African International Bank": "", + "Scan Id": "", + "Enable Location Permission": "", + "DOB": "", + "Image Upload Failed": "", + "Price is": "", + "Enter your phone number": "", + "Apply": "", + "Model": "", + "Full Name": "", + "Help & Support": "", + "The price must be over than ": "", + "You dont have Points": "", + "Code not approved": "", + "Scan Driver License": "", + "Cancel Trip": "", + "you can buy ": "", + "There is no help Question here": "", + "you will use this device?": "", + "Percent Rejected": "", + "complete, you can claim your gift": "", + "Ok I will go now.": "", + "â€Ù…دة الرحلة": "", + "\\.tr\\(\\)'), // ": "", + "Inspection Date": "", + "Camera not initilaized yet": "", + "Share the app with another new passenger": "", + "Passengers": "", + "go to your passenger location before\\nPassenger cancel trip": "", + "Call Left": "", + "We are process picture please wait ": "", + "How can I register as a driver?": "", + "Login": "", + "Please enter your question": "", + "Transfer budget": "", + "Press here": "", + "Order ID": "", + "You are Stopped": "", + "Canceled Orders": "", + "Is the Passenger in your Car?": "", + "There is no notification yet": "", + "Profile": "", + "Update Education": "", + "Total rides on month": "", + "Email you inserted is Wrong.": "", + "No face detected": "", + "Name :": "", + "Charge your Account": "", + "You can change the Country to get all features": "", + "Are you sure to delete your account?": "", + "Phone Number wrong": "", + "Afternoon Promo": "", + "MyLocation": "", + "Enter phone": "", + "start": "", + "Plate Number": "", + "App Preferences": "", + "Updated": "", + "Start the Ride": "", + "vin": "", + "National Bank of Kuwait – Egypt": "", + "Please don't be late": "", + "The order has been accepted by another driver.": "", + "Thanks": "", + "ÙExpire Date": "", + "Connected": "", + "Feedback data saved successfully": "", + "Maintenance Center": "", + "deleted": "", + "Wallet Added": "", + "unknown_document": "", + "You have upload Criminal documents": "", + "Select Country": "", + "Insert Emergency Number": "", + "Alert": "", + "Security Warning": "", + "Add bank Account": "", + "No I want": "", + "Submit rating": "", + "Remaining time": "", + "Trip Detail": "", + "Date of Birth": "", + "Your Rewards": "", + "Night": "", + "General": "", + "Share App": "", + "seconds": "", + "Ok": "", + ": ": "", + "Total Price is ": "", + "Percent Canceled": "", + "First Abu Dhabi Bank": "", + "Type your Email": "", + "Vibration": "", + "your ride is Accepted": "", + "Contact Us": "", + "Car Plate": "", + "How can I pay for my ride?": "", + "Call Income from Passenger": "", + "Wallet Added${(remainingFee).toStringAsFixed(0)}": "", + "300 LE": "", + "s Degree": "", + "The Amount is less than": "", + "No orders available": "", + "Transaction failed": "", + "Please enter a valid email.": "", + "Your rating has been submitted.": "", + "Drivers License Class": "", + " Total weekly is ": "", + "Select a quick message": "", + "Abu Dhabi Islamic Bank – Egypt": "", + "No invitation found yet!": "", + "Get to your destination quickly and easily.": "", + "Rejected Orders": "", + "You Should choose rate figure": "", + "Pay with Credit Card": "", + "Use this code in registration": "", + "token updated": "", + "Name (Arabic)": "", + "Enter your Note": "", + "Your Name is Wrong": "", + "Accept": "", + "Passenger Cancel Trip": "", + "This for new registration": "", + "Make": "", + "Home": "", + ">Arabic (Egypt)\n \n \n Arabic (Egypt)\n \n \n 0) { + ratingController + .submitRating(ratingController.userRating.value); + Get.snackbar( + "Thank You!".tr, + "Your rating has been submitted.".tr, + backgroundColor: CupertinoColors.systemGrey6, + snackPosition: SnackPosition.BOTTOM, + margin: const EdgeInsets.all(16), + borderRadius: 12, + ); + } else { + Get.snackbar( + "Error".tr, + "Please select a rating before submitting.".tr, + backgroundColor: CupertinoColors.systemRed, + snackPosition: SnackPosition.BOTTOM, + margin: const EdgeInsets.all(16), + borderRadius: 12, + ); + } + }, + child: Text( + "Submit Rating".tr, + style: const TextStyle( + color: CupertinoColors.white, + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), + ), + ], + ), + ); + }), + ), + ), + ), + ); + } + + // Widget for building rating stars with animations + Widget _buildRatingStars() { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: List.generate(5, (index) { + return GestureDetector( + onTap: () { + ratingController.userRating.value = index + 1; + }, + child: AnimatedContainer( + duration: const Duration(milliseconds: 300), + margin: const EdgeInsets.symmetric(horizontal: 4), + child: Icon( + CupertinoIcons.star_fill, + size: 40, + color: index < ratingController.userRating.value + ? CupertinoColors.systemYellow + : CupertinoColors.systemGrey3, + ), + ), + ); + }), + ); + } +} diff --git a/lib/views/Rate/rate_passenger.dart b/lib/views/Rate/rate_passenger.dart new file mode 100755 index 0000000..f397746 --- /dev/null +++ b/lib/views/Rate/rate_passenger.dart @@ -0,0 +1,258 @@ +import 'package:sefer_driver/controller/home/captin/map_driver_controller.dart'; +import 'package:sefer_driver/views/widgets/my_textField.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; +import 'package:flutter_rating_bar/flutter_rating_bar.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; + +import '../../constant/style.dart'; +import '../../controller/rate/rate_conroller.dart'; + +class RatePassenger extends StatelessWidget { + final RateController controller = Get.put(RateController()); + + RatePassenger({super.key}); + + @override + Widget build(BuildContext context) { + return MyScafolld( + title: 'Rate Passenger'.tr, + body: [ + GetBuilder(builder: (controller) { + return Positioned( + top: 40, + left: Get.width * .1, + right: Get.width * .1, + child: Container( + decoration: AppStyle.boxDecoration, + child: Column( + children: [ + Padding( + padding: const EdgeInsets.all(4), + child: Container( + height: Get.height * .25, + decoration: AppStyle.boxDecoration1, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + '${'Total price from '.tr}${Get.find().passengerName}', + style: AppStyle.title, + ), + Container( + decoration: BoxDecoration( + border: Border.all( + width: 2, + color: AppColor.redColor, + )), + child: Padding( + padding: const EdgeInsets.all(4), + child: Text( + (double.parse(controller.price.toString()) - + double.parse(controller.price + .toString()) * + .12) + .toStringAsFixed(2), + style: AppStyle.number.copyWith( + color: AppColor.redColor, + textBaseline: TextBaseline.ideographic, + decoration: TextDecoration.lineThrough, + decorationColor: AppColor.redColor), + ), + ), + ), + const SizedBox( + height: 10, + ), + Container( + decoration: BoxDecoration( + border: Border.all( + width: 2, + color: AppColor.greenColor, + )), + child: Padding( + padding: const EdgeInsets.all(4), + child: Text( + Get.find() + .paymentAmount, + style: AppStyle.number, + ), + ), + ), + const SizedBox( + height: 10, + ), + Text( + 'Exclusive offers and discounts always with the Sefer app' + .tr, + textAlign: TextAlign.center, + style: AppStyle.title + .copyWith(color: AppColor.redColor), + ) + ], + )), + ), + controller.walletChecked != 'true' + ? controller.ispassengerWantWalletFromDriver + ? Container( + decoration: AppStyle.boxDecoration1, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + children: [ + Text( + "How much Passenger pay?".tr, + style: AppStyle.title, + ), + Form( + key: controller.formKey, + child: MyTextForm( + controller: + controller.passengerPayAmount, + label: "passenger amount to me".tr, + hint: "passenger amount to me".tr, + type: const TextInputType + .numberWithOptions(decimal: true), + ), + ), + MyElevatedButton( + title: "Press here".tr, + onPressed: () { + controller.addPassengerWallet(); + }, + ) + ], + ), + ), + ) + : Container( + width: Get.width * .73, + decoration: AppStyle.boxDecoration1, + child: Column( + children: [ + Text( + "Would the passenger like to settle the remaining fare using their wallet?" + .tr, + style: AppStyle.title, + textAlign: TextAlign.center, + ), + MyElevatedButton( + title: "Press here".tr, + onPressed: () { + controller.passengerWantPay(); + }, + ) + ], + ), + ) + : const SizedBox(), + const SizedBox( + height: 20, + ), + Center( + child: RatingBar.builder( + initialRating: 0, + itemCount: 5, + itemSize: 50, + itemPadding: const EdgeInsets.symmetric(horizontal: 2), + itemBuilder: (context, index) { + switch (index) { + case 0: + return const Icon( + Icons.sentiment_very_dissatisfied, + color: Colors.red, + ); + case 1: + return const Icon( + Icons.sentiment_dissatisfied, + color: Colors.redAccent, + ); + case 2: + return const Icon( + Icons.sentiment_neutral, + color: Colors.amber, + ); + case 3: + return const Icon( + Icons.sentiment_satisfied, + color: Colors.lightGreen, + ); + case 4: + return const Icon( + Icons.sentiment_very_satisfied, + color: Colors.green, + ); + default: + return const Icon( + Icons.sentiment_neutral, + color: Colors.amber, + ); + } // + }, + onRatingUpdate: (rating) { + controller.selectRateItem(rating); + }, + ), + ), + const SizedBox( + height: 20, + ), + SizedBox( + width: Get.width * .75, + child: TextFormField( + maxLines: 4, + minLines: 1, + keyboardType: TextInputType.multiline, + controller: controller.comment, + decoration: InputDecoration( + labelText: 'Enter your Note'.tr, + hintText: 'Type something...', + prefixIcon: const Icon( + Icons.rate_review), // Add an icon as a prefix + suffixIcon: IconButton( + icon: const Icon( + Icons.clear, + color: AppColor.redColor, + ), // Add an icon as a suffix + onPressed: () { + controller.comment.clear(); + }, + ), + border: + const OutlineInputBorder(), // Add a border around the input field + enabledBorder: const OutlineInputBorder( + borderSide: BorderSide( + color: + Colors.blue), // Customize the border color + ), + focusedBorder: const OutlineInputBorder( + borderSide: BorderSide( + color: Colors + .green), // Customize the border color when focused + ), + errorBorder: const OutlineInputBorder( + borderSide: BorderSide( + color: Colors + .red), // Customize the border color when there's an error + ), + ), + ), + ), + const SizedBox( + height: 20, + ), + MyElevatedButton( + title: 'Submit rating'.tr, + onPressed: () => controller.addRateToPassenger()) + ], + ), + )); + }), + ], + isleading: false, + ); + } +} diff --git a/lib/views/Rate/ride_calculate_driver.dart b/lib/views/Rate/ride_calculate_driver.dart new file mode 100755 index 0000000..2986eca --- /dev/null +++ b/lib/views/Rate/ride_calculate_driver.dart @@ -0,0 +1,484 @@ +import 'package:fl_chart/fl_chart.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/info.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; +import 'package:sefer_driver/views/widgets/mycircular.dart'; +import 'package:intl/intl.dart'; +import '../../controller/home/captin/duration_controller .dart'; + +class RideCalculateDriver extends StatelessWidget { + RideCalculateDriver({super.key}); + // DurationController durationController = Get.put(DurationController()); + + @override + Widget build(BuildContext context) { + Get.put(DurationController()); + return MyScafolld( + title: 'Ride Summaries'.tr, + body: [ + Center( + child: GetBuilder( + builder: (durationController) => durationController.isLoading + ? const Center(child: MyCircularProgressIndicator()) + : durationController.jsonData1.isEmpty || + durationController.jsonData2.isEmpty + ? Center( + child: Text('No data yet!'.tr), + ) + : ListView( + // mainAxisAlignment: MainAxisAlignment.start, + // crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + '${'Average of Hours of'.tr} ${AppInformation.appName}${' is ON for this month'.tr}${' ${durationController.jsonData1['message'][0]['day'].toString().split('-')[1]}'.tr}', + style: AppStyle.title, + textAlign: TextAlign.center, + ), + Padding( + padding: const EdgeInsets.all(6), + child: Container( + decoration: AppStyle.boxDecoration1, + height: Get.height * .4, + child: LineChart( + duration: const Duration(milliseconds: 150), + curve: Curves.ease, + LineChartData( + lineBarsData: [ + LineChartBarData( + isStepLineChart: true, + spots: durationController.chartData, + isCurved: true, + color: Colors + .deepPurpleAccent, // Custom color + barWidth: 3, // Thinner line + dotData: const FlDotData( + show: + true), // Show dots on each point + belowBarData: BarAreaData( + // Add gradient fill below the line + show: true, + color: AppColor.deepPurpleAccent, + ), + isStrokeJoinRound: true, + shadow: const BoxShadow( + color: AppColor.yellowColor, + blurRadius: 4, + offset: Offset(2, 2), + ), + ), + ], + showingTooltipIndicators: const [], + titlesData: FlTitlesData( + show: true, + topTitles: AxisTitles( + axisNameWidget: Text( + 'Days'.tr, + style: AppStyle.title, + ), + axisNameSize: 30, + ), + bottomTitles: AxisTitles( + axisNameWidget: Text( + 'Total Hours on month'.tr, + style: AppStyle.title, + ), + axisNameSize: 30, + sideTitles: const SideTitles( + reservedSize: 30, + showTitles: true)), + leftTitles: AxisTitles( + axisNameWidget: Text( + 'Counts of Hours on days'.tr, + style: AppStyle.title, + ), + axisNameSize: 30, + sideTitles: const SideTitles( + reservedSize: 30, + showTitles: true)), + ), + gridData: const FlGridData( + show: true, + ), + borderData: FlBorderData( + show: true, + border: const Border( + bottom: BorderSide( + color: AppColor.accentColor), + left: BorderSide( + color: AppColor.accentColor), + ), + ), + ), + ), + ), + ), + const SizedBox( + height: 5, + ), + Padding( + padding: const EdgeInsets.all(6), + child: Container( + decoration: AppStyle.boxDecoration1, + height: Get.height * .4, + child: LineChart( + duration: const Duration(milliseconds: 150), + curve: Curves.ease, + LineChartData( + lineBarsData: [ + LineChartBarData( + spots: durationController.chartRideCount, + // isCurved: true, + color: Colors + .deepPurpleAccent, // Custom color + barWidth: 3, // Thinner line + dotData: const FlDotData( + show: + true), // Show dots on each point + belowBarData: BarAreaData( + // Add gradient fill below the line + show: true, + color: AppColor.deepPurpleAccent, + ), + isStrokeJoinRound: true, + shadow: const BoxShadow( + color: AppColor.yellowColor, + blurRadius: 4, + offset: Offset(2, 2), + ), + ), + ], + showingTooltipIndicators: const [], + titlesData: FlTitlesData( + show: true, + topTitles: AxisTitles( + axisNameWidget: Text( + 'Days'.tr, + style: AppStyle.title, + ), + axisNameSize: 30, + // sideTitles: const SideTitles( + // reservedSize: 30, showTitles: true), + ), + bottomTitles: AxisTitles( + axisNameWidget: Text( + '${"Total rides on month".tr} = ${durationController.jsonData2['message'][0]['totalCount'].toString()}' + .tr, + style: AppStyle.title, + ), + axisNameSize: 30, + sideTitles: const SideTitles( + reservedSize: 30, + showTitles: true)), + leftTitles: AxisTitles( + axisNameWidget: Text( + 'Counts of rides on days'.tr, + style: AppStyle.title, + ), + axisNameSize: 30, + sideTitles: const SideTitles( + reservedSize: 30, + showTitles: true)), + ), + gridData: const FlGridData( + show: true, + ), + borderData: FlBorderData( + show: true, + border: const Border( + bottom: BorderSide( + color: AppColor.accentColor), + left: BorderSide( + color: AppColor.accentColor), + ), + ), + ), + ), + ), + ), + const SizedBox( + height: 5, + ), + Padding( + padding: const EdgeInsets.all(6), + child: Container( + decoration: AppStyle.boxDecoration1, + height: Get.height * .4, + child: LineChart( + duration: const Duration(milliseconds: 150), + curve: Curves.ease, + LineChartData( + lineBarsData: [ + LineChartBarData( + isStepLineChart: true, + spots: durationController + .chartRidePriceDriver, + isCurved: true, + isStrokeCapRound: true, + preventCurveOverShooting: true, + color: Colors + .deepPurpleAccent, // Custom color + barWidth: 3, // Thinner line + dotData: const FlDotData( + show: + true), // Show dots on each point + belowBarData: BarAreaData( + // Add gradient fill below the line + show: true, + color: AppColor.deepPurpleAccent, + ), + isStrokeJoinRound: true, + shadow: const BoxShadow( + color: AppColor.yellowColor, + blurRadius: 4, + offset: Offset(2, 2), + ), + ), + ], + showingTooltipIndicators: const [], + titlesData: FlTitlesData( + show: true, + topTitles: AxisTitles( + axisNameWidget: Text( + 'Days'.tr, + style: AppStyle.title, + ), + axisNameSize: 30, + // sideTitles: const SideTitles( + // reservedSize: 30, showTitles: true), + ), + bottomTitles: AxisTitles( + axisNameWidget: Text( + '${"Total budgets on month".tr} = ${durationController.jsonData2['message'][0]['totalPrice'].toString()}' + .tr, + style: AppStyle.title, + ), + axisNameSize: 30, + sideTitles: const SideTitles( + reservedSize: 30, + showTitles: true)), + leftTitles: AxisTitles( + axisNameWidget: Text( + 'Counts of budgets on days'.tr, + style: AppStyle.title, + ), + axisNameSize: 30, + sideTitles: const SideTitles( + reservedSize: 30, + showTitles: true)), + ), + gridData: const FlGridData( + show: true, + ), + borderData: FlBorderData( + show: true, + border: const Border( + bottom: BorderSide( + color: AppColor.accentColor), + left: BorderSide( + color: AppColor.accentColor), + ), + ), + ), + ), + ), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Container( + decoration: AppStyle.boxDecoration1, + child: durationController.monthlyList.isEmpty + ? SizedBox( + height: Get.height * .2, + child: Center( + child: Text( + "No data yet".tr, + style: AppStyle.title, + ), + ), + ) + : DriverStatsTable( + monthlyList: + durationController.monthlyList, + ))) + ], + ), + ) + // BarChartWidget(), + ), + ], + isleading: true); + } +} + +class DriverStatsTable extends StatelessWidget { + final List monthlyList; + + const DriverStatsTable({Key? key, required this.monthlyList}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + color: Colors.white, + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), + spreadRadius: 2, + blurRadius: 5, + offset: const Offset(0, 3), + ), + ], + ), + padding: const EdgeInsets.all(16), + child: DataTable( + columnSpacing: 12, + columns: [ + DataColumn(label: Text('Statistic'.tr)), + DataColumn(label: Text('Value'.tr)), + ], + rows: _buildRows(), + ), + ); + } + + List _buildRows() { + return [ + DataRow(cells: [ + DataCell(Text( + 'Total Orders'.tr, + style: AppStyle.title, + )), + DataCell(Text( + monthlyList[0]['total_orders'].toString(), + style: AppStyle.number, + )), + ]), + DataRow(cells: [ + DataCell(Text( + 'Completed'.tr, + style: AppStyle.title, + )), + DataCell(Text( + monthlyList[0]['completed_orders'].toString(), + style: AppStyle.number, + )), + ]), + DataRow(cells: [ + DataCell(Text( + 'Canceled Orders'.tr, + style: AppStyle.title, + )), + DataCell(Text( + monthlyList[0]['canceled_orders'].toString(), + style: AppStyle.number, + )), + ]), + DataRow(cells: [ + DataCell(Text( + 'Rejected Orders'.tr, + style: AppStyle.title, + )), + DataCell(Text( + monthlyList[0]['rejected_orders'].toString(), + style: AppStyle.number, + )), + ]), + DataRow(cells: [ + DataCell(Text( + 'Percent Rejected'.tr, + style: AppStyle.title, + )), + DataCell(Text( + '${(monthlyList[0]['percent_rejected']).toString()}%', + style: AppStyle.number.copyWith( + color: double.parse(monthlyList[0]['percent_canceled']) < .3 + ? AppColor.greenColor + : AppColor.redColor), + )), + ]), + DataRow(cells: [ + DataCell(Text( + 'Percent Canceled'.tr, + style: AppStyle.title, + )), + DataCell(Text( + '${(monthlyList[0]['percent_canceled']).toString()}%', + style: AppStyle.number.copyWith( + color: double.parse(monthlyList[0]['percent_canceled']) < .3 + ? AppColor.greenColor + : AppColor.redColor), + )), + ]), + DataRow(cells: [ + DataCell(Text( + 'Percent Completed'.tr, + style: AppStyle.title, + )), + DataCell(Text( + '${(monthlyList[0]['percent_completed']).toString()}%', + style: AppStyle.number.copyWith( + color: double.parse(monthlyList[0]['percent_completed']) > .7 + ? AppColor.greenColor + : AppColor.redColor), + )), + ]), + ]; + } +} + +class StaticDriverOrder extends StatelessWidget { + const StaticDriverOrder({ + Key? key, + required this.title, + required this.jsonTitle, + }) : super(key: key); + + final String title, jsonTitle; + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.all(8.0), + padding: const EdgeInsets.all(16.0), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(10.0), + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.3), + spreadRadius: 3, + blurRadius: 5, + offset: const Offset(0, 3), // changes position of shadow + ), + ], + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + title, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: Colors.black54, + ), + ), + const SizedBox(height: 8.0), + Text( + jsonTitle, + style: const TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + color: Colors.black, + ), + ), + ], + ), + ); + } +} diff --git a/lib/views/auth/captin/ai_page.dart b/lib/views/auth/captin/ai_page.dart new file mode 100755 index 0000000..df83b5b --- /dev/null +++ b/lib/views/auth/captin/ai_page.dart @@ -0,0 +1,977 @@ +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/constant/table_names.dart'; +import 'package:sefer_driver/controller/auth/captin/register_captin_controller.dart'; +import 'package:sefer_driver/controller/functions/ocr_controller.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; +import 'package:sefer_driver/views/widgets/mycircular.dart'; + +import '../../../constant/links.dart'; +import '../../../controller/functions/encrypt_decrypt.dart'; +import '../../../controller/functions/gemeni.dart'; + +class AiPage extends StatelessWidget { + ScanDocumentsByApi scanDocumentsByApi = Get.put(ScanDocumentsByApi()); + RegisterCaptainController registerCaptainController = + Get.put(RegisterCaptainController()); + + @override + Widget build(BuildContext context) { + Get.put(AI()); + String text = ''; + return MyScafolld( + title: 'Documents check'.tr, + body: [ + GetBuilder(builder: (controller) { + return controller.isLoading + ? const MyCircularProgressIndicator() + : Padding( + padding: const EdgeInsets.all(8.0), + child: ListView( + children: [ + // egyptDriverLicense(), + // egyptCarLicenceFront(), + // egyptCarLicenceBack(), + // egyptDriverIDFront(), + // egyptDriverIDBack(), + ], + ), + ); + }), + ], + isleading: true); + } + + GetBuilder egyptDriverLicenseWidget() { + return GetBuilder( + builder: (contentController) => contentController.responseMap.isNotEmpty + ? contentController.isloading + ? Column( + children: [ + const MyCircularProgressIndicator(), + Text( + 'We are process picture please wait '.tr, + style: AppStyle.title, + ) + ], + ) + : SizedBox( + height: Get.height * .7, + child: ListView( + children: [ + Container( + decoration: AppStyle.boxDecoration1, + // height: Get.height * .4, + child: Padding( + padding: const EdgeInsets.all(5), + child: contentController.responseMap.isEmpty + ? Center( + child: Text( + 'Capture an Image of Your Driver’s License' + .tr, + style: AppStyle.title, + ), + ) + : Column( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Column( + mainAxisAlignment: + MainAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Row( + children: [ + Text( + '${'Name'.tr} :${(contentController.responseMap['first_name'])}', + style: AppStyle.subtitle, + ), + Text( + ' ${(contentController.responseMap['last_name'])}', + style: AppStyle.subtitle, + ), + ], + ), + Text( + '${'Name in arabic'.tr}: ${(contentController.responseMap['name_in_arabic'])}', + style: AppStyle.title, + ), + Text( + '${'Drivers License Class'.tr}: ${contentController.responseMap['class']}', + style: AppStyle.title, + ), + ], + ), + ], + ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'National Number'.tr}: ${(contentController.responseMap['id'])}', + style: AppStyle.title, + ), + // Image.memory( + // scanDocumentsByApi + // .imagePortrait, + // width: 60, + // ), + ]), + Text( + '${'Address'.tr}: ${(contentController.responseMap['address'])}', + style: AppStyle.title, + ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Date of Birth'.tr}: ${contentController.responseMap['dob']}', + style: AppStyle.title, + ), + Text( + '${'Age'.tr} : ${contentController.responseMap['age_in_years']}', + style: AppStyle.title, + ), + ], + ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Expiry Date'.tr}: ${contentController.responseMap['expiration_date']}', + style: DateTime.parse( + contentController + .responseMap[ + 'expiration_date'] + .toString()) + .isBefore( + contentController.now) + ? AppStyle.title.copyWith( + color: AppColor.redColor) + : AppStyle.title.copyWith( + color: AppColor.greenColor), + ), + ], + ), + ], + ), + ), + ), + const SizedBox( + height: 10, + ), + DateTime.parse(contentController + .responseMap['expiration_date'] + .toString()) + .isBefore(contentController.now) + ? Text( + 'You can\'t continue with us .\nYou should renew Driver license' + .tr, + style: AppStyle.title + .copyWith(color: AppColor.redColor), + ) + : MyElevatedButton( + kolor: AppColor.greenColor, + title: 'Lets check Car license '.tr, + onPressed: () => contentController + .getCarLicenseJordanContent()), + const SizedBox( + height: 10, + ), + contentController.responseCarLicenseMapJordan.isNotEmpty + ? Container( + decoration: AppStyle.boxDecoration, + // height: Get.height * .3, + width: Get.width * .9, + child: Column( + children: [ + Text( + '${'Name'.tr} ${contentController.responseCarLicenseMapJordan['name']}', + style: AppStyle.title, + ), + Text( + '${'Address'.tr} ${contentController.responseCarLicenseMapJordan['address']}', + style: AppStyle.title, + ), + Text( + '${'Car Kind'.tr} ${contentController.responseCarLicenseMapJordan['car_kind']}', + style: AppStyle.title, + ), + Text( + '${'Color'.tr} ${contentController.responseCarLicenseMapJordan['car_color']}', + style: AppStyle.title, + ), + Text( + '${'Year'.tr} ${contentController.responseCarLicenseMapJordan['car_year']}', + style: AppStyle.title, + ), + Text( + '${'Car Plate'.tr} ${contentController.responseCarLicenseMapJordan['car_plate']}', + style: AppStyle.title, + ), + Text( + '${'Car Expire'.tr} ${contentController.responseCarLicenseMapJordan['expire_date_of_license']}', + style: contentController + .responseCarLicenseMapJordan + .isNotEmpty + ? DateTime.parse(contentController + .responseCarLicenseMapJordan[ + 'expire_date_of_license'] + .toString()) + .isBefore(contentController.now) + ? AppStyle.title.copyWith( + color: AppColor.redColor) + : AppStyle.title.copyWith( + color: AppColor.greenColor) + : null, + ), + ], + ), + ) + : const SizedBox(), + const SizedBox( + height: 10, + ), + // DateTime.parse(contentController + // .responseCarLicenseMap[ + // 'expire_date_of_license'] + // .toString()) + // .isBefore(contentController.now) + // ? Text( + // 'You can\'t continue with us .\nYou should renew Car license' + // .tr, + // style: AppStyle.title.copyWith( + // color: AppColor.redColor), + // ) + // : + MyElevatedButton( + kolor: AppColor.greenColor, + title: 'Lets check License Back Face'.tr, + onPressed: () => contentController + .generateBackCarLicenseJordanContent()), + const SizedBox( + height: 10, + ), + contentController.responseBackCarLicenseMap.isNotEmpty + ? Container( + decoration: AppStyle.boxDecoration, + // height: 300, + child: Column(children: [ + Text( + 'VIN ${contentController.responseBackCarLicenseMap['vin']}', + style: AppStyle.title, + ), + Text( + 'Fuel Type ${contentController.responseBackCarLicenseMap['fuelType']}', + style: AppStyle.title, + ), + Text( + 'Insurance Company ${contentController.responseBackCarLicenseMap['insuranceCompany']}', + style: AppStyle.title, + ), + Text( + 'Policy Number ${contentController.responseBackCarLicenseMap['policyNumber']}', + style: AppStyle.title, + ), + Text( + 'Insurance Type ${contentController.responseBackCarLicenseMap['insuranceType']}', + style: AppStyle.title, + ) + ])) + : const SizedBox() + ], + ), + ) + : Positioned( + top: Get.height * .06, + left: Get.width * .051, + right: Get.width * .051, + child: scanDocumentsByApi.isLoading + ? Column( + children: [ + const MyCircularProgressIndicator(), + Text( + 'We are process picture please wait '.tr, + style: AppStyle.title, + ) + ], + ) + : Column( + children: [ + Container( + decoration: AppStyle.boxDecoration1, + height: Get.height * .35, + child: Padding( + padding: const EdgeInsets.all(5), + child: Center( + child: InkWell( + onTap: () async { + await CRUD().allMethodForAI( + 'name,address,dob,nationalNo,', + AppLink.uploadEgypt, + 'idFront'); //egypt + }, + child: Text( + 'Take Picture Of ID Card'.tr, + style: AppStyle.title, + ), + ), + )), + ), + ], + ), + ), + ); + } + + GetBuilder jordanDriverLicenseWidget() { + return GetBuilder( + builder: (contentController) => contentController.responseMap.isNotEmpty + ? Positioned( + top: Get.height * .09, + left: Get.width * .051, + right: Get.width * .051, + child: contentController.isloading + ? Column( + children: [ + const MyCircularProgressIndicator(), + Text( + 'We are process picture please wait '.tr, + style: AppStyle.title, + ) + ], + ) + : SizedBox( + height: Get.height * .7, + child: ListView( + children: [ + Container( + decoration: AppStyle.boxDecoration, + // height: Get.height * .4, + child: Padding( + padding: const EdgeInsets.all(5), + child: contentController.responseMap.isEmpty + ? Center( + child: Text( + 'There is no data yet.'.tr, + style: AppStyle.title, + ), + ) + : Column( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Column( + mainAxisAlignment: + MainAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Row( + children: [ + Text( + '${'Name'.tr} :${contentController.responseMap['first_name']}', + style: AppStyle.subtitle, + ), + Text( + ' ${contentController.responseMap['last_name']}', + style: AppStyle.subtitle, + ), + ], + ), + Text( + '${'Name in arabic'.tr}: ${contentController.responseMap['name_in_arabic']}', + style: AppStyle.title, + ), + Text( + '${'Drivers License Class'.tr}: ${contentController.responseMap['class']}', + style: AppStyle.title, + ), + ], + ), + ], + ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'National Number'.tr}: ${contentController.responseMap['id']}', + style: AppStyle.title, + ), + // Image.memory( + // scanDocumentsByApi + // .imagePortrait, + // width: 60, + // ), + ]), + Text( + '${'Address'.tr}: ${contentController.responseMap['address']}', + style: AppStyle.title, + ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Date of Birth'.tr}: ${contentController.responseMap['dob']}', + style: AppStyle.title, + ), + Text( + '${'Age'.tr} : ${contentController.responseMap['age_in_years']}', + style: AppStyle.title, + ), + ], + ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Expiry Date'.tr}: ${contentController.responseMap['expiration_date']}', + style: DateTime.parse( + contentController + .responseMap[ + 'expiration_date'] + .toString()) + .isBefore( + contentController.now) + ? AppStyle.title.copyWith( + color: AppColor.redColor) + : AppStyle.title.copyWith( + color: + AppColor.greenColor), + ), + ], + ), + ], + ), + ), + ), + const SizedBox( + height: 10, + ), + DateTime.parse(contentController + .responseMap['expiration_date'] + .toString()) + .isBefore(contentController.now) + ? Text( + 'You can\'t continue with us .\nYou should renew Driver license' + .tr, + style: AppStyle.title + .copyWith(color: AppColor.redColor), + ) + : MyElevatedButton( + kolor: AppColor.greenColor, + title: 'Lets check Car license '.tr, + onPressed: () => contentController + .getTextFromCard( + '''Extract the following information from the front face of the car license card in Jordan: + +* name +* Address +* Vehicle type +* car_kind +* car_color +* Vehicle category +* car_year +* car_plate +* Registration type +* Usage type +* expire_date_of_license + +Output the extracted information in the following JSON formate and make date format like YYYY-MM-DD''')), + const SizedBox( + height: 10, + ), + contentController + .responseCarLicenseMapJordan.isNotEmpty + ? Container( + decoration: AppStyle.boxDecoration, + // height: Get.height * .3, + width: Get.width * .9, + child: Column( + children: [ + Text( + '${'Name'.tr} ${contentController.responseCarLicenseMapJordan['name']}', + style: AppStyle.title, + ), + Text( + '${'Address'.tr} ${contentController.responseCarLicenseMapJordan['address']}', + style: AppStyle.title, + ), + Text( + '${'Car Kind'.tr} ${contentController.responseCarLicenseMapJordan['car_kind']}', + style: AppStyle.title, + ), + Text( + '${'Color'.tr} ${contentController.responseCarLicenseMapJordan['car_color']}', + style: AppStyle.title, + ), + Text( + '${'Year'.tr} ${contentController.responseCarLicenseMapJordan['car_year']}', + style: AppStyle.title, + ), + Text( + '${'Car Plate'.tr} ${contentController.responseCarLicenseMapJordan['car_plate']}', + style: AppStyle.title, + ), + Text( + '${'ÙExpire Date'.tr} ${contentController.responseCarLicenseMapJordan['expire_date_of_license']}', + style: contentController + .responseCarLicenseMapJordan + .isNotEmpty + ? DateTime.parse(contentController + .responseCarLicenseMapJordan[ + 'expire_date_of_license'] + .toString()) + .isBefore( + contentController.now) + ? AppStyle.title.copyWith( + color: AppColor.redColor) + : AppStyle.title.copyWith( + color: AppColor.greenColor) + : null, + ), + ], + ), + ) + : const SizedBox(), + const SizedBox( + height: 10, + ), + //todo temporary + // DateTime.parse(contentController + // .responseCarLicenseMap[ + // 'expire_date_of_license'] + // .toString()) + // .isBefore(contentController.now) + // ? Text( + // 'You can\'t continue with us .\nYou should renew Car license' + // .tr, + // style: AppStyle.title.copyWith( + // color: AppColor.redColor), + // ) + // : + MyElevatedButton( + kolor: AppColor.greenColor, + title: 'Lets check License Back Face'.tr, + onPressed: () => + contentController.getTextFromCard( + 'write json output from extracting car license back face for these key ,vin,fuelType,passengerType,curbWeight,insuranceCompany,policyNumber,notes,insuranceType and output it json .dont add data else this image', + )), + const SizedBox( + height: 10, + ), + contentController.responseBackCarLicenseMap.isNotEmpty + ? Container( + decoration: AppStyle.boxDecoration, + // height: 300, + child: Column(children: [ + Text( + 'VIN ${contentController.responseBackCarLicenseMap['vin']}', + style: AppStyle.title, + ), + Text( + 'Fuel Type ${contentController.responseBackCarLicenseMap['fuelType']}', + style: AppStyle.title, + ), + Text( + 'Insurance Company ${contentController.responseBackCarLicenseMap['insuranceCompany']}', + style: AppStyle.title, + ), + Text( + 'Policy Number ${contentController.responseBackCarLicenseMap['policyNumber']}', + style: AppStyle.title, + ), + Text( + 'Insurance Type ${contentController.responseBackCarLicenseMap['insuranceType']}', + style: AppStyle.title, + ) + ])) + : const SizedBox() + // MyElevatedButton( + // title: 'Detect Your Face '.tr, + // onPressed: () => scanDocumentsByApi + // .checkMatchFaceApi(), + // ), + // scanDocumentsByApi.res.isEmpty + // ? const SizedBox() + // : scanDocumentsByApi.res['data'] + // ['result'] + // .toString() == + // 'Same' + // ? MyElevatedButton( + // onPressed: () async { + // await registerCaptainController + // .register(); + // await registerCaptainController + // .addLisence(); + // // await scanDocumentsByApi + // // .uploadImagePortrate(); + // }, + // title: + // 'Go to next step\nscan Car License.' + // .tr, + // kolor: AppColor.greenColor, + // ) + // : const SizedBox(), + // MyElevatedButton( + // title: 'get sql data', + // kolor: AppColor.yellowColor, + // onPressed: () { + // sql.deleteAllData( + // TableName.faceDetectTimes); + // sql + // .getAllData( + // TableName.faceDetectTimes) + // value[0]['faceDetectTimes'])); + // }, + // ), + ], + ), + ), + ) + : Positioned( + top: Get.height * .06, + left: Get.width * .051, + right: Get.width * .051, + child: scanDocumentsByApi.isLoading + ? Column( + children: [ + const MyCircularProgressIndicator(), + Text( + 'We are process picture please wait '.tr, + style: AppStyle.title, + ) + ], + ) + : Column( + children: [ + Container( + decoration: AppStyle.boxDecoration, + height: Get.height * .35, + child: Padding( + padding: const EdgeInsets.all(5), + child: Center( + child: Text( + 'There is no data yet.'.tr, + style: AppStyle.title, + ), + )), + ), + ], + ), + ), + ); + } + + GetBuilder usaDriverLicensWidget() { + return GetBuilder( + builder: (scanDocumentsByApi) => scanDocumentsByApi.responseMap.isNotEmpty + ? Positioned( + top: Get.height * .06, + left: Get.width * .051, + right: Get.width * .051, + child: scanDocumentsByApi.isLoading + ? Column( + children: [ + const MyCircularProgressIndicator(), + Text( + 'We are process picture please wait '.tr, + style: AppStyle.title, + ) + ], + ) + : Column( + children: [ + Container( + decoration: AppStyle.boxDecoration, + height: Get.height * .4, + child: Padding( + padding: const EdgeInsets.all(5), + child: scanDocumentsByApi.responseMap.isEmpty + ? Center( + child: Text( + 'There is no data yet.'.tr, + style: AppStyle.title, + ), + ) + : Column( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Column( + mainAxisAlignment: + MainAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Text( + '${'Name :'.tr}${scanDocumentsByApi.name}', + style: AppStyle.subtitle, + ), + Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + Text( + '${'Drivers License Class: '.tr}${scanDocumentsByApi.licenseClass}', + style: AppStyle.title, + ), + Image.memory( + scanDocumentsByApi + .imageSignature, + width: 100, + height: 30, + ), + ], + ), + ], + ), + ], + ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Document Number: '.tr}${scanDocumentsByApi.documentNo}', + style: AppStyle.title, + ), + Image.memory( + scanDocumentsByApi.imagePortrait, + width: 60, + ), + ]), + Text( + '${'Address: '.tr}${scanDocumentsByApi.address}', + style: AppStyle.title, + ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Height: '.tr}${scanDocumentsByApi.height}', + style: AppStyle.subtitle, + ), + Text( + 'Postal Code: ${scanDocumentsByApi.postalCode}', + style: AppStyle.subtitle, + ), + Text( + 'Sex: ${scanDocumentsByApi.sex}', + style: AppStyle.subtitle, + ), + ], + ), + Text( + 'Territorial Code: ${scanDocumentsByApi.stateCode}', + style: AppStyle.subtitle, + ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Expiry Date: '.tr}${scanDocumentsByApi.expireDate}', + style: DateTime.parse( + scanDocumentsByApi + .responseMap['data'] + ['ocr'] + ['dateOfExpiry'] + .toString()) + .isBefore( + scanDocumentsByApi.now) + ? AppStyle.title.copyWith( + color: AppColor.redColor) + : AppStyle.title.copyWith( + color: AppColor.greenColor), + ), + Text( + '${'Date of Birth: '.tr}${scanDocumentsByApi.dob}', + style: AppStyle.title, + ), + ], + ), + ], + ), + ), + ), + DateTime.parse(scanDocumentsByApi.responseMap['data'] + ['ocr']['dateOfExpiry'] + .toString()) + .isBefore(scanDocumentsByApi.now) + ? Text( + 'You can\'t continue with us .\nYou should renew Driver license', + style: AppStyle.title + .copyWith(color: AppColor.redColor), + ) + : MyElevatedButton( + title: 'Detect Your Face '.tr, + onPressed: () => + scanDocumentsByApi.checkMatchFaceApi(), + ), + scanDocumentsByApi.res.isEmpty + ? const SizedBox() + : scanDocumentsByApi.res['data']['result'] + .toString() == + 'Same' + ? MyElevatedButton( + onPressed: () async { + await registerCaptainController + .register(); + await registerCaptainController + .addLisence(); + // await scanDocumentsByApi + // .uploadImagePortrate(); + }, + title: + 'Go to next step\nscan Car License.'.tr, + kolor: AppColor.greenColor, + ) + : const SizedBox(), + MyElevatedButton( + title: 'get sql data', + kolor: AppColor.yellowColor, + onPressed: () { + sql.deleteAllData(TableName.faceDetectTimes); + sql.getAllData(TableName.faceDetectTimes); + }, + ) + ], + ), + ) + : Positioned( + top: Get.height * .06, + left: Get.width * .051, + right: Get.width * .051, + child: scanDocumentsByApi.isLoading + ? Column( + children: [ + const MyCircularProgressIndicator(), + Text( + 'We are process picture please wait '.tr, + style: AppStyle.title, + ) + ], + ) + : Column( + children: [ + Container( + decoration: AppStyle.boxDecoration, + height: Get.height * .35, + child: Padding( + padding: const EdgeInsets.all(5), + child: Center( + child: Text( + 'There is no data yet.'.tr, + style: AppStyle.title, + ), + )), + ), + ], + ), + ), + ); + } +} + +class EgyptDocuments extends StatelessWidget { + const EgyptDocuments({ + super.key, + required this.contentController, + }); + + final AI contentController; + + @override + Widget build(BuildContext context) { + return Positioned( + top: 3, + left: Get.width * .1, + right: Get.width * .1, + child: MyElevatedButton( + title: 'Take Picture Of ID Card'.tr, //egypt + onPressed: () async { + await CRUD().allMethodForAI('name,address,dob,nationalNo,', + AppLink.uploadEgypt, 'idFront'); //egypt + }, + )); + } +} + +class JordanDocumants extends StatelessWidget { + const JordanDocumants({ + super.key, + required this.contentController, + }); + + final AI contentController; + + @override + Widget build(BuildContext context) { + return Positioned( + top: 3, + left: Get.width * .1, + right: Get.width * .1, + child: MyElevatedButton( + title: 'Take Picture Of Driver License Card'.tr, + onPressed: () { + contentController.getDriverLicenseJordanContent(); + }, + )); + } +} + +class UsaAiDocuments extends StatelessWidget { + const UsaAiDocuments({ + super.key, + required this.scanDocumentsByApi, + }); + + final ScanDocumentsByApi scanDocumentsByApi; + + @override + Widget build(BuildContext context) { + return Positioned( + top: 3, + left: Get.width * .2, + right: Get.width * .2, + child: MyElevatedButton( + title: 'Take Picture Of ID Card'.tr, + onPressed: () { + scanDocumentsByApi.scanDocumentsByApi(); + }, + )); + } +} diff --git a/lib/views/auth/captin/camera_widgets/camera_lisence_page.dart b/lib/views/auth/captin/camera_widgets/camera_lisence_page.dart new file mode 100755 index 0000000..ca0d3c8 --- /dev/null +++ b/lib/views/auth/captin/camera_widgets/camera_lisence_page.dart @@ -0,0 +1,83 @@ +import 'package:camera/camera.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; + +import '../../../../constant/colors.dart'; +import '../../../../constant/style.dart'; +import '../../../../controller/functions/camer_controller.dart'; +import '../../../../controller/functions/ocr_controller.dart'; +import '../../../widgets/my_scafold.dart'; + +class CameraLisencePage extends StatelessWidget { + CameraLisencePage.CameraLicensePage({super.key}); + final CameraClassController cameraClassController = + Get.put(CameraClassController()); + + @override + Widget build(BuildContext context) { + return MyScafolld( + title: 'Scan Driver License'.tr, + body: [ + Column(children: [ + Text( + 'Please put your licence in these border'.tr, + style: AppStyle.title.copyWith(color: AppColor.greenColor), + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 12), + child: GetBuilder( + builder: (cameraClassController) => + cameraClassController.isCameraInitialized + ? Stack( + children: [ + Container( + decoration: AppStyle.boxDecoration, + child: CameraPreview( + cameraClassController.cameraController, + ), + ), + Positioned( + top: Get.height * .1, + right: 5, + left: 5, + child: Container( + height: Get.width * 3 / 4, + width: Get.width * .9, + decoration: BoxDecoration( + // color: AppColor.blueColor, + border: Border.all( + color: AppColor.yellowColor, width: 2), + ), + ), + ), + ], + ) + : Container( + decoration: AppStyle.boxDecoration, + height: Get.width * 3 / 4, + width: Get.width, + child: Center( + child: Text( + 'Camera not initialized yet', + style: AppStyle.title, + ), + ), + ), + ), + ), + const SizedBox( + height: 20, + ), + MyElevatedButton( + title: 'Take Image'.tr, + onPressed: () { + ScanDocumentsByApi().scanDocumentsByApi(); + }, + ) + ]), + ], + isleading: true, + ); + } +} diff --git a/lib/views/auth/captin/car_license_page.dart b/lib/views/auth/captin/car_license_page.dart new file mode 100755 index 0000000..62a448b --- /dev/null +++ b/lib/views/auth/captin/car_license_page.dart @@ -0,0 +1,169 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/controller/functions/ocr_controller.dart'; + +import '../../../constant/style.dart'; +import '../../../controller/auth/captin/ml_google_doc.dart'; +import '../../../controller/auth/captin/register_captin_controller.dart'; +import '../../widgets/elevated_btn.dart'; +import '../../widgets/my_scafold.dart'; + +// class CarLicensePage extends StatelessWidget { +// CarLicensePage({super.key}); +// // CarRegistrationRecognizerController carRegistrationRecognizerController = +// // Get.put(CarRegistrationRecognizerController()); +// RegisterCaptainController registerCaptainController = +// Get.put(RegisterCaptainController()); + +// @override +// Widget build(BuildContext context) { +// Get.find().uploadImagePortrate(); +// return MyScafolld( +// title: 'Car License Card'.tr, +// body: [ +// Positioned( +// top: 3, +// left: Get.width * .2, +// right: Get.width * .2, +// child: MyElevatedButton( +// title: 'Take Picture Of ID Card'.tr, +// onPressed: () async { +// //0vQRyaYYDWpsv73A5CZOknseK7S2sgwE +// //3vQRyaYYSWpmv69A58ZOkxmeK6M1mgwEDlXrXlBl +// //0pALdqDDYHvzp73Q59SIgbzjG7Z2zkhJXr +// // String? visionApi = AK.serverPHP; +// await carRegistrationRecognizerController.scanText(); +// }, +// )), +// Positioned( +// top: 50, +// child: SizedBox( +// height: Get.height * .6, +// width: Get.width, +// child: buildImageWithBoundingBoxes(), +// ), +// ), +// Positioned( +// bottom: Get.height * .2, +// left: Get.width * .2, +// right: Get.width * .2, +// child: MyElevatedButton( +// title: 'Register'.tr, +// onPressed: () async { +// // registerCaptainController.addLisence(); +// // registerCaptainController.register(); +// registerCaptainController.addRegisrationCarForDriver( +// carRegistrationRecognizerController.extracted['vin'], +// carRegistrationRecognizerController.extracted['make'], +// carRegistrationRecognizerController.extracted['model'], +// carRegistrationRecognizerController.extracted['year'], +// carRegistrationRecognizerController.extracted['color'], +// carRegistrationRecognizerController.extracted['owner'], +// carRegistrationRecognizerController +// .extracted['expiration_date'], +// carRegistrationRecognizerController +// .extracted['registration_date'], +// ); +// }, +// )), +// ], +// isleading: true); +// } +// } + +// Widget buildImageWithBoundingBoxes() { +// Get.put(CarRegistrationRecognizerController()); +// return GetBuilder( +// builder: (carRegistrationRecognizerController) => +// carRegistrationRecognizerController.image == null || +// carRegistrationRecognizerController.extracted.isEmpty +// ? Center( +// child: Text( +// 'No image selected yet'.tr, +// style: AppStyle.headTitle2, +// )) +// : Column( +// children: [ +// SizedBox( +// width: Get.width * .8, +// height: Get.width * .5, +// child: Image.file( +// File(carRegistrationRecognizerController +// .croppedFile!.path), +// // fit: BoxFit.fill, +// )), +// const SizedBox( +// height: 20, +// ), +// Container( +// decoration: AppStyle.boxDecoration, +// height: Get.width * .5, +// width: Get.width * .9, +// child: Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// mainAxisAlignment: MainAxisAlignment.spaceEvenly, +// children: [ +// Row( +// mainAxisAlignment: MainAxisAlignment.spaceEvenly, +// children: [ +// Text( +// '${'Made :'.tr}${carRegistrationRecognizerController.extracted['make']}', +// style: AppStyle.title, +// ), +// Text( +// '${'model :'.tr}${carRegistrationRecognizerController.extracted['model']}', +// style: AppStyle.title, +// ), +// ], +// ), +// Row( +// mainAxisAlignment: MainAxisAlignment.spaceEvenly, +// children: [ +// Text( +// '${'VIN :'.tr}${carRegistrationRecognizerController.extracted['vin']}', +// style: AppStyle.title, +// ), +// Text( +// '${'year :'.tr}${carRegistrationRecognizerController.extracted['year']}', +// style: AppStyle.title, +// ), +// ], +// ), +// Row( +// mainAxisAlignment: MainAxisAlignment.spaceEvenly, +// children: [ +// Column( +// children: [ +// Text( +// 'expiration date :${carRegistrationRecognizerController.extracted['expiration_date']}', +// style: AppStyle.title, +// ), +// Text( +// 'registration date :${carRegistrationRecognizerController.extracted['registration_date']}', +// style: AppStyle.title, +// ), +// ], +// ), +// Text( +// 'color :${carRegistrationRecognizerController.extracted['color']}', +// style: AppStyle.title, +// ), +// ], +// ), +// Row( +// mainAxisAlignment: MainAxisAlignment.spaceEvenly, +// children: [ +// Text( +// 'owner :${carRegistrationRecognizerController.extracted['owner']}', +// style: AppStyle.title, +// ), +// ], +// ), +// ], +// ), +// ) +// ], +// )); +// } diff --git a/lib/views/auth/captin/cards/gemini_egypt.dart b/lib/views/auth/captin/cards/gemini_egypt.dart new file mode 100755 index 0000000..acebece --- /dev/null +++ b/lib/views/auth/captin/cards/gemini_egypt.dart @@ -0,0 +1,80 @@ +import 'dart:convert'; +import 'package:get/get.dart'; +import 'package:http/http.dart' as http; + +class GeminiEgypt extends GetxController { + Map responseIdCardDriverEgypt = {}; + String? responseIdCardDriverEgypt1; + + Future geminiAiExtraction(String prompt, payload) async { + var requestBody = jsonEncode({ + 'contents': [ + { + 'parts': [ + // { + // 'inlineData': { + // 'mimeType': 'image/jpeg', + // 'data': imageData, + // }, + // }, + { + 'text': """ + $payload + + $prompt ,and make dates format like year-month-day""" + }, + ], + }, + ], + 'generationConfig': { + 'temperature': 0.4, + 'topK': 32, + 'topP': 1, + 'maxOutputTokens': 4096, + 'stopSequences': [], + }, + 'safety_settings': [ + {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"}, + {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"}, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "threshold": "BLOCK_NONE" + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "threshold": "BLOCK_NONE" + }, + ] + }); + + final response = await http.post( + Uri.parse( + // 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro-vision:generateContent?key=${AK.geminiApi}'), + 'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-latest:generateContent?key=AIzaSyCyoLcSkDzK5_SMe00nhut56SSXWPR074w'), + headers: {'Content-Type': 'application/json'}, + body: requestBody, + ); + + if (response.statusCode == 200) { + var responseData = jsonDecode(response.body); + // Process the responseData as needed + + var result = responseData['candidates'][0]['content']['parts'][0]['text']; + RegExp regex = RegExp(r"```json([^`]*)```"); + String? jsonString = + regex.firstMatch(responseData.toString())?.group(1)?.trim(); + + if (jsonString != null) { + // Convert the JSON object to a String + jsonString = jsonEncode(json.decode(jsonString)); + responseIdCardDriverEgypt1 = jsonString; + + responseIdCardDriverEgypt = jsonDecode(responseIdCardDriverEgypt1!); + update(); + return responseIdCardDriverEgypt; + } else {} + + // Rest of your code... + } else {} + } +} diff --git a/lib/views/auth/captin/cards/sms_signup.dart b/lib/views/auth/captin/cards/sms_signup.dart new file mode 100755 index 0000000..6a5326b --- /dev/null +++ b/lib/views/auth/captin/cards/sms_signup.dart @@ -0,0 +1,221 @@ +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/auth/captin/register_captin_controller.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; +import 'package:sefer_driver/views/widgets/my_textField.dart'; +import 'package:sefer_driver/views/widgets/mycircular.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../Rate/rate_app_page.dart'; + +class SmsSignupEgypt extends StatelessWidget { + SmsSignupEgypt({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(RegisterCaptainController()); + return MyScafolld( + title: 'Phone Check'.tr, + body: [ + GetBuilder( + builder: (registerCaptainController) { + return ListView( + // mainAxisAlignment: MainAxisAlignment.center, + children: [ + // Logo at the top + Padding( + padding: const EdgeInsets.only(bottom: 20.0), + child: Image.asset( + 'assets/images/logo.gif', // Make sure you have a logo image in your assets folder + height: 100, + ), + ), + // Message to the driver + Padding( + padding: + const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), + child: Text( + 'We need your phone number to contact you and to help you receive orders.' + .tr, + textAlign: TextAlign.center, + style: AppStyle.title, + ), + ), + // Enter phone number text + Padding( + padding: + const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), + child: Text( + 'Enter your phone number'.tr, + textAlign: TextAlign.center, + style: AppStyle.title, + ), + ), + // Phone number input field + Padding( + padding: const EdgeInsets.all(16.0), + child: !registerCaptainController.isSent + ? Form( + key: registerCaptainController.formKey3, + child: MyTextForm( + controller: + registerCaptainController.phoneController, + label: 'Enter your phone number'.tr, + hint: 'Enter your phone number'.tr, + type: TextInputType.phone), + ) + : Container( + decoration: AppStyle.boxDecoration1, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + registerCaptainController.phoneController.text, + style: AppStyle.title, + ), + ), + )), + const SizedBox( + height: 10, + ), + Padding( + padding: const EdgeInsets.all(16.0), + child: registerCaptainController.isSent + ? Form( + key: registerCaptainController.formKey3, + child: MyTextForm( + controller: registerCaptainController.verifyCode, + label: '5 digit'.tr, + hint: '5 digit'.tr, + type: TextInputType.number), + ) + : const SizedBox()), + // Submit button + registerCaptainController.isLoading + ? const MyCircularProgressIndicator() + : Padding( + padding: const EdgeInsets.all(16.0), + child: MyElevatedButton( + onPressed: () async { + !registerCaptainController.isSent + ? await registerCaptainController.sendOtpMessage() + : await registerCaptainController.verifySMSCode(); + }, + title: 'Submit'.tr, + ), + ), + Padding( + padding: const EdgeInsets.all(16.0), + child: MyElevatedButton( + kolor: AppColor.yellowColor, + title: "Rate Our App".tr, + onPressed: () { + Get.to(RatingScreen()); + }), + ), + + // IconButton( + // onPressed: () async { + // // final plainText = + // // 'https://server.sefer.live/sefer.click/sefer'; + // // debugPrint('Plain Text: $plainText'); + + // // Encrypt the data + // // final encryptedData = encryptionHelper.encryptData(plainText); + // // debugPrint('Encrypted: $encryptedData'); + + // // Decrypt the data + // // final decryptedData = encryptionHelper.decryptData( + // // '2unGmj8jSMFBfxqH8+GN'); // Use the encryptedData variable + // // debugPrint('Decrypted: $decryptedData'); + // // box.remove('DriversSecure'); + // var drivers0 = await CRUD().get( + // link: + // 'https://server.sefer.live/sefer.click/sefer/auth/captin/getAllDriverSecure.php', + // payload: {}); + // var decodedDriver; + // if (drivers0 != 'failure') { + // decodedDriver = jsonDecode(drivers0); + + // // // // box.write('DriversSecure', decodedDriver['message']); + // } + // var drivers = decodedDriver['message']; + // Log.print('drivers.length: ${drivers.length}'); + // for (var i = 0; i < drivers.length; i++) { + // Log.print('id: ${drivers[i]['id']}'); + // var payload = { + // "phone": encryptionHelper + // .encryptData(drivers[i]['phone'].toString()), + // "email": encryptionHelper + // .encryptData(drivers[i]['email'].toString()), + // "gender": encryptionHelper + // .encryptData(drivers[i]['gender'] ?? 'unknown'), + // "birthdate": encryptionHelper + // .encryptData(drivers[i]['birthdate'].toString()), + // "first_name": encryptionHelper + // .encryptData(drivers[i]['first_name'].toString()), + // "last_name": encryptionHelper + // .encryptData(drivers[i]['last_name'].toString()), + // "sosPhone": encryptionHelper + // .encryptData(drivers[i]['sosPhone'].toString()), + // // "name_english": encryptionHelper + // // .encryptData(drivers[i]['name_english'].toString()), + // // "last_name": encryptionHelper + // // .encryptData(drivers[i]['last_name'].toString()), + // // "sosPhone": encryptionHelper + // // .encryptData(drivers[i]['sosPhone'].toString()), + // // "address": encryptionHelper + // // .encryptData(drivers[i]['address'].toString()), + // // "card_id": encryptionHelper + // // .encryptData(drivers[i]['card_id'].toString()), + // // "occupation": encryptionHelper + // // .encryptData(drivers[i]['occupation'].toString()), + // // "religion": encryptionHelper + // // .encryptData(drivers[i]['religion'].toString()), + // // "site": encryptionHelper + // // .encryptData(drivers[i]['site'].toString()), + // // "education": encryptionHelper + // // .encryptData(drivers[i]['education'].toString()), + // // "accountBank": encryptionHelper + // // .encryptData(drivers[i]['accountBank'].toString()), + // // "employmentType": encryptionHelper + // // .encryptData(drivers[i]['employmentType'].toString()), + // // "maritalStatus": (drivers[i]['maritalStatus'].toString()), + // // "fullNameMaritial": encryptionHelper.encryptData( + // // drivers[i]['fullNameMaritial'].toString()), + // 'id': drivers[i]['id'].toString() + // }; + // // print(drivers[i]['idn']); + // // if (drivers[i]['id'].toString() != + // // '01002165502a9sHC1tbrUrUw') { + // var result = await CRUD().post( + // link: + // 'https://server.sefer.live/sefer.click/sefer/auth/captin/updateDriverSecure.php', + // payload: payload); + // if (result != 'failure') { + // print(result); + // } else { + // print('failure'); + // } + // // Future.delayed(Duration(microseconds: 200)); + // // } + // } + // MyDialog().getDialog('title', 'midTitle', () { + // Get.back(); + // }); + // }, + // icon: const Icon( + // FontAwesome5.grin_tears, + // size: 29, + // color: AppColor.blueColor, + // ), + // ), + ], + ); + }), + ], + isleading: false, + ); + } +} diff --git a/lib/views/auth/captin/cards/syrian_card_a_i.dart b/lib/views/auth/captin/cards/syrian_card_a_i.dart new file mode 100755 index 0000000..5a97646 --- /dev/null +++ b/lib/views/auth/captin/cards/syrian_card_a_i.dart @@ -0,0 +1,987 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/controller/functions/audio_controller.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:url_launcher/url_launcher.dart'; +import '../../../../constant/colors.dart'; +import '../../../../constant/links.dart'; +import '../../../../constant/style.dart'; +import '../../../../controller/functions/gemeni.dart'; +import '../../../../controller/functions/package_info.dart'; +import '../../../../controller/functions/tts.dart'; +import '../../../../print.dart'; +import '../../../widgets/elevated_btn.dart'; +import '../../../widgets/my_circular_indicator_timer.dart'; +import '../../../widgets/my_scafold.dart'; +import '../../../widgets/mydialoug.dart'; + +// --- اقتراحات الألوان الجديدة --- +// يمكنك تعري٠هذه الألوان ÙÙŠ مل٠AppColor.dart الخاص بك +class NewAppColor { + static const Color primaryColor = Color(0xFF0D47A1); // أزرق داكن + static const Color accentColor = Color(0xFF1976D2); // أزرق Ø£ÙØªØ­ + static const Color backgroundColor = Color(0xFFF5F7FA); // رمادي ÙØ§ØªØ­ للخلÙية + static const Color cardColor = Colors.white; + static const Color textColor = Color(0xFF333333); // أسود ناعم للنصوص + static const Color subTextColor = Color(0xFF757575); // رمادي للنصوص Ø§Ù„ÙØ±Ø¹ÙŠØ© + static const Color successColor = Color(0xFF2E7D32); // أخضر للنجاح + static const Color errorColor = Color(0xFFC62828); // أحمر للخطأ + static const Color borderColor = Color(0xFFE0E0E0); // لون الحدود +} + +// --- اقتراحات للخطوط --- +// يمكنك استخدام حزمة google_fonts وتعيين الخط 'Cairo' أو 'Tajawal' للتطبيق +class NewAppStyle { + static TextStyle get headlineStyle { + return const TextStyle( + fontFamily: 'Cairo', // اسم الخط المقترح + fontSize: 18, + fontWeight: FontWeight.bold, + color: NewAppColor.primaryColor, + ); + } + + static TextStyle get titleStyle { + return const TextStyle( + fontFamily: 'Cairo', + fontSize: 16, + fontWeight: FontWeight.bold, + color: NewAppColor.textColor, + ); + } + + static TextStyle get bodyStyle { + return const TextStyle( + fontFamily: 'Cairo', + fontSize: 14, + color: NewAppColor.subTextColor, + height: 1.5, + ); + } + + static TextStyle get valueStyle { + return const TextStyle( + fontFamily: 'Cairo', + fontSize: 15, + fontWeight: FontWeight.w600, + color: NewAppColor.textColor, + ); + } +} + +class SyrianCardAI extends StatelessWidget { + SyrianCardAI({super.key}); + final TextToSpeechController textToSpeechController = + Get.put(TextToSpeechController()); + + @override + Widget build(BuildContext context) { + Get.put(AI()); + WidgetsBinding.instance.addPostFrameCallback((_) { + checkForUpdate(context); + }); + return MyScafolld( + // تم تغيير لون الخلÙية للتصميم الجديد + // backgroundColor: NewAppColor.backgroundColor, + title: "Approve Driver Documents".tr, + action: GetBuilder(builder: (cont) { + return IconButton( + onPressed: () { + cont.isLoading = false; + cont.update(); + }, + icon: const Icon(Icons.refresh, color: NewAppColor.primaryColor), + ); + }), + body: [ + GetBuilder(builder: (controller) { + return controller.isLoading + ? MyCircularProgressIndicatorWithTimer( + isLoading: controller.isLoading, + ) + : Padding( + padding: const EdgeInsets.symmetric( + horizontal: 12.0, vertical: 8.0), + child: Column( + children: [ + // --- زر "التالي" بتصميم جديد --- + if (controller.licenceFrontSy.isNotEmpty && + controller.licenceBackSy.isNotEmpty && + (controller.idFrontSy.isNotEmpty) && + (controller.idBackSy.isNotEmpty) && + controller.vehicleFrontSy.isNotEmpty && + controller.vehicleBackSy.isNotEmpty) + Padding( + padding: const EdgeInsets.only(bottom: 16.0), + child: MyElevatedButton( + title: 'التالي'.tr, + // استخدام اللون الجديد للنجاح + kolor: NewAppColor.successColor, + onPressed: () { + controller.addDriverAndCarEgypt(); + }, + ), + ), + Expanded( + child: ListView( + children: [ + // --- Ùيديو الشرح بتصميم جديد --- + VideoButton(), + const SizedBox(height: 16), + egyptDriverLicense(), + const SizedBox(height: 16), + syriaDriverLicenseBack(), + const SizedBox(height: 16), + syriaVehicleCardFront(), + const SizedBox(height: 16), + syriaVehicleCardBack(), + const SizedBox(height: 16), + syriaIdCardFront(), + const SizedBox(height: 16), + syriaDriverIDBack(), + const SizedBox(height: 16), + // egyptCriminalRecord(), + // const SizedBox(height: 24), + ], + ), + ), + ], + ), + ); + }), + // --- شاشة المواÙقة بتصميم جديد --- + Positioned( + top: 0, + bottom: 0, + right: 0, + left: 0, + child: GetBuilder(builder: (controller) { + return controller.approved == false + // --- Ø¥Ø¶Ø§ÙØ© خلÙية معتمة --- + ? Container( + color: Colors.black.withOpacity(0.6), + child: Center( + child: Container( + margin: const EdgeInsets.all(24), + padding: const EdgeInsets.all(24), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(20), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.2), + blurRadius: 15, + spreadRadius: 5, + ) + ], + ), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + "Approve Driver Documents".tr, + style: NewAppStyle.headlineStyle, + ), + const SizedBox(height: 16), + Text( + "To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences." + .tr, + style: NewAppStyle.bodyStyle, + textAlign: TextAlign.center, + ), + const SizedBox(height: 24), + // --- زر الاستماع بتصميم جديد --- + TextButton.icon( + style: TextButton.styleFrom( + foregroundColor: NewAppColor.accentColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + padding: const EdgeInsets.symmetric( + horizontal: 20, vertical: 10), + ), + onPressed: () async { + controller.startTimer(); + if (box.read(BoxName.lang) == 'ar') { + await Get.put(AudioController()) + .playAudio1('assets/aggrement.wav'); + } else { + await textToSpeechController.speakText( + 'To become a ride-sharing driver on the Intaleq app...' + .tr); + } + }, + icon: const Icon(Icons.volume_up_outlined, + size: 30), + label: Text('اضغط للاستماع'.tr, + style: AppStyle.title.copyWith( + color: NewAppColor.accentColor)), + ), + const SizedBox(height: 24), + // --- أزرار المواÙقة ÙˆØ§Ù„Ø±ÙØ¶ بتصميم جديد --- + controller.isTimerComplete + ? Row( + children: [ + Expanded( + child: MyElevatedButton( + title: 'إلغاء'.tr, + kolor: NewAppColor.errorColor, + onPressed: () { + MyDialog().getDialog( + 'سيتم إلغاء التسجيل'.tr, '', + () async { + Get.back(); + Get.back(); + }); + }), + ), + const SizedBox(width: 16), + Expanded( + child: MyElevatedButton( + title: 'أواÙÙ‚'.tr, + kolor: NewAppColor.successColor, + onPressed: () { + controller.setApproved(); + }), + ), + ], + ) + : Column( + children: [ + CircularProgressIndicator( + value: controller.progressValue, + color: NewAppColor.primaryColor, + ), + const SizedBox(height: 8), + Text( + '${'الوقت المتبقي'.tr}: ${controller.remainingSeconds} ${"ثانية".tr}', + style: NewAppStyle.bodyStyle, + ), + ], + ), + ], + ), + ), + ), + ) + : const SizedBox(); + }), + ) + ], + isleading: true, + ); + } + + // --- واجهة عرض بيانات الوثيقة --- + Widget _buildDocumentDataCard({ + required String title, + required VoidCallback onRefresh, + required List children, + }) { + return Card( + elevation: 4.0, + color: NewAppColor.cardColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + side: BorderSide(color: NewAppColor.borderColor, width: 1), + ), + shadowColor: NewAppColor.primaryColor.withOpacity(0.1), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text(title, style: NewAppStyle.headlineStyle), + IconButton( + onPressed: onRefresh, + icon: + const Icon(Icons.refresh, color: NewAppColor.accentColor), + ), + ], + ), + const Divider( + height: 24, thickness: 1, color: NewAppColor.borderColor), + ...children, + ], + ), + ), + ); + } + + // --- واجهة التقاط صورة الوثيقة --- + Widget _buildCaptureCard({ + required String title, + required String imagePath, + required VoidCallback onTap, + }) { + return GestureDetector( + onTap: onTap, + child: Card( + clipBehavior: Clip.antiAlias, + elevation: 2.0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Image.asset( + imagePath, + height: Get.height * .20, + fit: BoxFit.cover, + // --- ÙÙŠ حال لم يتم العثور على الصورة --- + errorBuilder: (context, error, stackTrace) { + return Container( + height: Get.height * .20, + color: NewAppColor.borderColor, + child: const Icon( + Icons.camera_alt_outlined, + size: 50, + color: NewAppColor.subTextColor, + ), + ); + }, + ), + Container( + padding: const EdgeInsets.all(16.0), + color: NewAppColor.cardColor, + child: Text( + title, + style: AppStyle.title, + textAlign: TextAlign.center, + ), + ), + ], + ), + ), + ); + } + + // --- ويدجت لعرض معلومة (سطر) --- + Widget _infoRow(String label, String? value, {Color? valueColor}) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 6.0), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('$label: ', style: NewAppStyle.bodyStyle), + Expanded( + child: Text( + value ?? 'غير Ù…ØªÙˆÙØ±', + style: NewAppStyle.valueStyle.copyWith(color: valueColor), + ), + ), + ], + ), + ); + } + + GetBuilder egyptDriverLicense() { + return GetBuilder( + builder: (ai) { + if (ai.licenceFrontSy.isNotEmpty) { + final data = ai.licenceFrontSy; + + DateTime? expiryDateTime; + bool isExpired = false; + if (data['expiry_date'] != null) { + expiryDateTime = DateTime.tryParse(data['expiry_date']); + isExpired = expiryDateTime != null && + expiryDateTime.isBefore(DateTime.now()); + } + + // بطاقة «رخصة القيادة – الوجه الأمامي» بتنسيق مضغوط وأيقونات + return Card( + elevation: 2, + color: NewAppColor.cardColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(14), + side: BorderSide(color: NewAppColor.borderColor, width: .8), + ), + child: Padding( + padding: const EdgeInsets.all(12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // العنوان + زر التحديث + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('رخصة القيادة – الوجه الأمامي'.tr, + style: NewAppStyle.headlineStyle), + IconButton( + icon: const Icon(Icons.refresh, + size: 20, color: NewAppColor.accentColor), + splashRadius: 18, + onPressed: () async => await ai + .pickAndSendImage('driving_license_sy_front'), + ), + ], + ), + const SizedBox(height: 8), + + // سطر الاسم الكامل + + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if (data['name_arabic'] != null) + _iconInfo(Icons.person, data['name_arabic']!), + if (data['birth_place'] != null) + _iconInfo(Icons.location_city, data['birth_place']!), + ], + ), + const SizedBox(height: 8), + + // بقية الحقول داخل Wrap لتقليل الطول + Wrap( + spacing: 12, + runSpacing: 8, + children: [ + if (data['national_number'] != null) + _iconInfo(Icons.badge, data['national_number']!), + if (data['civil_registry'] != null) + _iconInfo(Icons.location_on, data['civil_registry']!), + if (data['blood_type'] != null) + _iconInfo(Icons.water_drop, data['blood_type']!), + if (data['birth_year'] != null) + _iconInfo(Icons.calendar_today, data['birth_year']!), + ], + ), + ], + ), + ), + ); + } + return _buildCaptureCard( + title: 'التقط صورة لرخصة القيادة'.tr, + imagePath: 'assets/images/1.png', + onTap: () async { + await ai.pickAndSendImage('driving_license_sy_front'); + }, + ); + }, + ); + } + + GetBuilder syriaDriverLicenseBack() { + return GetBuilder( + builder: (ai) { + if (ai.licenceBackSy.isNotEmpty) { + final data = ai.licenceBackSy; + + // صلاحية الرخصة + final DateTime? expDate = + DateTime.tryParse(data['expiry_date'] ?? ''); + final bool expired = + expDate != null && expDate.isBefore(DateTime.now()); + final Color expColor = expired + ? NewAppColor.errorColor // أحمر إن انتهت + : NewAppColor.successColor; // أخضر إن صالحة + + return Card( + elevation: 2, + color: NewAppColor.cardColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(14), + side: BorderSide(color: NewAppColor.borderColor, width: .8), + ), + child: Padding( + padding: const EdgeInsets.all(12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // عنوان البطاقة + زر الإنعاش + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('رخصة القيادة – الوجه الخلÙÙŠ'.tr, + style: NewAppStyle.headlineStyle), + IconButton( + splashRadius: 18, + icon: const Icon(Icons.refresh, + size: 20, color: NewAppColor.accentColor), + onPressed: () async => await ai + .pickAndSendImage('driving_license_sy_back'), + ), + ], + ), + const SizedBox(height: 8), + + // صÙÙ‘ أول (Ø§Ù„ÙØ¦Ø© + الرقم) + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if (data['license_category'] != null) + _iconInfo( + Icons.star, data['license_category']!), // D1 / D2… + if (data['license_number'] != null) + _iconInfo( + Icons.confirmation_number, data['license_number']!), + ], + ), + const SizedBox(height: 8), + + // صÙÙ‘ ثان٠(التواريخ) مع تلوين تاريخ الصلاحية + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if (data['issue_date'] != null) + _iconInfo(Icons.event, data['issue_date']!), + if (data['expiry_date'] != null) + _iconInfo(Icons.event_busy, data['expiry_date']!, + valueColor: expColor), + ], + ), + ], + ), + ), + ); + } + + // بطاقة الالتقاط Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© + return _buildCaptureCard( + title: 'التقط صورة الوجه الخلÙÙŠ للرخصة'.tr, + imagePath: 'assets/images/5.png', + onTap: () async => + await ai.pickAndSendImage('driving_license_sy_back'), + ); + }, + ); + } + + GetBuilder syriaDriverIDBack() { + return GetBuilder( + builder: (ai) { + // استلمنا الحقول الأربعة Ùقط (governorate-address-gender-issue_date) + if (ai.idBackSy.isNotEmpty) { + final data = ai.idBackSy; + + return Card( + elevation: 2, + color: NewAppColor.cardColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(14), + side: BorderSide(color: NewAppColor.borderColor, width: .8), + ), + child: Padding( + padding: const EdgeInsets.all(12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // العنوان + زر التحديث + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('بطاقة الهوية – الوجه الخلÙÙŠ'.tr, + style: NewAppStyle.headlineStyle), + IconButton( + splashRadius: 18, + icon: const Icon(Icons.refresh, + size: 20, color: NewAppColor.accentColor), + onPressed: () async => + await ai.pickAndSendImage('id_back_sy'), + ), + ], + ), + const SizedBox(height: 8), + + // Ø§Ù„Ù…Ø­Ø§ÙØ¸Ø© + العنوان + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if (data['governorate'] != null) + _iconInfo(Icons.location_city, data['governorate']!), + if (data['address'] != null) + _iconInfo(Icons.home, data['address']!), + ], + ), + const SizedBox(height: 8), + + // الجنس + تاريخ الإصدار + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if (data['gender'] != null) + _iconInfo(Icons.person, data['gender']!), + if (data['issue_date'] != null) + _iconInfo(Icons.event, data['issue_date']!), + ], + ), + ], + ), + ), + ); + } + + // البطاقة Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© لالتقاط الصورة + return _buildCaptureCard( + title: 'التقط صورة للوجه الخلÙÙŠ للهوية'.tr, + imagePath: 'assets/images/4.png', + onTap: () async => await ai.pickAndSendImage('id_back_sy'), + ); + }, + ); + } + + /// عنصر (أيقونة + قيمة) مع لون نص مخصّص عند الحاجة + Widget _iconInfo(IconData icon, String value, {Color? valueColor}) { + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(icon, size: 18, color: NewAppColor.accentColor), + const SizedBox(width: 4), + Flexible( + child: Text( + value.tr, + style: NewAppStyle.bodyStyle.copyWith(color: valueColor), + overflow: TextOverflow.ellipsis, + ), + ), + ], + ); + } + + GetBuilder syriaIdCardFront() { + // أبق٠الاسم القديم إذا أردت + return GetBuilder( + builder: (ai) { + if (ai.idFrontSy.isNotEmpty) { + // غيّر Ø§Ù„Ù…ÙØªØ§Ø­ حسب متغيرك + final data = ai.idFrontSy; + + return Card( + elevation: 2, + color: NewAppColor.cardColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(14), + side: BorderSide(color: NewAppColor.borderColor, width: .8), + ), + child: Padding( + padding: const EdgeInsets.all(12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // العنوان + زر التحديث + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('بطاقة الهوية – الوجه الأمامي'.tr, + style: NewAppStyle.headlineStyle), + IconButton( + splashRadius: 18, + icon: const Icon(Icons.refresh, + size: 20, color: NewAppColor.accentColor), + onPressed: () async => await ai.pickAndSendImage( + 'id_front_sy', // أو id_front حسب تسمية end-point + ), + ), + ], + ), + const SizedBox(height: 8), + + // سطر الاسم الكامل + if (data['full_name'] != null) + _iconInfo(Icons.person, data['full_name']!), + const SizedBox(height: 8), + + // صÙÙ‘ (الرقم الوطني + تاريخ الميلاد) + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if (data['national_number'] != null) + _iconInfo(Icons.badge, data['national_number']!), + if (data['dob'] != null) + _iconInfo(Icons.cake, data['dob']!), + ], + ), + const SizedBox(height: 8), + + // العنوان كامل Ø¨Ù…ÙØ±Ø¯Ù‡ + if (data['address'] != null) + _iconInfo(Icons.home, data['address']!), + ], + ), + ), + ); + } + + // كارد الالتقاط Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© + return _buildCaptureCard( + title: 'التقط صورة للوجه الأمامي للهوية'.tr, + imagePath: 'assets/images/2.png', + onTap: () async => await ai.pickAndSendImage('id_front_sy'), + ); + }, + ); + } + + GetBuilder syriaVehicleCardFront() { + // يمكنك إبقاء الاسم القديم إن شئت + return GetBuilder( + builder: (ai) { + if (ai.vehicleFrontSy.isNotEmpty) { + final data = ai.vehicleFrontSy; + + // تاريخ Ø§Ù„ÙØ­Øµ القادم Ù„Ù„ÙØ­Øµ الدوري (inspection_date) + final DateTime? nextCheck = + DateTime.tryParse(data['inspection_date'] ?? ''); + final bool overdue = + nextCheck != null && nextCheck.isBefore(DateTime.now()); + final Color checkColor = + overdue ? NewAppColor.errorColor : NewAppColor.successColor; + + return Card( + elevation: 2, + color: NewAppColor.cardColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(14), + side: BorderSide(color: NewAppColor.borderColor, width: .8), + ), + child: Padding( + padding: const EdgeInsets.all(12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // العنوان + تحديث + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('رخصة المركبة – الوجه الأمامي'.tr, + style: NewAppStyle.headlineStyle), + IconButton( + splashRadius: 18, + icon: const Icon(Icons.refresh, + size: 20, color: NewAppColor.accentColor), + onPressed: () async => await ai.pickAndSendImage( + 'vehicle_license_sy_front', + ), + ), + ], + ), + const SizedBox(height: 8), + + // الص٠الأوّل (لوحة + مالك) + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if (data['car_plate'] != null) + _iconInfo(Icons.directions_car, data['car_plate']!), + if (data['owner'] != null) + _iconInfo(Icons.person, data['owner']!), + ], + ), + const SizedBox(height: 8), + + // الص٠الثاني (VIN + اللون) + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if (data['vin'] != null) + _iconInfo(Icons.confirmation_num, data['vin']!), + if (data['color'] != null) + _iconInfo(Icons.palette, data['color']!), + ], + ), + const SizedBox(height: 8), + + // الص٠الثالث (تاريخ المنح + Ø§Ù„ÙØ­Øµ القادم) + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if (data['issue_date'] != null) + _iconInfo(Icons.event, data['issue_date']!), + if (data['inspection_date'] != null) + _iconInfo( + Icons.event_available, data['inspection_date']!, + valueColor: checkColor), + ], + ), + ], + ), + ), + ); + } + + // لو لم ØªÙØ±Ùع صورة بعد + return _buildCaptureCard( + title: 'التقط صورة لوجه رخصة المركبة'.tr, + imagePath: 'assets/images/6.png', + onTap: () async => + await ai.pickAndSendImage('vehicle_license_sy_front'), + ); + }, + ); + } + + GetBuilder syriaVehicleCardBack() { + // أبق٠الاسم القديم إن أردت + return GetBuilder( + builder: (ai) { + if (ai.vehicleBackSy.isNotEmpty) { + final data = ai.vehicleBackSy; + + return Card( + elevation: 2, + color: NewAppColor.cardColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(14), + side: BorderSide(color: NewAppColor.borderColor, width: .8), + ), + child: Padding( + padding: const EdgeInsets.all(12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // العنوان + زر تحديث + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('رخصة المركبة – الوجه الخلÙÙŠ'.tr, + style: NewAppStyle.headlineStyle), + IconButton( + splashRadius: 18, + icon: const Icon(Icons.refresh, + size: 20, color: NewAppColor.accentColor), + onPressed: () async => await ai.pickAndSendImage( + 'vehicle_license_sy_back', + ), + ), + ], + ), + const SizedBox(height: 8), + + // صÙÙ‘ (الشركة + الطراز) + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if (data['make'] != null) + _iconInfo(Icons.factory, data['make']!), + if (data['model'] != null) + _iconInfo(Icons.directions_car_filled, data['model']!), + ], + ), + const SizedBox(height: 8), + + // صÙÙ‘ (سنة الصنع + اللون) + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if (data['year'] != null) + _iconInfo(Icons.calendar_today, data['year']!), + if (data['fuel'] != null) + _iconInfo(Icons.local_gas_station, data['fuel']!), + ], + ), + const SizedBox(height: 8), + + // رقم الهيكل Ø¨Ù…ÙØ±Ø¯Ù‡ (قد يكون طويلًا) + if (data['chassis'] != null) + _iconInfo(Icons.confirmation_num, data['chassis']!), + ], + ), + ), + ); + } + + // بطاقة الالتقاط Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© + return _buildCaptureCard( + title: 'التقط صورة لخلÙية رخصة المركبة'.tr, + imagePath: 'assets/images/3.png', + onTap: () async => + await ai.pickAndSendImage('vehicle_license_sy_back'), + ); + }, + ); + } + + GetBuilder egyptCriminalRecord() { + return GetBuilder( + builder: (ai) { + if (ai.responseCriminalRecordEgypt.isNotEmpty) { + return _buildDocumentDataCard( + title: 'ØµØ­ÙŠÙØ© الحالة الجنائية'.tr, + onRefresh: () async { + await ai.allMethodForAI( + (ai.prompts[5]['prompt'].toString()), + AppLink.uploadEgypt, + 'criminalRecord', + ); + }, + children: [ + _infoRow('نتيجة Ø§Ù„ÙØ­Øµ'.tr, + ai.responseCriminalRecordEgypt['InspectionResult']), + _infoRow( + 'الاسم الكامل'.tr, + ai.responseCriminalRecordEgypt['FullName'], + valueColor: (ai.responseCriminalRecordEgypt['FullName']) == + (ai.responseIdEgyptDriverLicense['name_arabic']) + ? NewAppColor.successColor + : NewAppColor.errorColor, + ), + _infoRow('الرقم القومي'.tr, + ai.responseCriminalRecordEgypt['NationalID']), + ], + ); + } + return _buildCaptureCard( + title: 'التقط صورة Ù„ØµØ­ÙŠÙØ© الحالة الجنائية'.tr, + imagePath: 'assets/images/6.png', + onTap: () async { + await ai.allMethodForAI( + (ai.prompts[5]['prompt'].toString()), + AppLink.uploadEgypt, + 'criminalRecord', + ); + }, + ); + }, + ); + } +} + +// --- واجهة عرض الأقسام غير المصرية (بدون تغيير) --- + +// --- زر الÙيديو بتصميم جديد --- +class VideoButton extends StatelessWidget { + final String videoUrl = + "https://youtube.com/shorts/fC0RmYH5B_0?feature=share"; + + @override + Widget build(BuildContext context) { + return Card( + elevation: 2, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + child: InkWell( + onTap: () async { + if (await canLaunchUrl(Uri.parse(videoUrl))) { + await launchUrl(Uri.parse(videoUrl)); + } else { + Get.snackbar('خطأ', 'لا يمكن ÙØªØ­ الÙيديو'); + } + }, + borderRadius: BorderRadius.circular(12), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 12.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.play_circle_outline, + color: NewAppColor.accentColor, size: 28), + const SizedBox(width: 12), + Text( + "شاهد Ùيديو الشرح".tr, + style: AppStyle.title.copyWith(color: NewAppColor.accentColor), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/views/auth/captin/contact_us_page.dart b/lib/views/auth/captin/contact_us_page.dart new file mode 100755 index 0000000..6e5abc9 --- /dev/null +++ b/lib/views/auth/captin/contact_us_page.dart @@ -0,0 +1,100 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; + +import '../../../constant/colors.dart'; +import '../../../constant/style.dart'; +import '../../../controller/functions/tts.dart'; +import '../../../controller/home/captin/contact_us_controller.dart'; +import '../../widgets/my_scafold.dart'; + +class ContactUsPage extends StatelessWidget { + ContactUsPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(ContactUsController()); + return GetBuilder(builder: (controller) { + return MyScafolld( + title: "Contact Us".tr, + body: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: ListView( + // crossAxisAlignment: CrossAxisAlignment.center, + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + decoration: AppStyle.boxDecoration1, + child: Column( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(15), + child: Image.asset('assets/images/logo.gif')), + IconButton( + onPressed: () async { + Get.put(TextToSpeechController()).speakText( + 'Tripz is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.' + .tr); + }, + icon: const Icon(Icons.headphones), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + 'Tripz is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.' + .tr, + style: AppStyle.title, + textAlign: TextAlign.center, + ), + ), + ], + ), + ), + const SizedBox( + height: 30, + ), + Container( + decoration: AppStyle.boxDecoration1, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + "You can contact us during working hours from 12:00 - 19:00." + .tr, + style: AppStyle.title, + textAlign: TextAlign.center, + ), + ), + ), + InkWell( + onTap: () => controller.showContactDialog(context), + child: const Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Icon( + Icons.phone, + color: AppColor.blueColor, + ), + Icon( + FontAwesome.whatsapp, + color: AppColor.greenColor, + ), + Icon( + Icons.email, + color: AppColor.redColor, + ), + ], + ), + ), + const SizedBox( + height: 30, + ) + ], + ), + ) + ], + isleading: true); + }); + } +} diff --git a/lib/views/auth/captin/criminal_documents_page.dart b/lib/views/auth/captin/criminal_documents_page.dart new file mode 100755 index 0000000..1d1df44 --- /dev/null +++ b/lib/views/auth/captin/criminal_documents_page.dart @@ -0,0 +1,211 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../constant/box_name.dart'; +import '../../../constant/colors.dart'; +import '../../../constant/links.dart'; +import '../../../constant/style.dart'; +import '../../../controller/functions/encrypt_decrypt.dart'; +import '../../../controller/functions/gemeni.dart'; +import '../../../controller/functions/tts.dart'; +import '../../../main.dart'; +import '../../widgets/elevated_btn.dart'; +import '../../widgets/my_scafold.dart'; + +class CriminalDocumemtPage extends StatelessWidget { + const CriminalDocumemtPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(AI()); + return MyScafolld( + title: "Criminal Document".tr, + isleading: false, + body: [ + GetBuilder(builder: (controller) { + return Column( + children: [ + Container( + decoration: AppStyle.boxDecoration, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text('You have upload Criminal documents'.tr), + )), + egyptCriminalRecord(), + controller.responseCriminalRecordEgypt.isNotEmpty + ? MyElevatedButton( + title: 'Next'.tr, + onPressed: () async { + if ((controller + .responseCriminalRecordEgypt['FullName']) != + box.read(BoxName.nameArabic)) //todo get from server + { + Get.defaultDialog( + barrierDismissible: false, + title: 'Criminal Record Mismatch', + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.warning, + size: 48, color: Colors.red), + const SizedBox(height: 16), + Text( + 'The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.' + .tr, + textAlign: TextAlign.center, + style: AppStyle.title, + ), + const SizedBox(height: 16), + IconButton( + onPressed: () async { + await Get.find() + .speakText( + 'The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.' + .tr, + ); + }, + icon: const Icon(Icons.volume_up), + ), + ], + ), + actions: [ + TextButton( + onPressed: () { + Get.back(); + }, + child: const Text('OK'), + ), + ], + ); + } else { + await controller.addCriminalDocuments(); + } + }) + : const SizedBox(), + ], + ); + }) + ], + ); + } + + GetBuilder egyptCriminalRecord() { + return GetBuilder( + builder: (ai) { + if (ai.responseCriminalRecordEgypt.isNotEmpty) { + return Card( + elevation: 4.0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('Criminal Record'.tr, style: AppStyle.headTitle2), + IconButton( + onPressed: () async { + await ai.allMethodForAI( + """ +Write a JSON object from the following information extracted from the provided Arabic text: + +{ + "InspectionResult": "", + "NationalID": "", + "FullName": "", + "IssueDate": "" // Format: YYYY-MM-DD +} + +Important notes: +1. For the IssueDate, ensure the date is in YYYY-MM-DD format using Latin numerals (0-9). +2. Add appropriate spaces in all text fields to ensure readability. +3. If any information is missing, leave the corresponding field as an empty string. +4. Ensure all text is properly formatted and spaces are used correctly. +5. Convert any Arabic numerals to Latin numerals (0-9) where applicable. + +Please fill in the JSON object with the extracted information, following these guidelines. +""", + AppLink.uploadEgypt, + 'criminalRecord', + ); + }, + icon: const Icon(Icons.refresh), + ), + ], + ), + const SizedBox(height: 8.0), + const Divider(color: AppColor.accentColor), + const SizedBox(height: 8.0), + Text( + '${'InspectionResult'.tr}: ${(ai.responseCriminalRecordEgypt['InspectionResult'])}'), + const SizedBox(height: 8.0), + Text( + '${'FullName'.tr}: ${(ai.responseCriminalRecordEgypt['FullName'])}', + style: AppStyle.title.copyWith( + color: (ai.responseCriminalRecordEgypt['FullName']) == + (ai.responseIdEgyptDriverLicense['name_arabic']) + ? AppColor.greenColor + : AppColor.redColor), + ), + const SizedBox(height: 8.0), + Text( + '${'NationalID'.tr}: ${(ai.responseCriminalRecordEgypt['NationalID'])}'), + const SizedBox(height: 8.0), + Text( + '${'IssueDate'.tr}: ${ai.responseCriminalRecordEgypt['IssueDate']}'), + ], + ), + ), + ); + } + return Card( + child: InkWell( + onTap: () async { + await ai.allMethodForAI( + """ +Write a JSON object from the following information extracted from the provided Arabic text: + +{ + "InspectionResult": "", + "NationalID": "", + "FullName": "", + "IssueDate": "" // Format: YYYY-MM-DD +} + +Important notes: +1. For the IssueDate, ensure the date is in YYYY-MM-DD format using Latin numerals (0-9). +2. Add appropriate spaces in all text fields to ensure readability. +3. If any information is missing, leave the corresponding field as an empty string. +4. Ensure all text is properly formatted and spaces are used correctly. +5. Convert any Arabic numerals to Latin numerals (0-9) where applicable. + +Please fill in the JSON object with the extracted information, following these guidelines. +""", + AppLink.uploadEgypt, + 'criminalRecord', + ); + }, + child: Column( + children: [ + Image.asset( + 'assets/images/6.png', + height: Get.height * .25, + width: double.maxFinite, + fit: BoxFit.fitHeight, + ), + Text( + 'Capture an Image of Your Criminal Record'.tr, + style: AppStyle.title, + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/lib/views/auth/captin/driver_car_controller.dart b/lib/views/auth/captin/driver_car_controller.dart new file mode 100755 index 0000000..1fae00d --- /dev/null +++ b/lib/views/auth/captin/driver_car_controller.dart @@ -0,0 +1,110 @@ +import 'dart:convert'; + +import 'package:get/get.dart'; + +import '../../../constant/box_name.dart'; +import '../../../constant/links.dart'; +import '../../../controller/functions/crud.dart'; +import '../../../main.dart'; +import '../../widgets/error_snakbar.dart'; + +class DriverCarController extends GetxController { + bool isLoading = false; + List cars = []; + // int? carId; + fetchCatrsForDrivers() async { + isLoading = true; + update(); + var res = await CRUD().get(link: AppLink.getNewCarsDrivers, payload: { + "driverID": box.read(BoxName.driverID).toString(), + }); + if (res != 'failure') { + var d = jsonDecode(res)['message']; + cars = d; + // carId = cars.isEmpty ? 1 : cars.length + 1; + } + isLoading = false; + update(); + } + + addCarsForDrivers( + String vin, + String carPlate, + String make, + String model, + String year, + String expirationDate, + String color, + String colorHex, + String address, + String owner, + String registrationDate, + String displacement, + String fuel) async { + var res = await CRUD().post( + link: AppLink.addRegisrationCar, + payload: { + "driverID": box.read(BoxName.driverID).toString(), + "vin": vin ?? 'unknown', + "car_plate": carPlate.toString(), + "make": make ?? 'unknown', + "model": model ?? 'unknown', + "year": year ?? 'unknown', + "expiration_date": expirationDate ?? 'unknown', + "color": color ?? 'unknown', + "owner": owner ?? 'unknown', + "color_hex": colorHex ?? '#000000', + "address": address ?? 'unknown', + "displacement": displacement ?? 'unknown', + "fuel": fuel ?? 'unknown', + "registration_date": registrationDate ?? 'unknown', + }, + ); + if (res != 'failure') { + mySnackbarSuccess(''); + + fetchCatrsForDrivers(); + } else { + mySnackeBarError(''); + } + } + +// update carRegistration only and insert on it without tow column + Future updateCarRegistration(String id, String driverID) async { + final body = { + 'id': id, + 'driverID': driverID, + }; +// remove default before update + var response = await CRUD().post( + link: AppLink.makeDefaultCar, + payload: body, + ); + + if (response != 'failure') { + mySnackbarSuccess('Updated'.tr); + } else { + mySnackeBarError('Not updated'.tr); + } + } + +//todo need review + removeCar(String carId) async { + isLoading = true; + update(); + var res = await CRUD().post(link: AppLink.deleteNewCarsDrivers, payload: { + "id": carId.toString(), + }); + if (res != 'failure') { + mySnackbarSuccess('deleted'.tr); + } + isLoading = false; + update(); + } + + @override + void onInit() { + fetchCatrsForDrivers(); + super.onInit(); + } +} diff --git a/lib/views/auth/captin/forget.dart b/lib/views/auth/captin/forget.dart new file mode 100755 index 0000000..e69de29 diff --git a/lib/views/auth/captin/invite_driver_screen.dart b/lib/views/auth/captin/invite_driver_screen.dart new file mode 100755 index 0000000..a2ee677 --- /dev/null +++ b/lib/views/auth/captin/invite_driver_screen.dart @@ -0,0 +1,640 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:get/get.dart'; + +import '../../../constant/box_name.dart'; +import '../../../constant/colors.dart'; +import '../../../controller/auth/captin/invit_controller.dart'; +import '../../../controller/functions/encrypt_decrypt.dart'; +import '../../../main.dart'; + +class InviteScreen extends StatelessWidget { + final InviteController controller = Get.put(InviteController()); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: CupertinoColors.systemBackground, + appBar: AppBar( + backgroundColor: CupertinoColors.systemBackground, + elevation: 0, + title: Text( + 'Invite'.tr, + style: const TextStyle(color: CupertinoColors.label), + ), + leading: IconButton( + icon: const Icon(Icons.arrow_back_ios, color: AppColor.blueColor), + onPressed: () => Get.back(), + ), + ), + body: SafeArea( + child: GetBuilder( + builder: (controller) { + return Column( + children: [ + Padding( + padding: const EdgeInsets.all(16.0), + child: Container( + decoration: BoxDecoration( + color: CupertinoColors.systemGrey6, + borderRadius: BorderRadius.circular(8), + ), + child: SegmentedButton( + style: ButtonStyle( + backgroundColor: WidgetStateProperty.resolveWith( + (states) => states.contains(WidgetState.selected) + ? CupertinoColors.white + : Colors.transparent, + ), + foregroundColor: WidgetStateProperty.resolveWith( + (states) => states.contains(WidgetState.selected) + ? AppColor.blueColor + : CupertinoColors.label, + ), + ), + segments: [ + ButtonSegment( + value: 0, + label: Padding( + padding: const EdgeInsets.all(8.0), + child: Text('Drivers'.tr), + ), + ), + ButtonSegment( + value: 1, + label: Padding( + padding: const EdgeInsets.all(8.0), + child: Text('Passengers'.tr), + ), + ), + ], + selected: {controller.selectedTab}, + onSelectionChanged: (Set newSelection) { + controller.updateSelectedTab(newSelection.first); + }, + ), + ), + ), + Expanded( + child: SingleChildScrollView( + padding: const EdgeInsets.all(16), + child: controller.selectedTab == 0 + ? _buildDriverTab(context) + : _buildPassengerTab(context), + ), + ), + ], + ); + }, + ), + ), + ); + } + + Widget _buildDriverTab(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 20), + Text( + "Invite another driver and both get a gift after he completes 100 trips!" + .tr, + style: const TextStyle( + fontSize: 17, + fontWeight: FontWeight.w600, + color: CupertinoColors.label, + ), + ), + const SizedBox(height: 20), + _buildPhoneInput(), + const SizedBox(height: 20), + _buildActionButtons(), + const SizedBox(height: 20), + _buildInvitationsList(context), + ], + ); + } + + Widget _buildPassengerTab(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: CupertinoColors.systemGrey6, + borderRadius: BorderRadius.circular(12), + ), + child: Column( + children: [ + Text( + "Share this code with passengers and earn rewards when they use it!" + .tr, + textAlign: TextAlign.center, + style: const TextStyle( + color: CupertinoColors.secondaryLabel, + fontSize: 13, + ), + ), + ], + ), + ), + const SizedBox(height: 20), + _buildPhoneInput(), + const SizedBox(height: 20), + _buildActionButtonsPassengers(), + const SizedBox(height: 20), + const SizedBox(height: 20), + _buildInvitationsListPassengers(context), + ], + ); + } + + Widget _buildPhoneInput() { + return Container( + decoration: BoxDecoration( + color: CupertinoColors.systemGrey6, + borderRadius: BorderRadius.circular(8), + ), + child: Row( + children: [ + Expanded( + child: CupertinoTextField.borderless( + controller: controller.invitePhoneController, + placeholder: 'Enter phone'.tr, + padding: const EdgeInsets.all(12), + keyboardType: TextInputType.phone, + ), + ), + CupertinoButton( + child: const Icon(CupertinoIcons.person_badge_plus, + color: AppColor.blueColor), + onPressed: () async { + await controller.pickContacts(); + if (controller.contacts.isNotEmpty) { + if (box.read(BoxName.isSavedPhones) == null) { + // controller.savePhoneToServer(); + box.write(BoxName.isSavedPhones, true); + } + _showContactsDialog(Get.context!); + } + }, + ), + ], + ), + ); + } + + Widget _buildActionButtons() { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 20.0, horizontal: 16.0), + child: Row( + children: [ + Expanded( + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 6, + offset: const Offset(0, 3), + ), + ], + ), + child: CupertinoButton( + color: AppColor.blueColor, + borderRadius: BorderRadius.circular(10), + padding: const EdgeInsets.symmetric(vertical: 14), + onPressed: controller.sendInvite, + child: Text( + 'Send Invite'.tr, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: CupertinoColors.white, + ), + ), + ), + ), + ), + const SizedBox(width: 16), + Expanded( + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 6, + offset: const Offset(0, 3), + ), + ], + ), + child: CupertinoButton( + color: AppColor.blueColor, + borderRadius: BorderRadius.circular(10), + padding: const EdgeInsets.symmetric(vertical: 14), + child: Text( + 'Show Invitations'.tr, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: CupertinoColors.white, + ), + ), + onPressed: () async { + controller.fetchDriverStats(); + }, + ), + ), + ), + ], + ), + ); + } + + Widget _buildActionButtonsPassengers() { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 20.0, horizontal: 16.0), + child: Row( + children: [ + Expanded( + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 6, + offset: const Offset(0, 3), + ), + ], + ), + child: CupertinoButton( + color: AppColor.blueColor, + borderRadius: BorderRadius.circular(10), + padding: const EdgeInsets.symmetric(vertical: 14), + onPressed: controller.sendInviteToPassenger, + child: Text( + 'Send Invite'.tr, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: CupertinoColors.white, + ), + ), + ), + ), + ), + const SizedBox(width: 16), + Expanded( + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 6, + offset: const Offset(0, 3), + ), + ], + ), + child: CupertinoButton( + color: AppColor.blueColor, + borderRadius: BorderRadius.circular(10), + padding: const EdgeInsets.symmetric(vertical: 14), + child: Text( + 'Show Invitations'.tr, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: CupertinoColors.white, + ), + ), + onPressed: () async { + controller.fetchDriverStatsPassengers(); + }, + ), + ), + ), + ], + ), + ); + } + + Widget _buildInvitationsList(BuildContext context) { + return SizedBox( + height: Get.height * .4, + child: controller.driverInvitationData.isEmpty + ? Center( + child: Text( + "No invitation found yet!".tr, + style: const TextStyle( + color: CupertinoColors.secondaryLabel, + fontSize: 17, + ), + ), + ) + : ListView.builder( + itemCount: controller.driverInvitationData.length, + itemBuilder: (context, index) { + return _buildInvitationItem(context, index); + }, + ), + ); + } + + Widget _buildInvitationsListPassengers(BuildContext context) { + return SizedBox( + height: Get.height * .4, + child: controller.driverInvitationDataToPassengers.isEmpty + ? Center( + child: Text( + "No invitation found yet!".tr, + style: const TextStyle( + color: CupertinoColors.secondaryLabel, + fontSize: 17, + ), + ), + ) + : ListView.builder( + itemCount: controller.driverInvitationDataToPassengers.length, + itemBuilder: (context, index) { + return _buildInvitationItemPassengers(context, index); + }, + ), + ); + } + + Widget _buildInvitationItem(BuildContext context, int index) { + int countOfInvitDriver = int.tryParse( + (controller.driverInvitationData[index]['countOfInvitDriver']) + ?.toString() ?? + '0') ?? + 0; + double progressValue = (countOfInvitDriver / 100.0).clamp(0.0, 1.0); + + return GestureDetector( + onTap: () { + controller.onSelectDriverInvitation(index); + }, + child: Container( + margin: const EdgeInsets.symmetric(vertical: 8.0), + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: CupertinoColors.systemGrey6, + borderRadius: BorderRadius.circular(12), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + (controller.driverInvitationData[index]['invitorName']), + style: const TextStyle( + fontSize: 17, + fontWeight: FontWeight.w600, + color: CupertinoColors.label, + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(4), + child: LinearProgressIndicator( + value: progressValue, + backgroundColor: CupertinoColors.systemGrey4, + valueColor: + const AlwaysStoppedAnimation(AppColor.blueColor), + minHeight: 6, + ), + ), + const SizedBox(height: 4), + Text( + '$countOfInvitDriver / 100 ${'Trip'.tr}', + style: const TextStyle( + fontSize: 13, + color: CupertinoColors.secondaryLabel, + ), + ), + ], + ), + ), + ); + } + + Widget _buildInvitationItemPassengers(BuildContext context, int index) { + // Extracting the data from the sample JSON-like structure + var invitation = controller.driverInvitationDataToPassengers[index]; + + int countOfInvitDriver = + int.tryParse((invitation['countOfInvitDriver'])?.toString() ?? '0') ?? + 0; + double progressValue = (countOfInvitDriver / 10.0).clamp(0.0, 1.0); + + return GestureDetector( + onTap: () { + controller.onSelectPassengerInvitation(index); + }, + child: Container( + margin: const EdgeInsets.symmetric(vertical: 8.0), + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: CupertinoColors.systemGrey6, + borderRadius: BorderRadius.circular(12), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + (invitation['passengerName']) + .toString(), // Handle null or missing data + style: const TextStyle( + fontSize: 17, + fontWeight: FontWeight.w600, + color: CupertinoColors.label, + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(4), + child: LinearProgressIndicator( + value: progressValue, + backgroundColor: CupertinoColors.systemGrey4, + valueColor: + const AlwaysStoppedAnimation(AppColor.blueColor), + minHeight: 6, + ), + ), + const SizedBox(height: 4), + Text( + '$countOfInvitDriver / 3 ${'Trip'.tr}', // Show trips completed + style: const TextStyle( + fontSize: 13, + color: CupertinoColors.secondaryLabel, + ), + ), + ], + ), + ), + ); + } + + Widget _buildPassengerStats(BuildContext context) { + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: CupertinoColors.systemGrey6, + borderRadius: BorderRadius.circular(12), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "Your Rewards".tr, + style: const TextStyle( + fontSize: 17, + fontWeight: FontWeight.w600, + color: CupertinoColors.label, + ), + ), + const SizedBox(height: 16), + _buildStatItem( + context, + "Total Invites".tr, + (controller.driverInvitationDataToPassengers[0] + ['countOfInvitDriver'] + .toString()), + ), + _buildStatItem( + context, + "Active Users".tr, + (controller.driverInvitationDataToPassengers[0]['passengerName']) + .toString(), + ), + ], + ), + ); + } + + Widget _buildStatItem(BuildContext context, String label, String value) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + label, + style: const TextStyle( + color: CupertinoColors.label, + fontSize: 15, + ), + ), + Text( + value, + style: const TextStyle( + fontWeight: FontWeight.w600, + color: AppColor.blueColor, + fontSize: 15, + ), + ), + ], + ), + ); + } + + void _showContactsDialog(BuildContext context) { + showCupertinoModalPopup( + context: context, + builder: (BuildContext context) => Container( + height: 400, + color: CupertinoColors.systemBackground, + child: Column( + children: [ + Container( + padding: const EdgeInsets.all(16.0), + decoration: BoxDecoration( + border: Border( + bottom: BorderSide( + color: CupertinoColors.separator.withOpacity(0.5)), + ), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + CupertinoButton( + padding: EdgeInsets.zero, + child: Text('Cancel'.tr), + onPressed: () => Navigator.pop(context), + ), + Text( + 'Choose from contact'.tr, + style: const TextStyle( + fontSize: 17, + fontWeight: FontWeight.w600, + ), + ), + const SizedBox(width: 60), // For balance + ], + ), + ), + Expanded( + child: ListView.builder( + itemCount: controller.contactMaps.length, + itemBuilder: (context, index) { + final contact = controller.contactMaps[index]; + return Container( + decoration: BoxDecoration( + border: Border( + bottom: BorderSide( + color: CupertinoColors.separator.withOpacity(0.5), + ), + ), + ), + child: CupertinoButton( + padding: const EdgeInsets.symmetric( + horizontal: 16, vertical: 12), + child: Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + contact['name'], + style: const TextStyle( + color: CupertinoColors.label, + fontSize: 17, + ), + ), + Text( + controller.formatPhoneNumber( + contact['phones'][0].toString()), + style: const TextStyle( + color: CupertinoColors.secondaryLabel, + fontSize: 15, + ), + ), + ], + ), + ), + const Icon( + CupertinoIcons.chevron_right, + color: CupertinoColors.secondaryLabel, + ), + ], + ), + onPressed: () { + controller.selectPhone(contact['phones'].toString()); + // Navigator.pop(context); + }, + ), + ); + }, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/views/auth/captin/login_captin.dart b/lib/views/auth/captin/login_captin.dart new file mode 100755 index 0000000..1867f10 --- /dev/null +++ b/lib/views/auth/captin/login_captin.dart @@ -0,0 +1,452 @@ +import 'dart:io'; + +import 'package:sefer_driver/views/auth/captin/contact_us_page.dart'; +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:flutter_widget_from_html/flutter_widget_from_html.dart'; +import 'package:get/get.dart'; +import 'package:permission_handler/permission_handler.dart'; + +import '../../../constant/box_name.dart'; +import '../../../constant/colors.dart'; +import '../../../constant/info.dart'; +import '../../../constant/style.dart'; +import '../../../controller/auth/apple_sigin.dart'; +import '../../../controller/auth/captin/login_captin_controller.dart'; +import '../../../controller/auth/google_sign.dart'; +import '../../../controller/functions/encrypt_decrypt.dart'; +import '../../../controller/functions/overlay_permisssion.dart'; +import '../../../main.dart'; +import '../../../print.dart'; +import '../../widgets/elevated_btn.dart'; +import '../../widgets/mycircular.dart'; +import '../country_widget.dart'; +import 'otp_page.dart'; + +class LoginCaptin extends StatelessWidget { + final AuthController authController = Get.put(AuthController()); + final LoginDriverController controller = Get.put(LoginDriverController()); + + LoginCaptin({super.key}); + + @override + Widget build(BuildContext context) { + return GetBuilder( + builder: (controller) { + return Scaffold( + backgroundColor: AppColor.secondaryColor, + body: SafeArea( + child: Center( + child: _buildBodyContent(context, controller), + ), + ), + ); + }, + ); + } + + /// Determines which UI to show based on the driver's progress (agreement, permissions, login). + Widget _buildBodyContent( + BuildContext context, LoginDriverController controller) { + if (box.read(BoxName.agreeTerms) != 'agreed') { + return _buildAgreementPage(context, controller); + } + // if (box.read(BoxName.countryCode) == null) { + // return CountryPicker(); // Assumed to be a full-screen widget + // } + if (box.read(BoxName.locationPermission) != 'true') { + return _buildLocationPermissionPage(context, controller); + } + // Once all permissions are granted, show the main login UI + return PhoneNumberScreen(); + } + + /// Redesigned UI for the main login screen. + Widget _buildLoginUI(BuildContext context, LoginDriverController controller) { + return SingleChildScrollView( + padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 32.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Image.asset('assets/images/logo.gif', height: 120, width: 120), + const SizedBox(height: 20), + Text( + 'Driver Portal'.tr, + textAlign: TextAlign.center, + style: AppStyle.headTitle2.copyWith(fontSize: 28), + ), + const SizedBox(height: 8), + Text( + 'Sign in to start your journey'.tr, + textAlign: TextAlign.center, + style: AppStyle.subtitle, + ), + const SizedBox(height: 40), + + // Conditional UI based on the controller state + if (controller.isGoogleDashOpen) + _buildManualLoginForm(context, controller, isRegistration: true) + else if (Platform.isIOS && controller.isTest == 0) + _buildManualLoginForm(context, controller, isRegistration: false) + else + _buildSocialLoginOptions(context, controller), + + const SizedBox(height: 32), + Center( + child: GestureDetector( + onTap: () => Get.to(() => ContactUsPage()), + child: Text( + 'Need help? Contact Us'.tr, + style: AppStyle.subtitle.copyWith( + color: AppColor.blueColor, + decoration: TextDecoration.underline, + ), + ), + ), + ), + ], + ), + ); + } + + /// Builds the social login buttons (Google, Apple, and manual option). + Widget _buildSocialLoginOptions( + BuildContext context, LoginDriverController controller) { + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Text( + 'Sign in with a provider for easy access'.tr, + textAlign: TextAlign.center, + style: AppStyle.title, + ), + const SizedBox(height: 24), + _buildSocialButton( + text: 'Sign In with Google'.tr, + icon: FontAwesome.google, + backgroundColor: AppColor.redColor, + onPressed: () async { + GoogleSignInHelper().signInFromLogin(); + }, + ), + if (Platform.isIOS) ...[ + const SizedBox(height: 16), + _buildSocialButton( + text: 'Sign in with Apple'.tr, + icon: Icons.apple, + backgroundColor: Colors.black, + onPressed: () async { + User? user = await authController.signInWithApple(); + if (user != null) { + box.write(BoxName.emailDriver, user.email.toString()); + box.write(BoxName.driverID, user.uid); + controller.loginWithGoogleCredential( + user.uid, + user.email.toString(), + ); + } + }, + ), + ], + const SizedBox(height: 24), + Row( + children: [ + const Expanded(child: Divider()), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: Text('Or'.tr, style: AppStyle.subtitle), + ), + const Expanded(child: Divider()), + ], + ), + const SizedBox(height: 24), + MyElevatedButton( + title: 'Create Account with Email'.tr, + onPressed: () => controller.changeGoogleDashOpen(), + kolor: AppColor.blueColor, // Using 'kolor' as in your widget + ), + ], + ); + } + + /// Builds the form for manual email/password login or registration. + Widget _buildManualLoginForm( + BuildContext context, LoginDriverController controller, + {required bool isRegistration}) { + return Card( + elevation: 8, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), + child: Padding( + padding: const EdgeInsets.all(20.0), + child: Form( + key: controller.formKey, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Text( + isRegistration ? 'Create Driver Account'.tr : 'Driver Login'.tr, + textAlign: TextAlign.center, + style: AppStyle.headTitle2, + ), + const SizedBox(height: 24), + _buildTextFormField( + controller: controller.emailController, + labelText: 'Email'.tr, + hintText: 'Enter your email'.tr, + prefixIcon: Icons.email_outlined, + keyboardType: TextInputType.emailAddress, + validator: (value) { + if (value == null || !GetUtils.isEmail(value)) { + return 'Please enter a valid email'.tr; + } + return null; + }, + ), + const SizedBox(height: 20), + GetBuilder( + id: 'passwordVisibility', // ID to only rebuild this widget + builder: (_) => _buildTextFormField( + controller: controller.passwordController, + labelText: 'Password'.tr, + hintText: 'Enter your password'.tr, + prefixIcon: Icons.lock_outline, + obscureText: controller.isPasswordHidden, + suffixIcon: IconButton( + icon: Icon( + controller.isPasswordHidden + ? Icons.visibility_off + : Icons.visibility, + color: AppColor.primaryColor, + ), + onPressed: () => controller.togglePasswordVisibility(), + ), + validator: (value) { + if (value == null || value.length < 6) { + return 'Password must be at least 6 characters'.tr; + } + return null; + }, + ), + ), + const SizedBox(height: 30), + controller.isloading + ? const Center(child: MyCircularProgressIndicator()) + : MyElevatedButton( + title: + (isRegistration ? 'Create Account'.tr : 'Login'.tr), + onPressed: () { + if (controller.formKey.currentState!.validate()) { + if (isRegistration) { + String email = controller.emailController.text; + String uniqueId = + controller.generateUniqueIdFromEmail(email); + box.write(BoxName.driverID, uniqueId); + box.write(BoxName.emailDriver, email); + controller.loginUsingCredentialsWithoutGoogle( + controller.passwordController.text, + email, + ); + } else { + // This is the flow for iOS manual login + controller.loginWithGoogleCredential( + controller.passwordController.text, + controller.emailController.text, + ); + } + } + }, + ), + if (isRegistration) // Show back button only on the registration form + TextButton( + onPressed: () => controller.changeGoogleDashOpen(), + child: Text( + 'Back to other sign-in options'.tr, + style: TextStyle(color: AppColor.primaryColor), + ), + ), + ], + ), + ), + ), + ); + } + + /// A helper method to create styled TextFormFields. + TextFormField _buildTextFormField({ + required TextEditingController controller, + required String labelText, + required String hintText, + required IconData prefixIcon, + required String? Function(String?) validator, + bool obscureText = false, + Widget? suffixIcon, + TextInputType keyboardType = TextInputType.text, + }) { + return TextFormField( + controller: controller, + validator: validator, + obscureText: obscureText, + keyboardType: keyboardType, + decoration: InputDecoration( + labelText: labelText, + hintText: hintText, + prefixIcon: Icon(prefixIcon, color: AppColor.primaryColor), + suffixIcon: suffixIcon, + border: OutlineInputBorder(borderRadius: BorderRadius.circular(12.0)), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12.0), + borderSide: + const BorderSide(color: AppColor.primaryColor, width: 2.0), + ), + ), + ); + } + + /// A helper for creating consistent social login buttons. + Widget _buildSocialButton({ + required String text, + required IconData icon, + required Color backgroundColor, + required VoidCallback onPressed, + }) { + return ElevatedButton.icon( + icon: Icon(icon, color: Colors.white), + label: + Text(text, style: const TextStyle(color: Colors.white, fontSize: 16)), + onPressed: onPressed, + style: ElevatedButton.styleFrom( + backgroundColor: backgroundColor, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + padding: const EdgeInsets.symmetric(vertical: 14), + ), + ); + } + + /// Redesigned UI for the Terms and Conditions agreement page. + Widget _buildAgreementPage( + BuildContext context, LoginDriverController controller) { + // This UI can be identical to the one in LoginPage for consistency. + // I am reusing the improved design from the previous request. + return Padding( + padding: const EdgeInsets.all(24.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.policy_outlined, + size: 80, color: AppColor.primaryColor), + const SizedBox(height: 20), + Text('Driver Agreement'.tr, + textAlign: TextAlign.center, style: AppStyle.headTitle2), + const SizedBox(height: 30), + RichText( + textAlign: TextAlign.center, + text: TextSpan( + style: AppStyle.title.copyWith(height: 1.5), + children: [ + TextSpan( + text: + "To become a driver, you must review and agree to the " + .tr), + TextSpan( + text: 'Terms of Use'.tr, + style: const TextStyle( + decoration: TextDecoration.underline, + color: AppColor.blueColor, + fontWeight: FontWeight.bold), + recognizer: TapGestureRecognizer()..onTap = () {}), + TextSpan(text: " and acknowledge our Privacy Policy.".tr), + ], + ), + ), + Expanded( + child: Container( + decoration: BoxDecoration( + border: Border.all(color: Colors.grey.shade300), + borderRadius: BorderRadius.circular(8), + ), + child: SingleChildScrollView( + padding: const EdgeInsets.all(12), + child: HtmlWidget(AppInformation.privacyPolicyArabic), + ), + ), + ), + CheckboxListTile( + title: Text('I Agree'.tr, style: AppStyle.title), + value: controller.isAgreeTerms, + onChanged: (value) => controller.changeAgreeTerm(), + activeColor: AppColor.primaryColor, + controlAffinity: ListTileControlAffinity.leading, + ), + const SizedBox(height: 16), + SizedBox( + width: double.infinity, + child: MyElevatedButton( + title: 'Continue'.tr, + onPressed: controller.isAgreeTerms + ? () => controller.saveAgreementTerms() + : () {}, + ), + ), + ], + ), + ); + } + + /// Redesigned UI for the Location Permission request page. + Widget _buildLocationPermissionPage( + BuildContext context, LoginDriverController controller) { + return Padding( + padding: const EdgeInsets.all(24.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + const Icon(Icons.location_on_outlined, + size: 80, color: AppColor.primaryColor), + const SizedBox(height: 20), + Text( + 'Location Access Required'.tr, + textAlign: TextAlign.center, + style: AppStyle.headTitle2, + ), + const SizedBox(height: 16), + Text( + 'We need access to your location to match you with nearby passengers and provide accurate navigation.' + .tr, + textAlign: TextAlign.center, + style: AppStyle.title, + ), + const SizedBox(height: 24), + Text( + 'Please allow location access "all the time" to receive ride requests even when the app is in the background.' + .tr, + textAlign: TextAlign.center, + style: AppStyle.title.copyWith( + color: AppColor.greenColor, fontWeight: FontWeight.bold), + ), + const SizedBox(height: 40), + MyElevatedButton( + title: "Allow Location Access".tr, + onPressed: () async { + await getLocationPermission(); // Assumes this function handles the request logic + if (await Permission.location.isGranted) { + box.write(BoxName.locationPermission, 'true'); + controller.update(); // Re-check conditions + } + }, + kolor: AppColor.greenColor, + ), + const SizedBox(height: 16), + TextButton( + onPressed: () => openAppSettings(), + child: Text("Open Settings".tr, + style: const TextStyle(color: AppColor.blueColor)), + ), + ], + ), + ); + } +} diff --git a/lib/views/auth/captin/logout_captain.dart b/lib/views/auth/captin/logout_captain.dart new file mode 100755 index 0000000..59ac1ad --- /dev/null +++ b/lib/views/auth/captin/logout_captain.dart @@ -0,0 +1,42 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/controller/functions/log_out.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; + +class LogoutCaptain extends StatelessWidget { + const LogoutCaptain({super.key}); + + @override + Widget build(BuildContext context) { + return MyScafolld( + title: 'Log Out Page'.tr, + body: [ + Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + MyElevatedButton( + title: 'Log Off'.tr, + onPressed: () { + LogOutController().logOutCaptain(); + }), + const SizedBox( + height: 30, + ), + MyElevatedButton( + title: 'Delete My Account'.tr, + onPressed: () { + LogOutController().deletecaptainAccount(); + }, + kolor: AppColor.redColor, + ), + ], + ), + ) + ], + isleading: true, + ); + } +} diff --git a/lib/views/auth/captin/otp_page.dart b/lib/views/auth/captin/otp_page.dart new file mode 100644 index 0000000..e85d81b --- /dev/null +++ b/lib/views/auth/captin/otp_page.dart @@ -0,0 +1,488 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/controller/auth/captin/login_captin_controller.dart'; + +import '../../../constant/box_name.dart'; +import '../../../controller/auth/captin/phone_helper_controller.dart'; +import '../../../controller/local/phone_intel/intl_phone_field.dart'; +import '../../../main.dart'; +import '../../../print.dart'; + +class AuthScreen extends StatelessWidget { + final String title; + final String subtitle; + final Widget form; + // Using a more neutral, tech-themed animated logo + final String logoUrl = 'assets/images/logo.gif'; + + const AuthScreen({ + super.key, + required this.title, + required this.subtitle, + required this.form, + }); + + @override + Widget build(BuildContext context) { + final controller = Get.put(LoginDriverController()); + return Scaffold( + body: Container( + // UPDATED: Changed gradient colors to a green theme + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [Colors.teal.shade700, Colors.green.shade600], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + ), + child: Center( + child: SingleChildScrollView( + padding: const EdgeInsets.symmetric(horizontal: 24.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset(logoUrl, height: 120), + const SizedBox(height: 20), + Text( + title, + style: const TextStyle( + fontSize: 28, + fontWeight: FontWeight.bold, + color: Colors.white), + ), + const SizedBox(height: 10), + Text( + subtitle, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 16, color: Colors.white.withOpacity(0.8)), + ), + const SizedBox(height: 30), + GetBuilder(builder: (context) { + return box.read(BoxName.isTest).toString() == '0' + ? Container( + margin: const EdgeInsets.all(16), + padding: const EdgeInsets.symmetric( + horizontal: 24, vertical: 32), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(20), + boxShadow: [ + BoxShadow( + color: Colors.black12, + blurRadius: 12, + offset: const Offset(0, 6), + ), + ], + ), + child: Form( + key: controller.formKey, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + // Title + + Text( + 'Please login to continue', + style: TextStyle( + fontSize: 16, + color: Colors.grey[600], + ), + textAlign: TextAlign.center, + ), + const SizedBox(height: 32), + + // Email Field + TextFormField( + keyboardType: TextInputType.emailAddress, + controller: controller.emailController, + decoration: InputDecoration( + labelText: 'Email'.tr, + hintText: 'Enter your email address'.tr, + prefixIcon: + const Icon(Icons.email_outlined), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + ), + ), + validator: (value) => value == null || + value.isEmpty || + !value.contains('@') || + !value.contains('.') + ? 'Enter a valid email'.tr + : null, + ), + const SizedBox(height: 20), + + // Password Field + TextFormField( + obscureText: true, + controller: controller.passwordController, + decoration: InputDecoration( + labelText: 'Password'.tr, + hintText: 'Enter your password'.tr, + prefixIcon: const Icon(Icons.lock_outline), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + ), + ), + validator: (value) => + value == null || value.isEmpty + ? 'Enter your password'.tr + : null, + ), + const SizedBox(height: 24), + + // Submit Button + GetBuilder( + builder: (controller) => controller.isloading + ? const Center( + child: CircularProgressIndicator()) + : SizedBox( + height: 50, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + backgroundColor: + Colors.blueAccent, + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(12), + ), + ), + onPressed: () { + if (controller + .formKey.currentState! + .validate()) { + controller.logintest( + controller + .emailController.text + .trim(), + controller + .passwordController.text + .trim()); + } + }, + child: Text( + 'Login'.tr, + style: + const TextStyle(fontSize: 16), + ), + ), + ), + ), + + const SizedBox(height: 16), + + // Optional: Forgot Password / Create Account + ], + ), + ), + ) + : Card( + elevation: 8, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16)), + child: Padding( + padding: const EdgeInsets.all(24.0), + child: form, + ), + ); + }) + ], + ), + ), + ), + ), + ); + } +} + +// --- UI Screens --- + +class PhoneNumberScreen extends StatefulWidget { + const PhoneNumberScreen({super.key}); + @override + State createState() => _PhoneNumberScreenState(); +} + +class _PhoneNumberScreenState extends State { + final _phoneController = TextEditingController(); + final _formKey = GlobalKey(); + bool _isLoading = false; + + void _submit() async { + if (_formKey.currentState!.validate()) { + setState(() => _isLoading = true); + final rawPhone = _phoneController.text.trim().replaceFirst('+', ''); + final success = await PhoneAuthHelper.sendOtp(rawPhone); + if (success && mounted) { + Get.to(() => OtpVerificationScreen(phoneNumber: rawPhone)); + } + if (mounted) setState(() => _isLoading = false); + } + } + + @override + Widget build(BuildContext context) { + return AuthScreen( + title: 'welcome to intaleq'.tr, + subtitle: 'login or register subtitle'.tr, + form: Form( + key: _formKey, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // TextFormField( + // controller: _phoneController, + // decoration: InputDecoration( + // labelText: 'phone number label'.tr, + // prefixIcon: + // Icon(Icons.phone_android, color: Colors.teal.shade400), + // border: + // OutlineInputBorder(borderRadius: BorderRadius.circular(12)), + // ), + // keyboardType: TextInputType.phone, + // validator: (v) => v!.isEmpty ? 'phone number required'.tr : null, + // ), + Padding( + padding: const EdgeInsets.all(16.0), + child: IntlPhoneField( + // languageCode: 'ar', + showCountryFlag: false, + flagsButtonMargin: EdgeInsets.only(right: 8), + flagsButtonPadding: EdgeInsets.all(4), + dropdownDecoration: + BoxDecoration(borderRadius: BorderRadius.circular(8)), + // controller: _phoneController, + decoration: InputDecoration( + labelText: 'Phone Number'.tr, + border: const OutlineInputBorder( + borderSide: BorderSide(), + ), + ), + initialCountryCode: 'SY', + onChanged: (phone) { + // Properly concatenate country code and number + _phoneController.text = phone.completeNumber.toString(); + Log.print(' phone.number: ${phone.number}'); + print("Formatted phone number: ${_phoneController.text}"); + }, + validator: (phone) { + // Check if the phone number is not null and is valid + if (phone == null || phone.completeNumber.isEmpty) { + return 'Please enter your phone number'; + } + + // Extract the phone number (excluding the country code) + final number = phone.completeNumber.toString(); + + // Check if the number length is exactly 11 digits + if (number.length != 13) { + return 'Phone number must be exactly 11 digits long'; + } + + // If all validations pass, return null + return null; + }, + ), + ), + + const SizedBox(height: 24), + _isLoading + ? const CircularProgressIndicator() + : ElevatedButton( + onPressed: _submit, + style: ElevatedButton.styleFrom( + backgroundColor: Colors.teal, + foregroundColor: Colors.white, + padding: const EdgeInsets.symmetric(vertical: 16), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12)), + minimumSize: const Size(double.infinity, 50), + ), + child: Text('send otp button'.tr), + ), + ], + ), + ), + ); + } +} + +class OtpVerificationScreen extends StatefulWidget { + final String phoneNumber; + const OtpVerificationScreen({super.key, required this.phoneNumber}); + @override + State createState() => _OtpVerificationScreenState(); +} + +class _OtpVerificationScreenState extends State { + final _formKey = GlobalKey(); + final TextEditingController _otpControllers = TextEditingController(); + // final List _focusNodes = List.generate(5, (_) => FocusNode()); + bool _isLoading = false; + + @override + void dispose() { + // for (var controller in _otpControllers) { + // controller.dispose(); + // } + // for (var node in _focusNodes) { + // node.dispose(); + // } + super.dispose(); + } + + void _submit() async { + if (_formKey.currentState!.validate()) { + setState(() => _isLoading = true); + final otp = _otpControllers.text; + await PhoneAuthHelper.verifyOtp(widget.phoneNumber, otp); + if (mounted) setState(() => _isLoading = false); + } + } + + Widget _buildOtpInput() { + return Form( + key: _formKey, + child: Container( + width: 200, + height: 50, + decoration: BoxDecoration( + color: Colors.grey.shade200, + shape: BoxShape.circle, + ), + child: Center( + child: TextFormField( + controller: _otpControllers, + // focusNode: _focusNodes[index], + textAlign: TextAlign.center, + keyboardType: TextInputType.number, + maxLength: 5, + style: const TextStyle(fontSize: 22, fontWeight: FontWeight.bold), + decoration: const InputDecoration( + counterText: "", + border: InputBorder.none, + contentPadding: EdgeInsets.zero, + ), + onChanged: (value) {}, + validator: (v) => v!.isEmpty ? '' : null, + ), + ), + ), + ); + } + + @override + Widget build(BuildContext context) { + return AuthScreen( + title: 'verify your number title'.tr, + subtitle: + 'otp sent subtitle'.trParams({'phoneNumber': widget.phoneNumber}), + form: Column( + mainAxisSize: MainAxisSize.min, + children: [ + _buildOtpInput(), + const SizedBox(height: 30), + _isLoading + ? const CircularProgressIndicator() + : ElevatedButton( + onPressed: _submit, + style: ElevatedButton.styleFrom( + backgroundColor: Colors.teal, + foregroundColor: Colors.white, + minimumSize: const Size(double.infinity, 50), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12)), + ), + child: Text('verify and continue button'.tr), + ), + ], + ), + ); + } +} + +class RegistrationScreen extends StatefulWidget { + final String phoneNumber; + const RegistrationScreen({super.key, required this.phoneNumber}); + @override + State createState() => _RegistrationScreenState(); +} + +class _RegistrationScreenState extends State { + final _formKey = GlobalKey(); + final _firstNameController = TextEditingController(); + final _lastNameController = TextEditingController(); + final _emailController = TextEditingController(); + bool _isLoading = false; + + void _submit() async { + if (_formKey.currentState!.validate()) { + setState(() => _isLoading = true); + await PhoneAuthHelper.registerUser( + phoneNumber: widget.phoneNumber, + firstName: _firstNameController.text.trim(), + lastName: _lastNameController.text.trim(), + email: _emailController.text.trim(), + ); + if (mounted) setState(() => _isLoading = false); + } + } + + @override + Widget build(BuildContext context) { + return AuthScreen( + title: 'one last step title'.tr, + subtitle: 'complete profile subtitle'.tr, + form: Form( + key: _formKey, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextFormField( + controller: _firstNameController, + decoration: InputDecoration( + labelText: 'first name label'.tr, + border: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(12)))), + validator: (v) => v!.isEmpty ? 'first name required'.tr : null, + ), + const SizedBox(height: 16), + TextFormField( + controller: _lastNameController, + decoration: InputDecoration( + labelText: 'last name label'.tr, + border: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(12)))), + validator: (v) => v!.isEmpty ? 'last name required'.tr : null, + ), + const SizedBox(height: 16), + TextFormField( + controller: _emailController, + decoration: InputDecoration( + labelText: 'email optional label'.tr, + border: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(12)))), + keyboardType: TextInputType.emailAddress, + ), + const SizedBox(height: 24), + _isLoading + ? const CircularProgressIndicator() + : ElevatedButton( + onPressed: _submit, + style: ElevatedButton.styleFrom( + backgroundColor: Colors.teal, + foregroundColor: Colors.white, + minimumSize: const Size(double.infinity, 50), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12)), + ), + child: Text('complete registration button'.tr), + ), + ], + ), + ), + ); + } +} diff --git a/lib/views/auth/captin/otp_token_page.dart b/lib/views/auth/captin/otp_token_page.dart new file mode 100644 index 0000000..12a2474 --- /dev/null +++ b/lib/views/auth/captin/otp_token_page.dart @@ -0,0 +1,176 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../controller/auth/captin/opt_token_controller.dart'; + +class OtpVerificationPage extends StatefulWidget { + final String phone; + final String deviceToken; + final String token; + final String ptoken; + + const OtpVerificationPage({ + super.key, + required this.phone, + required this.deviceToken, + required this.token, + required this.ptoken, + }); + + @override + State createState() => _OtpVerificationPageState(); +} + +class _OtpVerificationPageState extends State { + late final OtpVerificationController controller; + final List _focusNodes = List.generate(6, (index) => FocusNode()); + final List _textControllers = + List.generate(6, (index) => TextEditingController()); + + @override + void initState() { + super.initState(); + controller = Get.put(OtpVerificationController( + phone: widget.phone, + deviceToken: widget.deviceToken, + token: widget.token, + )); + } + + @override + void dispose() { + for (var node in _focusNodes) { + node.dispose(); + } + for (var controller in _textControllers) { + controller.dispose(); + } + super.dispose(); + } + + void _onOtpChanged(String value, int index) { + if (value.isNotEmpty) { + if (index < 5) { + _focusNodes[index + 1].requestFocus(); + } else { + _focusNodes[index].unfocus(); // إلغاء التركيز بعد آخر حقل + } + } else if (index > 0) { + _focusNodes[index - 1].requestFocus(); + } + // تجميع نصوص كل الحقول لتكوين الرمز النهائي + controller.otpCode.value = _textControllers.map((c) => c.text).join(); + } + + Widget _buildOtpInputFields() { + return Directionality( + textDirection: TextDirection.ltr, // لضمان ترتيب الحقول من اليسار لليمين + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: List.generate(5, (index) { + return SizedBox( + width: 45, + height: 55, + child: TextFormField( + controller: _textControllers[index], + focusNode: _focusNodes[index], + textAlign: TextAlign.center, + keyboardType: TextInputType.number, + maxLength: 1, + style: const TextStyle(fontSize: 22, fontWeight: FontWeight.bold), + decoration: InputDecoration( + counterText: "", + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide(color: Colors.grey.shade300), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide( + color: Theme.of(context).primaryColor, width: 2), + ), + ), + onChanged: (value) => _onOtpChanged(value, index), + ), + ); + }), + ), + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text('Verify OTP'.tr), + backgroundColor: Colors.transparent, + elevation: 0, + centerTitle: true, + ), + backgroundColor: Colors.grey[50], + body: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(24.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const SizedBox(height: 20), + Icon(Icons.phonelink_lock_rounded, + size: 80, color: Theme.of(context).primaryColor), + const SizedBox(height: 24), + Text( + 'Verification Code'.tr, + style: + const TextStyle(fontSize: 24, fontWeight: FontWeight.bold), + ), + const SizedBox(height: 12), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 20.0), + child: Text( + '${'We have sent a verification code to your mobile number:'.tr} ${widget.phone}', + textAlign: TextAlign.center, + style: TextStyle( + color: Colors.grey.shade600, fontSize: 16, height: 1.5), + ), + ), + const SizedBox(height: 40), + _buildOtpInputFields(), + const SizedBox(height: 40), + Obx(() => SizedBox( + width: double.infinity, + height: 50, + child: controller.isVerifying.value + ? const Center(child: CircularProgressIndicator()) + : ElevatedButton( + style: ElevatedButton.styleFrom( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12))), + onPressed: () => + controller.verifyOtp(widget.ptoken), + child: Text('Verify'.tr, + style: const TextStyle( + fontSize: 18, fontWeight: FontWeight.w600)), + ), + )), + const SizedBox(height: 24), + Obx( + () => controller.canResend.value + ? TextButton( + onPressed: controller.sendOtp, + child: Text('Resend Code'.tr), + ) + : Text( + '${'You can resend in'.tr} ${controller.countdown.value} ${'seconds'.tr}', + style: const TextStyle(color: Colors.grey), + ), + ) + ], + ), + ), + ), + ); + } +} diff --git a/lib/views/auth/captin/register_captin.dart b/lib/views/auth/captin/register_captin.dart new file mode 100755 index 0000000..da6cbc6 --- /dev/null +++ b/lib/views/auth/captin/register_captin.dart @@ -0,0 +1,202 @@ +import 'package:sefer_driver/constant/style.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/controller/auth/captin/register_captin_controller.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; + +import '../../../constant/colors.dart'; +import '../../../controller/auth/google_sign.dart'; + +class RegisterCaptin extends StatelessWidget { + const RegisterCaptin({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(RegisterCaptainController()); + return MyScafolld( + title: 'Register Driver'.tr, + body: [ + // GetBuilder( + // builder: (controller) => Form( + // key: controller.formKey, + // child: Padding( + // padding: const EdgeInsets.all(16.0), + // child: SingleChildScrollView( + // child: Container( + // decoration: const BoxDecoration( + // boxShadow: [ + // BoxShadow( + // offset: Offset(3, 3), + // color: AppColor.accentColor, + // blurRadius: 3) + // ], + // color: AppColor.secondaryColor, + // ), + // child: Padding( + // padding: const EdgeInsets.all(16), + // child: Column( + // children: [ + // SizedBox( + // width: Get.width * .8, + // child: TextFormField( + // keyboardType: TextInputType.emailAddress, + // controller: controller.emailController, + // decoration: InputDecoration( + // focusedBorder: OutlineInputBorder( + // borderSide: const BorderSide( + // color: AppColor.primaryColor, + // width: 2.0, + // ), + // borderRadius: BorderRadius.circular(10), + // ), + // fillColor: AppColor.accentColor, + // hoverColor: AppColor.accentColor, + // focusColor: AppColor.accentColor, + // border: const OutlineInputBorder( + // borderRadius: + // BorderRadius.all(Radius.circular(12))), + // labelText: 'Email'.tr, + // hintText: 'Enter your email address'.tr, + // ), + // validator: (value) { + // if (value!.isEmpty || + // (!value.contains('@') || + // !value.contains('.'))) { + // return 'Please enter Your Email.'.tr; + // } + // return null; + // }, + // ), + // ), + // const SizedBox( + // height: 15, + // ), + // SizedBox( + // width: Get.width * .8, + // child: TextFormField( + // obscureText: true, + // keyboardType: TextInputType.emailAddress, + // controller: controller.passwordController, + // decoration: InputDecoration( + // focusedBorder: OutlineInputBorder( + // borderSide: const BorderSide( + // color: AppColor.primaryColor, + // width: 2.0, + // ), + // borderRadius: BorderRadius.circular(10), + // ), + // fillColor: AppColor.accentColor, + // hoverColor: AppColor.accentColor, + // focusColor: AppColor.accentColor, + // border: const OutlineInputBorder( + // borderRadius: + // BorderRadius.all(Radius.circular(12))), + // labelText: 'Password'.tr, + // hintText: 'Enter your Password'.tr, + // ), + // validator: (value) { + // if (value!.isEmpty) { + // return 'Please enter Your Password.'.tr; + // } + // if (value.length < 6) { + // return 'Password must br at least 6 character.' + // .tr; + // } + // return null; + // }, + // ), + // ), + // const SizedBox( + // height: 15, + // ), + // SizedBox( + // width: Get.width * .8, + // child: TextFormField( + // keyboardType: TextInputType.phone, + // cursorColor: AppColor.accentColor, + // controller: controller.phoneController, + // decoration: InputDecoration( + // focusedBorder: OutlineInputBorder( + // borderSide: const BorderSide( + // color: AppColor.primaryColor, + // width: 2.0, + // ), + // borderRadius: BorderRadius.circular(10), + // ), + // focusColor: AppColor.accentColor, + // fillColor: AppColor.accentColor, + // border: const OutlineInputBorder( + // borderRadius: + // BorderRadius.all(Radius.circular(12))), + // labelText: 'Phone'.tr, + // hintText: 'Enter your phone number'.tr, + // ), + // validator: (value) { + // if (value!.isEmpty || value.length != 10) { + // return 'Please enter your phone number.'.tr; + // } + // return null; + // }, + // ), + // ), + // const SizedBox( + // height: 15, + // ), + // MyElevatedButton( + // title: 'Next'.tr, + // onPressed: () => controller.nextToAIDetection()), + // ], + // ), + // ), + // ), + // ), + // ), + // ), + // ) + Image.asset( + 'assets/images/on1.png', + fit: BoxFit.cover, + height: double.maxFinite, + width: double.maxFinite, + ), + Center( + child: Container( + decoration: AppStyle.boxDecoration1, + height: Get.height * .7, + width: Get.width * .9, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Image.asset( + 'assets/images/logo.gif', + height: Get.width * .3, + width: Get.width * .3, + fit: BoxFit.fill, + ), + Container( + decoration: AppStyle.boxDecoration1, + height: Get.height * .3, + width: Get.width * .8, + child: Center( + child: Text( + 'Sign in with Google for easier email and name entry'.tr, + textAlign: TextAlign.center, + style: AppStyle.title, + ), + ), + ), + MyElevatedButton( + title: 'Sign In by Google'.tr, + onPressed: () async { + // await GoogleSignInHelper.signIn(); + }, + kolor: AppColor.blueColor, + ), + ], + ), + )) + ], + isleading: true); + } +} diff --git a/lib/views/auth/captin/verify_email_captain.dart b/lib/views/auth/captin/verify_email_captain.dart new file mode 100755 index 0000000..f1dc947 --- /dev/null +++ b/lib/views/auth/captin/verify_email_captain.dart @@ -0,0 +1,91 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/auth/captin/register_captin_controller.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; + +class VerifyEmailCaptainPage extends StatelessWidget { + VerifyEmailCaptainPage({super.key}); + RegisterCaptainController registerCaptinController = + Get.put(RegisterCaptainController()); + @override + Widget build(BuildContext context) { + return MyScafolld( + title: 'Verify Email For Driver'.tr, + body: [ + Positioned( + top: 10, + left: 20, + child: Text( + 'We sent 5 digit to your Email provided'.tr, + style: AppStyle.title.copyWith(fontSize: 20), + )), + GetBuilder( + builder: (controller) => Positioned( + top: 100, + left: 80, + right: 80, + child: Padding( + padding: const EdgeInsets.all(10), + child: Column( + children: [ + SizedBox( + width: 100, + child: TextField( + controller: registerCaptinController.verifyCode, + decoration: InputDecoration( + labelStyle: AppStyle.title, + border: const OutlineInputBorder(), + hintText: '5 digit'.tr, + counterStyle: AppStyle.number, + hintStyle: AppStyle.subtitle + .copyWith(color: AppColor.accentColor), + ), + maxLength: 5, + keyboardType: TextInputType.number, + ), + ), + const SizedBox( + height: 30, + ), + MyElevatedButton( + title: 'Send Verfication Code'.tr, + onPressed: () { + registerCaptinController.sendVerifications(); + }) + ], + ), + ), + )), + ], + isleading: true, + ); + } + + Padding verifyEmail() { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Container( + decoration: BoxDecoration( + border: Border.all( + color: AppColor.accentColor, + width: 2, + ), + borderRadius: BorderRadius.circular(8), + ), + child: const Padding( + padding: EdgeInsets.all(10), + child: SizedBox( + width: 20, + child: TextField( + maxLength: 1, + keyboardType: TextInputType.number, + ), + ), + ), + ), + ); + } +} diff --git a/lib/views/auth/country_widget.dart b/lib/views/auth/country_widget.dart new file mode 100755 index 0000000..96242ce --- /dev/null +++ b/lib/views/auth/country_widget.dart @@ -0,0 +1,185 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/colors.dart'; +import '../../constant/style.dart'; +import '../../controller/auth/captin/login_captin_controller.dart'; +import '../../controller/profile/profile_controller.dart'; +import '../../main.dart'; +import '../widgets/elevated_btn.dart'; +import 'captin/login_captin.dart'; + +class CountryPicker extends StatelessWidget { + final ProfileController controller = Get.put(ProfileController()); + + final List countryOptions = [ + 'Jordan', + 'USA', + 'Egypt', + 'Turkey', + 'Saudi Arabia', + 'Qatar', + 'Bahrain', + 'Kuwait', + ]; + + CountryPicker({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return GetBuilder(builder: (controller) { + return Padding( + padding: const EdgeInsets.all(20), + child: ListView( + children: [ + const SizedBox( + height: 20, + ), + Text( + "Select Your Country".tr, + style: AppStyle.headTitle2, + textAlign: TextAlign.center, + ), + // const SizedBox( + // height: 20, + // ), + Padding( + padding: const EdgeInsets.all(10), + child: Text( + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country." + .tr, + style: AppStyle.title, + textAlign: TextAlign.center, + ), + ), + SizedBox( + height: 200, + child: CupertinoPicker( + itemExtent: 32, + onSelectedItemChanged: (int index) { + controller.setCountry(countryOptions[index]); + box.write(BoxName.countryCode, + countryOptions[index]); // Save in English + }, + children: List.generate( + countryOptions.length, + (index) => Center( + child: Text( + countryOptions[index] + .tr, // Display translated if not English + style: AppStyle.title, + ), + ), + ), + ), + ), + + MyElevatedButton( + title: 'Select Country'.tr, // Use translated text for button + onPressed: () { + Get.find().saveCountryCode(controller + .selectedCountry + .toString()); // No conversion needed + box.write( + BoxName.countryCode, // + controller.selectedCountry); // Already saved in English + Get.snackbar(controller.selectedCountry.toString().tr, ''); + Get.off(LoginCaptin()); + }, + ) + ], + ), + ); + }); + } +} + +class CountryPickerFromSetting extends StatelessWidget { + final ProfileController controller = Get.put(ProfileController()); + final LoginDriverController loginController = + Get.put(LoginDriverController()); + + final List countryOptions = [ + 'Jordan', + 'Egypt', + 'Turkey', + 'Saudi Arabia', + 'Qatar', + 'Bahrain', + 'Kuwait', + 'USA', + ]; + + CountryPickerFromSetting({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return GetBuilder(builder: (controller) { + return Padding( + padding: const EdgeInsets.all(20.0), + child: ListView( + children: [ + const SizedBox( + height: 20, + ), + Text( + "Select Your Country".tr, + style: AppStyle.headTitle2, + textAlign: TextAlign.center, + ), + // const SizedBox( + // height: 20, + // ), + Padding( + padding: const EdgeInsets.all(10), + child: Text( + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country." + .tr, + style: AppStyle.title, + textAlign: TextAlign.center, + ), + ), + SizedBox( + height: 200, + child: CupertinoPicker( + itemExtent: 32, + onSelectedItemChanged: (int index) { + controller.setCountry(countryOptions[index]); + box.write(BoxName.countryCode, + countryOptions[index]); // Save in English + }, + children: List.generate( + countryOptions.length, + (index) => Center( + child: Text( + countryOptions[index] + .tr, // Display translated if not English + style: AppStyle.title, + ), + ), + ), + ), + ), + + MyElevatedButton( + title: 'Select Country'.tr, // Use translated text for button + onPressed: () async { + loginController.saveCountryCode(controller.selectedCountry + .toString()); // No conversion needed + box.write( + BoxName.countryCode, // + controller.selectedCountry); // Already saved in English + Get.snackbar(controller.selectedCountry.toString().tr, '', + backgroundColor: AppColor.greenColor); + // Get.back();// + // Get.back(); + }, + ) + ], + ), + ); + }); + } +} diff --git a/lib/views/auth/register_page.dart b/lib/views/auth/register_page.dart new file mode 100755 index 0000000..0ddfe0f --- /dev/null +++ b/lib/views/auth/register_page.dart @@ -0,0 +1,295 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/auth/register_controller.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; + +import '../../constant/colors.dart'; + +class RegisterPage extends StatelessWidget { + const RegisterPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(RegisterController()); + return MyScafolld( + title: 'Register'.tr, + body: [ + GetBuilder( + builder: (controller) => Form( + key: controller.formKey, + child: Padding( + padding: const EdgeInsets.all(16.0), + child: SingleChildScrollView( + child: Container( + decoration: const BoxDecoration( + boxShadow: [ + BoxShadow( + offset: Offset(3, 3), + color: AppColor.accentColor, + blurRadius: 3) + ], + color: AppColor.secondaryColor, + ), + child: Padding( + padding: const EdgeInsets.all(16), + child: Column(children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + SizedBox( + width: Get.width * .4, + child: TextFormField( + keyboardType: TextInputType.text, + controller: controller.firstNameController, + decoration: InputDecoration( + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: AppColor.primaryColor, + width: 2.0, + ), + borderRadius: BorderRadius.circular(10), + ), + fillColor: AppColor.accentColor, + hoverColor: AppColor.accentColor, + focusColor: AppColor.accentColor, + border: const OutlineInputBorder( + borderRadius: BorderRadius.all( + Radius.circular(12))), + labelText: 'First name'.tr, + hintText: 'Enter your first name'.tr, + ), + validator: (value) { + if (value!.isEmpty) { + return 'Please enter your first name.'.tr; + } + return null; + }, + ), + ), + SizedBox( + width: Get.width * .4, + child: TextFormField( + keyboardType: TextInputType.text, + controller: controller.lastNameController, + decoration: InputDecoration( + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: AppColor.primaryColor, + width: 2.0, + ), + borderRadius: BorderRadius.circular(10), + ), + focusColor: AppColor.accentColor, + fillColor: AppColor.accentColor, + border: const OutlineInputBorder( + borderRadius: BorderRadius.all( + Radius.circular(12))), + labelText: 'Last name'.tr, + hintText: 'Enter your last name'.tr, + ), + validator: (value) { + if (value!.isEmpty) { + return 'Please enter your last name.'.tr; + } + return null; + }, + ), + ), + ], + ), + const SizedBox( + height: 15, + ), + TextFormField( + keyboardType: TextInputType.emailAddress, + controller: controller.emailController, + decoration: InputDecoration( + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: AppColor.primaryColor, + width: 2.0, + ), + borderRadius: BorderRadius.circular(10), + ), + fillColor: AppColor.accentColor, + hoverColor: AppColor.accentColor, + focusColor: AppColor.accentColor, + border: const OutlineInputBorder( + borderRadius: + BorderRadius.all(Radius.circular(12))), + labelText: 'Email'.tr, + hintText: 'Enter your email address'.tr, + ), + validator: (value) { + if (value!.isEmpty || + (!value.contains('@') || + !value.contains('.'))) { + return 'Please enter Your Email.'.tr; + } + return null; + }, + ), + const SizedBox( + height: 15, + ), + TextFormField( + obscureText: true, + keyboardType: TextInputType.emailAddress, + controller: controller.passwordController, + decoration: InputDecoration( + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: AppColor.primaryColor, + width: 2.0, + ), + borderRadius: BorderRadius.circular(10), + ), + fillColor: AppColor.accentColor, + hoverColor: AppColor.accentColor, + focusColor: AppColor.accentColor, + border: const OutlineInputBorder( + borderRadius: + BorderRadius.all(Radius.circular(12))), + labelText: 'Password'.tr, + hintText: 'Enter your Password'.tr, + ), + validator: (value) { + if (value!.isEmpty) { + return 'Please enter Your Password.'.tr; + } + if (value.length < 6) { + return 'Password must br at least 6 character.' + .tr; + } + return null; + }, + ), + const SizedBox( + height: 15, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + SizedBox( + width: Get.width * .4, + child: TextFormField( + keyboardType: TextInputType.phone, + cursorColor: AppColor.accentColor, + controller: controller.phoneController, + decoration: InputDecoration( + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: AppColor.primaryColor, + width: 2.0, + ), + borderRadius: BorderRadius.circular(10), + ), + focusColor: AppColor.accentColor, + fillColor: AppColor.accentColor, + border: const OutlineInputBorder( + borderRadius: BorderRadius.all( + Radius.circular(12))), + labelText: 'Phone'.tr, + hintText: 'Enter your phone number'.tr, + ), + validator: (value) { + if (value!.isEmpty || value.length != 10) { + return 'Please enter your phone number.'.tr; + } + return null; + }, + ), + ), + SizedBox( + width: Get.width * .4, + child: TextFormField( + keyboardType: TextInputType.text, + controller: controller.siteController, + decoration: InputDecoration( + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: AppColor.primaryColor, + width: 2.0, + ), + borderRadius: BorderRadius.circular(10), + ), + focusColor: AppColor.accentColor, + fillColor: AppColor.accentColor, + border: const OutlineInputBorder( + borderRadius: BorderRadius.all( + Radius.circular(12))), + labelText: 'City'.tr, + hintText: 'Enter your City'.tr, + ), + validator: (value) { + if (value!.isEmpty) { + return 'Please enter your City.'.tr; + } + return null; + }, + ), + ), + ], + ), + const SizedBox( + height: 15, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + InkWell( + onTap: () => controller.getBirthDate(), + child: Container( + height: 50, + width: Get.width * .4, + decoration: BoxDecoration( + border: Border.all(), + borderRadius: BorderRadius.circular(13)), + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 20), + child: Text( + controller.birthDate, + style: AppStyle.title, + ), + ), + ), + ), + // DropdownButton( + // value: controller.gender, + // items: [ + // DropdownMenuItem( + // value: 'Male'.tr, + // child: Text('Male'.tr), + // ), + // DropdownMenuItem( + // value: 'Female'.tr, + // child: Text('Female'.tr), + // ), + // DropdownMenuItem( + // value: '--'.tr, + // child: Text('--'.tr), + // ), + // ], + // onChanged: (value) { + // controller.changeGender(value!); + // }, + // ) + ], + ), + MyElevatedButton( + title: 'Register'.tr, + onPressed: () => controller.register()) + ]), + ), + ), + ), + ), + ), + ) + ], + isleading: true); + } +} diff --git a/lib/views/auth/verify_email_page.dart b/lib/views/auth/verify_email_page.dart new file mode 100755 index 0000000..ba5d25a --- /dev/null +++ b/lib/views/auth/verify_email_page.dart @@ -0,0 +1,90 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/auth/register_controller.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; + +class VerifyEmailPage extends StatelessWidget { + const VerifyEmailPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(RegisterController()); + return MyScafolld( + title: 'Verify Email'.tr, + body: [ + Positioned( + top: 10, + left: 20, + right: 20, + child: Text( + 'We sent 5 digit to your Email provided'.tr, + style: AppStyle.title.copyWith(fontSize: 20), + )), + GetBuilder( + builder: (controller) => Positioned( + top: 100, + left: 80, + right: 80, + child: Padding( + padding: const EdgeInsets.all(10), + child: Column( + children: [ + SizedBox( + width: 100, + child: TextField( + controller: controller.verfyCode, + decoration: InputDecoration( + labelStyle: AppStyle.title, + border: const OutlineInputBorder(), + hintText: '5 digit'.tr, + counterStyle: AppStyle.number, + hintStyle: AppStyle.subtitle + .copyWith(color: AppColor.accentColor), + ), + maxLength: 5, + keyboardType: TextInputType.number, + ), + ), + const SizedBox( + height: 30, + ), + MyElevatedButton( + title: 'Send Verfication Code'.tr, + onPressed: () => controller.sendVerifications()) + ], + ), + ), + )), + ], + isleading: true, + ); + } + + Padding verifyEmail() { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Container( + decoration: BoxDecoration( + border: Border.all( + color: AppColor.accentColor, + width: 2, + ), + borderRadius: BorderRadius.circular(8), + ), + child: const Padding( + padding: EdgeInsets.all(10), + child: SizedBox( + width: 20, + child: TextField( + maxLength: 1, + keyboardType: TextInputType.number, + ), + ), + ), + ), + ); + } +} diff --git a/lib/views/home/Captin/About Us/about_us.dart b/lib/views/home/Captin/About Us/about_us.dart new file mode 100755 index 0000000..52a8f2e --- /dev/null +++ b/lib/views/home/Captin/About Us/about_us.dart @@ -0,0 +1,101 @@ +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +class AboutPage extends StatelessWidget { + const AboutPage({super.key}); + + @override + Widget build(BuildContext context) { + return MyScafolld( + title: 'About Us'.tr, + body: [ + // Company Logo (consider adding an image asset) + ListView( + children: [ + Center( + child: Image.asset( + 'assets/images/logo.png', // Replace with your logo image asset path + height: 100.0, + width: 100.0, + ), + ), // Company Name and Location + Padding( + padding: const EdgeInsets.all(16.0), + child: Text( + 'SEFER LLC\n${box.read(BoxName.countryCode).toString().tr}', + style: AppStyle.headTitle2, + textAlign: TextAlign.center, + ), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: Text( + 'SEFER is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:' + .tr, + style: AppStyle.title, + textAlign: TextAlign.center, + ), + ), // Security Features List + const SizedBox( + height: 20, + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 24.0), + child: Column( + children: [ + Row( + children: [ + const Icon(Icons.lock, color: Colors.blue), + const SizedBox(width: 8.0), + Text( + 'Most Secure Methods'.tr, + style: AppStyle.title, + ), + ], + ), + const SizedBox(height: 8.0), + Row( + children: [ + const Icon(Icons.phone, color: Colors.blue), + const SizedBox(width: 8.0), + Text( + 'In-App VOIP Calls'.tr, + style: AppStyle.title, + ), + ], + ), + const SizedBox(height: 8.0), + Row( + children: [ + const Icon(Icons.videocam, color: Colors.blue), + const SizedBox(width: 8.0), + Text( + 'Recorded Trips for Safety'.tr, + style: AppStyle.title, + ), + ], + ), + ], + ), + ), // Affordability Highlight + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: Text( + '\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.' + .tr, + style: AppStyle.title, + textAlign: TextAlign.center, + ), + ), + ], + ), + + // About Us Text + ], + isleading: true); + } +} diff --git a/lib/views/home/Captin/About Us/frequantly_question.dart b/lib/views/home/Captin/About Us/frequantly_question.dart new file mode 100755 index 0000000..e89b143 --- /dev/null +++ b/lib/views/home/Captin/About Us/frequantly_question.dart @@ -0,0 +1,145 @@ +import 'package:sefer_driver/views/widgets/my_scafold.dart'; +import 'package:sefer_driver/views/widgets/mydialoug.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../../constant/style.dart'; + +class FrequentlyQuestionsPage extends StatelessWidget { + const FrequentlyQuestionsPage({super.key}); + + @override + Widget build(BuildContext context) { + String selectedPayment = 'cash'; // Replace with your initial selection + bool canCancelRide = false; + return MyScafolld( + title: 'Frequently Questions'.tr, + body: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: ListView( + children: [ + // Question 1: How do I request a ride? + ExpansionTile( + title: Text( + 'How do I request a ride?'.tr, + style: AppStyle.title, + ), + children: [ + Text( + 'Step-by-step instructions on how to request a ride through the Intaleq app.' + .tr, + style: AppStyle.title, + ), + ], + ), + + // Question 2: What types of vehicles are available? + ExpansionTile( + title: Text( + 'What types of vehicles are available?'.tr, + style: AppStyle.title, + ), + children: [ + Text( + 'Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.' + .tr, + style: AppStyle.title, + ), + ], + ), + + // Question 3: How can I pay for my ride? + ExpansionTile( + title: Text( + 'How can I pay for my ride?'.tr, + style: AppStyle.title, + ), + children: [ + Text( + 'Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.' + .tr, + style: AppStyle.title, + ), + ], + ), + + // Question 4: Can I cancel my ride? (if applicable) + ExpansionTile( + title: Text( + 'Can I cancel my ride?'.tr, + style: AppStyle.title, + ), + children: [ + Text( + 'Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.' + .tr, + style: AppStyle.title, + ), + ], + ), + + // Question 5 & 6: Driver-specific questions + ExpansionTile( + title: Text( + 'Driver Registration & Requirements'.tr, + style: AppStyle.title, + ), + children: [ + Text( + '${'How can I register as a driver?'.tr}\n${'What are the requirements to become a driver?'.tr}', + style: AppStyle.title, + ), + InkWell( + onTap: () { + MyDialog().getDialog('title', 'midTitle', () { + ; //todo add in this dialog papers for driver + }); + }, + child: Text( + 'Visit our website or contact Intaleq support for information on driver registration and requirements.' + .tr, + style: AppStyle.title, + ), + ), + ], + ), + + // Question 7: How do I communicate with the other party? + ExpansionTile( + title: Text( + 'How do I communicate with the other party (passenger/driver)?' + .tr, + style: AppStyle.title, + ), + children: [ + Text( + 'Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.' + .tr, + style: AppStyle.title, + ), + ], + ), + + // Question 8: What safety measures does Intaleq offer? + ExpansionTile( + title: Text( + 'What safety measures does Intaleq offer?'.tr, + style: AppStyle.title, + ), + children: [ + Text( + 'Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.' + .tr, + style: AppStyle.title, + ), + ], + ), + ], + ), + ) + ], + isleading: true); + } +} diff --git a/lib/views/home/Captin/About Us/settings_captain.dart b/lib/views/home/Captin/About Us/settings_captain.dart new file mode 100755 index 0000000..3b4ca69 --- /dev/null +++ b/lib/views/home/Captin/About Us/settings_captain.dart @@ -0,0 +1,157 @@ +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/controller/profile/setting_controller.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/views/lang/languages.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; + +import '../../../../controller/functions/vibrate.dart'; +import '../../../auth/country_widget.dart'; +import 'about_us.dart'; +import 'frequantly_question.dart'; +import 'using_app_page.dart'; + +class SettingsCaptain extends StatelessWidget { + const SettingsCaptain({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(SettingController()); + Get.put(HomePageController()); + return MyScafolld( + title: 'Settings'.tr, + body: [ + ListView( + physics: const BouncingScrollPhysics(), + children: [ + // General Section + _buildSectionHeader('General'.tr), + CupertinoListSection( + margin: EdgeInsets.zero, + children: [ + CupertinoListTile( + leading: const Icon(CupertinoIcons.globe), + title: Text('Language'.tr, style: AppStyle.headTitle2), + subtitle: Text('You can change the language of the app'.tr, + style: AppStyle.subtitle), + trailing: const CupertinoListTileChevron(), + onTap: () => Get.to(const Language()), + ), + CupertinoListTile( + leading: const Icon(CupertinoIcons.flag_fill), + title: Text('Change Country'.tr, style: AppStyle.headTitle2), + subtitle: Text( + 'You can change the Country to get all features'.tr, + style: AppStyle.subtitle), + trailing: const CupertinoListTileChevron(), + onTap: () => Get.to( + MyScafolld( + title: 'Change Country'.tr, + body: [CountryPickerFromSetting()], + isleading: true, + // isCupertino: true, // Indicate it's a Cupertino style page + ), + ), + ), + ], + ), + + // App Preferences Section + _buildSectionHeader('App Preferences'.tr), + CupertinoListSection( + margin: EdgeInsets.zero, + children: [ + CupertinoListTile( + leading: Icon( + CupertinoIcons.map_pin_ellipse, + color: AppColor.redColor, + ), + title: Text('Google Map App'.tr, style: AppStyle.headTitle2), + subtitle: Text( + 'If you want to make Google Map App run directly when you apply order' + .tr, + style: AppStyle.subtitle, + ), + trailing: GetBuilder( + builder: (settingController) { + return CupertinoSwitch( + value: settingController.isGoogleMapsEnabled, + activeTrackColor: AppColor.primaryColor, + onChanged: (bool value) { + settingController.onChangMapApp(); + }, + ); + }, + ), + ), + CupertinoListTile( + leading: Icon(Icons.vibration), + title: Text('Vibration'.tr, style: AppStyle.headTitle2), + subtitle: Text( + "You can change the vibration feedback for all buttons".tr, + style: AppStyle.subtitle, + ), + trailing: GetBuilder( + builder: (controller) => CupertinoSwitch( + value: controller.isVibrate, + onChanged: controller.changeVibrateOption, + activeTrackColor: AppColor.primaryColor, + ), + ), + onTap: () => print('3'), + ), + ], + ), + + // Help & Support Section + _buildSectionHeader('Help & Support'.tr), + CupertinoListSection( + margin: EdgeInsets.zero, + children: [ + CupertinoListTile( + leading: const Icon(CupertinoIcons.question_circle_fill), + title: Text('Frequently Questions'.tr, + style: AppStyle.headTitle2), + trailing: const CupertinoListTileChevron(), + onTap: () => Get.to(() => const FrequentlyQuestionsPage()), + ), + CupertinoListTile( + leading: const Icon(CupertinoIcons.hand_raised_fill), + title: + Text("How to use Intaleq".tr, style: AppStyle.headTitle2), + trailing: const CupertinoListTileChevron(), + onTap: () => Get.to(() => const UsingAppPage()), + ), + CupertinoListTile( + leading: const Icon(CupertinoIcons.info_circle_fill), + title: Text('About Us'.tr, style: AppStyle.headTitle2), + trailing: const CupertinoListTileChevron(), + onTap: () => Get.to(() => const AboutPage()), + ), + ], + ), + const SizedBox(height: 16), + ], + ), + ], + isleading: true, + // isCupertino: true, // Indicate this screen is generally Cupertino style + ); + } + + Widget _buildSectionHeader(String title) { + return Padding( + padding: const EdgeInsets.only(left: 16.0, top: 20.0, bottom: 10.0), + child: Text( + title, + style: const TextStyle( + fontSize: 17.0, + fontWeight: FontWeight.w600, + color: CupertinoColors.secondaryLabel, + ), + ), + ); + } +} diff --git a/lib/views/home/Captin/About Us/using_app_page.dart b/lib/views/home/Captin/About Us/using_app_page.dart new file mode 100755 index 0000000..0843a45 --- /dev/null +++ b/lib/views/home/Captin/About Us/using_app_page.dart @@ -0,0 +1,112 @@ +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; +import 'package:sefer_driver/views/widgets/mydialoug.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +class UsingAppPage extends StatelessWidget { + const UsingAppPage({super.key}); + + @override + Widget build(BuildContext context) { + return MyScafolld( + title: "How to use Intaleq".tr, + body: [ + SizedBox( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: ListView( + children: [ + InkWell( + onTap: () { + MyDialogContent().getDialog( + "What are the order details we provide to you?".tr, + Image.network( + 'https://api.Intaleq-egypt.com/Intaleq/imageForUsingApp/order_page.jpg', + height: 300, + width: 300, + fit: BoxFit.cover, + ), () { + Get.back(); + }); + }, + child: Container( + decoration: AppStyle.boxDecoration1, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + "What are the order details we provide to you?".tr, + style: AppStyle.title, + ), + ), + ), + ), + const SizedBox( + height: 20, + ), + InkWell( + onTap: () { + MyDialog().getDialog( + "What are the order details we provide to you?".tr, + '''Intaleq Wallet Features: + +Transfer money multiple times. +Transfer to anyone. +Make purchases. +Charge your account. +Charge a friend's Intaleq account. +Store your money with us and receive it in your bank as a monthly salary.''' + .tr, () { + Get.back(); + }); + }, + child: Container( + decoration: AppStyle.boxDecoration1, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + "What is the feature of our wallet?".tr, + style: AppStyle.title, + ), + ), + ), + ), + const SizedBox( + height: 20, + ), + InkWell( + onTap: () { + MyDialog().getDialog( + "What is Types of Trips in Intaleq?".tr, + '''Types of Trips in Intaleq: + +Comfort: For cars newer than 2017 with air conditioning. +Lady: For girl drivers. +Speed: For fixed salary and endpoints. +Mashwari: For flexible trips where passengers choose the car and driver with prior arrangements. +Raih Gai: For same-day return trips longer than 50km. +''' + .tr, () { + Get.back(); + }); + }, + child: Container( + decoration: AppStyle.boxDecoration1, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + "What is Types of Trips in Intaleq?".tr, + style: AppStyle.title, + ), + ), + ), + ), + ], + ), + ), + ) + ], + isleading: true, + ); + } +} diff --git a/lib/views/home/Captin/About Us/video_page.dart b/lib/views/home/Captin/About Us/video_page.dart new file mode 100755 index 0000000..62b1c7c --- /dev/null +++ b/lib/views/home/Captin/About Us/video_page.dart @@ -0,0 +1,193 @@ +import 'package:sefer_driver/constant/info.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:video_player/video_player.dart'; +import 'package:youtube_player_flutter/youtube_player_flutter.dart'; + +import '../../../../controller/home/captin/help/video_controller.dart'; + +import 'package:flutter/cupertino.dart'; + +class VideoListPage extends StatelessWidget { + final VideoController videoController = Get.put(VideoController()); + + @override + Widget build(BuildContext context) { + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + middle: Text('Videos Tutorials'.tr), + ), + child: SafeArea( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, + vertical: 10.0), // Outer padding around the list + child: GetBuilder( + builder: (videoController) { + return ListView.builder( + itemCount: videoController.videos.length, + itemBuilder: (context, index) { + final video = videoController.videos[index]; + return Container( + margin: const EdgeInsets.symmetric( + vertical: 8.0), // Spacing between each card + decoration: BoxDecoration( + color: CupertinoColors.white, + borderRadius: + BorderRadius.circular(12.0), // Rounded corners + boxShadow: [ + BoxShadow( + color: CupertinoColors.systemGrey.withOpacity(0.3), + offset: const Offset( + 0, 4), // Offset for shadow to appear below + blurRadius: 10.0, // Blur for softer shadow effect + ), + ], + border: Border.all( + color: CupertinoColors.systemGrey4, + width: 0.5, // Subtle border for a refined iOS-like look + ), + ), + child: CupertinoListTile( + title: Padding( + padding: const EdgeInsets.only(bottom: 4.0), + child: Text( + video['title'], + style: const TextStyle( + color: CupertinoColors.black, + fontWeight: FontWeight.bold, + ), + ), + ), + subtitle: Text( + video['description'], + style: const TextStyle( + color: CupertinoColors.systemGrey, + ), + ), + onTap: () { + // Navigate to video player page (iOS-style) + Get.to(() => VideoPlayerPage1(videoUrl: video['url'])); + }, + ), + ); + }, + ); + }, + ), + ), + ), + ); + } +} + +class VideoPlayerPage extends StatelessWidget { + final String videoUrl; + + VideoPlayerPage({required this.videoUrl}); + + final VideoController videoController = Get.put(VideoController()); + + @override + Widget build(BuildContext context) { + // Initialize the video when the page is loaded + videoController.initializeVideo(videoUrl); + + return CupertinoPageScaffold( + navigationBar: const CupertinoNavigationBar( + middle: Text(AppInformation.appName), + ), + child: SafeArea( + child: Center( + child: GetBuilder( + builder: (controller) { + if (!controller.videoPlayerController.value.isInitialized) { + return const CircularProgressIndicator(); // Show loading indicator while initializing + } + + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + // Video player widget + AspectRatio( + aspectRatio: + controller.videoPlayerController.value.aspectRatio, + // child: VideoPlayer(controller.videoPlayerController), + child: VideoPlayer(controller.videoPlayerController), + ), + const SizedBox(height: 20), + + // Play/pause button + CupertinoButton( + onPressed: () { + if (controller.videoPlayerController.value.isPlaying) { + controller.pause(); + } else { + controller.play(); + } + }, + child: Icon( + controller.videoPlayerController.value.isPlaying + ? CupertinoIcons.pause + : CupertinoIcons.play_arrow, + color: CupertinoColors.activeBlue, + size: 30, + ), + ), + ], + ); + }, + ), + ), + ), + ); + } +} + +class VideoPlayerPage1 extends StatelessWidget { + final String videoUrl; + + VideoPlayerPage1({required this.videoUrl}); + + @override + Widget build(BuildContext context) { + // Extract the video ID from the URL + String videoId = YoutubePlayer.convertUrlToId(videoUrl)!; + + // Create a YoutubePlayerController + final YoutubePlayerController _controller = YoutubePlayerController( + initialVideoId: videoId, + flags: const YoutubePlayerFlags( + autoPlay: true, + loop: true, + mute: false, + captionLanguage: 'ar', + ), + ); + + return Scaffold( + body: Stack( + children: [ + // Full-screen YouTube player + Positioned.fill( + child: YoutubePlayer( + controller: _controller, + showVideoProgressIndicator: true, + ), + ), + // Overlay back button in the top left corner for exit + Positioned( + top: 40.0, + left: 16.0, + child: IconButton( + icon: const Icon(Icons.arrow_back, color: Colors.white), + onPressed: () { + Navigator.pop(context); + }, + ), + ), + ], + ), + ); + } +} diff --git a/lib/views/home/Captin/assurance_health_page.dart b/lib/views/home/Captin/assurance_health_page.dart new file mode 100755 index 0000000..09c9816 --- /dev/null +++ b/lib/views/home/Captin/assurance_health_page.dart @@ -0,0 +1,231 @@ +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../constant/colors.dart'; +import '../../../controller/home/captin/help/assurance_controller.dart'; + +import 'package:flutter/cupertino.dart'; + +class AssuranceHealthPage extends StatelessWidget { + AssuranceHealthPage({super.key}); + AssuranceHealthController assuranceHealthController = + Get.put(AssuranceHealthController()); + + @override + Widget build(BuildContext context) { + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + middle: Text("Health Insurance".tr), + ), + child: SafeArea( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: GetBuilder( + builder: (assuranceHealthController) { + return Column( + children: [ + Text( + "When you complete 500 trips, you will be eligible for exclusive health insurance offers." + .tr, + textAlign: TextAlign.center, + style: CupertinoTheme.of(context).textTheme.navTitleTextStyle, + ), + const SizedBox(height: 10), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + CupertinoButton.filled( + child: Text("Show My Trip Count".tr), + onPressed: () async { + assuranceHealthController.getTripCountByCaptain(); + }, + ), + _buildTripCountAvatar( + assuranceHealthController.tripCount['count'] == null + ? '0' + : assuranceHealthController.tripCount['count'] + .toString(), + ), + ], + ), + const SizedBox(height: 10), + Container( + decoration: BoxDecoration( + color: CupertinoColors.systemGrey6, + borderRadius: BorderRadius.circular(10), + ), + child: Padding( + padding: const EdgeInsets.all(14), + child: Text( + "We have partnered with health insurance providers to offer you special health coverage. Complete 500 trips and receive a 20% discount on health insurance premiums." + .tr, + style: CupertinoTheme.of(context) + .textTheme + .textStyle + .copyWith(fontWeight: FontWeight.w600), + textAlign: TextAlign.center, + ), + ), + ), + const SizedBox(height: 10), + CupertinoButton.filled( + disabledColor: AppColor.blueColor, + padding: + const EdgeInsets.symmetric(horizontal: 20, vertical: 15), + borderRadius: BorderRadius.circular(12), + child: Text( + "Would you like to proceed with health insurance?".tr, + style: const TextStyle( + fontSize: 16, fontWeight: FontWeight.bold), + ), + onPressed: () async { + // Show confirmation dialog before proceeding + showCupertinoDialog( + context: context, + builder: (BuildContext context) { + // Variable to store the health insurance provider chosen by the driver + TextEditingController providerController = + TextEditingController(); + + return CupertinoAlertDialog( + title: Text( + "Confirmation".tr, + style: const TextStyle( + fontWeight: FontWeight.bold, fontSize: 18), + ), + content: Column( + children: [ + Text( + "Would you like to proceed with health insurance?" + .tr, + style: const TextStyle(fontSize: 14), + ), + const SizedBox(height: 20), + CupertinoTextField( + controller: providerController, + placeholder: + "Do you have a disease for a long time?".tr, + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + border: Border.all( + color: CupertinoColors.systemGrey, + width: 1), + borderRadius: BorderRadius.circular(8), + ), + ), + ], + ), + actions: [ + CupertinoDialogAction( + isDefaultAction: true, + child: Text( + "Yes".tr, + style: const TextStyle( + color: CupertinoColors.activeBlue), + ), + onPressed: () async { + // Ensure the provider name is not empty + if (providerController.text.isNotEmpty) { + // Call the function to insert data into the database + await assuranceHealthController + .addDriverHealthAssurance( + healthInsuranceProvider: + providerController.text, + ); + + // Close the dialog and navigate to a success screen or show a snackbar + Navigator.of(context).pop(); + } else { + // Show an alert if the provider name is empty + showCupertinoDialog( + context: context, + builder: (_) => CupertinoAlertDialog( + title: Text("Error".tr), + content: Text( + "Do you have a disease for a long time?" + .tr), + actions: [ + CupertinoDialogAction( + child: Text("OK".tr), + onPressed: () => + Navigator.of(context).pop(), + ), + ], + ), + ); + } + }, + ), + CupertinoDialogAction( + child: Text( + "No".tr, + style: const TextStyle( + color: CupertinoColors.destructiveRed), + ), + onPressed: () { + Navigator.of(context) + .pop(); // Just close the dialog + // Optionally show feedback if the driver opts out + // Get.snackbar( + // "Opted out".tr, + // "You have chosen not to proceed with health insurance." + // .tr, + // backgroundColor: + // CupertinoColors.systemGrey); + mySnackeBarError( + "You have chosen not to proceed with health insurance." + .tr); + }, + ), + ], + ); + }, + ); + }, + ), + ], + ); + }), + ), + ), + ); + } + + Widget _buildTripCountAvatar(String count) { + return Container( + width: 80, + height: 80, + decoration: BoxDecoration( + shape: BoxShape.circle, + gradient: const RadialGradient( + colors: [ + Color(0xFF42A5F5), + Color(0xFF1976D2), + ], // Health theme colors + center: Alignment.center, + radius: 0.8, + ), + boxShadow: [ + BoxShadow( + color: CupertinoColors.black.withOpacity(0.2), + blurRadius: 8, + offset: const Offset(0, 4), + ), + ], + ), + child: Center( + child: Text( + count, + style: const TextStyle( + fontSize: 22, + fontWeight: FontWeight.bold, + color: CupertinoColors.white, + ), + ), + ), + ); + } +} diff --git a/lib/views/home/Captin/bottom_bar.dart b/lib/views/home/Captin/bottom_bar.dart new file mode 100755 index 0000000..266dcf8 --- /dev/null +++ b/lib/views/home/Captin/bottom_bar.dart @@ -0,0 +1,119 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/colors.dart'; + +class BottomBarController extends GetxController { + var currentIndex = 0.obs; + + void changePage(int index) { + currentIndex.value = index; + } +} + +class HomeScreen extends StatelessWidget { + final BottomBarController controller = Get.put(BottomBarController()); + + HomeScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text('Bottom Bar Example'.tr), + ), + body: Obx(() => IndexedStack( + index: controller.currentIndex.value, + children: const [ + HomeView(), + ProfileView(), + StatisticsView(), + WalletView(), + ], + )), + bottomNavigationBar: Obx(() => BottomNavigationBar( + backgroundColor: Colors.greenAccent, + currentIndex: controller.currentIndex.value, + onTap: controller.changePage, + items: [ + BottomNavigationBarItem( + icon: const Icon( + Icons.home, + color: AppColor.primaryColor, + ), + label: 'Home'.tr, + ), + BottomNavigationBarItem( + icon: const Icon( + Icons.person, + color: AppColor.primaryColor, + ), + label: 'Profile'.tr, + ), + BottomNavigationBarItem( + icon: const Icon( + Icons.bar_chart, + color: AppColor.primaryColor, + ), + label: 'Statistics'.tr, + ), + BottomNavigationBarItem( + icon: const Icon( + Icons.account_balance_wallet, + color: AppColor.primaryColor, + ), + label: 'Wallet'.tr, + ), + ], + )), + ); + } +} + +class HomeView extends StatelessWidget { + const HomeView({super.key}); + + @override + Widget build(BuildContext context) { + Map data; + return const Center( + child: Column( + children: [ + Text('Home View'), + ], + ), + ); + } +} + +class ProfileView extends StatelessWidget { + const ProfileView({super.key}); + + @override + Widget build(BuildContext context) { + return const Center( + child: Text('Profile View'), + ); + } +} + +class StatisticsView extends StatelessWidget { + const StatisticsView({super.key}); + + @override + Widget build(BuildContext context) { + return const Center( + child: Text('Statistics View'), + ); + } +} + +class WalletView extends StatelessWidget { + const WalletView({super.key}); + + @override + Widget build(BuildContext context) { + return const Center( + child: Text('Wallet View'), + ); + } +} diff --git a/lib/views/home/Captin/camer_widget.dart b/lib/views/home/Captin/camer_widget.dart new file mode 100755 index 0000000..86ac571 --- /dev/null +++ b/lib/views/home/Captin/camer_widget.dart @@ -0,0 +1,303 @@ +import 'package:camera/camera.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/functions/camer_controller.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; + +class CameraWidgetCardId extends StatelessWidget { + final CameraClassController cameraClassController = + Get.put(CameraClassController()); + + CameraWidgetCardId({super.key}); + + @override + Widget build(BuildContext context) { + return MyScafolld( + title: 'Scan Id'.tr, + body: [ + Column( + children: [ + Padding( + padding: + const EdgeInsets.symmetric(vertical: 8, horizontal: 12), + child: GetBuilder( + builder: (cameraClassController) => + cameraClassController.isCameraInitialized + ? Stack( + children: [ + Container( + decoration: AppStyle.boxDecoration, + child: FittedBox( + fit: BoxFit.fitWidth, + child: SizedBox( + width: Get.width * .9, + height: Get.width * + .9, // Set the desired aspect ratio here + child: CameraPreview( + cameraClassController.cameraController, + ), + ), + ), + ), + Positioned( + top: 72, + child: Container( + width: 230, + height: 25, + decoration: BoxDecoration( + // color: AppColor.blueColor, + border: Border.all( + color: AppColor.yellowColor, + width: 2), + ), + ), + ), + Positioned( + top: 60, + right: 5, + child: Container( + width: 230, + height: 25, + decoration: BoxDecoration( + // color: AppColor.blueColor, + border: Border.all( + color: AppColor.blueColor, width: 2), + ), + ), + ), + Positioned( + top: 156, + right: 5, + child: Container( + width: 140, + height: 20, + decoration: BoxDecoration( + // color: AppColor.blueColor, + border: Border.all( + color: AppColor.blueColor, width: 2), + ), + ), + ), + Positioned( + top: 175, + right: 5, + child: Container( + width: 140, + height: 15, + decoration: BoxDecoration( + // color: AppColor.blueColor, + border: Border.all( + color: AppColor.blueColor, width: 2), + ), + ), + ), + Positioned( + top: 191, + right: 5, + child: Container( + width: 140, + height: 15, + decoration: BoxDecoration( + // color: AppColor.blueColor, + border: Border.all( + color: AppColor.blueColor, width: 2), + ), + ), + ), + Positioned( + top: 207, + right: 5, + child: Container( + width: 140, + height: 15, + decoration: BoxDecoration( + // color: AppColor.blueColor, + border: Border.all( + color: AppColor.blueColor, width: 2), + ), + ), + ), + Positioned( + top: 225, + right: 5, + child: Container( + width: 140, + height: 15, + decoration: BoxDecoration( + // color: AppColor.blueColor, + border: Border.all( + color: AppColor.blueColor, width: 2), + ), + ), + ), + Positioned( + top: 115, + left: 25, + child: Container( + width: 120, + height: 110, + decoration: BoxDecoration( + // color: AppColor.blueColor, + border: Border.all( + color: AppColor.blueColor, width: 2), + ), + ), + ), + ], + ) + : Container( + decoration: AppStyle.boxDecoration, + height: Get.width * 3 / 4, + width: Get.width, + child: Center( + child: Text( + 'Camera not initilaized yet'.tr, + style: AppStyle.title, + ), + ), + ), + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + MyElevatedButton( + title: 'Scan ID MklGoogle'.tr, onPressed: () {}), + // cameraClassController.takePictureAndMLGoogleScan()), + MyElevatedButton( + title: 'Scan ID Tesseract'.tr, onPressed: () {}), + ], + ), + MyElevatedButton( + title: 'Scan ID Api'.tr, + onPressed: () => cameraClassController.extractCardId()), + GetBuilder( + builder: (cameraClassController) => Expanded( + child: + Text(cameraClassController.scannedText.toString()))) + ], + ) + ], + isleading: true); + } +} + +class CameraWidgetPassPort extends StatelessWidget { + final CameraClassController cameraClassController = + Get.put(CameraClassController()); + + CameraWidgetPassPort({super.key}); + + @override + Widget build(BuildContext context) { + return MyScafolld( + title: 'Scan Id'.tr, + body: [ + Column( + children: [ + Padding( + padding: + const EdgeInsets.symmetric(vertical: 8, horizontal: 12), + child: GetBuilder( + builder: (cameraClassController) => + cameraClassController.isCameraInitialized + ? Stack( + children: [ + Container( + decoration: AppStyle.boxDecoration, + child: FittedBox( + fit: BoxFit.fitWidth, + child: SizedBox( + width: Get.width * .9, + height: Get.width * + .9, // Set the desired aspect ratio here + child: CameraPreview( + cameraClassController.cameraController, + ), + ), + ), + ), + Positioned( + top: 35, + left: 35, + width: Get.width * .77, + height: + 17, //left":95.0,"top":134.0,"width":2909.0,"height":175.0 + child: Container( + // width: 230, + // height: 25, + decoration: BoxDecoration( + // color: AppColor.blueColor, + border: Border.all( + color: AppColor.yellowColor, + width: 2), + ), + ), + ), + Positioned( + top: 60, + right: 25, + width: 90, + height: 25, + child: Container( + decoration: BoxDecoration( + // color: AppColor.blueColor, + border: Border.all( + color: AppColor.blueColor, width: 2), + ), + ), + ), + Positioned( + top: 110, + right: 90, + child: Container( + width: 140, + height: 20, + decoration: BoxDecoration( + // color: AppColor.blueColor, + border: Border.all( + color: AppColor.blueColor, width: 2), + ), + ), + ), + ], + ) + : Container( + decoration: AppStyle.boxDecoration, + height: Get.width * 3 / 4, + width: Get.width, + child: Center( + child: Text( + 'Camera not initilaized yet', + style: AppStyle.title, + ), + ), + ), + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + MyElevatedButton( + title: 'Scan ID MklGoogle'.tr, onPressed: () => {}), + // cameraClassController.takePictureAndMLGoogleScan()), + MyElevatedButton( + title: 'Scan ID Tesseract'.tr, onPressed: () {}), + ], + ), + MyElevatedButton( + title: 'Scan ID Api'.tr, + onPressed: () => cameraClassController.extractCardId()), + GetBuilder( + builder: (cameraClassController) => Expanded( + child: + Text(cameraClassController.scannedText.toString()))) + ], + ) + ], + isleading: true); + } +} diff --git a/lib/views/home/Captin/driver_map_page.dart b/lib/views/home/Captin/driver_map_page.dart new file mode 100755 index 0000000..86bcaa0 --- /dev/null +++ b/lib/views/home/Captin/driver_map_page.dart @@ -0,0 +1,173 @@ +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/controller/home/captin/map_driver_controller.dart'; + +import '../../../constant/colors.dart'; +import '../../../controller/functions/location_controller.dart'; +import '../../Rate/rate_passenger.dart'; +import '../../widgets/my_textField.dart'; +import 'mapDriverWidgets/driver_end_ride_bar.dart'; +import 'mapDriverWidgets/google_driver_map_page.dart'; +import 'mapDriverWidgets/passenger_info_window.dart'; +import 'mapDriverWidgets/sos_connect.dart'; + +class PassengerLocationMapPage extends StatelessWidget { + PassengerLocationMapPage({super.key}); + final LocationController locationController = Get.put(LocationController()); + final MapDriverController mapDriverController = + Get.put(MapDriverController()); + + @override + Widget build(BuildContext context) { + if (Get.arguments != null && Get.arguments is Map) { + // نستخدم addPostFrameCallback لضمان أن هذا الكود يعمل بعد اكتمال بناء الإطار الأول + // هذا يعطي GetX وقته لتجهيز كل شيء + WidgetsBinding.instance.addPostFrameCallback((_) { + // نستدعي دالة التهيئة الجديدة ونمرر لها البيانات + mapDriverController.argumentLoading(); + }); + } else { + // ÙÙŠ حال عدم وجود argumentsØŒ يجب التعامل مع هذا الخطأ + WidgetsBinding.instance.addPostFrameCallback((_) { + Get.snackbar("Error", "No order data found."); + Get.back(); + }); + } + mapDriverController.argumentLoading(); + mapDriverController.startTimerToShowPassengerInfoWindowFromDriver(); + + return Scaffold( + // backgroundColor: AppColor.blueColor, + // title: 'Map Passenger'.tr, + body: SafeArea( + child: Stack( + children: [ + GoogleDriverMap(locationController: locationController), + const PassengerInfoWindow(), + CancelWidget(mapDriverController: mapDriverController), + driverEndRideBar(), + const SosConnect(), + speedCircle(), + // const GoogleMapApp(), + const PricesWindow(), + ], + ), + )); + } +} + +class CancelWidget extends StatelessWidget { + const CancelWidget({ + super.key, + required this.mapDriverController, + }); + + final MapDriverController mapDriverController; + + @override + Widget build(BuildContext context) { + return Positioned( + top: 10, + left: 5, + child: GestureDetector( + onTap: () { + Get.defaultDialog( + title: "Are you sure you want to cancel this trip?".tr, + titleStyle: AppStyle.title, + content: Column( + children: [ + Text("Why do you want to cancel this trip?".tr), + Form( + key: mapDriverController.formKeyCancel, + child: MyTextForm( + controller: mapDriverController.cancelTripCotroller, + label: "Write the reason for canceling the trip".tr, + hint: "Write the reason for canceling the trip".tr, + type: TextInputType.name, + )) + ], + ), + confirm: MyElevatedButton( + title: 'Ok'.tr, + kolor: AppColor.redColor, + onPressed: () async { + // todo add cancel and inform passenger to get new driver + await mapDriverController + .cancelTripFromDriverAfterApplied(); + Get.back(); + }), + cancel: MyElevatedButton( + title: 'No'.tr, + // kolor: AppColor.redColor, + onPressed: () { + Get.back(); + })); + }, + child: Container( + decoration: BoxDecoration( + color: AppColor.redColor, + borderRadius: BorderRadius.circular(15)), + child: const Padding( + padding: EdgeInsets.all(3), + child: Icon( + Icons.clear, + size: 40, + color: AppColor.secondaryColor, + ), + ), + ), + ), + ); + } +} + +class PricesWindow extends StatelessWidget { + const PricesWindow({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return GetBuilder(builder: (mapDriverController) { + return mapDriverController.isPriceWindow + ? Positioned( + bottom: Get.height * 1.2, + // top: Get.height * 3, + left: Get.height * 1, + right: Get.height * 1, + child: Container( + height: Get.height * 3, + decoration: AppStyle.boxDecoration1, + child: Column( + children: [ + Container( + decoration: AppStyle.boxDecoration1, + child: Padding( + padding: const EdgeInsets.all(3), + child: Text( + 'Total Price is '.tr, + style: AppStyle.headTitle2, + textAlign: TextAlign.center, + ), + )), + const SizedBox( + height: 20, + ), + MyElevatedButton( + title: 'ok'.tr, + onPressed: () => + Get.to(() => RatePassenger(), arguments: { + 'rideId': mapDriverController.rideId, + 'passengerId': mapDriverController.passengerId, + 'driverId': mapDriverController.driverId + })) + ], + ), + ), + ) + : const SizedBox(); + }); + } +} diff --git a/lib/views/home/Captin/history/history_captain.dart b/lib/views/home/Captin/history/history_captain.dart new file mode 100755 index 0000000..20e4a5e --- /dev/null +++ b/lib/views/home/Captin/history/history_captain.dart @@ -0,0 +1,149 @@ +import 'package:sefer_driver/views/widgets/mydialoug.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../../controller/auth/captin/history_captain.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:get/get.dart'; + +import '../../../../controller/functions/encrypt_decrypt.dart'; + +class HistoryCaptain extends StatelessWidget { + const HistoryCaptain({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(HistoryCaptainController()); + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + middle: Text('History Page'.tr), + leading: CupertinoNavigationBarBackButton( + onPressed: () => Get.back(), + ), + ), + child: SafeArea( + child: GetBuilder( + builder: (historyCaptainController) => historyCaptainController + .isloading + ? const Center(child: CupertinoActivityIndicator()) + : historyCaptainController.historyData['message'].length < 1 + ? Center( + child: Text( + 'No ride Yet.'.tr, + style: CupertinoTheme.of(context) + .textTheme + .navTitleTextStyle, + ), + ) + : ListView.builder( + itemCount: historyCaptainController + .historyData['message'].length, + itemBuilder: (BuildContext context, int index) { + var list = historyCaptainController + .historyData['message'][index]; + return Padding( + padding: const EdgeInsets.all(4.0), + child: Container( + decoration: BoxDecoration( + border: Border.all( + color: CupertinoColors.systemGrey, width: 1), + borderRadius: + const BorderRadius.all(Radius.circular(8.0)), + ), + child: CupertinoButton( + onPressed: () { + if (list['status'] != 'Cancel') { + historyCaptainController + .getHistoryDetails(list['order_id']); + } else { + MyDialog().getDialog( + 'This Trip Cancelled'.tr, + 'This Trip Cancelled'.tr, + () => Get.back(), + ); + } + }, + child: Container( + margin: const EdgeInsets.all(8), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Text( + 'OrderId'.tr, + style: CupertinoTheme.of(context) + .textTheme + .navTitleTextStyle, + ), + Text( + EncryptionHelper.instance + .decryptData(list['order_id']), + style: CupertinoTheme.of(context) + .textTheme + .textStyle, + ), + ], + ), + Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Text( + 'created time'.tr, + style: CupertinoTheme.of(context) + .textTheme + .navTitleTextStyle, + ), + Text( + list['created_at'], + style: CupertinoTheme.of(context) + .textTheme + .textStyle, + ), + ], + ), + Text( + list['status'], + style: EncryptionHelper.instance + .decryptData( + list['status']) == + 'Apply' + ? CupertinoTheme.of(context) + .textTheme + .navTitleTextStyle + .copyWith( + color: CupertinoColors + .systemGreen) + : EncryptionHelper.instance.decryptData( + list['status']) == + 'Refused' + ? CupertinoTheme.of(context) + .textTheme + .navTitleTextStyle + .copyWith( + color: CupertinoColors + .systemRed) + : CupertinoTheme.of(context) + .textTheme + .navTitleTextStyle + .copyWith( + color: CupertinoColors + .systemYellow), + ), + ], + ), + ), + ), + ), + ); + }, + ), + ), + ), + ); + } +} diff --git a/lib/views/home/Captin/history/history_details_page.dart b/lib/views/home/Captin/history/history_details_page.dart new file mode 100755 index 0000000..0115b81 --- /dev/null +++ b/lib/views/home/Captin/history/history_details_page.dart @@ -0,0 +1,252 @@ +import 'package:sefer_driver/controller/functions/location_controller.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/controller/auth/captin/history_captain.dart'; +import 'package:sefer_driver/controller/functions/launch.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; + +import 'package:flutter/cupertino.dart'; + +import '../../../../controller/functions/encrypt_decrypt.dart'; + +class HistoryDetailsPage extends StatelessWidget { + HistoryDetailsPage({super.key}); + HistoryCaptainController historyCaptainController = + Get.put(HistoryCaptainController()); + + @override + Widget build(BuildContext context) { + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + middle: Text('Trip Detail'.tr), + leading: CupertinoButton( + padding: EdgeInsets.zero, + child: const Icon(CupertinoIcons.back), + onPressed: () => Navigator.pop(context), + ), + ), + child: GetBuilder( + builder: (historyCaptainController) { + var res = historyCaptainController.historyDetailsData['data']; + return historyCaptainController.isloading + ? const Center( + child: CupertinoActivityIndicator(), + ) + : CupertinoScrollbar( + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const SizedBox( + height: 20, + ), + CupertinoButton( + onPressed: () { + String mapUrl = + 'https://www.google.com/maps/dir/${EncryptionHelper.instance.decryptData(res['start_location'])}/${EncryptionHelper.instance.decryptData(res['end_location'])}/'; + showInBrowser(mapUrl); + }, + child: Container( + width: MediaQuery.of(context).size.width * 0.9, + padding: const EdgeInsets.all(12.0), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: CupertinoColors.activeBlue, + width: 2), + ), + child: Column( + children: [ + const SizedBox( + height: 20, + ), + SizedBox( + height: MediaQuery.of(context).size.height * + 0.3, + child: GoogleMap( + initialCameraPosition: CameraPosition( + target: Get.find() + .myLocation, + tilt: 80, + zoom: 13, + ), + zoomControlsEnabled: true, + polylines: { + Polyline( + polylineId: const PolylineId('route'), + points: [ + LatLng( + double.parse(EncryptionHelper + .instance + .decryptData( + res['start_location']) + .toString() + .split(',')[0]), + double.parse(EncryptionHelper + .instance + .decryptData( + res['start_location']) + .toString() + .split(',')[1]), + ), + LatLng( + double.parse(EncryptionHelper + .instance + .decryptData( + res['end_location']) + .toString() + .split(',')[0]), + double.parse(EncryptionHelper + .instance + .decryptData( + res['end_location']) + .toString() + .split(',')[1]), + ) + ], + color: CupertinoColors.activeGreen, + width: 5, + ), + }, + ), + ), + const SizedBox(height: 10), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Order ID'.tr} ${EncryptionHelper.instance.decryptData(res['id'])}', + style: CupertinoTheme.of(context) + .textTheme + .navActionTextStyle, + ), + Text( + res['date'].toString(), + style: CupertinoTheme.of(context) + .textTheme + .navActionTextStyle, + ), + ], + ), + ], + ), + ), + ), + const SizedBox(height: 20), + Container( + width: MediaQuery.of(context).size.width * 0.9, + padding: const EdgeInsets.all(12.0), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: CupertinoColors.activeGreen, width: 2), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Price is'.tr} ${EncryptionHelper.instance.decryptData(res['price_for_driver'])}', + style: CupertinoTheme.of(context) + .textTheme + .textStyle, + ), + Text( + '${'Distance is'.tr} ${EncryptionHelper.instance.decryptData(res['distance'])} KM', + style: CupertinoTheme.of(context) + .textTheme + .textStyle, + ), + ], + ), + ), + const SizedBox(height: 20), + Text( + 'Times of Trip'.tr, + style: CupertinoTheme.of(context) + .textTheme + .navTitleTextStyle, + ), + const SizedBox(height: 10), + Container( + width: MediaQuery.of(context).size.width * 0.9, + padding: const EdgeInsets.all(12.0), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: CupertinoColors.destructiveRed, + width: 2), + ), + child: Column( + children: [ + Text( + '${'Time to Passenger is'.tr} ${res['DriverIsGoingToPassenger']}', + style: CupertinoTheme.of(context) + .textTheme + .textStyle, + ), + Text( + '${'TimeStart is'.tr} ${res['rideTimeStart']}', + style: CupertinoTheme.of(context) + .textTheme + .textStyle, + ), + Text( + '${'Time Finish is'.tr} ${res['rideTimeFinish']}', + style: CupertinoTheme.of(context) + .textTheme + .textStyle, + ), + ], + ), + ), + const SizedBox(height: 20), + Container( + width: MediaQuery.of(context).size.width * 0.9, + padding: const EdgeInsets.all(12.0), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: CupertinoColors.systemGreen, width: 2), + ), + child: Center( + child: Text( + '${'Passenger Name is'.tr} ${EncryptionHelper.instance.decryptData(res['first_name'])} ${EncryptionHelper.instance.decryptData(res['last_name'])}', + style: CupertinoTheme.of(context) + .textTheme + .textStyle, + ), + ), + ), + const SizedBox(height: 20), + Container( + width: MediaQuery.of(context).size.width * 0.9, + padding: const EdgeInsets.all(12.0), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: CupertinoColors.systemYellow, + width: 2), + ), + child: Center( + child: Text( + '${'Status is'.tr} ${EncryptionHelper.instance.decryptData(res['status'])}', + style: CupertinoTheme.of(context) + .textTheme + .textStyle, + ), + ), + ), + ], + ), + ), + ), + ); + }, + ), + ); + } +} diff --git a/lib/views/home/Captin/home_captain/drawer_captain.dart b/lib/views/home/Captin/home_captain/drawer_captain.dart new file mode 100755 index 0000000..34d42af --- /dev/null +++ b/lib/views/home/Captin/home_captain/drawer_captain.dart @@ -0,0 +1,589 @@ +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/home/captin/home_captain_controller.dart'; +import 'package:sefer_driver/views/Rate/rate_app_page.dart'; +import 'package:sefer_driver/views/auth/captin/contact_us_page.dart'; +import 'package:sefer_driver/views/auth/captin/invite_driver_screen.dart'; +import 'package:sefer_driver/views/notification/available_rides_page.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_rating_bar/flutter_rating_bar.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/auth/captin/logout_captain.dart'; +import 'package:sefer_driver/views/home/Captin/history/history_captain.dart'; +import 'package:sefer_driver/views/home/Captin/home_captain/help_captain.dart'; +import 'package:sefer_driver/views/home/Captin/About%20Us/settings_captain.dart'; +import 'package:sefer_driver/views/home/my_wallet/walet_captain.dart'; +import 'package:sefer_driver/views/home/profile/profile_captain.dart'; +import 'package:sefer_driver/views/notification/notification_captain.dart'; + +import '../../../../constant/colors.dart'; +import '../../../../controller/functions/upload_image.dart'; +import '../About Us/video_page.dart'; +import '../assurance_health_page.dart'; +import '../maintain_center_page.dart'; +import 'package:flutter/cupertino.dart'; + +// class CupertinoDrawerCaptain extends StatelessWidget { +// final ImageController imageController = Get.put(ImageController()); + +// @override +// Widget build(BuildContext context) { +// return CupertinoPageScaffold( +// navigationBar: CupertinoNavigationBar( +// middle: Text('Menu'.tr), +// ), +// child: SafeArea( +// child: CustomScrollView( +// slivers: [ +// const SliverToBoxAdapter(child: const UserAccountHeader()), +// SliverList( +// delegate: SliverChildListDelegate([ +// _buildDivider(), +// _buildDrawerItem( +// icon: CupertinoIcons.money_dollar, +// text: 'Wallet'.tr, +// onTap: () => Get.to(() => WalletCaptain()), +// ), +// _buildDivider(), +// _buildDrawerItem( +// icon: CupertinoIcons.person, +// text: 'Profile'.tr, +// onTap: () => Get.to(() => ProfileCaptain()), +// ), +// _buildDivider(), +// _buildDrawerItem( +// icon: CupertinoIcons.clock, +// text: 'History of Trip'.tr, +// onTap: () => Get.to(() => const HistoryCaptain()), +// ), +// _buildDivider(), +// _buildDrawerItem( +// icon: CupertinoIcons.car_detailed, +// text: 'Available for rides'.tr, +// onTap: () => Get.to(() => const AvailableRidesPage()), +// ), +// _buildDivider(), +// _buildDrawerItem( +// icon: CupertinoIcons.bell, +// text: 'Notifications'.tr, +// onTap: () => Get.to(() => const NotificationCaptain()), +// ), +// _buildDivider(), +// _buildDrawerItem( +// icon: CupertinoIcons.question_circle, +// text: 'Helping Center'.tr, +// onTap: () => Get.to(() => HelpCaptain()), +// ), +// _buildDivider(), +// _buildDrawerItem( +// icon: CupertinoIcons.share, +// text: 'Share App'.tr, +// onTap: () => Get.to(() => InviteScreen()), +// ), +// _buildDivider(), +// _buildDrawerItem( +// icon: CupertinoIcons.wrench, +// text: "Maintenance Center".tr, +// onTap: () => Get.to(() => MaintainCenterPage()), +// ), +// _buildDivider(), +// _buildDrawerItem( +// icon: +// CupertinoIcons.heart, // Updated icon to represent health +// text: "Health Insurance".tr, // Updated English text +// onTap: () => Get.to(() => AssuranceHealthPage()), +// ), +// _buildDivider(), +// _buildDrawerItem( +// icon: CupertinoIcons.mail, +// text: "Contact Us".tr, +// onTap: () => Get.to(() => ContactUsPage()), +// ), +// _buildDivider(), +// _buildDrawerItem( +// icon: +// Icons.play_circle_filled, // Icon representing video play +// text: 'Videos Tutorials'.tr, +// onTap: () => Get.to(() => VideoListPage()), +// ), +// _buildDivider(), +// _buildDrawerItem( +// icon: Icons.star, // Another option with a filled star icon +// text: "Rate Our App".tr, +// onTap: () => Get.to(() => RatingScreen()), +// ), +// _buildDivider(), +// _buildDrawerItem( +// icon: CupertinoIcons.settings, +// text: 'Settings'.tr, +// onTap: () => Get.to(() => const SettingsCaptain()), +// ), +// _buildDivider(), +// _buildDrawerItem( +// icon: CupertinoIcons.square_arrow_right, +// text: 'Sign Out'.tr, +// onTap: () => Get.to(() => const LogoutCaptain()), +// ), +// _buildDivider(), +// ]), +// ), +// ], +// ), +// ), +// ); +// } + +// Widget _buildDivider() { +// return const Divider( +// thickness: 1, +// height: 1, +// color: CupertinoColors.systemGrey4, +// ); +// } + +// Widget _buildDrawerItem({ +// required IconData icon, +// required String text, +// required VoidCallback onTap, +// }) { +// return CupertinoButton( +// onPressed: onTap, +// child: Row( +// children: [ +// Icon(icon, color: CupertinoColors.activeBlue), +// const SizedBox(width: 10), +// Text(text, style: const TextStyle(color: CupertinoColors.label)), +// const Spacer(), +// const Icon(CupertinoIcons.right_chevron, +// color: CupertinoColors.systemGrey), +// ], +// ), +// ); +// } +// } + +// class UserAccountHeader extends StatelessWidget { +// const UserAccountHeader({super.key}); + +// @override +// Widget build(BuildContext context) { +// return Container( +// padding: const EdgeInsets.all(16), +// decoration: const BoxDecoration( +// gradient: LinearGradient( +// colors: [AppColor.blueColor, AppColor.twitterColor], +// begin: Alignment.topLeft, +// end: Alignment.bottomRight, +// ), +// ), +// child: Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// GetBuilder( +// builder: (imageController) { +// return Stack( +// children: [ +// imageController.isloading +// ? const CupertinoActivityIndicator() +// : Container( +// width: 100, +// height: 100, +// decoration: BoxDecoration( +// shape: BoxShape.circle, +// image: DecorationImage( +// fit: BoxFit.cover, +// image: NetworkImage( +// '${AppLink.seferCairoServer}/portrate_captain_image/${box.read(BoxName.driverID)}.jpg', +// ), +// ), +// ), +// ), +// Positioned( +// right: 0, +// top: 0, +// child: CupertinoButton( +// onPressed: () { +// imageController.choosImagePicture( +// AppLink.uploadImage1, 'portrait'); +// }, +// child: const Icon(CupertinoIcons.pencil_circle_fill, +// color: CupertinoColors.white), +// ), +// ), +// ], +// ); +// }, +// ), +// const SizedBox(height: 10), +// Text( +// '${box.read(BoxName.nameDriver).toString().split(' ')[0]} ${box.read(BoxName.nameDriver).toString().split(' ')[1]}', +// style: const TextStyle( +// color: CupertinoColors.white, +// fontSize: 18, +// fontWeight: FontWeight.bold), +// ), +// const SizedBox(height: 5), +// Text( +// box.read(BoxName.emailDriver), +// style: const TextStyle(color: CupertinoColors.white, fontSize: 14), +// ), +// const SizedBox(height: 10), +// Row( +// children: [ +// Text( +// Get.find().rating.toString(), +// style: const TextStyle( +// color: CupertinoColors.systemYellow, fontSize: 16), +// ), +// const SizedBox(width: 5), +// // You might want to replace this with a Cupertino-style rating widget +// // For now, we'll use text to represent stars +// // const Text('★★★★★', +// // style: TextStyle(color: CupertinoColors.systemYellow)), + +// Container( +// padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 1), +// color: AppColor.greenColor, +// child: RatingBar.builder( +// initialRating: double.parse( +// Get.find().rating.toString()), +// minRating: 1, +// direction: Axis.horizontal, +// itemCount: 5, +// itemSize: 20, +// itemPadding: const EdgeInsets.symmetric(horizontal: 2), +// itemBuilder: (context, _) => const Icon( +// Icons.star, +// color: Colors.amber, +// ), +// onRatingUpdate: (rating) {}, +// ), +// ), +// ], +// ), +// ], +// ), +// ); +// } +// } +class CupertinoDrawerCaptain extends StatelessWidget { + final ImageController imageController = Get.put(ImageController()); + + @override + Widget build(BuildContext context) { + return CupertinoPageScaffold( + backgroundColor: CupertinoColors.systemGroupedBackground, + navigationBar: CupertinoNavigationBar( + middle: Text('Menu'.tr, + style: const TextStyle(fontSize: 17, fontWeight: FontWeight.w600)), + backgroundColor: Colors.transparent, + border: null, + ), + child: SafeArea( + child: CustomScrollView( + slivers: [ + const SliverToBoxAdapter(child: UserAccountHeader()), + SliverList( + delegate: SliverChildListDelegate([ + const SizedBox(height: 10), + _buildSectionHeader('Account'.tr), + _buildDrawerItem( + icon: CupertinoIcons.money_dollar_circle_fill, + text: 'Wallet'.tr, + onTap: () => Get.to(() => WalletCaptainRefactored()), + ), + _buildDrawerItem( + icon: CupertinoIcons.person_fill, + text: 'Profile'.tr, + onTap: () => Get.to(() => ProfileCaptain()), + ), + _buildSectionHeader('Activities'.tr), + _buildDrawerItem( + icon: CupertinoIcons.clock_fill, + text: 'History of Trip'.tr, + onTap: () => Get.to(() => const HistoryCaptain()), + ), + _buildDrawerItem( + icon: CupertinoIcons.car_fill, + text: 'Available for rides'.tr, + onTap: () => Get.to(() => const AvailableRidesPage()), + ), + _buildSectionHeader('Support'.tr), + _buildDrawerItem( + icon: CupertinoIcons.bell_fill, + text: 'Notifications'.tr, + onTap: () => Get.to(() => const NotificationCaptain()), + ), + _buildDrawerItem( + icon: CupertinoIcons.question_circle_fill, + text: 'Helping Center'.tr, + onTap: () => Get.to(() => HelpCaptain()), + ), + _buildSectionHeader('More'.tr), + ...moreMenuItems(), + ]), + ), + ], + ), + ), + ); + } + + List moreMenuItems() => [ + _buildDrawerItem( + icon: CupertinoIcons.share_up, + text: 'Share App'.tr, + onTap: () => Get.to(() => InviteScreen()), + ), + _buildDrawerItem( + icon: CupertinoIcons.wrench_fill, + text: "Maintenance Center".tr, + onTap: () => Get.to(() => MaintainCenterPage()), + ), + _buildDrawerItem( + icon: CupertinoIcons.heart_fill, + text: "Health Insurance".tr, + onTap: () => Get.to(() => AssuranceHealthPage()), + ), + _buildDrawerItem( + icon: CupertinoIcons.mail_solid, + text: "Contact Us".tr, + onTap: () => Get.to(() => ContactUsPage()), + ), + _buildDrawerItem( + icon: CupertinoIcons.play_circle_fill, + text: 'Videos Tutorials'.tr, + onTap: () => Get.to(() => VideoListPage()), + ), + _buildDrawerItem( + icon: CupertinoIcons.star_fill, + text: "Rate Our App".tr, + onTap: () => Get.to(() => RatingScreen()), + ), + _buildDrawerItem( + icon: CupertinoIcons.settings_solid, + text: 'Settings'.tr, + onTap: () => Get.to(() => const SettingsCaptain()), + ), + _buildDrawerItem( + icon: CupertinoIcons.square_arrow_right, + text: 'Sign Out'.tr, + onTap: () => Get.to(() => const LogoutCaptain()), + isDestructive: true, + ), + ]; + + Widget _buildSectionHeader(String title) { + return Padding( + padding: const EdgeInsets.fromLTRB(16, 16, 16, 8), + child: Text( + title, + style: const TextStyle( + color: CupertinoColors.systemGrey, + fontSize: 13, + fontWeight: FontWeight.w600, + ), + ), + ); + } + + Widget _buildDrawerItem({ + required IconData icon, + required String text, + required VoidCallback onTap, + bool isDestructive = false, + }) { + return Container( + margin: const EdgeInsets.symmetric(horizontal: 8, vertical: 2), + decoration: BoxDecoration( + color: CupertinoColors.white, + borderRadius: BorderRadius.circular(10), + ), + child: CupertinoButton( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + onPressed: onTap, + child: Row( + children: [ + Icon( + icon, + color: isDestructive + ? CupertinoColors.destructiveRed + : CupertinoColors.activeBlue, + size: 22, + ), + const SizedBox(width: 12), + Text( + text, + style: AppStyle.title, + // TextStyle( + // color: isDestructive + // ? CupertinoColors.destructiveRed + // : CupertinoColors.label, + // fontSize: 16, + // ), + ), + const Spacer(), + Icon( + CupertinoIcons.chevron_right, + color: CupertinoColors.systemGrey3, + size: 18, + ), + ], + ), + ), + ); + } +} + +class UserAccountHeader extends StatelessWidget { + const UserAccountHeader({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.fromLTRB(20, 20, 20, 24), + decoration: BoxDecoration( + gradient: const LinearGradient( + colors: [AppColor.blueColor, Color(0xFF2196F3)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + boxShadow: [ + BoxShadow( + color: Colors.black.withAlpha(10), + blurRadius: 10, + spreadRadius: 2, + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + GetBuilder( + builder: (imageController) { + return Stack( + children: [ + Container( + width: 100, + height: 100, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all(color: Colors.white, width: 3), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.2), + blurRadius: 8, + spreadRadius: 2, + ), + ], + ), + child: imageController.isloading + ? const CupertinoActivityIndicator() + : ClipRRect( + borderRadius: BorderRadius.circular(50), + child: Image.network( + '${AppLink.seferCairoServer}/portrate_captain_image/${(box.read(BoxName.driverID))}.jpg', + fit: BoxFit.cover, + ), + ), + ), + Positioned( + right: 0, + bottom: 0, + child: CupertinoButton( + padding: EdgeInsets.zero, + onPressed: () { + imageController.choosImagePicture( + AppLink.uploadImagePortrate, 'portrait'); + }, + child: Container( + padding: const EdgeInsets.all(6), + decoration: const BoxDecoration( + color: Colors.white, + shape: BoxShape.circle, + ), + child: const Icon( + CupertinoIcons.camera_fill, + color: AppColor.blueColor, + size: 20, + ), + ), + ), + ), + ], + ); + }, + ), + const SizedBox(height: 16), + Text( + box.read(BoxName.nameDriver).toString(), + style: const TextStyle( + color: Colors.white, + fontSize: 24, + fontWeight: FontWeight.bold, + shadows: [ + Shadow( + color: Colors.black26, + blurRadius: 2, + offset: Offset(0, 1), + ), + ], + ), + ), + const SizedBox(height: 4), + Text( + box.read(BoxName.emailDriver), + style: TextStyle( + color: Colors.white.withOpacity(0.9), + fontSize: 14, + ), + ), + const SizedBox(height: 12), + Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.15), + borderRadius: BorderRadius.circular(20), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + // const Icon( + // CupertinoIcons.star_fill, + // color: CupertinoColors.systemYellow, + // size: 18, + // ), + // const SizedBox(width: 4), + Text( + Get.find().rating.toString(), + style: const TextStyle( + color: Colors.white, + fontSize: 16, + fontWeight: FontWeight.w600, + ), + ), + const SizedBox(width: 8), + RatingBar.builder( + initialRating: double.parse( + Get.find().rating.toString()), + minRating: 1, + direction: Axis.horizontal, + itemCount: 5, + itemSize: 16, + ignoreGestures: true, + itemBuilder: (context, _) => const Icon( + CupertinoIcons.star_fill, + color: CupertinoColors.systemYellow, + ), + onRatingUpdate: (rating) {}, + ), + ], + ), + ), + ], + ), + ); + } +} diff --git a/lib/views/home/Captin/home_captain/driver_call_page.dart b/lib/views/home/Captin/home_captain/driver_call_page.dart new file mode 100755 index 0000000..be60a92 --- /dev/null +++ b/lib/views/home/Captin/home_captain/driver_call_page.dart @@ -0,0 +1,189 @@ +// import 'dart:async'; +// import 'package:SEFER/constant/box_name.dart'; +// import 'package:SEFER/main.dart'; +// import 'package:SEFER/views/widgets/my_scafold.dart'; +// import 'package:flutter/material.dart'; +// import 'package:get/get.dart'; +// import 'package:permission_handler/permission_handler.dart'; + +// import 'package:agora_rtc_engine/agora_rtc_engine.dart'; + +// import '../../../../constant/api_key.dart'; +// import '../../../../controller/functions/crud.dart'; + +// String appId = AK.agoraAppId; + +// class DriverCallPage extends StatefulWidget { +// const DriverCallPage({super.key}); + +// @override +// State createState() => _DriverCallPageState(); +// } + +// class _DriverCallPageState extends State { +// String channelName = ''; +// String token = ''; +// // "00612994c6e707543e68d5638894d04f989IAAlydoFEC3ZeZkeUwl0dSswZTX8n+xyZR8PBWdwXFV6t6MLiA8AAAAAEACCHD/gn3TUZQEAAQAAAAAA"; + +// // int uid = int.parse(box.read(BoxName.phoneDriver)); // uid of the local user +// int uid = 0; +// int? _remoteUid; // uid of the remote user +// bool _isJoined = false; // Indicates if the local user has joined the channel +// late RtcEngine agoraEngine; // Agora engine instance + +// final GlobalKey scaffoldMessengerKey = +// GlobalKey(); // Global key to access the scaffold + +// showMessage(String message) { +// scaffoldMessengerKey.currentState?.showSnackBar(SnackBar( +// content: Text(message), +// )); +// } + +// initAgora() async { +// await fetchToken(); +// await setupVoiceSDKEngine(); +// } + +// fetchToken() async { +// var res = await CRUD() +// .getAgoraToken(channelName: channelName, uid: uid.toString()); +// setState(() { +// token = res; +// }); +// } + +// @override +// void initState() { +// super.initState(); +// _remoteUid = box.read(BoxName.phone) != null +// ? int.parse(box.read(BoxName.phone)) +// : int.parse(box.read(BoxName.phoneDriver)); +// uid = box.read(BoxName.phoneDriver) != null +// ? int.parse(box.read(BoxName.phoneDriver)) +// : int.parse(box.read(BoxName.phone)); +// // Set up an instance of Agora engine +// initAgora(); +// } + +// Future setupVoiceSDKEngine() async { +// // retrieve or request microphone permission +// await [Permission.microphone].request(); + +// //create an instance of the Agora engine +// agoraEngine = createAgoraRtcEngine(); +// await agoraEngine.initialize(RtcEngineContext(appId: AK.agoraAppId)); +// // Register the event handler +// agoraEngine.registerEventHandler( +// RtcEngineEventHandler( +// onJoinChannelSuccess: (RtcConnection connection, int elapsed) { +// showMessage( +// "Local user uid:${connection.localUid} joined the channel"); +// setState(() { +// _isJoined = true; +// }); +// }, +// onUserJoined: (RtcConnection connection, int remoteUid, int elapsed) { +// showMessage("Remote user uid:$remoteUid joined the channel"); +// setState(() { +// _remoteUid = remoteUid; +// }); +// }, +// onUserOffline: (RtcConnection connection, int remoteUid, +// UserOfflineReasonType reason) { +// showMessage("Remote user uid:$remoteUid left the channel"); +// setState(() { +// _remoteUid = null; +// }); +// }, +// ), +// ); +// } + +// void join() async { +// // Set channel options including the client role and channel profile +// ChannelMediaOptions options = const ChannelMediaOptions( +// clientRoleType: ClientRoleType.clientRoleBroadcaster, +// channelProfile: ChannelProfileType.channelProfileCommunication, +// ); + +// await agoraEngine.joinChannel( +// token: token, +// channelId: channelName, +// options: options, +// uid: uid, +// ); +// } +// //https://console.agora.io/invite?sign=5e9e22d06f22caeeada9954c9e908572%253A5ba8aed978a35eab5a5113742502ded2a41478b2a81cb19c71a30776e125b58a + +// void leave() { +// setState(() { +// _isJoined = false; +// _remoteUid = null; +// }); +// agoraEngine.leaveChannel(); +// } + +// // Clean up the resources when you leave +// @override +// void dispose() async { +// await agoraEngine.leaveChannel(); +// super.dispose(); +// } + +// // Build UI +// @override +// Widget build(BuildContext context) { +// return MaterialApp( +// scaffoldMessengerKey: scaffoldMessengerKey, +// home: MyScafolld( +// // appBar: AppBar( +// // title: const Text('Get started with Voice Calling'), +// // ), +// title: 'Voice Calling'.tr, +// isleading: true, +// body: [ +// ListView( +// padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4), +// children: [ +// // Status text +// Container(height: 40, child: Center(child: _status())), +// // Button Row +// Row( +// children: [ +// Expanded( +// child: ElevatedButton( +// child: const Text("Join"), +// onPressed: () => {join()}, +// ), +// ), +// const SizedBox(width: 10), +// Expanded( +// child: ElevatedButton( +// child: const Text("Leave"), +// onPressed: () => {leave()}, +// ), +// ), +// ], +// ), +// ], +// ), +// ]), +// ); +// } + +// Widget _status() { +// String statusText; + +// if (!_isJoined) +// statusText = 'Join a channel'; +// else if (_remoteUid == null) +// statusText = 'Waiting for a remote user to join...'; +// else +// statusText = 'Connected to remote user, uid:$_remoteUid'; + +// return Text( +// statusText, +// ); +// } +// } diff --git a/lib/views/home/Captin/home_captain/help_captain.dart b/lib/views/home/Captin/home_captain/help_captain.dart new file mode 100755 index 0000000..98a1ef8 --- /dev/null +++ b/lib/views/home/Captin/home_captain/help_captain.dart @@ -0,0 +1,333 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/controller/home/captin/help/help_controller.dart'; +import 'package:sefer_driver/views/home/Captin/home_captain/help_details_replay_page.dart'; + +import 'package:flutter/cupertino.dart'; + +import '../../../../controller/functions/encrypt_decrypt.dart'; + +class HelpCaptain extends StatelessWidget { + HelpCaptain({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(HelpController()); + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + middle: Text( + 'Helping Page'.tr, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + leading: CupertinoButton( + padding: EdgeInsets.zero, + onPressed: () => Navigator.pop(context), + child: const Icon(CupertinoIcons.back), + ), + ), + child: SafeArea( + child: Padding( + padding: const EdgeInsets.all( + 20.0), // Increased padding around the content + child: ListView( + // crossAxisAlignment: + // CrossAxisAlignment.stretch, // Stretch children to full width + children: [ + Container( + padding: + const EdgeInsets.all(18.0), // Slightly increased padding + decoration: BoxDecoration( + color: + CupertinoTheme.of(context).brightness == Brightness.light + ? CupertinoColors.systemGrey6 + : CupertinoColors.darkBackgroundGray, + borderRadius: + BorderRadius.circular(15.0), // More rounded corners + ), + child: Text( + 'If you need any help or have questions, this is the right place to do that. You are welcome!' + .tr, + style: + CupertinoTheme.of(context).textTheme.textStyle.copyWith( + fontSize: 16, // Slightly larger font size + color: CupertinoColors.label.resolveFrom( + context), // Ensure text color adapts to theme + ), + textAlign: TextAlign.center, + ), + ), + const SizedBox(height: 20), + CupertinoFormSection.insetGrouped( + // Using CupertinoFormSection for better styling + header: Text('Submit Your Question'.tr), + margin: EdgeInsets.zero, + children: [ + GetBuilder( + builder: (helpController) => Form( + key: helpController.formKey, + child: CupertinoTextFormFieldRow( + controller: helpController.helpQuestionController, + placeholder: 'Enter your Question here'.tr, + autovalidateMode: AutovalidateMode.onUserInteraction, + validator: (value) { + if (value == null || value.isEmpty) { + return 'Please enter your question'.tr; + } + return null; + }, + prefix: const Icon(CupertinoIcons + .question_circle), // Added a prefix icon + ), + ), + ), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, vertical: 10.0), + child: GetBuilder( + builder: (helpController) => helpController.isLoading + ? const CupertinoActivityIndicator() + : CupertinoButton.filled( + onPressed: () { + if (helpController.formKey.currentState! + .validate()) { + helpController.addHelpQuestion(); + helpController.helpQuestionController + .clear(); // Clear the text field + } + }, + child: Text('Submit Question'.tr), + ), + ), + ), + ], + ), + const SizedBox(height: 20), + Text( + 'Your Questions'.tr, + style: CupertinoTheme.of(context) + .textTheme + .navTitleTextStyle + .copyWith( + fontWeight: FontWeight.bold, + ), + ), + const SizedBox(height: 10), + Expanded( + child: GetBuilder( + builder: (helpController) => + CupertinoListSection.insetGrouped( + margin: EdgeInsets.zero, + children: helpController.helpQuestionDate['message'] != null + ? List.generate( + helpController.helpQuestionDate['message'].length, + (index) { + var list = helpController + .helpQuestionDate['message'][index]; + return CupertinoListTile( + title: Text( + EncryptionHelper.instance + .decryptData(list['helpQuestion']), + overflow: TextOverflow.ellipsis, + ), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + list['datecreated'], + style: CupertinoTheme.of(context) + .textTheme + .tabLabelTextStyle, + ), + const Icon(CupertinoIcons.chevron_forward), + ], + ), + onTap: () { + helpController.getIndex( + int.parse(EncryptionHelper.instance + .decryptData(list['id'])), + EncryptionHelper.instance + .decryptData(list['helpQuestion'])); + helpController + .getHelpRepley(list['id'].toString()); + Get.to(() => const HelpDetailsReplayPage()); + }, + ); + }, + ) + : [ + Center( + child: Text('No questions asked yet.'.tr), + ), + ], + ), + ), + ), + ], + ), + ), + ), + ); + } +} +// class HelpCaptain extends StatelessWidget { +// HelpCaptain({super.key}); + +// @override +// Widget build(BuildContext context) { +// Get.put(HelpController()); +// return CupertinoPageScaffold( +// navigationBar: CupertinoNavigationBar( +// middle: Text('Helping Page'.tr), +// leading: CupertinoButton( +// padding: EdgeInsets.zero, +// child: Icon(CupertinoIcons.back), +// onPressed: () => Navigator.pop(context), +// ), +// ), +// child: SafeArea( +// child: Padding( +// padding: const EdgeInsets.all(16.0), +// child: Column( +// children: [ +// Padding( +// padding: const EdgeInsets.symmetric(vertical: 12.0), +// child: Container( +// padding: const EdgeInsets.all(16.0), +// decoration: BoxDecoration( +// borderRadius: BorderRadius.circular(12.0), +// border: Border.all( +// color: CupertinoColors.systemGrey2, +// ), +// ), +// child: Text( +// 'If you need any help or have questions, this is the right place to do that. You are welcome!' +// .tr, +// style: CupertinoTheme.of(context).textTheme.textStyle, +// textAlign: TextAlign.center, +// ), +// ), +// ), +// Card( +// elevation: 3, +// color: CupertinoColors.systemGrey6, +// shape: RoundedRectangleBorder( +// borderRadius: BorderRadius.circular(12.0), +// ), +// child: Padding( +// padding: const EdgeInsets.all(16.0), +// child: GetBuilder( +// builder: (helpController) => Form( +// key: helpController.formKey, +// child: Column( +// children: [ +// CupertinoTextField( +// controller: helpController.helpQuestionController, +// placeholder: 'Enter your Question here'.tr, +// decoration: BoxDecoration( +// borderRadius: BorderRadius.circular(12), +// border: Border.all( +// color: CupertinoColors.systemGrey, +// ), +// ), +// padding: const EdgeInsets.all(16), +// clearButtonMode: OverlayVisibilityMode.editing, +// ), +// const SizedBox(height: 20), +// helpController.isLoading +// ? const CupertinoActivityIndicator() +// : CupertinoButton.filled( +// onPressed: () { +// if (helpController.formKey.currentState! +// .validate()) { +// helpController.addHelpQuestion(); + +// // Clear the feedback form +// helpController.formKey.currentState! +// .reset(); +// } +// }, +// child: Text('Submit Question'.tr), +// ), +// ], +// ), +// ), +// ), +// ), +// ), +// const SizedBox(height: 20), +// Expanded( +// child: GetBuilder( +// builder: (helpController) => Padding( +// padding: const EdgeInsets.all(10), +// child: Container( +// decoration: BoxDecoration( +// border: Border.all( +// color: CupertinoColors.systemGrey2, +// ), +// borderRadius: BorderRadius.circular(12.0), +// ), +// child: ListView.builder( +// itemCount: helpController.helpQuestionDate['message'] != +// null +// ? helpController.helpQuestionDate['message'].length +// : 0, +// itemBuilder: (BuildContext context, int index) { +// var list = +// helpController.helpQuestionDate['message'][index]; +// return Padding( +// padding: const EdgeInsets.all(3), +// child: Container( +// padding: const EdgeInsets.symmetric( +// vertical: 12, horizontal: 16), +// decoration: BoxDecoration( +// border: Border.all( +// color: CupertinoColors.activeGreen, +// width: 2, +// ), +// borderRadius: BorderRadius.circular(12), +// ), +// child: GestureDetector( +// onTap: () { +// helpController.getIndex( +// list['id'], list['helpQuestion']); +// helpController +// .getHelpRepley(list['id'].toString()); +// Get.to(() => const HelpDetailsReplayPage()); +// }, +// child: Row( +// mainAxisAlignment: +// MainAxisAlignment.spaceBetween, +// children: [ +// Expanded( +// child: Text( +// list['helpQuestion'], +// style: CupertinoTheme.of(context) +// .textTheme +// .textStyle, +// overflow: TextOverflow.ellipsis, +// ), +// ), +// Text( +// list['datecreated'], +// style: CupertinoTheme.of(context) +// .textTheme +// .tabLabelTextStyle, +// ), +// ], +// ), +// ), +// ), +// ); +// }, +// ), +// ), +// ), +// ), +// ), +// ], +// ), +// ), +// ), +// ); +// } +// } diff --git a/lib/views/home/Captin/home_captain/help_details_replay_page.dart b/lib/views/home/Captin/home_captain/help_details_replay_page.dart new file mode 100755 index 0000000..f640b00 --- /dev/null +++ b/lib/views/home/Captin/home_captain/help_details_replay_page.dart @@ -0,0 +1,85 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/views/widgets/mycircular.dart'; + +import '../../../../controller/functions/encrypt_decrypt.dart'; +import '../../../../controller/home/captin/help/help_controller.dart'; +import '../../../widgets/my_scafold.dart'; + +class HelpDetailsReplayPage extends StatelessWidget { + const HelpDetailsReplayPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.find(); + return GetBuilder( + builder: (helpController) => MyScafolld( + title: 'Help Details'.tr, + body: [ + helpController.isLoading + ? const MyCircularProgressIndicator() + : Column( + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Card( + elevation: 3, + child: Container( + width: Get.width * .66, + color: Colors.transparent, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + helpController.qustion, + style: AppStyle.title, + ), + ), + ), + ), + ]), + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Card( + elevation: 3, + child: Container( + color: Colors.transparent, + width: Get.width * .66, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: helpController.status == + 'not yet' || + EncryptionHelper.instance + .decryptData(helpController + .helpQuestionRepleyDate[ + 'message']['replay']) + .toString() == + 'not yet' + ? Text( + 'No Response yet.'.tr, + style: AppStyle.title, + ) + : Text( + EncryptionHelper.instance + .decryptData(helpController + .helpQuestionRepleyDate[ + 'message']['replay']) + .toString(), + style: AppStyle.title, + ), + ), + ), + ), + ]), + ], + ) + ], + isleading: true, + )); + } +} diff --git a/lib/views/home/Captin/home_captain/home_captin.dart b/lib/views/home/Captin/home_captain/home_captin.dart new file mode 100755 index 0000000..a42a740 --- /dev/null +++ b/lib/views/home/Captin/home_captain/home_captin.dart @@ -0,0 +1,750 @@ +import 'dart:io'; + +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/controller/home/captin/map_driver_controller.dart'; +import 'package:sefer_driver/views/notification/available_rides_page.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:sefer_driver/views/home/Captin/home_captain/drawer_captain.dart'; +import 'package:sefer_driver/views/widgets/mycircular.dart'; +import 'package:bubble_head/bubble.dart'; + +import '../../../../constant/colors.dart'; +import '../../../../constant/info.dart'; +import '../../../../constant/style.dart'; +import '../../../../controller/functions/location_controller.dart'; +import '../../../../controller/functions/overlay_permisssion.dart'; +import '../../../../controller/functions/package_info.dart'; +import '../../../../controller/home/captin/home_captain_controller.dart'; +import '../../../../print.dart'; +import '../../../widgets/circle_container.dart'; +import '../driver_map_page.dart'; +import 'widget/connect.dart'; +import 'widget/left_menu_map_captain.dart'; +import '../../../../main.dart'; + +// ================================================================= +// STEP 1: Modify your LocationController +// ================================================================= +/* +In your `location_controller.dart` file, change `myLocation` and `heading` +to be observable by adding `.obs`. This will allow other parts of your app, +like the map, to automatically react to changes. + +// BEFORE: +// LatLng myLocation = LatLng(....); +// double heading = 0.0; + +// AFTER: +final myLocation = const LatLng(30.0444, 31.2357).obs; // Default to Cairo or a sensible default +final heading = 0.0.obs; + +// When you update these values elsewhere in your controller, +// make sure to update their `.value` property. +// e.g., myLocation.value = newLatLng; +// e.g., heading.value = newHeading; +*/ + +// ================================================================= +// STEP 2: Modify your HomeCaptainController +// ================================================================= +/* +In your `home_captain_controller.dart` file, you need to add logic to +listen for changes from the LocationController and animate the camera. + +class HomeCaptainController extends GetxController { + // ... your existing variables (mapController, carIcon, etc.) + + // Make sure you have a reference to the GoogleMapController + GoogleMapController? mapHomeCaptainController; + + @override + void onInit() { + super.onInit(); + _setupLocationListener(); + } + + void onMapCreated(GoogleMapController controller) { + mapHomeCaptainController = controller; + // Any other map setup logic + } + + // THIS IS THE NEW LOGIC TO ADD + void _setupLocationListener() { + final locationController = Get.find(); + + // The 'ever' worker from GetX listens for changes to an observable variable. + // Whenever `heading` or `myLocation` changes, it will call our method. + ever(locationController.heading, (_) => _updateCameraPosition()); + ever(locationController.myLocation, (_) => _updateCameraPosition()); + } + + void _updateCameraPosition() { + final locationController = Get.find(); + if (mapHomeCaptainController != null) { + final newPosition = CameraPosition( + target: locationController.myLocation.value, + zoom: 17.5, // A bit closer for a navigation feel + tilt: 50.0, // A nice 3D perspective + bearing: locationController.heading.value, // This rotates the map + ); + + // Animate the camera smoothly to the new position and rotation + mapHomeCaptainController!.animateCamera( + CameraUpdate.newCameraPosition(newPosition), + ); + } + } + + // ... rest of your controller code +} +*/ + +// ================================================================= +// STEP 3: Update the HomeCaptain Widget +// ================================================================= +class HomeCaptain extends StatelessWidget { + HomeCaptain({super.key}); + final LocationController locationController = Get.put(LocationController()); + final HomeCaptainController homeCaptainController = + Get.put(HomeCaptainController()); + + @override + Widget build(BuildContext context) { + Get.put(HomeCaptainController()); + WidgetsBinding.instance.addPostFrameCallback((_) async { + closeOverlayIfFound(); + checkForUpdate(context); + getPermissionOverlay(); + showDriverGiftClaim(context); + }); + return Scaffold( + appBar: AppBar( + elevation: 2, + flexibleSpace: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [Colors.white, Colors.grey.shade50], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.1), + spreadRadius: 1, + blurRadius: 4, + ), + ], + ), + ), + title: Row( + children: [ + Image.asset( + 'assets/images/logo.gif', + height: 32, + width: 35, + ), + const SizedBox(width: 8), + Text( + AppInformation.appName.split(' ')[0].toString().tr, + style: AppStyle.title.copyWith( + fontSize: 22, + fontWeight: FontWeight.w600, + color: AppColor.blueColor, + ), + ), + ], + ), + actions: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 4), + child: MyCircleContainer( + child: Text( + homeCaptainController.countRefuse.toString(), + style: AppStyle.title, + ), + ), + ), + Container( + margin: const EdgeInsets.symmetric(horizontal: 4), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.1), + spreadRadius: 1, + blurRadius: 4, + ), + ], + ), + child: Row( + children: [ + _MapControlButton( + icon: Icons.satellite_alt, + tooltip: 'Change Map Type'.tr, + onPressed: homeCaptainController.changeMapType, + ), + _MapControlButton( + icon: Icons.streetview_sharp, + tooltip: 'Toggle Traffic'.tr, + onPressed: homeCaptainController.changeMapTraffic, + ), + _MapControlButton( + icon: Icons.my_location, // Changed for clarity + tooltip: 'Center on Me'.tr, + onPressed: () { + // This button now just re-centers without changing rotation + if (homeCaptainController.mapHomeCaptainController != + null) { + homeCaptainController.mapHomeCaptainController! + .animateCamera(CameraUpdate.newLatLngZoom( + Get.find().myLocation, + 17.5, + )); + } + }, + ), + ], + ), + ), + const SizedBox(width: 8), + ], + ), + drawer: CupertinoDrawerCaptain(), + body: Stack( + children: [ + // FIX: Replaced nested GetBuilder/Obx with a single GetX widget. + // GetX handles both observable (.obs) variables and standard controller updates. + GetBuilder(builder: (controller) { + return controller.isLoading + ? const MyCircularProgressIndicator() + : GoogleMap( + onMapCreated: controller.onMapCreated, + minMaxZoomPreference: const MinMaxZoomPreference(6, 18), + initialCameraPosition: CameraPosition( + // Use .value to get the latest location from the reactive variable + target: locationController.myLocation, + zoom: 15, + ), + onCameraMove: (position) { + CameraPosition( + target: locationController.myLocation, + zoom: 17.5, // A bit closer for a navigation feel + tilt: 50.0, // A nice 3D perspective + bearing: + locationController.heading, // This rotates the map + ); + }, + markers: { + Marker( + markerId: MarkerId('MyLocation'.tr), + // Use .value for position and rotation from the reactive variable + position: locationController.myLocation, + rotation: locationController.heading, + // IMPORTANT: These two properties make the marker look + // correct when the map is tilted and rotating. + flat: true, + anchor: const Offset(0.5, 0.5), + icon: controller.carIcon, + ) + }, + mapType: controller.mapType + ? MapType.satellite + : MapType.terrain, + myLocationButtonEnabled: false, // Disable default button + myLocationEnabled: false, // We use our custom marker + trafficEnabled: controller.mapTrafficON, + buildingsEnabled: true, + mapToolbarEnabled: true, + zoomControlsEnabled: false, // Cleaner UI for navigation + ); + }), + + // The rest of your UI remains the same... + Positioned( + bottom: 10, + right: Get.width * .1, + left: Get.width * .1, + child: const ConnectWidget()), + Positioned( + top: 5, + right: Get.width * .05, + left: Get.width * .05, + child: GetBuilder( + builder: (homeCaptainController) { + return Container( + decoration: BoxDecoration( + gradient: const LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [Colors.white, Colors.white70], + ), + borderRadius: BorderRadius.circular(15), + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.2), + spreadRadius: 2, + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + padding: + const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + width: Get.width * .8, + height: 120, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.greenColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Row( + children: [ + const Icon( + Entypo.wallet, + color: AppColor.greenColor, + size: 20, + ), + const SizedBox(width: 8), + Text( + '${"Today".tr}: ${(homeCaptainController.totalMoneyToday)}', + style: AppStyle.title.copyWith( + color: AppColor.greenColor, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.yellowColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Row( + children: [ + const Icon( + Entypo.wallet, + color: AppColor.yellowColor, + size: 20, + ), + const SizedBox(width: 8), + Text( + '${AppInformation.appName}: ${(homeCaptainController.totalMoneyInSEFER)}', + style: AppStyle.title.copyWith( + color: AppColor.yellowColor, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Total Points is'.tr}: ${(homeCaptainController.totalPoints)}', + style: AppStyle.title.copyWith( + fontSize: 16, + fontWeight: FontWeight.w600, + ), + ), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, vertical: 6), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(20), + color: int.parse((homeCaptainController + .countRideToday)) < + 5 + ? AppColor.accentColor + : int.parse((homeCaptainController + .countRideToday)) > + 5 && + int.parse((homeCaptainController + .countRideToday)) < + 10 + ? AppColor.yellowColor + : AppColor.greenColor, + ), + child: Row( + children: [ + const Icon( + Icons.directions_car_rounded, + color: Colors.white, + size: 18, + ), + const SizedBox(width: 4), + Text( + '${"Ride Today : ".tr}: ${(homeCaptainController.countRideToday)}', + style: AppStyle.title.copyWith( + color: Colors.white, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + ], + ), + ], + ), + ); + }, + ), + ), + Positioned( + bottom: 65, + right: Get.width * .1, + left: Get.width * .1, + child: GetBuilder( + builder: (homeCaptainController) => Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.2), + spreadRadius: 2, + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + padding: + const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.timer_outlined, + color: AppColor.greenColor), + const SizedBox(width: 8), + Text( + 'Active Duration:'.tr, + style: AppStyle.title, + ), + const SizedBox(width: 4), + Text( + (homeCaptainController.stringActiveDuration), + style: AppStyle.title.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.greenColor, + ), + ), + ], + ), + const SizedBox(height: 8), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.access_time, + color: AppColor.accentColor), + const SizedBox(width: 8), + Text( + 'Total Connection Duration:'.tr, + style: AppStyle.title, + ), + const SizedBox(width: 4), + Text( + (homeCaptainController.totalDurationToday), + style: AppStyle.title.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.accentColor, + ), + ), + ], + ), + ], + ), + ), + ), + ), + Positioned( + bottom: Get.height * .2, + right: 6, + child: Column( + children: [ + Platform.isAndroid + ? AnimatedContainer( + duration: const Duration(microseconds: 200), + width: homeCaptainController.widthMapTypeAndTraffic, + decoration: BoxDecoration( + border: Border.all(color: AppColor.blueColor), + color: AppColor.secondaryColor, + borderRadius: BorderRadius.circular(15)), + child: IconButton( + onPressed: () async { + Bubble().startBubbleHead(sendAppToBackground: true); + }, + icon: Image.asset( + 'assets/images/logo1.png', + fit: BoxFit.cover, + width: 35, + height: 35, + ), + ), + ) + : const SizedBox(), + const SizedBox( + height: 5, + ), + AnimatedContainer( + duration: const Duration(microseconds: 200), + width: homeCaptainController.widthMapTypeAndTraffic, + decoration: BoxDecoration( + border: Border.all(color: AppColor.blueColor), + color: AppColor.secondaryColor, + borderRadius: BorderRadius.circular(15)), + child: IconButton( + onPressed: () { + Get.to(() => const AvailableRidesPage()); + }, + icon: const Icon( + Icons.train_sharp, + size: 29, + color: AppColor.blueColor, + ), + ), + ), + const SizedBox( + height: 5, + ), + GetBuilder( + builder: (homeCaptainController) { + return box.read(BoxName.rideStatus) == 'Applied' || + box.read(BoxName.rideStatus) == 'Begin' + ? Positioned( + bottom: Get.height * .2, + right: 6, + child: AnimatedContainer( + duration: const Duration(microseconds: 200), + width: homeCaptainController.widthMapTypeAndTraffic, + decoration: BoxDecoration( + border: Border.all(color: AppColor.blueColor), + color: AppColor.secondaryColor, + borderRadius: BorderRadius.circular(15)), + child: GestureDetector( + onLongPress: () { + box.write(BoxName.rideStatus, 'delete'); + homeCaptainController.update(); + }, + child: IconButton( + onPressed: () { + box.read(BoxName.rideStatus) == 'Applied' + ? { + Get.to( + () => PassengerLocationMapPage(), + arguments: box + .read(BoxName.rideArguments)), + Get.put(MapDriverController()) + .changeRideToBeginToPassenger() + } + : { + Get.to( + () => PassengerLocationMapPage(), + arguments: box + .read(BoxName.rideArguments)), + Get.put(MapDriverController()) + .startRideFromStartApp() + }; + }, + icon: const Icon( + Icons.directions_rounded, + size: 29, + color: AppColor.blueColor, + ), + ), + ), + ), + ) + : const SizedBox(); + }) + ], + ), + ), + leftMainMenuCaptainIcons(), + ], + ), + ); + } +} + +// These helper widgets and functions remain unchanged +showFirstTimeOfferNotification(BuildContext context) async { + bool isFirstTime = _checkIfFirstTime(); + + if (isFirstTime) { + WidgetsBinding.instance.addPostFrameCallback((_) { + showDialog( + context: context, + builder: (BuildContext context) { + return Dialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(20), + ), + elevation: 0, + backgroundColor: Colors.transparent, + child: Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + shape: BoxShape.rectangle, + color: Colors.white, + borderRadius: BorderRadius.circular(20), + boxShadow: const [ + BoxShadow( + color: Colors.black26, + blurRadius: 10.0, + offset: Offset(0.0, 10.0), + ), + ], + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + 'Welcome Offer!'.tr, + style: const TextStyle( + fontSize: 24, + fontWeight: FontWeight.w700, + ), + ), + const SizedBox(height: 15), + Text( + 'As a new driver, you\'re eligible for a special offer!'.tr, + textAlign: TextAlign.center, + style: const TextStyle(fontSize: 16), + ), + const SizedBox(height: 20), + Stack( + children: [ + Container( + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + color: Colors.green, + borderRadius: BorderRadius.circular(15), + ), + child: Text( + '300 LE'.tr, + style: const TextStyle( + color: Colors.white, + fontSize: 25, + fontWeight: FontWeight.bold, + ), + ), + ), + Positioned( + right: -10, + top: -10, + child: Container( + padding: const EdgeInsets.all(5), + decoration: const BoxDecoration( + color: Colors.red, + shape: BoxShape.circle, + ), + child: const Icon( + Icons.attach_money, + color: Colors.white, + size: 20, + ), + ), + ), + ], + ), + const SizedBox(height: 20), + Text( + 'for your first registration!'.tr, + style: const TextStyle(fontSize: 16), + ), + const SizedBox(height: 20), + ElevatedButton( + style: ElevatedButton.styleFrom( + backgroundColor: Colors.green, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(30), + ), + ), + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 20, vertical: 10), + child: Text( + "Get it Now!".tr, + style: + const TextStyle(fontSize: 18, color: Colors.white), + ), + ), + onPressed: () { + _markAsNotFirstTime(); + Navigator.of(context).pop(); + }, + ), + ], + ), + ), + ); + }, + ); + }); + } +} + +bool _checkIfFirstTime() { + if (box.read(BoxName.isFirstTime).toString() == '') { + return true; + } else { + return false; + } +} + +void _markAsNotFirstTime() { + box.write(BoxName.isFirstTime, 'false'); +} + +class _MapControlButton extends StatelessWidget { + final IconData icon; + final VoidCallback onPressed; + final String tooltip; + + const _MapControlButton({ + required this.icon, + required this.onPressed, + required this.tooltip, + }); + + @override + Widget build(BuildContext context) { + return Tooltip( + message: tooltip, + child: Material( + color: Colors.transparent, + child: InkWell( + borderRadius: BorderRadius.circular(12), + onTap: onPressed, + child: Container( + padding: const EdgeInsets.all(8), + child: Icon( + icon, + size: 24, + color: AppColor.blueColor, + ), + ), + ), + ), + ); + } +} diff --git a/lib/views/home/Captin/home_captain/widget/call_page.dart b/lib/views/home/Captin/home_captain/widget/call_page.dart new file mode 100755 index 0000000..91da0f3 --- /dev/null +++ b/lib/views/home/Captin/home_captain/widget/call_page.dart @@ -0,0 +1,84 @@ +// import 'package:SEFER/constant/colors.dart'; +// import 'package:SEFER/constant/style.dart'; +// import 'package:SEFER/controller/firebase/firbase_messge.dart'; +// import 'package:SEFER/controller/home/captin/map_driver_controller.dart'; +// import 'package:SEFER/views/widgets/my_scafold.dart'; +// import 'package:flutter/material.dart'; +// import 'package:get/get.dart'; +// import 'package:SEFER/controller/home/captin/home_captain_controller.dart'; + +// import '../../../../../controller/functions/call_controller.dart'; + +// class CallPage extends StatelessWidget { +// const CallPage({super.key}); + +// @override +// Widget build(BuildContext context) { +// return MyScafolld( +// title: 'Call Page'.tr, isleading: true, body: [callPage()]); +// } +// } + +// GetBuilder callPage() { +// CallController callController = Get.put(CallController()); +// Get.put(MapDriverController()); +// // callController.join(); +// return GetBuilder( +// builder: (controller) => Positioned( +// top: Get.height * .2, +// child: Container( +// height: 100, width: Get.width, +// decoration: AppStyle.boxDecoration, +// child: Row( +// mainAxisAlignment: MainAxisAlignment.spaceEvenly, +// children: [ +// GestureDetector( +// onTap: () async { +// callController.join(); +// }, +// child: Container( +// width: 50, +// height: 50, +// decoration: const BoxDecoration( +// shape: BoxShape.circle, color: AppColor.greenColor), +// child: const Icon( +// Icons.phone, +// size: 35, +// color: AppColor.secondaryColor, +// )), +// ), +// Column( +// children: [ +// Text(callController.status), +// Text(Get.find().passengerName.toString()), +// ], +// ), +// GestureDetector( +// onTap: () async { +// FirebaseMessagesController().sendNotificationToPassengerToken( +// 'Call End'.tr, +// 'Call End', +// Get.find().tokenPassenger, +// [], +// 'iphone_ringtone.wav'); +// callController.leave(); +// Get.back(); +// }, +// child: Container( +// width: 50, +// height: 50, +// decoration: const BoxDecoration( +// shape: BoxShape.circle, color: AppColor.redColor), +// child: const Icon( +// Icons.phone_disabled_sharp, +// size: 35, +// color: AppColor.secondaryColor, +// )), +// ) +// ], +// ), +// // ignore: prefer_const_constructors +// ), +// ), +// ); +// } diff --git a/lib/views/home/Captin/home_captain/widget/connect.dart b/lib/views/home/Captin/home_captain/widget/connect.dart new file mode 100755 index 0000000..40d1c47 --- /dev/null +++ b/lib/views/home/Captin/home_captain/widget/connect.dart @@ -0,0 +1,141 @@ +import 'package:sefer_driver/controller/functions/tts.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/controller/home/payment/captain_wallet_controller.dart'; + +import '../../../../../constant/style.dart'; +import '../../../../../controller/functions/encrypt_decrypt.dart'; +import '../../../../widgets/elevated_btn.dart'; +import '../../../../../controller/home/captin/home_captain_controller.dart'; + +class ConnectWidget extends StatelessWidget { + const ConnectWidget({ + super.key, + }); + + @override + Widget build(BuildContext context) { + // final OrderRequestController orderRequestController = + // Get.put(OrderRequestController()); + CaptainWalletController captainWalletController = + Get.put(CaptainWalletController()); + + captainWalletController.getCaptainWalletFromBuyPoints(); + return Center( + child: GetBuilder( + builder: (homeCaptainController) => double.parse( + (captainWalletController.totalPoints)) < + -300 + ? CupertinoButton( + onPressed: () { + Get.defaultDialog( + // backgroundColor: CupertinoColors.destructiveRed, + barrierDismissible: false, + title: double.parse( + (captainWalletController.totalPoints)) < + -300 + ? 'You dont have Points'.tr + : 'You Are Stopped For this Day !'.tr, + titleStyle: AppStyle.title, + content: Column( + children: [ + IconButton( + onPressed: () async { + double.parse((captainWalletController + .totalPoints)) < + -300 + ? await Get.find() + .speakText( + 'You must be recharge your Account' + .tr) + : await Get.find() + .speakText( + 'You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!' + .tr); + }, + icon: const Icon(Icons.headphones), + ), + Text( + double.parse((captainWalletController + .totalPoints)) < + -300 + ? 'You must be recharge your Account'.tr + : 'You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!' + .tr, + style: AppStyle.title, + ), + ], + ), + confirm: double.parse( + (captainWalletController.totalPoints)) < + -300 + ? MyElevatedButton( + title: 'Recharge my Account'.tr, + onPressed: () { + homeCaptainController.goToWalletFromConnect(); + }) + : MyElevatedButton( + title: 'Ok , See you Tomorrow'.tr, + onPressed: () { + Get.back(); + Get.back(); + })); + }, + color: CupertinoColors.destructiveRed, + child: Text( + 'You are Stopped'.tr, + style: AppStyle.title, + ), + ) + : Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: homeCaptainController.isActive + ? [Colors.green.shade400, Colors.green.shade700] + : [Colors.grey.shade400, Colors.grey.shade700], + ), + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: homeCaptainController.isActive + ? Colors.green.withOpacity(0.3) + : Colors.grey.withOpacity(0.3), + spreadRadius: 1, + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + child: CupertinoButton( + onPressed: homeCaptainController.onButtonSelected, + padding: const EdgeInsets.symmetric( + horizontal: 24, vertical: 12), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + homeCaptainController.isActive + ? CupertinoIcons.check_mark_circled_solid + : CupertinoIcons.circle, + color: Colors.white, + size: 24, + ), + const SizedBox(width: 8), + Text( + homeCaptainController.isActive + ? 'Connected'.tr + : 'Not Connected'.tr, + style: const TextStyle( + color: Colors.white, + fontSize: 16, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ), + )), + ); + } +} diff --git a/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart b/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart new file mode 100755 index 0000000..2a1bdbd --- /dev/null +++ b/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart @@ -0,0 +1,308 @@ +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/controller/firebase/local_notification.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/auth/captin/login_captin.dart'; +import 'package:sefer_driver/views/home/Captin/driver_map_page.dart'; +import 'package:sefer_driver/views/home/Captin/orderCaptin/vip_order_page.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/controller/home/captin/home_captain_controller.dart'; +import 'package:sefer_driver/views/home/my_wallet/points_captain.dart'; +import 'package:sefer_driver/views/widgets/mydialoug.dart'; + +import '../../../../../constant/colors.dart'; +import '../../../../../constant/links.dart'; +import '../../../../../controller/auth/google_sign.dart'; +import '../../../../../controller/firebase/firbase_messge.dart'; +import '../../../../../controller/functions/crud.dart'; +import '../../../../../controller/home/captin/order_request_controller.dart'; +import '../../../../Rate/ride_calculate_driver.dart'; +import '../../../../auth/captin/otp_page.dart'; +import '../../../my_wallet/ecash.dart'; + +GetBuilder leftMainMenuCaptainIcons() { + final firebaseMessagesController = + Get.isRegistered() + ? Get.find() + : Get.put(FirebaseMessagesController()); + return GetBuilder( + builder: (controller) => Positioned( + bottom: Get.height * .2, + left: 6, + child: Column( + children: [ + AnimatedContainer( + duration: const Duration(microseconds: 200), + width: controller.widthMapTypeAndTraffic, + decoration: BoxDecoration( + color: AppColor.secondaryColor, + border: Border.all(color: AppColor.blueColor), + borderRadius: BorderRadius.circular(15)), + child: Builder(builder: (context) { + return IconButton( + onPressed: () async { + await checkForPendingOrderFromServer(); + box.read(BoxName.rideArgumentsFromBackground) != 'failure' + ? Get.to(() => PassengerLocationMapPage(), + arguments: + box.read(BoxName.rideArgumentsFromBackground)) + : MyDialog().getDialog( + 'Ride info'.tr, + 'you dont have accepted ride'.tr, + () { + Get.back(); + }, + ); + // 'box.read(BoxName.rideArgumentsFromBackground): ${box.read(BoxName.rideArgumentsFromBackground)}'); + }, + icon: Icon( + Icons.directions_car_rounded, + size: 29, + color: + box.read(BoxName.rideArgumentsFromBackground) == 'failure' + ? AppColor.redColor + : AppColor.greenColor, + ), + ); + }), + ), + + const SizedBox( + height: 5, + ), + AnimatedContainer( + duration: const Duration(microseconds: 200), + width: controller.widthMapTypeAndTraffic, + decoration: BoxDecoration( + color: AppColor.secondaryColor, + border: Border.all(color: AppColor.blueColor), + borderRadius: BorderRadius.circular(15)), + child: IconButton( + onPressed: () { + // NotificationController1() + // .showNotification('Sefer Driver'.tr, ''.tr, '', ''); + final now = DateTime.now(); + DateTime? lastRequestTime = + box.read(BoxName.lastTimeStaticThrottle); + + if (lastRequestTime == null || + now.difference(lastRequestTime).inMinutes >= 2) { + // Update the last request time to now + lastRequestTime = now; + box.write(BoxName.lastTimeStaticThrottle, lastRequestTime); + // Navigate to the RideCalculateDriver page + Get.to(() => RideCalculateDriver()); + } else { + // Optionally show a message or handle the throttling case + final minutesLeft = + 2 - now.difference(lastRequestTime).inMinutes; + // Get.snackbar( + // '${'Please wait'.tr} $minutesLeft ${"minutes before trying again.".tr}', + // ''); + NotificationController1().showNotification( + 'Intaleq Driver'.tr, + '${'Please wait'.tr} $minutesLeft ${"minutes before trying again.".tr}', + 'ding', + ''); + } + }, + icon: const Icon( + FontAwesome5.chart_bar, + size: 29, + color: AppColor.blueColor, + ), + ), + ), + + const SizedBox( + height: 5, + ), + // Platform.isAndroid + // ? + int.parse(box.read(BoxName.carYear).toString()) > 2023 + ? AnimatedContainer( + duration: const Duration(microseconds: 200), + width: controller.widthMapTypeAndTraffic, + decoration: BoxDecoration( + color: AppColor.secondaryColor, + border: Border.all(color: AppColor.blueColor), + borderRadius: BorderRadius.circular(15)), + child: Builder(builder: (context) { + return IconButton( + onPressed: () async { + // mySnakeBarError('ad'); + Get.to(() => const VipOrderPage()); + }, + icon: const Icon( + Octicons.watch, + size: 29, + color: AppColor.blueColor, + ), + ); + }), + ) + : const SizedBox(), + // const SizedBox( + // height: 5, + // ), + + // AnimatedContainer( + // duration: const Duration(microseconds: 200), + // width: controller.widthMapTypeAndTraffic, + // decoration: BoxDecoration( + // color: AppColor.secondaryColor, + // border: Border.all(color: AppColor.blueColor), + // borderRadius: BorderRadius.circular(15)), + // child: Builder(builder: (context) { + // return IconButton( + // onPressed: () async { + // Get.to(PhoneNumberScreen()); + // // payWithEcashDriver(context, '2000'); + // // payWithMTNWallet(context, '1', 'SYP'); + // // firebaseMessagesController.sendNotificationToDriverMAP( + // // 'title', + // // DateTime.now().toString(), + // // 'ffX7xVXpdE_Xq8JBH3lgS4:APA91bGBHp53E-ZuXdlLBpRZohzqR9sazqcn3pwpEDG7JxkVi9MBtFDlCipzLpPCvD6LHEtds88ugGyCty7pEJVyx6tQYvzHVDCh7l3_7axpyriTBs5iv9E', + // // [], + // // ''); + // // box.write(BoxName.statusDriverLocation, 'off'); + // }, + // icon: const Icon( + // FontAwesome5.grin_tears, + // size: 29, + // color: AppColor.blueColor, + // ), + // ); + // }), + // ),f + + const SizedBox( + height: 5, + ), + ], + ), + ), + ); +} + +Future checkForPendingOrderFromServer() async { + bool _isProcessingOrder = false; + if (_isProcessingOrder) return; + + final driverId = box.read(BoxName.driverID)?.toString(); + if (driverId == null) return; // Can't check without a driver ID + + _isProcessingOrder = true; // Lock + + try { + // You need to create this CRUD method + var response = await CRUD().post( + link: AppLink.getArgumentAfterAppliedFromBackground, + payload: {'driver_id': driverId}, + ); + + // Assuming the server returns order data if found, or 'failure'/'none' if not + if (response != 'failure') { + final Map orderInfoFromServer = response['message']; + final Map rideArguments = + _transformServerDataToAppArguments(orderInfoFromServer); + // 2. Build the new arguments map, matching your Flutter structure + +///////////// + final customerToken = (response)['message']['token_passenger']; + final orderId = (response)['message']['ride_id'].toString(); + box.write(BoxName.rideArgumentsFromBackground, rideArguments); + box.write(BoxName.statusDriverLocation, 'on'); + box.write(BoxName.rideStatus, 'Apply'); + Get.put(OrderRequestController()).changeApplied(); + // MyDialog().getDialog(orderId.toString(), customerToken, () {}); + + // Now proceed with the UI flow + _sendAcceptanceNotification(customerToken, orderId.toString()); + // await _bringAppToForegroundAndNavigate(orderId); + } else { + box.write(BoxName.rideArgumentsFromBackground, 'failure'); + } + } catch (e) { + } finally { + _isProcessingOrder = false; // Release lock + } +} + +Map _transformServerDataToAppArguments( + Map serverData) { + // Helper function to safely get and convert values to String + String _getString(String key, [String defaultValue = 'unknown']) { + // serverData[key] might be an int, double, or string. .toString() handles all. + // If it's null, use the default value. + return serverData[key]?.toString() ?? defaultValue; + } + + return { + 'passengerLocation': _getString('passenger_location'), + 'passengerDestination': _getString('passenger_destination'), + 'Duration': _getString('duration'), + 'totalCost': _getString('total_cost'), + 'Distance': _getString('distance'), + 'name': _getString('name'), + 'phone': _getString('phone'), + 'email': _getString('email'), + 'tokenPassenger': _getString('token_passenger'), + 'direction': _getString('direction_url'), + 'DurationToPassenger': _getString('duration_to_passenger'), + 'rideId': _getString('ride_id'), + 'passengerId': _getString('passenger_id'), + 'driverId': _getString('driver_id'), + 'durationOfRideValue': _getString('duration_of_ride'), + 'paymentAmount': _getString('payment_amount'), + 'paymentMethod': _getString('payment_method'), + 'passengerWalletBurc': _getString('passenger_wallet_burc'), + 'timeOfOrder': _getString('time_of_order'), + 'totalPassenger': _getString('total_passenger'), + 'carType': _getString('car_type'), + 'kazan': _getString('kazan'), + 'startNameLocation': _getString('start_name_location'), + 'endNameLocation': _getString('end_name_location'), + + // --- Special Handling --- + + // Steps (handle null values by providing an empty string) + 'step0': _getString('step0'), + 'step1': _getString('step1'), + 'step2': _getString('step2'), + 'step3': _getString('step3'), + 'step4': _getString('step4'), + + // Boolean conversion (1/0 from server to 'true'/'false' string for the app) + 'WalletChecked': (serverData['wallet_checked'] == 1).toString(), + + // Logic-based conversion for isHaveSteps + // Your app's `rideArguments` expects 'startEnd', so we provide that if has_steps is 1. + // You might need to adjust this logic if 'haveSteps' is also a possibility. + 'isHaveSteps': (serverData['has_steps'] == 1) + ? 'startEnd' + : 'noSteps', // Providing a default + }; +} + +void _sendAcceptanceNotification(String? customerToken, rideId) { + try { + if (customerToken == null) return; + final FirebaseMessagesController _firebaseMessagesController = + Get.put(FirebaseMessagesController()); + List bodyToPassenger = [ + box.read(BoxName.driverID).toString(), + box.read(BoxName.nameDriver).toString(), + box.read(BoxName.tokenDriver).toString(), + rideId.toString() + ]; + + // Safely check for customer token + final String? token = customerToken; + if (token != null && token.isNotEmpty) { + _firebaseMessagesController.sendNotificationToDriverMAP('Accepted Ride', + 'your ride is applied'.tr, token, bodyToPassenger, 'start.wav'); + } else {} + } catch (e) {} +} diff --git a/lib/views/home/Captin/home_captain/widget/zones_controller.dart b/lib/views/home/Captin/home_captain/widget/zones_controller.dart new file mode 100755 index 0000000..c531147 --- /dev/null +++ b/lib/views/home/Captin/home_captain/widget/zones_controller.dart @@ -0,0 +1,67 @@ +import 'dart:convert'; +import 'dart:math'; + +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; + +class ZonesController extends GetxController { + Map> generateZoneMap( + LatLng southwest, LatLng southEast, LatLng northeast) { + const double desiredZoneArea = 4; // in square kilometers + + final double width = (southEast.longitude - southwest.longitude) * 100; + final double height = (northeast.latitude - southEast.latitude) * 100; + final double totalArea = width * height; + + // final int numZones = (totalArea / desiredZoneArea).ceil(); + + final double zoneWidth = width / sqrt(desiredZoneArea); + final double zoneHeight = height / sqrt(desiredZoneArea); + final numRows = + ((northeast.latitude - southwest.latitude) / zoneHeight).ceil(); + final numCols = + ((southEast.longitude - southwest.longitude) / zoneWidth).ceil(); + List zoneNames = []; + List zoneCoordinates = []; + + for (int row = 0; row < numRows; row++) { + for (int col = 0; col < numCols; col++) { + final double zoneSouthwestLat = + southwest.latitude + (row * zoneHeight / 100); + final double zoneSouthwestLng = + southwest.longitude + (col * zoneWidth / 100); + final double zoneNortheastLat = zoneSouthwestLat + zoneHeight / 100; + final double zoneNortheastLng = zoneSouthwestLng + zoneWidth / 100; + + LatLng zoneSouthwest = LatLng(zoneSouthwestLat, zoneSouthwestLng); + LatLng zoneNortheast = LatLng(zoneNortheastLat, zoneNortheastLng); + + String zoneName = + 'Zone${row + col}'; // Assign a unique name to each zone + + zoneNames.add(zoneName); + zoneCoordinates.add(zoneSouthwest); + zoneCoordinates.add(zoneNortheast); + } + } + + Map> zoneMap = {}; + for (int i = 0; i < zoneNames.length; i++) { + zoneMap[zoneNames[i]] = [ + zoneCoordinates[i], // Southwest LatLng + zoneCoordinates[i + 1], // Northeast LatLng + ]; + } + + return zoneMap; + } + + void getJsonOfZones() { + LatLng southwest = const LatLng(32.111107, 36.062222); + LatLng southEast = const LatLng(32.108333, 36.101667); + LatLng northeast = const LatLng(32.143889, 36.058889); + Map> zoneMap = + generateZoneMap(southwest, southEast, northeast); + String jsonMap = json.encode(zoneMap); + } +} diff --git a/lib/views/home/Captin/maintain_center_page.dart b/lib/views/home/Captin/maintain_center_page.dart new file mode 100755 index 0000000..7640ccf --- /dev/null +++ b/lib/views/home/Captin/maintain_center_page.dart @@ -0,0 +1,271 @@ +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/home/captin/help/maintain_center_controller.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +// class MaintainCenterPage extends StatelessWidget { +// MaintainCenterPage({super.key}); +// MaintainCenterController maintainCenterController = +// Get.put(MaintainCenterController()); + +// @override +// Widget build(BuildContext context) { +// return MyScafolld( +// title: "Maintenance Center".tr, +// body: [ +// GetBuilder( +// builder: (maintainCenterController) { +// return Padding( +// padding: const EdgeInsets.all(8.0), +// child: Column( +// children: [ +// Text( +// "When you complete 600 trips, you will be eligible to receive offers for maintenance of your car." +// .tr), +// const SizedBox( +// height: 10, +// ), +// Row( +// mainAxisAlignment: MainAxisAlignment.spaceAround, +// children: [ +// MyElevatedButton( +// title: "Show My Trip Count".tr, +// onPressed: () async { +// maintainCenterController.getTripCountByCaptain(); +// }), +// _buildPriceAvatar( +// maintainCenterController.tripCount['count'] == null +// ? '0' +// : maintainCenterController.tripCount['count'] +// .toString()) +// ], +// ), +// const SizedBox( +// height: 10, +// ), +// Container( +// decoration: AppStyle.boxDecoration, +// child: Padding( +// padding: const EdgeInsets.all(14), +// child: Text( +// "We have maintenance offers for your car. You can use them after completing 600 trips to get a 20% discount on car repairs. Enjoy using our Tripz app and be part of our Tripz family." +// .tr, +// style: AppStyle.title, +// ), +// ), +// ), +// const SizedBox( +// height: 10, +// ), +// MyElevatedButton( +// title: 'Show maintenance center near my location'.tr, +// onPressed: () { +// if (maintainCenterController.tripCount['count'] > 600) { +// } else { +// Get.snackbar("You should complete 600 trips".tr, '', +// backgroundColor: AppColor.yellowColor); +// } +// }) +// ], +// ), +// ); +// }) +// ], +// isleading: true); +// } + +// Widget _buildPriceAvatar(String count) { +// return Container( +// width: 80, +// height: 80, +// decoration: BoxDecoration( +// shape: BoxShape.circle, +// gradient: const RadialGradient( +// colors: [Color(0xFF4CAF50), Color(0xFF2E7D32)], +// center: Alignment.center, +// radius: 0.8, +// ), +// boxShadow: [ +// BoxShadow( +// color: Colors.black.withOpacity(0.2), +// blurRadius: 8, +// offset: const Offset(0, 4), +// ), +// ], +// ), +// child: Center( +// child: Text( +// count, +// style: const TextStyle( +// fontSize: 22, +// fontWeight: FontWeight.bold, +// color: Colors.white, +// ), +// ), +// ), +// ); +// } +// } + +class MaintainCenterPage extends StatelessWidget { + MaintainCenterPage({super.key}); + final MaintainCenterController maintainCenterController = + Get.put(MaintainCenterController()); + + @override + Widget build(BuildContext context) { + return MyScafolld( + title: "Maintenance Center".tr, + body: [ + GetBuilder( + builder: (controller) { + return Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Introduction Text with better styling + Text( + "When you complete 600 trips, you will be eligible to receive offers for maintenance of your car." + .tr, + style: Theme.of(context).textTheme.titleMedium!.copyWith( + color: Colors.grey[700], + height: 1.4, + ), + ), + const SizedBox(height: 20), + + // Trip Count Section in a Card + Card( + elevation: 4, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: MyElevatedButton( + title: "Show My Trip Count".tr, + onPressed: () async { + controller.getTripCountByCaptain(); + }, + ), + ), + const SizedBox(width: 16), + _buildPriceAvatar( + controller.tripCount['count'] == null + ? '0' + : controller.tripCount['count'].toString(), + ), + ], + ), + ), + ), + const SizedBox(height: 20), + + // Maintenance Offer Information in a Card + Card( + elevation: 4, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "Maintenance Offer".tr, + style: Theme.of(context).textTheme.titleLarge, + ), + const SizedBox(height: 8), + Text( + "We have maintenance offers for your car. You can use them after completing 600 trips to get a 20% discount on car repairs. Enjoy using our Tripz app and be part of our Tripz family." + .tr, + style: Theme.of(context) + .textTheme + .bodyMedium! + .copyWith( + color: Colors.grey[800], + height: 1.5, + ), + ), + ], + ), + ), + ), + const SizedBox(height: 20), + + // Show Maintenance Center Button + SizedBox( + width: double.infinity, + child: MyElevatedButton( + title: 'Show maintenance center near my location'.tr, + onPressed: () { + if (controller.tripCount['count'] != null && + controller.tripCount['count'] >= 600) { + // Implement navigation or action to show maintenance centers + // For now, let's print a message + print("Navigating to maintenance centers..."); + } else { + Get.snackbar( + "Ineligible for Offer".tr, + "You should complete 500 trips to unlock this feature." + .tr, + backgroundColor: AppColor.yellowColor, + colorText: Colors.black, + snackPosition: SnackPosition.BOTTOM, + ); + } + }, + ), + ), + ], + ), + ); + }, + ), + ], + isleading: true, + ); + } + + Widget _buildPriceAvatar(String count) { + return Container( + width: 70, // Slightly reduced size + height: 70, + decoration: BoxDecoration( + shape: BoxShape.circle, + gradient: const LinearGradient( + // Changed to LinearGradient + colors: [Color(0xFF4CAF50), Color(0xFF2E7D32)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.15), // Reduced opacity + blurRadius: 6, // Slightly reduced blur + offset: const Offset(0, 3), + ), + ], + ), + child: Center( + child: Text( + count, + style: const TextStyle( + fontSize: 20, // Slightly reduced size + fontWeight: FontWeight.bold, + color: Colors.white, + ), + ), + ), + ); + } +} diff --git a/lib/views/home/Captin/mapDriverWidgets/driver_end_ride_bar.dart b/lib/views/home/Captin/mapDriverWidgets/driver_end_ride_bar.dart new file mode 100755 index 0000000..cb4f6b2 --- /dev/null +++ b/lib/views/home/Captin/mapDriverWidgets/driver_end_ride_bar.dart @@ -0,0 +1,307 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; +import 'package:slide_to_act/slide_to_act.dart'; +import 'package:vibration/vibration.dart'; + +import '../../../../constant/colors.dart'; +import '../../../../constant/style.dart'; +import '../../../../controller/home/captin/map_driver_controller.dart'; +import '../../../widgets/elevated_btn.dart'; + +GetBuilder driverEndRideBar() { + return GetBuilder( + builder: (mapDriverController) => mapDriverController.isRideStarted + ? Positioned( + left: 5, + top: 5, + right: 5, + child: Container( + decoration: AppStyle.boxDecoration1.copyWith( + borderRadius: BorderRadius.circular(15), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 10, + offset: Offset(0, 5), + ), + ], + ), + padding: const EdgeInsets.all(10), + height: mapDriverController.remainingTimeTimerRideBegin < 60 + ? mapDriverController.driverEndPage = 190 + : mapDriverController.carType == 'Mishwar Vip' + ? 120 + : 170, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + if (mapDriverController.carType != 'Mishwar Vip') + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + _buildInfoColumn( + icon: Icons.social_distance, + text: '${mapDriverController.distance} ${'KM'.tr}', + ), + _buildInfoColumn( + icon: Icons.timelapse, + text: mapDriverController.hours > 1 + ? '${mapDriverController.hours} ${'H and'.tr} ${mapDriverController.minutes} m' + : '${mapDriverController.minutes} ${'m'.tr}', + ), + _buildInfoColumn( + icon: Icons.money_sharp, + text: + '${mapDriverController.paymentAmount} ${'\$'.tr}', + ), + ], + ), + if (mapDriverController.carType != 'Speed' && + mapDriverController.carType != 'Awfar Car' && + mapDriverController.carType != 'Scooter') + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _buildInfoBox( + icon: Icons.timer, + text: + mapDriverController.stringRemainingTimeRideBegin1, + ), + _buildInfoBox( + icon: Icons.location_on, + text: + '${mapDriverController.recentDistanceToDash.toStringAsFixed(0)} ${'KM'.tr}', + ), + _buildInfoBox( + icon: Icons.attach_money, + text: mapDriverController.price.toStringAsFixed(2), + ), + ], + ), + _builtTimerAndCarType(), + Container( + width: Get.width * 0.8, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(15), + boxShadow: [ + BoxShadow( + color: AppColor.redColor.withOpacity(0.3), + blurRadius: 8, + offset: Offset(0, 4), + ), + ], + ), + child: SlideAction( + height: 50, + borderRadius: 15, + elevation: 4, + text: 'Slide to End Trip'.tr, + textStyle: AppStyle.title.copyWith( + fontSize: 18, + fontWeight: FontWeight.bold, + color: Colors.white, + ), + outerColor: AppColor.redColor, + innerColor: Colors.white, + sliderButtonIcon: const Icon( + Icons.arrow_forward_ios, + color: AppColor.redColor, + size: 24, + ), + sliderRotate: false, + onSubmit: () { + HapticFeedback.mediumImpact(); + mapDriverController.finishRideFromDriver(); + }, + ), + ) + ], + ), + ), + ) + : const SizedBox(), + ); +} + +class _builtTimerAndCarType extends StatelessWidget { + const _builtTimerAndCarType({ + super.key, + }); + + @override + Widget build(BuildContext context) { + final mapDriverController = Get.find(); + return Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Container( + decoration: AppStyle.boxDecoration1.copyWith( + boxShadow: [ + BoxShadow( + color: AppColor.accentColor.withOpacity(0.2), + blurRadius: 8, + offset: Offset(0, 4), + ), + ], + ), + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + child: Text( + mapDriverController.carType, + style: AppStyle.title, + ), + ), + if (mapDriverController.carType != 'Comfort' && + mapDriverController.carType != 'Mishwar Vip' && + mapDriverController.carType != 'Lady') + Container( + width: Get.width * 0.6, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + gradient: LinearGradient( + colors: [ + mapDriverController.remainingTimeTimerRideBegin < 60 + ? AppColor.redColor.withOpacity(0.8) + : AppColor.greenColor.withOpacity(0.8), + mapDriverController.remainingTimeTimerRideBegin < 60 + ? AppColor.redColor + : AppColor.greenColor, + ], + begin: Alignment.centerLeft, + end: Alignment.centerRight, + ), + boxShadow: [ + BoxShadow( + color: (mapDriverController.remainingTimeTimerRideBegin < 60 + ? AppColor.redColor + : AppColor.greenColor) + .withOpacity(0.3), + blurRadius: 8, + offset: Offset(0, 4), + ), + ], + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(12), + child: Stack( + children: [ + LinearProgressIndicator( + backgroundColor: Colors.white.withOpacity(0.2), + valueColor: AlwaysStoppedAnimation( + Colors.white.withOpacity(0.5), + ), + minHeight: 40, + value: + mapDriverController.progressTimerRideBegin.toDouble(), + ), + Center( + child: AnimatedDefaultTextStyle( + duration: Duration(milliseconds: 300), + style: AppStyle.title.copyWith( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: + mapDriverController.remainingTimeTimerRideBegin < 60 + ? 18 + : 16, + shadows: [ + Shadow( + color: Colors.black26, + offset: Offset(0, 2), + blurRadius: 4, + ), + ], + ), + child: Text( + mapDriverController.stringRemainingTimeRideBegin, + ), + ), + ), + ], + ), + ), + ), + ], + ); + } +} + +Widget _buildInfoColumn({required IconData icon, required String text}) { + return Column( + children: [ + Icon(icon), + Text( + text, + style: AppStyle.title, + ), + ], + ); +} + +Widget _buildInfoBox({required IconData icon, required String text}) { + return Container( + width: Get.width * .2, + decoration: AppStyle.boxDecoration1, + padding: const EdgeInsets.all(4), + child: Row( + children: [ + Icon(icon), + SizedBox(width: 4), + Text( + text, + style: AppStyle.number, + ), + ], + ), + ); +} + +GetBuilder speedCircle() { + if (Get.find().speed > 100) { + if (Platform.isIOS) { + HapticFeedback.selectionClick(); + } else { + Vibration.vibrate(duration: 1000); + } + Get.defaultDialog( + barrierDismissible: false, + titleStyle: AppStyle.title, + title: 'Speed Over'.tr, + middleText: 'Please slow down'.tr, + middleTextStyle: AppStyle.title, + confirm: MyElevatedButton( + title: 'I will slow down'.tr, + onPressed: () => Get.back(), + ), + ); + } + return GetBuilder( + builder: (mapDriverController) { + return mapDriverController.isRideStarted + ? Positioned( + bottom: 25, + right: 100, + child: Container( + decoration: BoxDecoration( + shape: BoxShape.circle, + color: mapDriverController.speed > 100 + ? Colors.red + : AppColor.secondaryColor, + border: Border.all(width: 3, color: AppColor.redColor), + ), + height: 60, + width: 60, + child: Center( + child: Text( + mapDriverController.speed.toStringAsFixed(0), + style: AppStyle.number, + ), + ), + ), + ) + : const SizedBox(); + }, + ); +} diff --git a/lib/views/home/Captin/mapDriverWidgets/google_driver_map_page.dart b/lib/views/home/Captin/mapDriverWidgets/google_driver_map_page.dart new file mode 100755 index 0000000..799a62f --- /dev/null +++ b/lib/views/home/Captin/mapDriverWidgets/google_driver_map_page.dart @@ -0,0 +1,108 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; + +import '../../../../controller/functions/location_controller.dart'; +import '../../../../controller/home/captin/map_driver_controller.dart'; + +class GoogleDriverMap extends StatelessWidget { + const GoogleDriverMap({ + super.key, + required this.locationController, + }); + + final LocationController locationController; + + @override + Widget build(BuildContext context) { + Get.put(MapDriverController()); + return Padding( + padding: const EdgeInsets.all(8.0), + child: GetBuilder( + builder: (controller) => Column( + children: [ + SizedBox( + height: Get.height * .92, + child: GoogleMap( + onMapCreated: controller.onMapCreated, + zoomControlsEnabled: true, + initialCameraPosition: CameraPosition( + target: locationController.myLocation, + zoom: 13, + bearing: locationController.heading, + tilt: 40, + ), + cameraTargetBounds: + CameraTargetBounds.unbounded, // Allow unrestricted movement + onCameraMove: (position) { + CameraPosition( + target: locationController.myLocation, + zoom: 13, + bearing: locationController.heading, + tilt: 40, + ); + //todo + // locationController.myLocation = position.target; + // + // controller.mapController + // ?.animateCamera(CameraUpdate.newCameraPosition(position)); + }, + minMaxZoomPreference: const MinMaxZoomPreference(8, 15), + myLocationEnabled: true, + myLocationButtonEnabled: true, + compassEnabled: true, + mapType: MapType.terrain, + rotateGesturesEnabled: true, + scrollGesturesEnabled: true, + trafficEnabled: false, + buildingsEnabled: true, + mapToolbarEnabled: true, + fortyFiveDegreeImageryEnabled: true, + zoomGesturesEnabled: true, + polylines: { + Polyline( + zIndex: 2, + geodesic: true, + polylineId: const PolylineId('route1'), + points: controller.polylineCoordinates, + color: const Color.fromARGB(255, 163, 81, 246), + width: 5, + ), + Polyline( + zIndex: 2, + geodesic: true, + polylineId: const PolylineId('route'), + points: controller.polylineCoordinatesDestination, + color: const Color.fromARGB(255, 10, 29, 126), + width: 5, + ), + }, + markers: { + Marker( + markerId: MarkerId('MyLocation'.tr), + position: locationController.myLocation, + draggable: true, + icon: controller.carIcon, + rotation: locationController.heading, + ), + Marker( + markerId: MarkerId('start'.tr), + position: controller.latLngPassengerLocation, + draggable: true, + icon: controller.startIcon, + ), + Marker( + markerId: MarkerId('end'.tr), + position: controller.latLngPassengerDestination, + draggable: true, + icon: controller.endIcon, + ), + }, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/views/home/Captin/mapDriverWidgets/google_map_app.dart b/lib/views/home/Captin/mapDriverWidgets/google_map_app.dart new file mode 100755 index 0000000..7481fd2 --- /dev/null +++ b/lib/views/home/Captin/mapDriverWidgets/google_map_app.dart @@ -0,0 +1,54 @@ +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/home/captin/map_driver_controller.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; +import 'package:url_launcher/url_launcher.dart'; + +class GoogleMapApp extends StatelessWidget { + const GoogleMapApp({super.key}); + + @override + Widget build(BuildContext context) { + return GetBuilder( + builder: (mapDriverController) => mapDriverController.isRideStarted + ? Positioned( + left: 150, + bottom: 20, + child: Container( + decoration: AppStyle.boxDecoration, + child: IconButton( + onPressed: () async { + var startLat = Get.find() + .latLngPassengerLocation + .latitude; + var startLng = Get.find() + .latLngPassengerLocation + .longitude; + + var endLat = Get.find() + .latLngPassengerDestination + .latitude; + var endLng = Get.find() + .latLngPassengerDestination + .longitude; + + String url = + 'https://www.google.com/maps/dir/$startLat,$startLng/$endLat,$endLng/&directionsmode=driving'; + if (await canLaunchUrl(Uri.parse(url))) { + await launchUrl(Uri.parse(url)); + } else { + throw 'Could not launch google maps'; + } + }, + icon: const Icon( + MaterialCommunityIcons.map_marker_radius, + size: 45, + color: AppColor.blueColor, + ), + )), + ) + : const SizedBox()); + } +} diff --git a/lib/views/home/Captin/mapDriverWidgets/passenger_info_window.dart b/lib/views/home/Captin/mapDriverWidgets/passenger_info_window.dart new file mode 100755 index 0000000..18aadfe --- /dev/null +++ b/lib/views/home/Captin/mapDriverWidgets/passenger_info_window.dart @@ -0,0 +1,407 @@ +import 'dart:io'; + +import 'package:sefer_driver/views/widgets/my_textField.dart'; +import 'package:sefer_driver/views/widgets/mydialoug.dart'; +import 'package:bubble_head/bubble.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/info.dart'; +import 'package:sefer_driver/controller/firebase/firbase_messge.dart'; +import 'package:sefer_driver/controller/home/captin/map_driver_controller.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; + +import '../../../../constant/box_name.dart'; +import '../../../../constant/style.dart'; +import '../../../../controller/functions/launch.dart'; +import '../../../../main.dart'; +import '../../../../print.dart'; + +class PassengerInfoWindow extends StatelessWidget { + const PassengerInfoWindow({super.key}); + + @override + Widget build(BuildContext context) { + return GetBuilder( + builder: (controller) => controller.isPassengerInfoWindow == true + ? Positioned( + bottom: 10, + left: 10, + right: 10, + child: Card( + elevation: 5, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(15), + ), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Go to passenger Location'.tr, + style: AppStyle.title.copyWith( + color: AppColor.greenColor, + fontWeight: FontWeight.bold, + ), + ), + if (!controller.isRideBegin) + Wrap( + spacing: 16.0, + children: [ + IconButton( + onPressed: () async { + controller.isSocialPressed = true; + await controller.driverCallPassenger(); + makePhoneCall( + controller.passengerPhone.toString()); + }, + icon: const Icon( + Icons.phone, + color: AppColor.blueColor, + ), + tooltip: 'Call Passenger', + ), + IconButton( + onPressed: () { + Get.bottomSheet( + backgroundColor: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.vertical( + top: Radius.circular(20)), + ), + Padding( + padding: const EdgeInsets.all(16.0), + child: _buildMessageOptions(controller), + ), + ); + }, + icon: const Icon( + Icons.message, + color: AppColor.redColor, + ), + tooltip: 'Send Message', + ), + IconButton( + onPressed: () async { + if (Platform.isAndroid) { + Bubble().startBubbleHead( + sendAppToBackground: true); + } + await controller + .openGoogleMapFromDriverToPassenger(); + }, + icon: const Icon( + MaterialCommunityIcons.map_marker_radius, + size: 28, + color: AppColor.blueColor, + ), + tooltip: 'Open in Maps', + ), + ], + ), + ], + ), + const SizedBox(height: 12), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _buildInfoTile( + icon: Icons.timer, + text: controller.hours > 1 + ? '${controller.hours}h ${controller.minutes}m' + : '${controller.minutes}m', + label: 'Duration', + ), + _buildInfoTile( + icon: Icons.map, + text: '${controller.distance} km', + label: 'Distance', + ), + _buildInfoTile( + icon: Icons.person, + text: controller.passengerName, + label: 'Passenger', + ), + ], + ), + const SizedBox(height: 12), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _buildInfoTile( + icon: Icons.attach_money, + text: controller.totalPricePassenger, + label: 'Cost', + ), + _buildInfoTile( + icon: Icons.directions_car, + text: controller.carType.tr, + label: 'Car Type', + ), + ], + ), + const SizedBox(height: 16), + if (!controller.isRideBegin) + Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Expanded( + child: MyElevatedButton( + title: 'Start the Ride'.tr, + kolor: AppColor.greenColor, + onPressed: () { + MyDialog().getDialog( + "Is the Passenger in your Car?".tr, + "Don't start trip if passenger not in your car" + .tr, + () async { + await controller + .startRideFromDriver(); + Get.back(); + }, + ); + }, + ), + ), + const SizedBox(width: 8), + if (controller.isArrivedSend) + Expanded( + child: MyElevatedButton( + title: 'I Arrive'.tr, + kolor: AppColor.yellowColor, + onPressed: () async { + if (await controller + .calculateDistanceBetweenDriverAndPassengerLocation() < + 140) { + Get.find() + .sendNotificationToDriverMAP( + 'Hi ,I Arrive your site', + 'I Arrive at your site'.tr, + controller.tokenPassenger, + [], + 'ding.wav', + ); + controller + .startTimerToShowDriverWaitPassengerDuration(); + controller.isArrivedSend = false; + } else { + MyDialog().getDialog( + 'You are not near the passenger location' + .tr, + 'Please go to the pickup location exactly' + .tr, () { + Get.back(); + }); + } + }, + ), + ), + ], + ), + const SizedBox(height: 12), + if (controller.remainingTimeInPassengerLocatioWait < + 300 && + controller + .remainingTimeInPassengerLocatioWait != + 0) + Stack( + alignment: Alignment.center, + children: [ + LinearProgressIndicator( + backgroundColor: AppColor.greyColor, + color: controller + .remainingTimeInPassengerLocatioWait < + 60 + ? AppColor.redColor + : AppColor.greenColor, + minHeight: 20, + borderRadius: BorderRadius.circular(10), + value: controller + .progressInPassengerLocationFromDriver + .toDouble(), + ), + Text( + controller + .stringRemainingTimeWaitingPassenger, + style: AppStyle.title, + ), + ], + ), + const SizedBox(height: 12), + if (controller.isdriverWaitTimeEnd) + MyElevatedButton( + title: + 'You Can Cancel the Trip and get Cost From ' + .tr + + AppInformation.appName.tr, + kolor: AppColor.deepPurpleAccent, + onPressed: () { + MyDialog().getDialog( + 'Are you sure to cancel?'.tr, '', + () async { + Get.find() + .sendNotificationToDriverMAP( + 'Driver Cancelled Your Trip', + 'You will need to pay the cost to the driver, or it will be deducted from your next trip' + .tr, + controller.tokenPassenger, + [], + 'cancel.wav', + ); + Log.print( + 'rideStatus from passenge info 261 : ${box.read(BoxName.rideStatus)}'); + box.write(BoxName.rideStatus, 'Cancel'); + await controller + .addWaitingTimeCostFromPassengerToDriverWallet(); + controller.isdriverWaitTimeEnd = false; + Get.back(); + }); + }, + ), + ], + ), + ], + ), + ), + ), + ) + : const SizedBox(), + ); + } + + Widget _buildInfoTile({ + required IconData icon, + required String text, + required String label, + }) { + return Column( + children: [ + Icon(icon, color: Colors.grey[700]), + const SizedBox(height: 4), + Text(text, style: AppStyle.title.copyWith(fontWeight: FontWeight.bold)), + Text(label.tr, style: AppStyle.title), + ], + ); + } + + Widget _buildMessageOptions(MapDriverController controller) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text('Select a quick message'.tr, style: AppStyle.title), + const SizedBox(height: 16), + _buildMessageTile( + text: "Where are you, sir?".tr, + onTap: () { + Get.find().sendNotificationToDriverMAP( + 'message From Driver', + "Where are you, sir?".tr, + controller.tokenPassenger, + [], + 'ding.wav', + ); + Get.back(); + }, + ), + _buildMessageTile( + text: "I've been trying to reach you but your phone is off.".tr, + onTap: () { + Get.find().sendNotificationToDriverMAP( + 'message From Driver', + "I've been trying to reach you but your phone is off.".tr, + controller.tokenPassenger, + [], + 'ding.wav', + ); + Get.back(); + }, + ), + _buildMessageTile( + text: + "Please don't be late, I'm waiting for you at the specified location." + .tr, + onTap: () { + Get.find().sendNotificationToDriverMAP( + 'message From Driver', + "Please don't be late, I'm waiting for you at the specified location." + .tr, + controller.tokenPassenger, + [], + 'ding.wav', + ); + Get.back(); + }, + ), + _buildMessageTile( + text: "Please don't be late".tr, + onTap: () { + Get.find().sendNotificationToDriverMAP( + 'message From Driver', + "Please don't be late".tr, + controller.tokenPassenger, + [], + 'cancel.wav', + ); + Get.back(); + }, + ), + const SizedBox(height: 16), + Row( + children: [ + Expanded( + child: Form( + key: controller.formKey2, + child: MyTextForm( + controller: controller.messageToPassenger, + label: 'Type something'.tr, + hint: 'Type something'.tr, + type: TextInputType.text, + ), + ), + ), + IconButton( + onPressed: () { + Get.find() + .sendNotificationToDriverMAP( + 'message From Driver', + controller.messageToPassenger.text, + controller.tokenPassenger, + [], + 'ding.wav', + ); + controller.messageToPassenger.clear(); + Get.back(); + }, + icon: const Icon(Icons.send), + ), + ], + ), + ], + ); + } + + Widget _buildMessageTile( + {required String text, required VoidCallback onTap}) { + return InkWell( + onTap: onTap, + child: Container( + padding: const EdgeInsets.all(12), + margin: const EdgeInsets.symmetric(vertical: 4), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: Colors.grey[100], + ), + child: Text(text, style: AppStyle.title), + ), + ); + } +} diff --git a/lib/views/home/Captin/mapDriverWidgets/sos_connect.dart b/lib/views/home/Captin/mapDriverWidgets/sos_connect.dart new file mode 100755 index 0000000..cd4a759 --- /dev/null +++ b/lib/views/home/Captin/mapDriverWidgets/sos_connect.dart @@ -0,0 +1,193 @@ +import 'dart:io'; + +import 'package:bubble_head/bubble.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/info.dart'; +import 'package:sefer_driver/controller/functions/location_controller.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/my_textField.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import '../../../../constant/box_name.dart'; +import '../../../../constant/colors.dart'; +import '../../../../constant/style.dart'; +import '../../../../controller/functions/launch.dart'; +import '../../../../controller/home/captin/map_driver_controller.dart'; +import '../../../../main.dart'; + +class SosConnect extends StatelessWidget { + const SosConnect({super.key}); + + @override + Widget build(BuildContext context) { + return GetBuilder( + builder: (mapDriverController) => mapDriverController.isRideStarted + ? Positioned( + left: 16, + bottom: 16, + child: Card( + elevation: 4, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + child: SizedBox( + height: 60, + width: 180, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + IconButton( + onPressed: () { + _handleSosCall(mapDriverController); + }, + icon: const Icon( + Icons.sos_sharp, + size: 32, + color: AppColor.redColor, + ), + tooltip: 'SOS - Call Emergency', + ), + VerticalDivider( + color: Colors.grey[300], + thickness: 1, + ), + IconButton( + onPressed: () { + _handleWhatsApp(mapDriverController); + }, + icon: const Icon( + FontAwesome.whatsapp, + color: AppColor.greenColor, + size: 32, + ), + tooltip: 'SOS - Send WhatsApp Message', + ), + VerticalDivider( + color: Colors.grey[300], + thickness: 1, + ), + IconButton( + onPressed: () { + _handleGoogleMap(mapDriverController); + }, + icon: const Icon( + MaterialCommunityIcons.map_marker_radius, + color: AppColor.primaryColor, + size: 32, + ), + tooltip: 'Google Maps - Navigate', + ), + ], + ), + ), + ), + ) + : const SizedBox(), + ); + } + + void _handleSosCall(MapDriverController mapDriverController) { + if (box.read(BoxName.sosPhoneDriver) == null) { + Get.defaultDialog( + title: 'Insert Emergency Number'.tr, + content: Form( + key: mapDriverController.formKey1, + child: MyTextForm( + controller: mapDriverController.sosEmergincyNumberCotroller, + label: 'Emergency Number'.tr, + hint: 'Enter phone number'.tr, + type: TextInputType.phone, + ), + ), + confirm: MyElevatedButton( + title: 'Save'.tr, + onPressed: () { + if (mapDriverController.formKey1.currentState!.validate()) { + box.write(BoxName.sosPhoneDriver, + mapDriverController.sosEmergincyNumberCotroller.text); + Get.back(); // Close the dialog + launchCommunication( + 'phone', box.read(BoxName.sosPhoneDriver), ''); + } + }, + ), + ); + } else { + launchCommunication('phone', box.read(BoxName.sosPhoneDriver), ''); + } + } + + void _handleWhatsApp(MapDriverController mapDriverController) { + if (box.read(BoxName.sosPhoneDriver) == null) { + Get.defaultDialog( + title: 'Insert Emergency Number'.tr, + content: Form( + key: mapDriverController.formKey1, + child: MyTextForm( + controller: mapDriverController.sosEmergincyNumberCotroller, + label: 'Emergency Number'.tr, + hint: 'Enter phone number'.tr, + type: TextInputType.phone, + ), + ), + confirm: MyElevatedButton( + title: 'Save'.tr, + onPressed: () { + if (mapDriverController.formKey1.currentState!.validate()) { + box.write(BoxName.sosPhoneDriver, + mapDriverController.sosEmergincyNumberCotroller.text); + Get.back(); // Close the dialog + _sendWhatsAppMessage(mapDriverController); + } + }, + ), + ); + } else { + _sendWhatsAppMessage(mapDriverController); + } + } + + void _handleGoogleMap(MapDriverController mapDriverController) { + () async { + if (Platform.isAndroid) { + Bubble().startBubbleHead(sendAppToBackground: true); + } + var startLat = + Get.find().latLngPassengerLocation.latitude; + var startLng = + Get.find().latLngPassengerLocation.longitude; + + var endLat = + Get.find().latLngPassengerDestination.latitude; + var endLng = + Get.find().latLngPassengerDestination.longitude; + + String url = + 'https://www.google.com/maps/dir/$startLat,$startLng/$endLat,$endLng/&directionsmode=driving'; + if (await canLaunchUrl(Uri.parse(url))) { + await launchUrl(Uri.parse(url)); + } else { + throw 'Could not launch google maps'; + } + }(); + } + + void _sendWhatsAppMessage(MapDriverController mapDriverController) { + final sosNumber = box.read(BoxName.sosPhoneDriver); + if (sosNumber != null) { + launchCommunication( + 'whatsapp', + '+2$sosNumber', // Consider international format + "${"Hello, this is Driver".tr} ${box.read(BoxName.nameDriver)}. " + "${"My current location is:".tr} " + "https://www.google.com/maps/place/" + "${Get.find().myLocation.latitude}," + "${Get.find().myLocation.longitude} " + "${"\nI have a trip on".tr} ${AppInformation.appName} " + "${"app with passenger".tr} ${mapDriverController.passengerName}.", + ); + } + } +} diff --git a/lib/views/home/Captin/orderCaptin/call.dart b/lib/views/home/Captin/orderCaptin/call.dart new file mode 100755 index 0000000..f968864 --- /dev/null +++ b/lib/views/home/Captin/orderCaptin/call.dart @@ -0,0 +1,25 @@ +// import 'package:flutter/material.dart'; +// import 'package:ride/constant/api_key.dart'; +// import 'package:ride/constant/box_name.dart'; +// import 'package:ride/main.dart'; +// import 'package:zego_uikit_prebuilt_call/zego_uikit_prebuilt_call.dart'; + +// class CallPage extends StatelessWidget { +// const CallPage({Key? key, required this.callID}) : super(key: key); +// final String callID; + +// @override +// Widget build(BuildContext context) { +// return ZegoUIKitPrebuiltCall( +// appID: AK +// .zegoCloudAppID, // Fill in the appID that you get from ZEGOCLOUD Admin Console. +// appSign: AK +// .zegoCloudAppSIGN, // Fill in the appSign that you get from ZEGOCLOUD Admin Console. +// userID: box.read(BoxName.passengerID) ?? box.read(BoxName.driverID), +// userName: box.read(BoxName.name) ?? box.read(BoxName.nameDriver), +// callID: callID, +// // You can also use groupVideo/groupVoice/oneOnOneVoice to make more types of calls. +// config: ZegoUIKitPrebuiltCallConfig.oneOnOneVoiceCall(), +// ); +// } +// } diff --git a/lib/views/home/Captin/orderCaptin/order_over_lay.dart b/lib/views/home/Captin/orderCaptin/order_over_lay.dart new file mode 100755 index 0000000..2575a66 --- /dev/null +++ b/lib/views/home/Captin/orderCaptin/order_over_lay.dart @@ -0,0 +1,811 @@ +import 'dart:async'; +import 'package:flutter/material.dart'; +import 'package:flutter_overlay_window/flutter_overlay_window.dart'; +import 'package:get/get.dart'; +import 'package:just_audio/just_audio.dart'; +import 'package:sefer_driver/constant/api_key.dart'; +import '../../../../constant/box_name.dart'; +import '../../../../constant/links.dart'; +import '../../../../controller/firebase/local_notification.dart'; +import '../../../../controller/functions/crud.dart'; +import '../../../../main.dart'; +import '../../../../models/model/order_data.dart'; +import '../../../../print.dart'; + +// === Enhanced Colors for Better Readability === +class AppColors { + static const primary = Color(0xFF1A252F); + static const card = Color(0xFF2C3E50); + static const white = Colors.white; + static const gray = Color(0xFFBDC3C7); + static const lightGray = Color(0xFFECF0F1); + static const accent = Color(0xFF00BCD4); + static const accept = Color(0xFF4CAF50); + static const reject = Color(0xFFFF5722); + static const highlight = Color(0xFFFFC107); + static const priceHighlight = Color(0xFF00E676); + static const urgentRed = Color(0xFFD32F2F); +} + +class OrderOverlay extends StatefulWidget { + const OrderOverlay({Key? key}) : super(key: key); + + @override + State createState() => _OrderOverlayState(); +} + +class _OrderOverlayState extends State + with WidgetsBindingObserver { + // === State Variables === + OrderData? orderData; + Timer? timer; + int remainingSeconds = 10; + final AudioPlayer audioPlayer = AudioPlayer(); + bool buttonsEnabled = true; + final String mapApiKey = AK.mapAPIKEY; + final CRUD _crud = CRUD(); + + final NotificationController notificationController = + Get.put(NotificationController()); + // === Getters === + bool get canShowMap { + if (orderData == null || mapApiKey.isEmpty) return false; + final start = orderData!.startCoordinates; + final end = orderData!.endCoordinates; + return start?['lat'] != null && + start?['lng'] != null && + end?['lat'] != null && + end?['lng'] != null; + } + + String get staticMapUrl { + if (!canShowMap) return ""; + final start = orderData!.startCoordinates!; + final end = orderData!.endCoordinates!; + final startMarker = Uri.encodeComponent("${start['lat']},${start['lng']}"); + final endMarker = Uri.encodeComponent("${end['lat']},${end['lng']}"); + + return "https://maps.googleapis.com/maps/api/staticmap?" + "size=600x150&maptype=roadmap" + "&markers=color:green%7Clabel:S%7C$startMarker" + "&markers=color:red%7Clabel:D%7C$endMarker" + "&path=color:0x007bff%7Cweight:5%7C$startMarker%7C$endMarker" + "&key=$mapApiKey"; + } + + // === Lifecycle === + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addObserver(this); + FlutterOverlayWindow.overlayListener.listen((event) { + if (mounted) _processEventData(event); + }); + } + + @override + void dispose() { + timer?.cancel(); + _stopAudio(); + audioPlayer.dispose(); + WidgetsBinding.instance.removeObserver(this); + super.dispose(); + } + + @override + void didChangeAppLifecycleState(AppLifecycleState state) { + if (state == AppLifecycleState.resumed) { + _checkOverlayStatus(); + } + } + + List myList = []; + // === Setup & Listeners === + void _setupOverlayListener() { + FlutterOverlayWindow.overlayListener.listen((event) { + if (mounted) _processEventData(event); + }); + } + + void _processEventData(dynamic event) { + _log("Received event: $event"); + if (event is List) { + try { + myList = event; + final newOrder = OrderData.fromList(event); + _log("Parsed OrderData: ${newOrder.toMap()}"); + setState(() { + orderData = newOrder; + }); + _resetAndStartTimer(); + } catch (e, s) { + _log("Error parsing OrderData: $e\nStackTrace: $s"); + } + } else { + _log("Unexpected data format: $event"); + } + } + + void _checkOverlayStatus() async { + bool isActive = await FlutterOverlayWindow.isActive(); + if (isActive && mounted && orderData != null) { + if (remainingSeconds > 0 && (timer == null || !timer!.isActive)) { + _resetAndStartTimer(); + } + } + } + + // === Timer Management === + void _resetAndStartTimer() { + timer?.cancel(); + audioPlayer.stop(); + setState(() { + buttonsEnabled = true; + remainingSeconds = _calculateTimerDuration(); + }); + _playAudio(); + _startTimer(); + } + + int _calculateTimerDuration() { + if (orderData?.durationToPassengerMinutes != null && + orderData!.durationToPassengerMinutes > 0) { + int duration = orderData!.durationToPassengerMinutes * 60; + return duration > 10 ? 10 : duration; + } + return 10; + } + + void _startTimer() { + if (orderData == null) return; + timer = Timer.periodic(const Duration(seconds: 1), (timer) { + if (!mounted) { + timer.cancel(); + _stopAudio(); + return; + } + setState(() { + if (remainingSeconds > 0) { + remainingSeconds--; + } else { + timer.cancel(); + _stopAudio(); + if (buttonsEnabled) _handleOrderTimeout(); + } + }); + }); + } + + // === Audio Management === + void _playAudio() async { + try { + await audioPlayer.setAsset('assets/order.mp3', preload: true); + await audioPlayer.setLoopMode(LoopMode.one); + await audioPlayer.play(); + } catch (e) { + _log('Error playing audio: $e'); + } + } + + void _stopAudio() { + audioPlayer.stop(); + } + + String _getData(int index, {String defaultValue = ''}) { + if (myList.length > index && myList[index] != null) { + return myList[index].toString(); + } + return defaultValue; + } + + // === Order Actions === + Future _acceptOrder() async { + if (!buttonsEnabled || orderData == null) return; + _disableButtonsAndProcess(); + _log("Order ACCEPTED: ${orderData!.orderId}"); + + try { + final driverId = box.read(BoxName.driverID)?.toString(); + if (driverId == null) { + _log("Error: Driver ID is null. Closing overlay."); + await _closeOverlay(); + return; + } + + var res = await CRUD().post(link: AppLink.updateStausFromSpeed, payload: { + 'id': orderData!.orderId, + 'rideTimeStart': DateTime.now().toString(), + 'status': 'Apply', + 'driver_id': box.read(BoxName.driverID), + }); + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post( + link: "${AppLink.endPoint}/ride/rides/updateStausFromSpeed.php", + payload: { + 'id': orderData!.orderId, + 'rideTimeStart': DateTime.now().toString(), + 'status': 'Apply', + 'driver_id': box.read(BoxName.driverID), + }); + } + final payload = { + // بيانات أساسية + 'driver_id': driverId, + 'status': 'Apply', + 'passengerLocation': _getData(0), + 'passengerDestination': _getData(1), + 'Duration': _getData(4), + 'totalCost': _getData(26), + 'Distance': _getData(5), + 'name': _getData(8), + 'phone': _getData(10), + 'email': _getData(28), + 'WalletChecked': _getData(13), + 'tokenPassenger': _getData(9), + 'direction': staticMapUrl.toString(), + 'DurationToPassenger': _getData(15), + 'rideId': orderData!.orderId, + 'passengerId': _getData(7), + 'durationOfRideValue': _getData(19), + 'paymentAmount': _getData(2), + 'paymentMethod': _getData(13) == 'true' ? 'visa' : 'cash', + 'isHaveSteps': _getData(20), + 'step0': myList[21].toString(), + 'step1': myList[22].toString(), + 'step2': myList[23].toString(), + 'step3': myList[24].toString(), + 'step4': myList[25].toString(), + 'passengerWalletBurc': myList[26].toString(), + 'carType': myList[31].toString(), + 'kazan': myList[32].toString(), + 'startNameLocation': myList[29].toString(), + 'endNameLocation': myList[30].toString(), + // الحقول الإضاÙية التي يجب تضمينها + 'timeOfOrder': DateTime.now().toIso8601String(), + 'totalPassenger': _getData(2), + }; + Log.print('myList: ${myList}'); + Log.print('payload: ${payload}'); + CRUD().post( + link: AppLink.addOverLayStatus, + payload: payload, + ); + if (res != "failure") { + // Using rideId (_getData(16)) for order_id consistently + CRUD().post(link: AppLink.addDriverOrder, payload: { + 'driver_id': driverId, // Driver ID from the order data + 'order_id': orderData!.orderId, + 'status': 'Apply' + }); + + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post( + link: "${AppLink.endPoint}/ride/driver_order/add.php", + payload: { + 'driver_id': driverId, + 'order_id': orderData!.orderId, + 'status': 'Apply' + }); + } + _log("Server update successful. Writing to storage."); + notificationController.showNotification( + "Order Accepted".tr, + "Open app and go to passenger".tr, + 'ding', + '', + ); + await _closeOverlay(); + } else { + _log("Failed to update order status on server: $res"); + notificationController.showNotification( + "Order Accepted by another driver".tr, + "Open app and go to passenger".tr, + 'ding', + '', + ); + await _closeOverlay(); + } + } catch (e, s) { + _log( + "A critical error occurred during server update: $e\nStackTrace: $s"); + if (mounted) setState(() => buttonsEnabled = true); + return; + } + } + + // Your list parsing for 'customerToken' should be something like: + // customerToken: list.length > a_certain_index ? list[a_certain_index].toString() : null, + Future _rejectOrder() async { + if (!buttonsEnabled || orderData == null) return; + _disableButtonsAndProcess(); + _log("Order REJECTED: ${orderData!.orderId}"); + box.write(BoxName.rideStatus, 'reject'); + Log.print('rideStatus from overlay 303 : ${box.read(BoxName.rideStatus)}'); + await _apiRefuseOrder(orderData!.orderId); + await _closeOverlay(); + } + + void _handleOrderTimeout() { + if (orderData == null) return; + _log("Order TIMED OUT: ${orderData!.orderId}"); + _rejectOrder(); + } + + Future _apiRefuseOrder(String orderID) async { + if (orderID == "N/A") { + _log("Cannot refuse order with N/A ID"); + return; + } + try { + final driverId = box.read(BoxName.driverID)?.toString(); + if (driverId == null) { + _log("Driver ID is null, cannot refuse order"); + return; + } + await _crud.post(link: AppLink.addDriverOrder, payload: { + 'driver_id': driverId, + 'order_id': orderID, + 'status': 'Refused' + }); + await _crud.post(link: AppLink.updateRides, payload: { + 'id': orderID, + 'status': 'Refused', + 'driver_id': driverId, + }); + _log("Order $orderID refused successfully"); + } catch (e) { + _log("Error in _apiRefuseOrder for $orderID: $e"); + } + } + + // === Helper Methods === + void _disableButtonsAndProcess() { + setState(() => buttonsEnabled = false); + timer?.cancel(); + _stopAudio(); + } + + Future _closeOverlay() async { + _stopAudio(); + timer?.cancel(); + if (await FlutterOverlayWindow.isActive()) { + await FlutterOverlayWindow.closeOverlay(); + } + } + + void _log(String message) { + // A simple logger to distinguish overlay logs + print("OVERLAY_LOG: $message"); + } + + // === UI Build Methods === + @override + Widget build(BuildContext context) { + // ... (Your entire UI build method remains unchanged) ... + // The UI code is excellent and doesn't need modification. + if (orderData == null) { + return const Material( + color: Colors.transparent, + child: Center( + child: CircularProgressIndicator(color: AppColors.accent))); + } + + return Material( + color: Colors.black.withOpacity(0.4), + child: Center( + child: Container( + margin: const EdgeInsets.symmetric(horizontal: 12.0, vertical: 8.0), + padding: const EdgeInsets.all(16.0), + decoration: BoxDecoration( + color: AppColors.card, + borderRadius: BorderRadius.circular(20.0), + border: Border.all( + color: AppColors.accent.withOpacity(0.3), width: 1.5), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.6), + blurRadius: 15, + spreadRadius: 2, + ) + ], + ), + child: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + _buildQuickHeader(), + const SizedBox(height: 12), + _buildPrimaryInfo(), + const SizedBox(height: 12), + if (canShowMap) _buildCompactMap(), + if (canShowMap) const SizedBox(height: 12), + _buildSecondaryInfo(), + const SizedBox(height: 16), + _buildEnhancedActionButtons(), + ], + ), + ), + ), + ), + ); + } + + // All your _build... widget methods (_buildQuickHeader, _buildPrimaryInfo, etc.) + // are perfectly fine and do not need to be changed. + // ... Paste all your existing _build... methods here ... + Widget _buildQuickHeader() { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + remainingSeconds <= 3 + ? AppColors.urgentRed + : remainingSeconds <= 5 + ? AppColors.highlight + : AppColors.accent, + remainingSeconds <= 3 + ? AppColors.urgentRed.withOpacity(0.7) + : remainingSeconds <= 5 + ? AppColors.highlight.withOpacity(0.7) + : AppColors.accent.withOpacity(0.7), + ], + ), + borderRadius: BorderRadius.circular(15), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Icon(Icons.drive_eta_rounded, color: AppColors.white, size: 24), + const SizedBox(width: 8), + Text( + "طلب جديد".tr, + style: const TextStyle( + color: AppColors.white, + fontSize: 18, + fontWeight: FontWeight.w600), + ), + ], + ), + Container( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 6), + decoration: BoxDecoration( + color: AppColors.white.withOpacity(0.9), + borderRadius: BorderRadius.circular(20), + ), + child: Text( + "$remainingSeconds Ø«", + style: TextStyle( + color: remainingSeconds <= 3 + ? AppColors.urgentRed + : remainingSeconds <= 5 + ? AppColors.highlight + : AppColors.accent, + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + ), + ], + ), + ); + } + + Widget _buildPrimaryInfo() { + final order = orderData!; + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColors.primary.withOpacity(0.6), + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: AppColors.priceHighlight.withOpacity(0.3), width: 1), + ), + child: Column( + children: [ + // Price and Distance - Most Important Info + Row( + children: [ + Expanded( + flex: 3, + child: _buildHighlightInfo("\$${order.price}", "السعر".tr, + Icons.monetization_on_rounded, AppColors.priceHighlight, + isLarge: true), + ), + const SizedBox(width: 12), + Expanded( + flex: 2, + child: _buildHighlightInfo( + "${order.tripDistanceKm.toStringAsFixed(1)} كم", + "Ø§Ù„Ù…Ø³Ø§ÙØ©".tr, + Icons.straighten_rounded, + AppColors.accent, + ), + ), + ], + ), + const SizedBox(height: 12), + Divider(color: AppColors.gray.withOpacity(0.2), thickness: 1), + const SizedBox(height: 12), + // Passenger Info and ETA + Row( + children: [ + Expanded( + flex: 2, + child: _buildPassengerQuickInfo(), + ), + const SizedBox(width: 12), + Expanded( + child: _buildHighlightInfo( + "${order.durationToPassengerMinutes} د", + "للوصول".tr, + Icons.access_time_filled_rounded, + order.durationToPassengerMinutes <= 3 + ? AppColors.priceHighlight + : AppColors.gray, + ), + ), + ], + ), + ], + ), + ); + } + + Widget _buildHighlightInfo( + String value, String label, IconData icon, Color color, + {bool isLarge = false}) { + return Container( + padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 12), + decoration: BoxDecoration( + color: color.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + border: Border.all(color: color.withOpacity(0.3), width: 1), + ), + child: Column( + children: [ + Icon(icon, color: color, size: isLarge ? 24 : 20), + const SizedBox(height: 4), + Text( + value, + style: TextStyle( + color: AppColors.white, + fontSize: isLarge ? 20 : 16, + fontWeight: FontWeight.bold, + ), + textAlign: TextAlign.center, + ), + Text( + label, + style: TextStyle( + color: AppColors.lightGray.withOpacity(0.7), + fontSize: 11, + ), + textAlign: TextAlign.center, + ), + ], + ), + ); + } + + Widget _buildPassengerQuickInfo() { + final order = orderData!; + return Container( + padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 12), + decoration: BoxDecoration( + color: AppColors.highlight.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + border: + Border.all(color: AppColors.highlight.withOpacity(0.3), width: 1), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Icon(Icons.person_rounded, color: AppColors.highlight, size: 18), + const SizedBox(width: 4), + Expanded( + child: Text( + order.customerName, + style: const TextStyle( + color: AppColors.white, + fontSize: 14, + fontWeight: FontWeight.w600, + ), + overflow: TextOverflow.ellipsis, + ), + ), + ], + ), + const SizedBox(height: 2), + Text( + order.rideType, + style: TextStyle( + color: AppColors.lightGray.withOpacity(0.7), + fontSize: 11, + ), + ), + ], + ), + ); + } + + Widget _buildCompactMap() { + return ClipRRect( + borderRadius: BorderRadius.circular(12.0), + child: Image.network( + staticMapUrl, + height: 100, // Reduced from 110 + fit: BoxFit.cover, + errorBuilder: (context, error, stackTrace) { + return Container( + height: 100, + decoration: BoxDecoration( + color: AppColors.primary.withOpacity(0.3), + borderRadius: BorderRadius.circular(12), + ), + child: const Center( + child: + Icon(Icons.map_outlined, color: AppColors.gray, size: 32)), + ); + }, + loadingBuilder: (context, child, loadingProgress) { + if (loadingProgress == null) return child; + return SizedBox( + height: 100, + child: Center( + child: CircularProgressIndicator( + value: loadingProgress.expectedTotalBytes != null + ? loadingProgress.cumulativeBytesLoaded / + loadingProgress.expectedTotalBytes! + : null, + color: AppColors.accent, + strokeWidth: 2.0, + ), + ), + ); + }, + ), + ); + } + + Widget _buildSecondaryInfo() { + final order = orderData!; + return Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColors.primary.withOpacity(0.4), + borderRadius: BorderRadius.circular(10), + ), + child: Column( + children: [ + _buildLocationRow( + Icons.trip_origin_rounded, + "من".tr, + order.startLocationAddress, + Colors.green.shade300, + ), + const SizedBox(height: 8), + _buildLocationRow( + Icons.flag_rounded, + "إلى".tr, + order.endLocationAddress, + Colors.red.shade300, + ), + if (order.tripDurationMinutes > 0) ...[ + const SizedBox(height: 8), + Divider(color: AppColors.gray.withOpacity(0.2), thickness: 0.5), + const SizedBox(height: 8), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.timer_outlined, color: AppColors.accent, size: 16), + const SizedBox(width: 4), + Text( + "مدة الرحلة: ${order.tripDurationMinutes} دقيقة".tr, + style: const TextStyle( + color: AppColors.lightGray, + fontSize: 12, + ), + ), + ], + ), + ] + ], + ), + ); + } + + Widget _buildLocationRow( + IconData icon, String label, String address, Color iconColor) { + return Row( + children: [ + Icon(icon, color: iconColor, size: 16), + const SizedBox(width: 8), + Text( + "$label: ", + style: TextStyle( + color: AppColors.lightGray.withOpacity(0.8), + fontSize: 12, + fontWeight: FontWeight.w500, + ), + ), + Expanded( + child: Text( + address, + style: const TextStyle( + color: AppColors.white, + fontSize: 12, + ), + overflow: TextOverflow.ellipsis, + maxLines: 1, + ), + ), + ], + ); + } + + Widget _buildEnhancedActionButtons() { + return Row( + children: [ + Expanded( + child: ElevatedButton( + onPressed: buttonsEnabled ? _rejectOrder : null, + style: ElevatedButton.styleFrom( + backgroundColor: AppColors.reject, + foregroundColor: AppColors.white, + padding: const EdgeInsets.symmetric(vertical: 14), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12)), + disabledBackgroundColor: AppColors.reject.withOpacity(0.3), + elevation: 3, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.close_rounded, size: 20), + const SizedBox(width: 6), + Text( + "Ø±ÙØ¶".tr, + style: const TextStyle( + fontSize: 16, fontWeight: FontWeight.w600), + ), + ], + ), + ), + ), + const SizedBox(width: 12), + Expanded( + child: ElevatedButton( + onPressed: buttonsEnabled ? _acceptOrder : null, + style: ElevatedButton.styleFrom( + backgroundColor: AppColors.accept, + foregroundColor: AppColors.white, + padding: const EdgeInsets.symmetric(vertical: 14), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12)), + disabledBackgroundColor: AppColors.accept.withOpacity(0.3), + elevation: 3, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.check_circle_rounded, size: 20), + const SizedBox(width: 6), + Text( + "قبول".tr, + style: const TextStyle( + fontSize: 16, fontWeight: FontWeight.w600), + ), + ], + ), + ), + ), + ], + ); + } +} diff --git a/lib/views/home/Captin/orderCaptin/order_request_page.dart b/lib/views/home/Captin/orderCaptin/order_request_page.dart new file mode 100755 index 0000000..d6f2142 --- /dev/null +++ b/lib/views/home/Captin/orderCaptin/order_request_page.dart @@ -0,0 +1,431 @@ +import 'dart:convert'; + +import 'package:sefer_driver/controller/home/captin/home_captain_controller.dart'; +import 'package:sefer_driver/views/widgets/mydialoug.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/controller/firebase/firbase_messge.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/home/Captin/driver_map_page.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'dart:math' as math; +import '../../../../constant/colors.dart'; +import '../../../../constant/links.dart'; +import '../../../../constant/style.dart'; +import '../../../../controller/functions/crud.dart'; +import '../../../../controller/functions/encrypt_decrypt.dart'; +import '../../../../controller/functions/launch.dart'; +import '../../../../controller/home/captin/order_request_controller.dart'; +import '../../../widgets/elevated_btn.dart'; + +class OrderRequestPage extends StatefulWidget { + const OrderRequestPage({super.key}); + + @override + State createState() => _OrderRequestPageState(); +} + +class _OrderRequestPageState extends State { + final OrderRequestController orderRequestController = + Get.put(OrderRequestController()); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text('Order Request'.tr), + centerTitle: true, + ), + body: GetBuilder( + builder: (controller) { + if (controller.myList == null) { + return const Center(child: CircularProgressIndicator()); + } + return Column( + children: [ + SizedBox( + height: Get.height * 0.3, + child: GoogleMap( + mapType: MapType.normal, + initialCameraPosition: CameraPosition( + target: LatLng(controller.latPassengerLocation, + controller.lngPassengerLocation), + zoom: 14.0, + ), + myLocationButtonEnabled: true, + onMapCreated: controller.onMapCreated, + myLocationEnabled: true, + markers: { + Marker( + markerId: const MarkerId('startLocation'), + position: LatLng(controller.latPassengerLocation, + controller.lngPassengerLocation), + icon: controller.startIcon, + ), + Marker( + markerId: const MarkerId('destinationLocation'), + position: LatLng(controller.latPassengerDestination, + controller.lngPassengerDestination), + icon: controller.endIcon, + ), + }, + polylines: { + Polyline( + polylineId: const PolylineId('route'), + color: AppColor.primaryColor, + width: 5, + points: controller.pointsDirection, + ), + }, + ), + ), + Expanded( + child: ListView( + padding: const EdgeInsets.all(16), + children: [ + Card( + elevation: 4, + child: ListTile( + leading: Icon( + controller.myList[13].toString() == 'true' + ? Icons.credit_card + : Icons.money, + color: controller.myList[13].toString() == 'true' + ? AppColor.deepPurpleAccent + : AppColor.greenColor, + ), + title: Text( + 'Payment Method'.tr, + style: Theme.of(context).textTheme.titleMedium, + ), + trailing: Text( + controller.myList[13].toString() == 'true' + ? 'Visa' + : 'Cash', + style: + Theme.of(context).textTheme.titleMedium?.copyWith( + fontWeight: FontWeight.bold, + ), + ), + ), + ), + const SizedBox(height: 10), + Card( + elevation: 4, + child: ListTile( + leading: const Icon(Icons.account_circle, + color: AppColor.secondaryColor), + title: Text( + controller.myList[8], + style: Theme.of(context).textTheme.titleMedium, + ), + subtitle: Row( + children: [ + const Icon(Icons.star, + size: 16, color: Colors.amber), + Text( + controller.myList[33].toString(), + style: const TextStyle(color: Colors.amber), + ), + ], + ), + ), + ), + const SizedBox(height: 10), + Card( + elevation: 4, + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + const Icon(Icons.location_on, + color: AppColor.greenColor), + const SizedBox(width: 8), + Expanded( + // Keep Expanded here for layout + child: Text( + controller.myList[29], + style: + Theme.of(context).textTheme.titleSmall, + maxLines: 2, // Allow up to 2 lines + overflow: TextOverflow + .ellipsis, // Handle overflow + ), + ), + ], + ), + const Divider(), + Row( + children: [ + const Icon(Icons.flag, + color: AppColor.redColor), + const SizedBox(width: 8), + Expanded( + // Keep Expanded here for layout + child: Text( + controller.myList[30], + style: + Theme.of(context).textTheme.titleSmall, + maxLines: 2, // Allow up to 2 lines + overflow: TextOverflow + .ellipsis, // Handle overflow + ), + ), + ], + ), + ], + ), + ), + ), + const SizedBox(height: 10), + Card( + elevation: 4, + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _InfoTile( + icon: Icons.timer, + label: + '${(double.parse(controller.myList[12]) / 60).toStringAsFixed(0)} ${'min'.tr}', + ), + _InfoTile( + icon: Icons.directions_car, + label: + '${(double.parse(controller.myList[11]) / 1000).toStringAsFixed(1)} ${'km'.tr}', + ), + _InfoTile( + icon: Icons.monetization_on, + label: '${controller.myList[2]}', + ), + ], + ), + ), + ), + const SizedBox(height: 20), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + MyElevatedButton( + kolor: AppColor.greenColor, + title: 'Accept Order'.tr, + onPressed: () async { + Get.put(HomeCaptainController()).changeRideId(); + box.write(BoxName.statusDriverLocation, 'on'); + controller.endTimer(); + controller.changeApplied(); + + var res = await CRUD().post( + link: AppLink.updateStausFromSpeed, + payload: { + 'id': (controller.myList[16]), + 'rideTimeStart': DateTime.now().toString(), + 'status': 'Apply', + 'driver_id': box.read(BoxName.driverID), + }); + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post( + link: + "${AppLink.endPoint}/ride/rides/updateStausFromSpeed.php", + payload: { + 'id': (controller.myList[16]), + 'rideTimeStart': DateTime.now().toString(), + 'status': 'Apply', + 'driver_id': box.read(BoxName.driverID), + }); + } + if (res == 'failure') { + MyDialog().getDialog( + "This ride is already applied by another driver." + .tr, + '', () { + Get.back(); + }); + } else { + await CRUD().postFromDialogue( + link: AppLink.addDriverOrder, + payload: { + 'driver_id': + (controller.myList[6].toString()), + 'order_id': + (controller.myList[16].toString()), + 'status': 'Apply' + }); + if (AppLink.endPoint != + AppLink.seferCairoServer) { + CRUD().postFromDialogue( + link: + '${AppLink.endPoint}/rides/driver_order/add.php', + payload: { + 'driver_id': + (controller.myList[6].toString()), + 'order_id': + (controller.myList[16].toString()), + 'status': 'Apply' + }); + } + List bodyToPassenger = [ + controller.myList[6].toString(), + controller.myList[8].toString(), + controller.myList[9].toString(), + ]; + FirebaseMessagesController() + .sendNotificationToPassengerToken( + "Accepted Ride".tr, + 'your ride is Accepted'.tr, + controller.myList[9].toString(), + bodyToPassenger, + 'start.wav'); + Get.back(); + box.write(BoxName.rideArguments, { + 'passengerLocation': + controller.myList[0].toString(), + 'passengerDestination': + controller.myList[1].toString(), + 'Duration': controller.myList[4].toString(), + 'totalCost': controller.myList[26].toString(), + 'Distance': controller.myList[5].toString(), + 'name': controller.myList[8].toString(), + 'phone': controller.myList[10].toString(), + 'email': controller.myList[28].toString(), + 'WalletChecked': + controller.myList[13].toString(), + 'tokenPassenger': + controller.myList[9].toString(), + 'direction': + 'https://www.google.com/maps/dir/${controller.myList[0]}/${controller.myList[1]}/', + 'DurationToPassenger': + controller.myList[15].toString(), + 'rideId': (controller.myList[16].toString()), + 'passengerId': + (controller.myList[7].toString()), + 'driverId': (controller.myList[18].toString()), + 'durationOfRideValue': + controller.myList[19].toString(), + 'paymentAmount': + controller.myList[2].toString(), + 'paymentMethod': + controller.myList[13].toString() == 'true' + ? 'visa' + : 'cash', + 'isHaveSteps': controller.myList[20].toString(), + 'step0': controller.myList[21].toString(), + 'step1': controller.myList[22].toString(), + 'step2': controller.myList[23].toString(), + 'step3': controller.myList[24].toString(), + 'step4': controller.myList[25].toString(), + 'passengerWalletBurc': + controller.myList[26].toString(), + 'timeOfOrder': DateTime.now().toString(), + 'totalPassenger': + controller.myList[2].toString(), + 'carType': controller.myList[31].toString(), + 'kazan': controller.myList[32].toString(), + 'startNameLocation': + controller.myList[29].toString(), + 'endNameLocation': + controller.myList[30].toString(), + }); + Get.to(() => PassengerLocationMapPage(), + arguments: box.read(BoxName.rideArguments)); + } + }, + ), + GetBuilder( + builder: (timerController) { + final isNearEnd = timerController.remainingTime <= + 5; // Define a threshold for "near end" + + return Stack( + alignment: Alignment.center, + children: [ + CircularProgressIndicator( + value: timerController.progress, + // Set the color based on the "isNearEnd" condition + color: isNearEnd ? Colors.red : Colors.blue, + ), + Text( + '${timerController.remainingTime}', + style: AppStyle.number, + ), + ], + ); + }, + ), + MyElevatedButton( + title: 'Refuse Order'.tr, + onPressed: () async { + controller.endTimer(); + List bodyToPassenger = [ + box.read(BoxName.driverID).toString(), + box.read(BoxName.nameDriver).toString(), + box.read(BoxName.tokenDriver).toString(), + ]; + + FirebaseMessagesController() + .sendNotificationToPassengerToken( + 'Order Under Review'.tr, + '${box.read(BoxName.nameDriver)} ${'is reviewing your order. They may need more information or a higher price.'.tr}', + controller.myList[9].toString(), + bodyToPassenger, + 'notification.wav'); + + controller.refuseOrder( + EncryptionHelper.instance.encryptData( + controller.myList[16].toString()), + ); + controller.addRideToNotificationDriverString( + controller.myList[16].toString(), + controller.myList[29].toString(), + controller.myList[30].toString(), + '${DateTime.now().year}-${DateTime.now().month}-${DateTime.now().day}', + '${DateTime.now().hour}:${DateTime.now().minute}', + controller.myList[2].toString(), + controller.myList[7].toString(), + 'wait', + controller.myList[31].toString(), + controller.myList[33].toString(), + controller.myList[2].toString(), + controller.myList[5].toString(), + controller.myList[4].toString()); + }, + kolor: AppColor.redColor, + ), + ], + ), + ], + ), + ), + ], + ); + }, + ), + ); + } +} + +class _InfoTile extends StatelessWidget { + final IconData icon; + final String label; + + const _InfoTile({required this.icon, required this.label}); + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Icon(icon, color: AppColor.primaryColor), + const SizedBox(height: 4), + Text( + label, + style: Theme.of(context).textTheme.bodyMedium, + ), + ], + ); + } +} diff --git a/lib/views/home/Captin/orderCaptin/order_speed_request.dart b/lib/views/home/Captin/orderCaptin/order_speed_request.dart new file mode 100755 index 0000000..aa5771f --- /dev/null +++ b/lib/views/home/Captin/orderCaptin/order_speed_request.dart @@ -0,0 +1,603 @@ +import 'dart:convert'; // Though not directly used in this version's UI logic, often kept for model interactions. + +import 'package:sefer_driver/controller/home/captin/home_captain_controller.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/controller/firebase/firbase_messge.dart'; +import 'package:sefer_driver/main.dart'; // For `box` +import 'package:sefer_driver/views/home/Captin/driver_map_page.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import '../../../../constant/colors.dart'; // Your AppColor +import '../../../../constant/links.dart'; // Your AppLink +import '../../../../constant/style.dart'; // Your AppStyle +import '../../../../controller/functions/crud.dart'; +import '../../../../controller/functions/launch.dart'; +import '../../../../controller/home/captin/order_request_controller.dart'; +import '../../../widgets/elevated_btn.dart'; // Your MyElevatedButton + +class OrderSpeedRequest extends StatelessWidget { + OrderSpeedRequest({super.key}); + + final OrderRequestController orderRequestController = + Get.put(OrderRequestController()); + + // Helper to make myList access more readable and safer + String _getData(int index, {String defaultValue = ''}) { + if (orderRequestController.myList.length > index && + orderRequestController.myList[index] != null) { + return orderRequestController.myList[index].toString(); + } + return defaultValue; + } + + @override + Widget build(BuildContext context) { + // Define AppBar first to get its height for body calculations + final appBar = AppBar( + title: Text('Speed Order'.tr), + leading: IconButton( + icon: const Icon(Icons.arrow_back), + onPressed: () => Get.back(), + ), + backgroundColor: AppColor.primaryColor, // Example color, adjust as needed + elevation: 2.0, + ); + + final double appBarHeight = appBar.preferredSize.height; + final MediaQueryData mediaQueryData = MediaQuery.of(context); + final double screenHeight = mediaQueryData.size.height; + final double statusBarHeight = mediaQueryData.padding.top; + final double bottomSystemPadding = mediaQueryData.padding.bottom; + + // Calculate available height for the Scaffold's body content + // Subtracting status bar, app bar, and bottom system padding (like navigation bar) + final double availableBodyHeight = + screenHeight - appBarHeight - statusBarHeight - bottomSystemPadding; + + // Define overall padding for the body content + const EdgeInsets bodyContentPadding = + EdgeInsets.symmetric(horizontal: 10.0, vertical: 8.0); + + // Calculate the height for the main content Column, considering the body's own padding + double mainColumnHeight = availableBodyHeight - bodyContentPadding.vertical; + if (mainColumnHeight < 0) mainColumnHeight = 0; + + return GetBuilder( + builder: (controller) { + // Pre-extract data for readability and safety + final String price = + double.tryParse(_getData(2))?.toStringAsFixed(2) ?? 'N/A'; + final bool isComfortTrip = _getData(31) == 'Comfort'; + final String carType = _getData(31).tr; + + final String pickupName = _getData(12); + final String pickupDetails = '(${_getData(11)})'; + final String pickupFullAddress = _getData(29); + + final String dropoffName = _getData(5); + final String dropoffDetails = '(${_getData(4)})'; + final String dropoffFullAddress = _getData(30); + + final String passengerName = _getData(8); + final String passengerRating = _getData(33); + + final bool isVisaPayment = _getData(13) == 'true'; + final bool hasSteps = _getData(20) == 'haveSteps'; + + final String mapUrl = + 'https://www.google.com/maps/dir/${_getData(0)}/${_getData(1)}/'; + final String rideId = _getData(16); // Commonly used ID + + return Scaffold( + appBar: appBar, + backgroundColor: AppColor.secondaryColor ?? + Colors.grey[100], // Background for the page + body: SafeArea( + // Ensures content is not obscured by system UI + child: Padding( + padding: + bodyContentPadding, // Apply overall padding to the body's content area + child: SizedBox( + // Constrain the height of the main layout Column + height: mainColumnHeight, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + // --- MAP SECTION --- + SizedBox( + height: + Get.height * 0.28, // Relative to total screen height + child: ClipRRect( + borderRadius: BorderRadius.circular(15.0), + child: GoogleMap( + initialCameraPosition: CameraPosition( + zoom: 12, + target: + Get.find().myLocation), + cameraTargetBounds: + CameraTargetBounds(controller.bounds), + myLocationButtonEnabled: false, + trafficEnabled: false, + buildingsEnabled: false, + mapToolbarEnabled: false, + myLocationEnabled: true, + markers: { + Marker( + markerId: MarkerId('MyLocation'.tr), + position: LatLng( + controller.latPassengerLocation, + controller.lngPassengerLocation), + icon: controller.startIcon), + Marker( + markerId: MarkerId('Destination'.tr), + position: LatLng( + controller.latPassengerDestination, + controller.lngPassengerDestination), + icon: controller.endIcon), + }, + polylines: { + Polyline( + zIndex: 1, + consumeTapEvents: true, + geodesic: true, + endCap: Cap.buttCap, + startCap: Cap.buttCap, + visible: true, + polylineId: const PolylineId('routeOrder'), + points: controller.pointsDirection, + color: AppColor.primaryColor, + width: 3, + ), + }, + ), + ), + ), + const SizedBox(height: 8), + + // --- PRICE & TRIP TYPE SECTION --- + Card( + elevation: 3, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12)), + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 12.0, horizontal: 16.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + price, + style: AppStyle.headTitle.copyWith( + color: AppColor.primaryColor, + fontWeight: FontWeight.bold, + fontSize: 28), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text( + carType, + style: AppStyle.title.copyWith( + color: AppColor.greenColor, + fontWeight: FontWeight.bold), + ), + if (isComfortTrip) + Row( + children: [ + const Icon(Icons.ac_unit, + color: AppColor.blueColor, size: 18), + const SizedBox(width: 4), + Text('Air condition Trip'.tr, + style: AppStyle.subtitle + .copyWith(fontSize: 13)), + ], + ), + ], + ), + ], + ), + ), + ), + const SizedBox(height: 8), + + // --- EXPANDED SECTION FOR SCROLLABLE (BUT NOT USER-SCROLLABLE) CONTENT --- + Expanded( + child: SingleChildScrollView( + physics: + const NeverScrollableScrollPhysics(), // Prevents user scrolling + child: Column( + mainAxisSize: MainAxisSize + .min, // Takes minimum vertical space needed + children: [ + _buildLocationCard( + icon: Icons.arrow_circle_up, + iconColor: AppColor.greenColor, + title: pickupName, + subtitle: pickupDetails, + fullAddress: pickupFullAddress, + ), + const SizedBox(height: 8), + _buildLocationCard( + icon: Icons.arrow_circle_down, + iconColor: AppColor.redColor, + title: dropoffName, + subtitle: dropoffDetails, + fullAddress: dropoffFullAddress, + ), + const SizedBox(height: 8), + // --- PAYMENT, STEPS & DIRECTIONS INFO --- + Card( + elevation: 2, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10)), + child: Padding( + padding: const EdgeInsets.all(10.0), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Icon( + isVisaPayment + ? Icons.credit_card + : Icons + .payments_outlined, // Using payments_outlined for cash + color: isVisaPayment + ? AppColor.deepPurpleAccent + : AppColor.greenColor, + size: 24, + ), + const SizedBox(width: 8), + Text( + isVisaPayment ? 'Visa'.tr : 'Cash'.tr, + style: AppStyle.title.copyWith( + fontWeight: FontWeight.w600), + ), + ], + ), + if (hasSteps) + Expanded( + child: Row( + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + const Icon( + Icons + .format_list_numbered_rtl_outlined, + color: AppColor.bronze, + size: 24), + const SizedBox(width: 4), + Flexible( + child: Text( + 'Trip has Steps'.tr, + style: AppStyle.title.copyWith( + color: AppColor.bronze, + fontSize: 13), + overflow: TextOverflow.ellipsis, + )), + ], + ), + ), + TextButton.icon( + style: TextButton.styleFrom( + padding: EdgeInsets.zero, + tapTargetSize: + MaterialTapTargetSize.shrinkWrap, + alignment: Alignment.centerRight, + ), + onPressed: () => showInBrowser(mapUrl), + icon: const Icon( + Icons.directions_outlined, + color: AppColor.blueColor, + size: 20), + label: Text("Directions".tr, + style: AppStyle.subtitle.copyWith( + color: AppColor.blueColor, + fontSize: 13)), + ), + ], + ), + ), + ), + const SizedBox(height: 8), + // --- PASSENGER INFO --- + Card( + elevation: 2, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10)), + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, vertical: 10.0), + child: Row( + children: [ + const Icon(Icons.person_outline, + color: AppColor.greyColor, size: 22), + const SizedBox(width: 10), + Expanded( + child: Text( + passengerName, + style: AppStyle.title, + overflow: TextOverflow.ellipsis, + ), + ), + const SizedBox(width: 10), + const Icon(Icons.star_rounded, + color: Colors.amber, size: 20), + Text( + passengerRating, + style: AppStyle.title.copyWith( + fontWeight: FontWeight.bold), + ), + ], + ), + ), + ), + ], + ), + ), + ), + // const SizedBox(height: 8), // Spacer before action buttons if needed + + // --- ACTION BUTTONS & TIMER --- + Padding( + padding: const EdgeInsets.only(top: 8.0, bottom: 5.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: MyElevatedButton( + kolor: AppColor.greenColor, + title: 'Accept Order'.tr, + onPressed: () async { + Get.put(HomeCaptainController()).changeRideId(); + box.write(BoxName.statusDriverLocation, 'on'); + var res = await CRUD().post( + link: AppLink.updateStausFromSpeed, + payload: { + 'id': rideId, + 'rideTimeStart': + DateTime.now().toString(), + 'status': 'Apply', + 'driver_id': box.read(BoxName.driverID), + }); + if (AppLink.endPoint != + AppLink.seferCairoServer) { + CRUD().post( + link: + "${AppLink.endPoint}/ride/rides/updateStausFromSpeed.php", + payload: { + 'id': rideId, + 'rideTimeStart': + DateTime.now().toString(), + 'status': 'Apply', + 'driver_id': box.read(BoxName.driverID), + }); + } + if (res != "failure") { + box.write(BoxName.statusDriverLocation, 'on'); + controller.changeApplied(); + List bodyToPassenger = [ + box.read(BoxName.driverID).toString(), + box.read(BoxName.nameDriver).toString(), + box.read(BoxName.tokenDriver).toString(), + rideId.toString(), + ]; + Get.put(FirebaseMessagesController()) + .sendNotificationToDriverMAP( + 'Accepted Ride', + 'your ride is applied'.tr, + controller.arguments?['DriverList'] + ?[9] + ?.toString() ?? + _getData(9), // Safer access + bodyToPassenger, + 'start.wav'); + + // Using rideId (_getData(16)) for order_id consistently + CRUD().postFromDialogue( + link: AppLink.addDriverOrder, + payload: { + 'driver_id': _getData( + 6), // Driver ID from the order data + 'order_id': rideId, + 'status': 'Apply' + }); + + if (AppLink.endPoint != + AppLink.seferCairoServer) { + CRUD().post( + link: + "${AppLink.endPoint}/ride/driver_order/add.php", + payload: { + 'driver_id': _getData(6), + 'order_id': rideId, + 'status': 'Apply' + }); + } + + Get.back(); // Go back from order request screen + box.write(BoxName.rideArguments, { + 'passengerLocation': _getData(0), + 'passengerDestination': _getData(1), + 'Duration': _getData(4), + 'totalCost': _getData(26), + 'Distance': _getData(5), + 'name': _getData(8), + 'phone': _getData(10), + 'email': _getData(28), + 'WalletChecked': _getData(13), + 'tokenPassenger': _getData(9), + 'direction': mapUrl, + 'DurationToPassenger': _getData(15), + 'rideId': rideId, + 'passengerId': _getData(7), + 'driverId': box + .read(BoxName.driverID) + .toString(), // Current driver accepting + 'durationOfRideValue': _getData(19), + 'paymentAmount': _getData(2), + 'paymentMethod': _getData(13) == 'true' + ? 'visa' + : 'cash', + 'isHaveSteps': _getData(20), + 'step0': _getData(21), + 'step1': _getData(22), + 'step2': _getData(23), + 'step3': _getData(24), + 'step4': _getData(25), + 'passengerWalletBurc': _getData(26), + 'timeOfOrder': DateTime.now().toString(), + 'totalPassenger': _getData( + 2), // This is likely trip cost for passenger + 'carType': _getData(31), + 'kazan': + _getData(32), // Driver's commission/cut + 'startNameLocation': _getData(29), + 'endNameLocation': _getData(30), + }); + Get.to(() => PassengerLocationMapPage(), + arguments: + box.read(BoxName.rideArguments)); + } else { + Get.defaultDialog( + title: + "This ride is already taken by another driver." + .tr, + middleText: '', + titleStyle: AppStyle.title, + middleTextStyle: AppStyle.title, + confirm: MyElevatedButton( + title: 'Ok'.tr, + onPressed: () { + Get.back(); // Close dialog + Get.back(); // Close order request screen + })); + } + }, + ), + ), + const SizedBox(width: 10), + // --- TIMER --- + GetBuilder( + id: 'timerUpdate', // Ensure controller calls update(['timerUpdate']) for this + builder: (timerCtrl) { + final isNearEnd = + timerCtrl.remainingTimeSpeed <= 5; + return SizedBox( + width: 60, + height: 60, + child: Stack( + alignment: Alignment.center, + children: [ + CircularProgressIndicator( + value: timerCtrl.progressSpeed, + color: isNearEnd + ? Colors.redAccent + : AppColor.primaryColor, + strokeWidth: 5, + backgroundColor: Colors.grey.shade300, + ), + Text('${timerCtrl.remainingTimeSpeed}', + style: AppStyle.headTitle2.copyWith( + color: isNearEnd + ? Colors.redAccent + : AppColor.writeColor ?? + Colors.black, + )), + ], + ), + ); + }, + ), + const SizedBox(width: 10), + Expanded( + child: MyElevatedButton( + title: 'Refuse Order'.tr, + onPressed: () async { + controller.endTimer(); + controller.refuseOrder(rideId); + controller.addRideToNotificationDriverString( + rideId, + _getData(29), + _getData(30), + '${DateTime.now().year}-${DateTime.now().month}-${DateTime.now().day}', + '${DateTime.now().hour}:${DateTime.now().minute}', + _getData(2), + _getData(7), + 'wait', + _getData(31), + _getData(33), + _getData(2), + _getData(5), + _getData(4)); + // Get.back(); // refuseOrder or endTimer should handle navigation if needed. + // If not, add Get.back(); here. + }, + kolor: AppColor.redColor, + ), + ), + ], + ), + ), + ], + ), + ), + ), + ), + ); + }, + ); + } + + // Helper widget for location cards to reduce repetition and improve readability + Widget _buildLocationCard( + {required IconData icon, + required Color iconColor, + required String title, + required String subtitle, + required String fullAddress}) { + return Card( + elevation: 2, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), + margin: const EdgeInsets.symmetric( + vertical: 4), // Add a little vertical margin between cards + child: Padding( + padding: const EdgeInsets.all(10.0), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Icon(icon, color: iconColor, size: 28), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "$title $subtitle" + .trim(), // Trim to avoid extra spaces if subtitle is empty + style: AppStyle.title.copyWith(fontWeight: FontWeight.w600), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + if (fullAddress.isNotEmpty) ...[ + const SizedBox(height: 3), + Text( + fullAddress, + style: AppStyle.subtitle + .copyWith(fontSize: 13, color: AppColor.greyColor), + maxLines: 2, // Allow up to 2 lines for address + overflow: TextOverflow.ellipsis, + ), + ] + ], + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/views/home/Captin/orderCaptin/test_order_page.dart b/lib/views/home/Captin/orderCaptin/test_order_page.dart new file mode 100755 index 0000000..3157bac --- /dev/null +++ b/lib/views/home/Captin/orderCaptin/test_order_page.dart @@ -0,0 +1,230 @@ +import 'dart:convert'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'dart:math' as math; + +import '../../../../constant/colors.dart'; +import '../../../../controller/home/captin/home_captain_controller.dart'; + +class OrderRequestPageTest extends StatefulWidget { + const OrderRequestPageTest({super.key}); + + @override + State createState() => _OrderRequestPageTestState(); +} + +class _OrderRequestPageTestState extends State { + late OrderRequestController _orderRequestController; + + @override + void initState() { + super.initState(); + // Initialize the controller and process arguments + _initializeController(); + } + + void _initializeController() { + // Get the controller or create a new one if not exists + _orderRequestController = Get.put(OrderRequestController()); + + // Process arguments passed to the page + final arguments = Get.arguments; + final myListString = arguments['myListString']; + var myList = + arguments['DriverList'] == null || arguments['DriverList'].isEmpty + ? jsonDecode(myListString) + : arguments['DriverList']; + + // Parse coordinates and prepare map data + _orderRequestController.parseCoordinates(myList); + + // Start timer and calculate fuel consumption + _orderRequestController.startTimer( + myList[6].toString(), + myList[16].toString(), + ); + _orderRequestController.calculateConsumptionFuel(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Stack( + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 6), + child: Container( + color: const Color.fromARGB(255, 241, 238, 238), + child: ListView( + children: [ + SizedBox( + height: Get.height * .33, + child: Obx(() => GoogleMap( + initialCameraPosition: CameraPosition( + zoom: 12, + target: + Get.find().myLocation, + ), + cameraTargetBounds: CameraTargetBounds( + _orderRequestController.mapBounds.value), + myLocationButtonEnabled: true, + trafficEnabled: false, + buildingsEnabled: false, + mapToolbarEnabled: true, + myLocationEnabled: true, + markers: _orderRequestController.markers.value, + polylines: _orderRequestController.polylines.value, + onMapCreated: (GoogleMapController controller) { + _orderRequestController.mapController.value = + controller; + }, + onCameraMove: (CameraPosition position) { + _orderRequestController + .updateCameraPosition(position); + }, + )), + ), + // Rest of your UI components + ], + ), + ), + ), + ], + ), + ); + } +} + +class OrderRequestController extends GetxController { + // Reactive variables for map-related data + Rx mapBounds = Rx(LatLngBounds( + southwest: const LatLng(0, 0), northeast: const LatLng(0, 0))); + + Rx> markers = Rx>({}); + Rx> polylines = Rx>({}); + + Rx mapController = Rx(null); + + // Icons for start and end markers + late BitmapDescriptor startIcon; + late BitmapDescriptor endIcon; + + // Coordinates for passenger location and destination + Rx passengerLocation = Rx(null); + Rx passengerDestination = Rx(null); + + @override + void onInit() { + super.onInit(); + // Initialize marker icons + _initializeMarkerIcons(); + } + + void _initializeMarkerIcons() async { + // Load custom marker icons + startIcon = await BitmapDescriptor.fromAssetImage( + const ImageConfiguration(size: Size(48, 48)), + 'assets/start_marker.png'); + + endIcon = await BitmapDescriptor.fromAssetImage( + const ImageConfiguration(size: Size(48, 48)), 'assets/end_marker.png'); + } + + void parseCoordinates(List myList) { + // Parse coordinates from the input list + var cords = myList[0].split(','); + var cordDestination = myList[1].split(','); + + double latPassengerLocation = double.parse(cords[0]); + double lngPassengerLocation = double.parse(cords[1]); + double latPassengerDestination = double.parse(cordDestination[0]); + double lngPassengerDestination = double.parse(cordDestination[1]); + + // Update passenger location and destination + passengerLocation.value = + LatLng(latPassengerLocation, lngPassengerLocation); + passengerDestination.value = + LatLng(latPassengerDestination, lngPassengerDestination); + + // Create markers + _createMarkers(); + + // Create polyline + _createPolyline(); + + // Calculate map bounds + _calculateMapBounds(); + } + + void _createMarkers() { + if (passengerLocation.value == null || passengerDestination.value == null) + return; + + markers.value = { + Marker( + markerId: MarkerId('MyLocation'.tr), + position: passengerLocation.value!, + draggable: true, + icon: startIcon, + ), + Marker( + markerId: MarkerId('Destination'.tr), + position: passengerDestination.value!, + draggable: true, + icon: endIcon, + ), + }; + } + + void _createPolyline() { + if (passengerLocation.value == null || passengerDestination.value == null) + return; + + polylines.value = { + Polyline( + zIndex: 1, + consumeTapEvents: true, + geodesic: true, + endCap: Cap.buttCap, + startCap: Cap.buttCap, + visible: true, + polylineId: const PolylineId('routeOrder'), + points: [passengerLocation.value!, passengerDestination.value!], + color: AppColor.primaryColor, + width: 2, + ), + }; + } + + void _calculateMapBounds() { + if (passengerLocation.value == null || passengerDestination.value == null) + return; + + double minLatitude = math.min(passengerLocation.value!.latitude, + passengerDestination.value!.latitude); + double maxLatitude = math.max(passengerLocation.value!.latitude, + passengerDestination.value!.latitude); + double minLongitude = math.min(passengerLocation.value!.longitude, + passengerDestination.value!.longitude); + double maxLongitude = math.max(passengerLocation.value!.longitude, + passengerDestination.value!.longitude); + + mapBounds.value = LatLngBounds( + southwest: LatLng(minLatitude, minLongitude), + northeast: LatLng(maxLatitude, maxLongitude), + ); + } + + void updateCameraPosition(CameraPosition position) { + // Implement any specific logic for camera position updates + } + + void startTimer(String param1, String param2) { + // Implement timer start logic + } + + void calculateConsumptionFuel() { + // Implement fuel consumption calculation + } +} diff --git a/lib/views/home/Captin/orderCaptin/vip_order_page.dart b/lib/views/home/Captin/orderCaptin/vip_order_page.dart new file mode 100755 index 0000000..b8473d1 --- /dev/null +++ b/lib/views/home/Captin/orderCaptin/vip_order_page.dart @@ -0,0 +1,237 @@ +import 'dart:convert'; + +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../../main.dart'; +import '../../../../print.dart'; + +class VipOrderPage extends StatelessWidget { + const VipOrderPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(VipOrderController()); + return MyScafolld( + title: 'VIP Order'.tr, + body: [ + GetBuilder(builder: (vipOrderController) { + if (vipOrderController.isLoading) { + return const Center( + child: CircularProgressIndicator(), + ); + } + + if (vipOrderController.tripData.isEmpty) { + return Center( + child: Text('No orders available'.tr), + ); + } + final order = vipOrderController.tripData[0]; + Log.print('order: ${order}'); + return SafeArea( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Passenger Section + _buildSectionTitle('Passenger Information'.tr), + _buildInfoCard( + children: [ + _buildDetailRow('Name'.tr, + '${order['passengerName'] ?? 'Unknown'} ${order['passengerLastName'] ?? ''}'), + _buildDetailRow( + 'Phone'.tr, order['passengerPhone'] ?? 'Unknown'), + _buildDetailRow( + 'Gender'.tr, order['passengergender'] ?? 'Unknown'), + _buildDetailRow('time Selected'.tr, + order['timeSelected'] ?? 'Unknown'), + _buildDetailRow( + 'Ride Status'.tr, order['status'] ?? 'Unknown'), + // _buildDetailRow('Ride Status'.tr, + // vipOrderController.myList[4] ?? 'Unknown'), + IconButton( + onPressed: () { + // print(vipOrderController.myList); + }, + icon: const Icon(Icons.add), + ), + ], + ), + + const SizedBox(height: 24), + + // Action Buttons + _buildActionButtons(context), + ], + ), + ), + ); + }) + ], + isleading: true, + ); + } +} + +Widget _buildSectionTitle(String title) { + return Padding( + padding: const EdgeInsets.only(bottom: 8.0), + child: Text( + title, + style: const TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + color: Colors.black87, + ), + ), + ); +} + +Widget _buildInfoCard({required List children}) { + return Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.2), + spreadRadius: 1, + blurRadius: 5, + offset: const Offset(0, 3), + ), + ], + ), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: children, + ), + ), + ); +} + +Widget _buildDetailRow(String label, String value) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + flex: 2, + child: Text( + label, + style: const TextStyle( + fontWeight: FontWeight.bold, + color: Colors.black87, + ), + ), + ), + Expanded( + flex: 3, + child: Text( + value, + style: const TextStyle(color: Colors.black54), + ), + ), + ], + ), + ); +} + +Widget _buildActionButtons(BuildContext context) { + return Row( + children: [ + Expanded( + child: ElevatedButton( + onPressed: () => _onReject(context), + style: ElevatedButton.styleFrom( + backgroundColor: Colors.red, + padding: const EdgeInsets.symmetric(vertical: 16), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + ), + child: Text( + 'Reject'.tr, + style: const TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + ), + ), + ), + ), + const SizedBox(width: 16), + Expanded( + child: ElevatedButton( + onPressed: () => _onApply(context), + style: ElevatedButton.styleFrom( + backgroundColor: Colors.green, + padding: const EdgeInsets.symmetric(vertical: 16), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + ), + child: Text( + 'Apply'.tr, + style: const TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + ), + ), + ), + ), + ], + ); +} + +void _onReject(BuildContext context) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('Ride Rejected'), + backgroundColor: Colors.red, + ), + ); +} + +void _onApply(BuildContext context) { + // TODO: Implement application logic + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('Ride Applied'), + backgroundColor: Colors.green, + ), + ); +} + +class VipOrderController extends GetxController { + bool isLoading = false; + List tripData = []; + + fetchOrder() async { + isLoading = true; // Set loading state + update(); // Notify listeners + var res = await CRUD().get(link: AppLink.getMishwariDriver, payload: { + 'driverId': box.read(BoxName.driverID).toString(), + }); + if (res != 'failure') { + tripData = jsonDecode(res)['message']; + } else { + tripData = []; + } + isLoading = false; // Loading complete + update(); // Notify listeners + } + + @override + void onInit() async { + fetchOrder(); + super.onInit(); + } +} diff --git a/lib/views/home/Captin/passportimage.dart b/lib/views/home/Captin/passportimage.dart new file mode 100755 index 0000000..61c4791 --- /dev/null +++ b/lib/views/home/Captin/passportimage.dart @@ -0,0 +1,46 @@ +// import 'dart:io'; +// +// import 'package:flutter/material.dart'; +// import 'package:get/get.dart'; +// import '../../../controller/functions/ocr_controller.dart'; +// +// class PassportDataExtractorWidget extends StatelessWidget { +// final PassportDataExtractor passportDataExtractor = +// Get.put(PassportDataExtractor()); +// final PassportDataController controller = Get.put(PassportDataController()); +// +// @override +// Widget build(BuildContext context) { +// return Scaffold( +// appBar: AppBar( +// title: const Text('Passport Data Extractor'), +// ), +// body: Column( +// children: [ +// ElevatedButton( +// onPressed: controller.extractDataAndDrawBoundingBoxes, +// child: const Text('Extract Data'), +// ), +// Expanded( +// child: Center( +// child: Stack( +// children: [ +// GetBuilder( +// builder: (controller) => CustomPaint( +// painter: BoundingBoxPainter( +// controller.extractedTextWithCoordinates), +// child: GetBuilder( +// builder: (controller) => +// Image.file(File(passportDataExtractor.image!.path)), +// ), +// ), +// ), +// ], +// ), +// ), +// ), +// ], +// ), +// ); +// } +// } diff --git a/lib/views/home/Captin/text_scanner.dart b/lib/views/home/Captin/text_scanner.dart new file mode 100755 index 0000000..2a323da --- /dev/null +++ b/lib/views/home/Captin/text_scanner.dart @@ -0,0 +1,175 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/views/widgets/mycircular.dart'; + +import '../../../controller/functions/ocr_controller.dart'; + +class TextRecognizerAPI extends StatelessWidget { + const TextRecognizerAPI({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(ScanDocumentsByApi()); + return GetBuilder( + builder: (controller) => Scaffold( + appBar: AppBar( + title: Text('Api'), + actions: [ + IconButton( + onPressed: () { + controller.matchFaceApi(); + }, + icon: const Icon(Icons.face), + ), + ], + ), + body: Center( + child: controller.isLoading + ? const MyCircularProgressIndicator() + : SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Image.memory( + controller.imagePortrait, + width: 60, + ), + Image.memory( + controller.imageSignature, + width: 60, + ), + Image.memory( + controller.imageDocumentFrontSide, + width: 250, + ), + ], + ), + Text(controller.responseMap['authenticity_meta'] + .toString()), + Text( + 'countryName: ${controller.responseMap['data']['countryName'].toString()}'), + Text( + 'Expiry Date: ${controller.responseMap['data']['ocr']['dateOfExpiry'].toString()}'), + // Add more Text widgets to display other record values + Text( + 'Address: ${controller.responseMap['data']['ocr']['address'].toString()}'), + Text( + 'City: ${controller.responseMap['data']['ocr']['addressCity'].toString()}'), + Text( + 'Jurisdiction Code: ${controller.responseMap['data']['ocr']['addressJurisdictionCode'].toString()}'), + Text( + 'Postal Code: ${controller.responseMap['data']['ocr']['addressPostalCode'].toString()}'), + Text( + 'Street: ${controller.responseMap['data']['ocr']['addressStreet'].toString()}'), + Text( + 'Date of Birth: ${controller.responseMap['data']['ocr']['dateOfBirth'].toString()}'), + Text( + 'Date of Issue: ${controller.responseMap['data']['ocr']['dateOfIssue'].toString()}'), + Text( + 'Drivers License Class: ${controller.responseMap['data']['ocr']['dlClass'].toString()}'), + Text( + 'Document Number: ${controller.responseMap['data']['ocr']['documentNumber'].toString()}'), + Text( + 'Eye Color: ${controller.responseMap['data']['ocr']['eyesColor'].toString()}'), + Text( + 'Given Names: ${controller.responseMap['data']['ocr']['givenNames'].toString()}'), + Text( + 'Height: ${controller.responseMap['data']['ocr']['height'].toString()}'), + Text( + 'Issuing State Code: ${controller.responseMap['data']['ocr']['issuingStateCode'].toString()}'), + Text( + 'Name: ${controller.responseMap['data']['ocr']['name'].toString()}'), + Text( + 'Sex: ${controller.responseMap['data']['ocr']['sex'].toString()}'), + Text( + 'Surname: ${controller.responseMap['data']['ocr']['surname'].toString()}'), + Text( + 'Valid State: ${controller.responseMap['data']['ocr']['validState'].toString()}'), + ], + ), + )))); + } +} +// class TextExtractionView extends StatelessWidget { +// TextExtractionView({super.key}); +// +// @override +// Widget build(BuildContext context) { +// Get.put(TextExtractionController()); +// return Scaffold( +// appBar: AppBar( +// title: const Text('Text Extraction'), +// ), +// body: GetBuilder(builder: (controller) { +// return Center( +// child: Column( +// mainAxisAlignment: MainAxisAlignment.center, +// children: [ +// ElevatedButton( +// onPressed: () {}, +// child: const Text('Pick Image and Extract Text'), +// ), +// const SizedBox(height: 20), +// controller.isloading +// ? const MyCircularProgressIndicator() +// : Text(controller.extractedText), +// ], +// ), +// ); +// }), +// ); +// } +// } + +// class TextRecognizerWidget extends StatelessWidget { +// const TextRecognizerWidget({super.key}); +// +// @override +// Widget build(BuildContext context) { +// Get.put(TextMLGoogleRecognizerController()); +// return GetBuilder( +// builder: (controller) => Scaffold( +// appBar: AppBar(), +// body: Center( +// child: Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// Text('${controller.decode['DRIVER_LICENSE'].toString()}'), +// Text('DL: ${controller.decode['dl_number'].toString()}'), +// Text( +// 'Expiry Date: ${controller.decode['expiry_date'].toString()}'), +// Text('Last Name: ${controller.decode['lastName'].toString()}'), +// Text( +// 'First Name: ${controller.decode['firstName'].toString()}'), +// Text('Address: ${controller.decode['address'].toString()}'), +// Text('Date of Birth: ${controller.decode['dob'].toString()}'), +// Text('RSTR: ${controller.decode['rstr'].toString()}'), +// Text('Class: ${controller.decode['class'].toString()}'), +// Text('End: ${controller.decode['end'].toString()}'), +// Text('DD: ${controller.decode['dd'].toString()}'), +// Text('Sex: ${controller.decode['sex'].toString()}'), +// Text('Hair: ${controller.decode['hair'].toString()}'), +// Text('Eyes: ${controller.decode['eyes'].toString()}'), +// // and so on for other fields +// ], +// )))); +// } +// } + +// class PassportPage extends StatelessWidget { +// PassportPage({super.key}); +// PassportRecognizerController passportRecognizerController = +// Get.put(PassportRecognizerController()); +// @override +// Widget build(BuildContext context) { +// return Scaffold( +// appBar: AppBar( +// title: const Text('Driver License'), +// ), +// body: const Center(child: Text('data'))); +// } +// } diff --git a/lib/views/home/my_wallet/bank_account_egypt.dart b/lib/views/home/my_wallet/bank_account_egypt.dart new file mode 100755 index 0000000..5663aa2 --- /dev/null +++ b/lib/views/home/my_wallet/bank_account_egypt.dart @@ -0,0 +1,140 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +class BankController extends GetxController { + String selectedBank = ''; + + Map bankNames = { + 'Ahli United Bank'.tr: 'AUB', + 'Citi Bank N.A. Egypt'.tr: 'CITI', + 'MIDBANK'.tr: 'MIDB', + 'Banque Du Caire'.tr: 'BDC', + 'HSBC Bank Egypt S.A.E'.tr: 'HSBC', + 'Credit Agricole Egypt S.A.E'.tr: 'ECAE', + 'Egyptian Gulf Bank'.tr: 'EGB', + 'The United Bank'.tr: 'UB', + 'Qatar National Bank Alahli'.tr: 'QNB', + 'Arab Bank PLC'.tr: 'ARAB', + 'Emirates National Bank of Dubai'.tr: 'ENBD', + 'Al Ahli Bank of Kuwait – Egypt'.tr: 'ABK', + 'National Bank of Kuwait – Egypt'.tr: 'NBK', + 'Arab Banking Corporation - Egypt S.A.E'.tr: 'EABC', + 'First Abu Dhabi Bank'.tr: 'FAB', + 'Abu Dhabi Islamic Bank – Egypt'.tr: 'ADIB', + 'Commercial International Bank - Egypt S.A.E'.tr: 'CIB', + 'Housing And Development Bank'.tr: 'HDB', + 'Banque Misr'.tr: 'MISR', + 'Arab African International Bank'.tr: 'AAIB', + 'Egyptian Arab Land Bank'.tr: 'EALB', + 'Export Development Bank of Egypt'.tr: 'EDBE', + 'Faisal Islamic Bank of Egypt'.tr: 'FAIB', + 'Blom Bank'.tr: 'BLOM', + 'Abu Dhabi Commercial Bank – Egypt'.tr: 'ADCB', + 'Alex Bank Egypt'.tr: 'BOA', + 'Societe Arabe Internationale De Banque'.tr: 'SAIB', + 'National Bank of Egypt'.tr: 'NBE', + 'Al Baraka Bank Egypt B.S.C.'.tr: 'ABRK', + 'Egypt Post'.tr: 'POST', + 'Nasser Social Bank'.tr: 'NSB', + 'Industrial Development Bank'.tr: 'IDB', + 'Suez Canal Bank'.tr: 'SCB', + 'Mashreq Bank'.tr: 'MASHA', + 'Arab Investment Bank'.tr: 'AIB', + 'General Authority For Supply Commodities'.tr: 'GASCA', + 'Arab International Bank'.tr: 'AIB', + 'Agricultural Bank of Egypt'.tr: 'PDAC', + 'National Bank of Greece'.tr: 'NBG', + 'Central Bank Of Egypt'.tr: 'CBE', + 'ATTIJARIWAFA BANK Egypt'.tr: 'BBE', + }; + + @override + void onInit() { + super.onInit(); + selectedBank = bankNames.values.first; + } + + void updateSelectedBank(String? bankShortName) { + selectedBank = bankShortName ?? ''; + update(); + } + + List> getDropdownItems() { + return bankNames.keys.map>((bankFullName) { + return DropdownMenuItem( + value: bankNames[bankFullName], + child: Text(bankFullName), + ); + }).toList(); + } + + void showBankPicker(BuildContext context) { + showCupertinoModalPopup( + context: context, + builder: (BuildContext context) => CupertinoActionSheet( + title: Text('Select a Bank'.tr), + actions: bankNames.keys.map((String bankFullName) { + return CupertinoActionSheetAction( + child: Text(bankFullName), + onPressed: () { + updateSelectedBank(bankNames[bankFullName]); + Navigator.pop(context); + }, + ); + }).toList(), + cancelButton: CupertinoActionSheetAction( + child: Text('Cancel'.tr), + onPressed: () { + Navigator.pop(context); + }, + ), + ), + ); + } +} + +class BankDropdown extends StatelessWidget { + final BankController bankController = Get.put(BankController()); + + @override + Widget build(BuildContext context) { + return GetBuilder( + init: bankController, + builder: (controller) { + return CupertinoButton( + padding: EdgeInsets.zero, + onPressed: () => controller.showBankPicker(context), + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + decoration: BoxDecoration( + border: Border.all(color: CupertinoColors.systemGrey4), + borderRadius: BorderRadius.circular(8), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + controller.selectedBank != null + ? controller.bankNames.keys.firstWhere( + (key) => + controller.bankNames[key] == + controller.selectedBank, + orElse: () => 'Select a Bank'.tr, + ) + : 'Select a Bank'.tr, + style: TextStyle( + color: controller.selectedBank != null + ? CupertinoColors.black + : CupertinoColors.systemGrey, + ), + ), + const Icon(CupertinoIcons.chevron_down, size: 20), + ], + ), + ), + ); + }, + ); + } +} diff --git a/lib/views/home/my_wallet/card_wallet_widget.dart b/lib/views/home/my_wallet/card_wallet_widget.dart new file mode 100755 index 0000000..67e609f --- /dev/null +++ b/lib/views/home/my_wallet/card_wallet_widget.dart @@ -0,0 +1,299 @@ +import 'dart:ui'; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:get/get.dart'; + +import '../../../constant/box_name.dart'; +import '../../../constant/colors.dart'; +import '../../../constant/style.dart'; +import '../../../controller/home/payment/captain_wallet_controller.dart'; +import '../../../controller/home/payment/paymob_payout.dart'; +import '../../../main.dart'; +import '../../widgets/elevated_btn.dart'; +import '../../widgets/my_textField.dart'; + +// تذكير: ستحتاج إلى Ø¥Ø¶Ø§ÙØ© حزمة flutter_svg إلى مل٠pubspec.yaml +// dependencies: +// flutter_svg: ^2.0.7 + +/// بطاقة Ø§Ù„Ù…Ø­ÙØ¸Ø© بتصميم سوري ÙØ§Ø®Ø± مستوحى من ÙÙ† الأرابيسك ÙˆØ§Ù„ÙØ³ÙŠÙساء +class CardSeferWalletDriver extends StatelessWidget { + const CardSeferWalletDriver({super.key}); + + // SVG لنقشة أرابيسك هندسية لاستخدامها كخلÙية + final String arabesquePattern = ''' + + + + + + + + + + + + + '''; + + @override + Widget build(BuildContext context) { + return Center( + child: GetBuilder( + builder: (captainWalletController) { + return GestureDetector( + onTap: () => _showCashOutDialog(context, captainWalletController), + child: Container( + width: Get.width * 0.9, + height: Get.height * 0.25, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(28), + boxShadow: [ + BoxShadow( + color: const Color(0xFF003C43).withOpacity(0.5), + blurRadius: 25, + spreadRadius: -5, + offset: const Offset(0, 10), + ), + ], + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(28), + child: Stack( + children: [ + // الخلÙية الرئيسية + Container(color: const Color(0xFF003C43)), + // طبقة النقشة + SvgPicture.string(arabesquePattern, fit: BoxFit.cover), + // طبقة التأثير الزجاجي (Glassmorphism) + BackdropFilter( + filter: ImageFilter.blur(sigmaX: 2.0, sigmaY: 2.0), + child: Container(color: Colors.black.withOpacity(0.1)), + ), + // محتوى البطاقة + _buildCardContent(captainWalletController), + ], + ), + ), + ), + ); + }, + ), + ); + } + + Widget _buildCardContent(CaptainWalletController captainWalletController) { + return Padding( + padding: const EdgeInsets.fromLTRB(24, 20, 24, 20), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + 'Ù…Ø­ÙØ¸Ø© انطلق', + style: AppStyle.headTitle.copyWith( + fontFamily: 'Amiri', // خط يوحي Ø¨Ø§Ù„ÙØ®Ø§Ù…Ø© + color: Colors.white, + fontSize: 26, + fontWeight: FontWeight.bold, + ), + ), + // أيقونة شريحة البطاقة + const Icon(Icons.sim_card_outlined, + color: Color(0xFFE7C582), size: 30), + ], + ), + Column( + children: [ + Text( + 'الرصيد الحالي'.tr, + style: AppStyle.title.copyWith( + color: Colors.white.withOpacity(0.7), + fontSize: 16, + ), + ), + const SizedBox(height: 4), + // استخدام AnimatedSwitcher Ù„Ø¥Ø¶Ø§ÙØ© حركة عند تحديث الرصيد + AnimatedSwitcher( + duration: const Duration(milliseconds: 500), + transitionBuilder: (child, animation) { + return FadeTransition(opacity: animation, child: child); + }, + child: Text( + '${captainWalletController.totalAmountVisa} ${'Ù„.س'.tr}', + key: + ValueKey(captainWalletController.totalAmountVisa), + style: AppStyle.headTitle2.copyWith( + color: const Color(0xFFE7C582), // Antique Gold + fontSize: 40, + fontWeight: FontWeight.w900, + ), + ), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + box.read(BoxName.nameDriver).toString().split(' ')[0], + style: AppStyle.title.copyWith( + color: Colors.white.withOpacity(0.9), + fontSize: 16, + letterSpacing: 0.5, + ), + ), + Text( + "سحب الرصيد".tr, + style: AppStyle.title.copyWith( + color: Colors.white.withOpacity(0.9), + fontSize: 16, + ), + ), + ], + ), + ], + ), + ); + } + + void _showCashOutDialog( + BuildContext context, CaptainWalletController captainWalletController) { + double minAmount = 20.0; // الحد الأدنى للسحب + if (double.parse(captainWalletController.totalAmountVisa) >= minAmount) { + Get.defaultDialog( + barrierDismissible: false, + title: 'هل تريد سحب أرباحك؟'.tr, + titleStyle: AppStyle.title + .copyWith(fontSize: 18, fontWeight: FontWeight.bold), + content: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const Icon(Icons.account_balance_wallet, + color: AppColor.primaryColor, size: 30), + const SizedBox(height: 15), + Text( + '${'رصيدك الإجمالي:'.tr} ${captainWalletController.totalAmountVisa} ${'Ù„.س'.tr}', + style: AppStyle.title.copyWith(fontSize: 16), + ), + const SizedBox(height: 20), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'طريقة Ø§Ù„Ø¯ÙØ¹:'.tr, + style: AppStyle.title.copyWith(fontSize: 16), + ), + const SizedBox(width: 10), + const MyDropDownSyria(), + ], + ), + const SizedBox(height: 20), + Form( + key: captainWalletController.formKey, + child: MyTextForm( + controller: captainWalletController.phoneWallet, + label: "أدخل رقم Ù…Ø­ÙØ¸ØªÙƒ".tr, + hint: "مثال: 0912345678".tr, + type: TextInputType.phone, + ), + ), + ], + ), + confirm: MyElevatedButton( + title: 'تأكيد'.tr, + onPressed: () async { + if (captainWalletController.formKey.currentState!.validate()) { + Get.back(); + String amountAfterFee = + (double.parse(captainWalletController.totalAmountVisa) - 5) + .toStringAsFixed(0); + await Get.put(PaymobPayout()).payToWalletDriverAll( + amountAfterFee, + Get.find().dropdownValue.toString(), + captainWalletController.phoneWallet.text.toString(), + ); + } + }, + kolor: AppColor.greenColor, + ), + cancel: MyElevatedButton( + title: 'إلغاء'.tr, + onPressed: () { + Get.back(); + }, + kolor: AppColor.redColor, + )); + } else { + showCupertinoDialog( + context: context, + builder: (BuildContext context) { + return CupertinoAlertDialog( + title: Text("تنبيه".tr), + content: Text( + '${'المبلغ ÙÙŠ Ù…Ø­ÙØ¸ØªÙƒ أقل من الحد الأدنى للسحب وهو'.tr} $minAmount ${'Ù„.س'.tr}', + ), + actions: [ + CupertinoDialogAction( + isDefaultAction: true, + child: Text("مواÙÙ‚".tr), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + ], + ); + }, + ); + } + } +} + +// هذا الكود من المل٠الأصلي وهو ضروري لعمل الحوار +class MyDropDownSyria extends StatelessWidget { + const MyDropDownSyria({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(SyrianPayoutController()); + return GetBuilder(builder: (controller) { + return DropdownButton( + value: controller.dropdownValue, + icon: const Icon(Icons.arrow_drop_down), + elevation: 16, + style: const TextStyle(color: Colors.deepPurple, fontSize: 16), + underline: Container( + height: 2, + color: Colors.deepPurpleAccent, + ), + onChanged: (String? newValue) { + controller.changeValue(newValue); + }, + items: ['syriatel', 'mtn'] + .map>((String value) { + return DropdownMenuItem( + value: value, + child: Text(value.tr), + ); + }).toList(), + ); + }); + } +} + +// هذا المتحكم ضروري لعمل القائمة المنسدلة +class SyrianPayoutController extends GetxController { + String dropdownValue = 'syriatel'; + + void changeValue(String? newValue) { + if (newValue != null) { + dropdownValue = newValue; + update(); + } + } +} diff --git a/lib/views/home/my_wallet/ecash.dart b/lib/views/home/my_wallet/ecash.dart new file mode 100644 index 0000000..3cebb65 --- /dev/null +++ b/lib/views/home/my_wallet/ecash.dart @@ -0,0 +1,170 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:local_auth/local_auth.dart'; +import 'package:webview_flutter/webview_flutter.dart'; + +import '../../../constant/box_name.dart'; +import '../../../constant/links.dart'; +import '../../../constant/style.dart'; +import '../../../controller/functions/crud.dart'; +import '../../../main.dart'; + +// --- ملاحظات هامة --- +// 1. تأكد من Ø¥Ø¶Ø§ÙØ© الرابط الجديد إلى مل٠AppLink الخاص بك: +// static const String payWithEcashDriver = "$server/payment/payWithEcashDriver.php"; +// +// 2. تأكد من أنك تخزن 'driverId' ÙÙŠ الـ box الخاص بك، مثلاً: +// box.read(BoxName.driverID) + +/// دالة جديدة لبدء عملية Ø§Ù„Ø¯ÙØ¹ للسائق عبر ecash +Future payWithEcashDriver(BuildContext context, String amount) async { + try { + // يمكنك استخدام Ù†ÙØ³ طريقة التحقق بالبصمة إذا أردت + bool isAvailable = await LocalAuthentication().isDeviceSupported(); + if (isAvailable) { + bool didAuthenticate = await LocalAuthentication().authenticate( + localizedReason: 'Use Touch ID or Face ID to confirm payment'.tr, + ); + + if (didAuthenticate) { + // استدعاء الـ Endpoint الجديد على Ø§Ù„Ø³ÙŠØ±ÙØ± الخاص بك + var res = await CRUD().postWallet( + link: AppLink.payWithEcashDriver, + payload: { + // أرسل البيانات التي يحتاجها Ø§Ù„Ø³ÙŠØ±ÙØ± + "amount": amount, + // "driverId": box.read(BoxName.driverID), // تأكد من وجود هذا المتغير + "driverId": box.read(BoxName.driverID), // تأكد من وجود هذا المتغير + }, + ); + + // التأكد من أن Ø§Ù„Ø³ÙŠØ±ÙØ± أعاد رابط Ø§Ù„Ø¯ÙØ¹ بنجاح + if (res != null && + res['status'] == 'success' && + res['message'] != null) { + final String paymentUrl = res['message']; + // الانتقال إلى شاشة Ø§Ù„Ø¯ÙØ¹ الجديدة الخاصة بـ ecash للسائق + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + EcashDriverPaymentScreen(paymentUrl: paymentUrl), + ), + ); + } else { + // عرض رسالة خطأ ÙÙŠ حال ÙØ´Ù„ Ø§Ù„Ø³ÙŠØ±ÙØ± ÙÙŠ إنشاء الرابط + Get.defaultDialog( + title: 'Error'.tr, + content: Text( + 'Failed to initiate payment. Please try again.'.tr, + style: AppStyle.title, + ), + ); + } + } + } + } catch (e) { + Get.defaultDialog( + title: 'Error'.tr, + content: Text( + 'An error occurred during the payment process.'.tr, + style: AppStyle.title, + ), + ); + } +} + +/// شاشة جديدة ومبسطة خاصة Ø¨Ø¯ÙØ¹ السائقين عبر ecash +class EcashDriverPaymentScreen extends StatefulWidget { + final String paymentUrl; + + const EcashDriverPaymentScreen({required this.paymentUrl, Key? key}) + : super(key: key); + + @override + State createState() => + _EcashDriverPaymentScreenState(); +} + +class _EcashDriverPaymentScreenState extends State { + late final WebViewController _controller; + + @override + void initState() { + super.initState(); + _controller = WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setNavigationDelegate(NavigationDelegate( + onPageFinished: (url) { + print('Ecash Driver WebView URL Finished: $url'); + + // هنا نتحقق Ùقط من أن المستخدم عاد إلى ØµÙØ­Ø© النجاح + // لا حاجة لاستدعاء أي API هنا، ÙØ§Ù„Ù€ Webhook يقوم بكل العمل + if (url.contains("success.php")) { + showProcessingDialog(); + } + }, + )) + ..loadRequest(Uri.parse(widget.paymentUrl)); + } + + // دالة لعرض رسالة "العملية قيد المعالجة" + void showProcessingDialog() { + showDialog( + barrierDismissible: false, + context: Get.context!, + builder: (BuildContext context) { + return AlertDialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12.0), + ), + title: Row( + children: [ + Icon(Icons.check_circle, color: Colors.green), + const SizedBox(width: 8), + Text( + "Payment Successful".tr, + style: TextStyle( + color: Colors.green, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + content: Text( + "Your payment is being processed and your wallet will be updated shortly." + .tr, + style: const TextStyle(fontSize: 16), + ), + actions: [ + TextButton( + onPressed: () { + // أغلق مربع الحوار، ثم أغلق شاشة Ø§Ù„Ø¯ÙØ¹ + Navigator.pop(context); // Close the dialog + Navigator.pop(context); // Close the payment screen + }, + style: TextButton.styleFrom( + backgroundColor: Colors.green, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8.0), + ), + ), + child: Text( + "OK".tr, + style: const TextStyle(color: Colors.white), + ), + ), + ], + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text('Complete Payment'.tr)), + body: WebViewWidget(controller: _controller), + ); + } +} diff --git a/lib/views/home/my_wallet/payment_history_driver_page.dart b/lib/views/home/my_wallet/payment_history_driver_page.dart new file mode 100755 index 0000000..a442eec --- /dev/null +++ b/lib/views/home/my_wallet/payment_history_driver_page.dart @@ -0,0 +1,54 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; +import 'package:sefer_driver/views/widgets/mycircular.dart'; + +import '../../../controller/payment/driver_payment_controller.dart'; + +class PaymentHistoryDriverPage extends StatelessWidget { + const PaymentHistoryDriverPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(DriverWalletHistoryController()); + return MyScafolld( + title: 'Payment History'.tr, + body: [ + GetBuilder( + builder: (controller) => controller.isLoading + ? const MyCircularProgressIndicator() + : ListView.builder( + itemCount: controller.archive.length, + itemBuilder: (BuildContext context, int index) { + var list = controller.archive[index]; + return Padding( + padding: const EdgeInsets.all(4), + child: Container( + decoration: BoxDecoration( + color: double.parse(list['amount']) < 0 + ? AppColor.redColor.withOpacity(.4) + : AppColor.greenColor.withOpacity(.4)), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + list['amount'], + style: AppStyle.title, + ), + Text( + list['created_at'], + style: AppStyle.title, + ), + ], + ), + ), + ); + }, + ), + ) + ], + isleading: true); + } +} diff --git a/lib/views/home/my_wallet/points_captain.dart b/lib/views/home/my_wallet/points_captain.dart new file mode 100755 index 0000000..f3d217e --- /dev/null +++ b/lib/views/home/my_wallet/points_captain.dart @@ -0,0 +1,601 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:local_auth/local_auth.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/home/payment/captain_wallet_controller.dart'; +import 'package:sefer_driver/controller/payment/payment_controller.dart'; +import 'package:webview_flutter/webview_flutter.dart'; + +import '../../../constant/box_name.dart'; +import '../../../constant/links.dart'; +import '../../../controller/functions/crud.dart'; +import '../../../main.dart'; +import '../../widgets/elevated_btn.dart'; +import '../../widgets/my_textField.dart'; +import 'ecash.dart'; + +class PointsCaptain extends StatelessWidget { + PaymentController paymentController = Get.put(PaymentController()); + CaptainWalletController captainWalletController = + Get.put(CaptainWalletController()); + + PointsCaptain({ + super.key, + required this.kolor, + required this.countPoint, + required this.pricePoint, + }); + final Color kolor; + final String countPoint; + double pricePoint; + + @override + Widget build(BuildContext context) { + return InkWell( + onTap: () async { + Get.defaultDialog( + title: 'Which method you will pay'.tr, + titleStyle: AppStyle.title, + content: Column( + children: [ + Text( + '${'you can buy '.tr}$countPoint ${'L.S'.tr}${'by '.tr}${'$pricePoint'.tr}', + style: AppStyle.title, + ), + MyElevatedButton( + title: 'Pay with Credit Card'.tr, + onPressed: () async { + Get.back(); + payWithEcashDriver(context, pricePoint.toString()); + + // var d = jsonDecode(res); + }, //51524 + ), + // Add some spacing between buttons + MyElevatedButton( + kolor: AppColor.redColor, + title: 'Pay with Wallet'.tr, + onPressed: () async { + Get.back(); + Get.defaultDialog( + barrierDismissible: false, + title: 'Insert Wallet phone number'.tr, + content: Form( + key: paymentController.formKey, + child: MyTextForm( + controller: + paymentController.walletphoneController, + label: 'Insert Wallet phone number'.tr, + hint: 'Insert Wallet phone number'.tr, + type: TextInputType.phone)), + confirm: MyElevatedButton( + title: 'OK'.tr, + onPressed: () async { + Get.back(); + if (paymentController.formKey.currentState! + .validate()) { + box.write( + BoxName.phoneWallet, + paymentController + .walletphoneController.text); + await payWithMTNWallet( + context, pricePoint.toString(), 'SYP'); + } + })); + }, + ), + ], + )); + }, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 3, vertical: 8), + child: Container( + width: Get.width * .22, + height: Get.width * .22, + margin: const EdgeInsets.all(4), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + kolor.withOpacity(0.3), + kolor, + kolor.withOpacity(0.7), + kolor, + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + border: Border.all(color: AppColor.accentColor), + borderRadius: BorderRadius.circular(12), + shape: BoxShape.rectangle, + ), + child: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Text( + '$countPoint ${'L.S'.tr}', + style: AppStyle.subtitle + .copyWith(color: AppColor.secondaryColor), + ), + Text( + '$pricePoint ${'L.S'.tr}', + style: + AppStyle.title.copyWith(color: AppColor.secondaryColor), + textAlign: TextAlign.center, + ), + ], + ), + ), + ), + ), + ); + } +} + +class PaymentScreen extends StatefulWidget { + final String iframeUrl; + final String countPrice; + + const PaymentScreen( + {required this.iframeUrl, Key? key, required this.countPrice}) + : super(key: key); + + @override + State createState() => _PaymentScreenState(); +} + +class _PaymentScreenState extends State { + late final WebViewController _controller; + final controller = Get.find(); + @override + void initState() { + super.initState(); + + _controller = WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setNavigationDelegate(NavigationDelegate( + onPageFinished: (url) { + if (url.contains("success")) { + _fetchPaymentStatus(); // ✅ استدعاء الويب هوك بعد نجاح Ø§Ù„Ø¯ÙØ¹ + } else if (url.contains("failed")) { + showCustomDialog( + title: "Error".tr, + message: 'Payment Failed'.tr, // يتم جلب رسالة الخطأ من الخادم + isSuccess: false, + ); + } + }, + )) + ..loadRequest(Uri.parse(widget.iframeUrl)); + } + + Future _fetchPaymentStatus() async { + final String userId = box.read(BoxName.phoneDriver); + await Future.delayed(const Duration(seconds: 2)); + + try { + final response = await CRUD().postWallet( + link: AppLink.paymetVerifyDriver, + payload: { + 'user_id': userId, + 'driverID': box.read(BoxName.driverID), + 'paymentMethod': 'visa-in', + }, + ); + + if (response != 'failure' && response != 'token_expired') { + if (response['status'] == 'success') { + final payment = response['message']; + final amount = payment['amount'].toString(); + final bonus = payment['bonus'].toString(); + final paymentID = payment['paymentID'].toString(); + + await controller.getCaptainWalletFromBuyPoints(); + + showCustomDialog( + title: "payment_success".tr, + message: + "${"transaction_id".tr}: $paymentID\n${"amount_paid".tr}: $amount EGP\n${"bonus_added".tr}: $bonus ${"points".tr}", + isSuccess: true, + ); + } else { + showCustomDialog( + title: "transaction_failed".tr, + message: response['message'].toString(), + isSuccess: false, + ); + } + } else { + showCustomDialog( + title: "connection_failed".tr, + message: response.toString(), + isSuccess: false, + ); + } + } catch (e) { + showCustomDialog( + title: "server_error".tr, + message: "server_error_message".tr, + isSuccess: false, + ); + } + } + + void showCustomDialog({ + required String title, + required String message, + required bool isSuccess, + }) { + showDialog( + barrierDismissible: false, + context: Get.context!, + builder: (BuildContext context) { + return AlertDialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12.0), + ), + title: Row( + children: [ + Icon( + isSuccess ? Icons.check_circle : Icons.error, + color: isSuccess ? Colors.green : Colors.red, + ), + const SizedBox(width: 8), + Text( + title, + style: TextStyle( + color: isSuccess ? Colors.green : Colors.red, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + content: Text( + message, + style: const TextStyle(fontSize: 16), + ), + actions: [ + TextButton( + onPressed: () { + Navigator.pop(context); + Navigator.pop(context); + }, + style: TextButton.styleFrom( + backgroundColor: isSuccess ? Colors.green : Colors.red, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8.0), + ), + ), + child: Text( + "OK", + style: const TextStyle(color: Colors.white), + ), + ), + ], + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: const Text('إتمام Ø§Ù„Ø¯ÙØ¹')), + body: WebViewWidget(controller: _controller), + ); + } +} + +class PaymentScreenWallet extends StatefulWidget { + final String iframeUrl; + final String countPrice; + + const PaymentScreenWallet( + {required this.iframeUrl, Key? key, required this.countPrice}) + : super(key: key); + + @override + State createState() => _PaymentScreenWalletState(); +} + +class _PaymentScreenWalletState extends State { + late final WebViewController _controller; + final controller = Get.find(); + @override + void initState() { + super.initState(); + + _controller = WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setNavigationDelegate(NavigationDelegate( + onPageFinished: (url) { + if (url.contains("success")) { + _fetchPaymentStatus(); // ✅ استدعاء الويب هوك بعد نجاح Ø§Ù„Ø¯ÙØ¹ + } else if (url.contains("failed")) { + showCustomDialog( + title: "Error".tr, + message: 'Payment Failed'.tr, // يتم جلب رسالة الخطأ من الخادم + isSuccess: false, + ); + } + }, + )) + ..loadRequest(Uri.parse(widget.iframeUrl)); + } + + Future _fetchPaymentStatus() async { + final String userId = '+963' + box.read(BoxName.phoneWallet); + await Future.delayed(const Duration(seconds: 2)); + + try { + final response = await CRUD().postWallet( + link: AppLink.paymetVerifyDriver, + payload: { + 'user_id': userId, + 'driverID': box.read(BoxName.driverID), + 'paymentMethod': 'visa-in', + }, + ); + + if (response != 'failure' && response != 'token_expired') { + if (response['status'] == 'success') { + final payment = response['message']; + final amount = payment['amount'].toString(); + final bonus = payment['bonus'].toString(); + final paymentID = payment['paymentID'].toString(); + + await controller.getCaptainWalletFromBuyPoints(); + + showCustomDialog( + title: "payment_success".tr, + message: + "${"transaction_id".tr}: $paymentID\n${"amount_paid".tr}: $amount EGP\n${"bonus_added".tr}: $bonus ${"points".tr}", + isSuccess: true, + ); + } else { + showCustomDialog( + title: "transaction_failed".tr, + message: response['message'].toString(), + isSuccess: false, + ); + } + } else { + showCustomDialog( + title: "connection_failed".tr, + message: response.toString(), + isSuccess: false, + ); + } + } catch (e) { + showCustomDialog( + title: "server_error".tr, + message: "server_error_message".tr, + isSuccess: false, + ); + } + } + + void showCustomDialog({ + required String title, + required String message, + required bool isSuccess, + }) { + showDialog( + barrierDismissible: false, + context: Get.context!, + builder: (BuildContext context) { + return AlertDialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12.0), + ), + title: Row( + children: [ + Icon( + isSuccess ? Icons.check_circle : Icons.error, + color: isSuccess ? Colors.green : Colors.red, + ), + const SizedBox(width: 8), + Text( + title, + style: TextStyle( + color: isSuccess ? Colors.green : Colors.red, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + content: Text( + message, + style: const TextStyle(fontSize: 16), + ), + actions: [ + TextButton( + onPressed: () { + Navigator.pop(context); + Navigator.pop(context); + }, + style: TextButton.styleFrom( + backgroundColor: isSuccess ? Colors.green : Colors.red, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8.0), + ), + ), + child: Text( + "OK", + style: const TextStyle(color: Colors.white), + ), + ), + ], + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: const Text('إتمام Ø§Ù„Ø¯ÙØ¹')), + body: WebViewWidget(controller: _controller), + ); + } +} + +Future payWithMTNWallet( + BuildContext context, String amount, String currency) async { + // استخدام مؤشر تحميل لتجربة مستخدم Ø£ÙØ¶Ù„ + Get.dialog(const Center(child: CircularProgressIndicator()), + barrierDismissible: false); + + try { + String phone = box.read(BoxName.phoneWallet) ?? '963992952235'; + String driverID = box.read(BoxName.driverID).toString(); + String formattedAmount = double.parse(amount).toStringAsFixed(0); + + print("🚀 بدء عملية Ø¯ÙØ¹ MTN"); + print( + "📦 Payload: driverID: $driverID, amount: $formattedAmount, phone: $phone"); + + // التحقق من البصمة (اختياري) + bool isAuthSupported = await LocalAuthentication().isDeviceSupported(); + if (isAuthSupported) { + bool didAuthenticate = await LocalAuthentication().authenticate( + localizedReason: 'استخدم بصمة الإصبع أو الوجه لتأكيد Ø§Ù„Ø¯ÙØ¹', + ); + if (!didAuthenticate) { + if (Get.isDialogOpen ?? false) Get.back(); + print("⌠المستخدم لم يؤكد بالبصمة/الوجه"); + return; + } + } + + // 1ï¸âƒ£ استدعاء mtn_start_payment.php (المل٠الجديد) + var responseData = await CRUD().postWallet( + link: AppLink.payWithMTNStart, + payload: { + "amount": formattedAmount, + "passengerId": driverID, + "phone": phone, + }, + ); + + print("✅ استجابة الخادم (mtn_start_payment.php):"); + print(responseData); + + // --- بداية التعديل المهم --- + // التحقق القوي من الاستجابة لتجنب الأخطاء + Map startRes; + + if (responseData is Map) { + // إذا كانت الاستجابة Ø¨Ø§Ù„ÙØ¹Ù„ MapØŒ استخدمها مباشرة + startRes = responseData; + } else if (responseData is String) { + // إذا كانت نص، حاول تحليلها كـ JSON + try { + startRes = json.decode(responseData); + } catch (e) { + throw Exception( + "ÙØ´Ù„ ÙÙŠ تحليل استجابة الخادم. الاستجابة: $responseData"); + } + } else { + // نوع غير متوقع + throw Exception("تم استلام نوع بيانات غير متوقع من الخادم."); + } + + if (startRes['status'] != 'success') { + String errorMsg = startRes['message']?.toString() ?? + "ÙØ´Ù„ بدء عملية Ø§Ù„Ø¯ÙØ¹. حاول مرة أخرى."; + throw Exception(errorMsg); + } + // --- نهاية التعديل المهم --- + + // استخراج البيانات بأمان + final messageData = startRes["message"]; + final invoiceNumber = messageData["invoiceNumber"].toString(); + final operationNumber = messageData["operationNumber"].toString(); + final guid = messageData["guid"].toString(); + + print( + "📄 invoiceNumber: $invoiceNumber, 🔢 operationNumber: $operationNumber, 🧭 guid: $guid"); + + if (Get.isDialogOpen ?? false) + Get.back(); // إغلاق مؤشر التحميل قبل عرض حوار OTP + + // 2ï¸âƒ£ عرض واجهة إدخال OTP + String? otp = await showDialog( + context: context, + builder: (context) { + String input = ""; + return AlertDialog( + title: const Text("أدخل كود التحقق"), + content: TextField( + keyboardType: TextInputType.number, + decoration: const InputDecoration(hintText: "كود OTP"), + onChanged: (val) => input = val, + ), + actions: [ + TextButton( + child: const Text("تأكيد"), + onPressed: () => Navigator.of(context).pop(input), + ), + TextButton( + child: const Text("إلغاء"), + onPressed: () => Navigator.of(context).pop(), + ), + ], + ); + }, + ); + + if (otp == null || otp.isEmpty) { + print("⌠لم يتم إدخال OTP"); + return; + } + print("🔠تم إدخال OTP: $otp"); + + Get.dialog(const Center(child: CircularProgressIndicator()), + barrierDismissible: false); + + // 3ï¸âƒ£ استدعاء mtn_confirm.php + var confirmRes = await CRUD().postWallet( + link: AppLink.payWithMTNConfirm, + payload: { + "invoiceNumber": invoiceNumber, + "operationNumber": operationNumber, + "guid": guid, + "otp": otp, + "phone": phone, + }, + ); + + if (Get.isDialogOpen ?? false) Get.back(); + + print("✅ استجابة mtn_confirm.php:"); + print(confirmRes); + + if (confirmRes != null && confirmRes['status'] == 'success') { + Get.defaultDialog( + title: "✅ نجاح", + content: const Text("تمت عملية Ø§Ù„Ø¯ÙØ¹ ÙˆØ¥Ø¶Ø§ÙØ© الرصيد إلى Ù…Ø­ÙØ¸ØªÙƒ."), + ); + } else { + String errorMsg = + confirmRes?['message']?.toString() ?? "ÙØ´Ù„ ÙÙŠ تأكيد Ø§Ù„Ø¯ÙØ¹"; + Get.defaultDialog( + title: "âŒ ÙØ´Ù„", + content: Text(errorMsg), + ); + } + } catch (e, s) { + print("🔥 خطأ أثناء Ø§Ù„Ø¯ÙØ¹ عبر MTN:"); + print(e); + print(s); + if (Get.isDialogOpen ?? false) Get.back(); + Get.defaultDialog( + title: 'حدث خطأ', + content: Text(e.toString().replaceFirst("Exception: ", "")), + ); + } +} diff --git a/lib/views/home/my_wallet/transfer_budget_page.dart b/lib/views/home/my_wallet/transfer_budget_page.dart new file mode 100755 index 0000000..8e5a60b --- /dev/null +++ b/lib/views/home/my_wallet/transfer_budget_page.dart @@ -0,0 +1,145 @@ +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; +import 'package:sefer_driver/views/widgets/my_textField.dart'; +import 'package:sefer_driver/views/widgets/mycircular.dart'; +import 'package:sefer_driver/views/widgets/mydialoug.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../controller/home/payment/captain_wallet_controller.dart'; + +class TransferBudgetPage extends StatelessWidget { + const TransferBudgetPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(CaptainWalletController()); + return MyScafolld( + title: "Transfer budget".tr, + body: [ + GetBuilder( + builder: (captainWalletController) { + return Padding( + padding: const EdgeInsets.all(8.0), + child: Container( + decoration: AppStyle.boxDecoration1, + height: Get.height * .7, + width: double.infinity, + child: Form( + key: captainWalletController.formKeyTransfer, + child: Column( + children: [ + const SizedBox( + height: 20, + ), + MyTextForm( + controller: captainWalletController + .newDriverPhoneController, + label: 'phone number of driver'.tr, + hint: 'phone number of driver', + type: TextInputType.phone), + MyTextForm( + controller: captainWalletController + .amountFromBudgetController, + label: 'insert amount'.tr, + hint: + '${'You have in account'.tr} ${captainWalletController.totalAmountVisa}', + type: TextInputType.number), + captainWalletController.isNewTransfer + ? const MyCircularProgressIndicator() + : captainWalletController + .amountToNewDriverMap.isEmpty + ? MyElevatedButton( + title: 'Next'.tr, + onPressed: () async { + await captainWalletController + .detectNewDriverFromMyBudget(); + }) + : const SizedBox(), + captainWalletController.amountToNewDriverMap.isNotEmpty + ? Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + children: [ + Container( + width: double.maxFinite, + decoration: AppStyle.boxDecoration1, + child: Text( + 'Name :'.tr + + captainWalletController + .amountToNewDriverMap[0]['name'] + .toString(), + textAlign: TextAlign.center, + style: AppStyle.title, + ), + ), + const SizedBox( + height: 5, + ), + Container( + width: double.maxFinite, + decoration: AppStyle.boxDecoration1, + child: Text( + "${"NationalID".tr} ${captainWalletController.amountToNewDriverMap[0]['national_number']}", + style: AppStyle.title, + textAlign: TextAlign.center, + ), + ), + const SizedBox( + height: 5, + ), + Container( + width: double.maxFinite, + decoration: AppStyle.boxDecoration1, + child: Text( + "${"amount".tr} ${captainWalletController.amountFromBudgetController.text} ${'LE'.tr}", + style: AppStyle.title, + textAlign: TextAlign.center, + ), + ), + const SizedBox( + height: 15, + ), + captainWalletController + .amountToNewDriverMap.isNotEmpty + ? MyElevatedButton( + title: 'Transfer'.tr, + onPressed: () async { + if (double.parse( + captainWalletController + .amountFromBudgetController + .text) < + double.parse( + captainWalletController + .totalAmountVisa) - + 5) { + await captainWalletController + .addTransferDriversWallet( + 'TransferFrom', + 'TransferTo', + ); + } else { + MyDialog().getDialog( + "You dont have money in your Wallet" + .tr, + "You dont have money in your Wallet or you should less transfer 5 LE to activate" + .tr, () { + Get.back(); + }); + } + }) + : const SizedBox() + ], + ), + ) + : const SizedBox() + ], + )), + ), + ); + }), + ], + isleading: true); + } +} diff --git a/lib/views/home/my_wallet/walet_captain.dart b/lib/views/home/my_wallet/walet_captain.dart new file mode 100755 index 0000000..f9e9153 --- /dev/null +++ b/lib/views/home/my_wallet/walet_captain.dart @@ -0,0 +1,610 @@ +import 'package:local_auth/local_auth.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; +import 'package:sefer_driver/controller/functions/tts.dart'; +import 'package:sefer_driver/views/home/my_wallet/payment_history_driver_page.dart'; +import 'package:sefer_driver/views/widgets/error_snakbar.dart'; +import 'package:sefer_driver/views/widgets/mydialoug.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/info.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/home/payment/captain_wallet_controller.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/my_textField.dart'; +import 'package:sefer_driver/views/widgets/mycircular.dart'; + +import '../../../controller/payment/driver_payment_controller.dart'; +import '../../widgets/my_scafold.dart'; +import 'card_wallet_widget.dart'; +import 'points_captain.dart'; +import 'transfer_budget_page.dart'; +import 'weekly_payment_page.dart'; + +class WalletCaptainRefactored extends StatelessWidget { + WalletCaptainRefactored({super.key}); + + final CaptainWalletController captainWalletController = + Get.put(CaptainWalletController()); + + // دالة مساعدة لتحديد لون خلÙية النقاط + Color _getPointsColor(String pointsStr) { + final points = double.tryParse(pointsStr) ?? 0.0; + if (points < -30000) { + return AppColor.redColor; + } else if (points < 0 && points >= -30000) { + return AppColor.yellowColor; + } else { + return AppColor.greenColor; + } + } + + @override + Widget build(BuildContext context) { + captainWalletController.refreshCaptainWallet(); + return MyScafolld( + title: 'Driver Wallet'.tr, + isleading: true, + action: IconButton( + icon: const Icon(Icons.refresh), + onPressed: () => captainWalletController.refreshCaptainWallet(), + tooltip: 'Refresh'.tr, + ), + body: [ + GetBuilder( + builder: (controller) { + if (controller.isLoading) { + return const MyCircularProgressIndicator(); + } + return SingleChildScrollView( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + _buildTotalPointsSection(context, controller), + const SizedBox(height: 16), + const CardSeferWalletDriver(), // This can be redesigned if needed + const SizedBox(height: 16), + _buildWalletDetailsCard(context, controller), + const SizedBox(height: 24), + _buildPromoSection(controller), + const SizedBox(height: 24), + _buildNavigationButtons(), + ], + ), + ); + }, + ) + ], + ); + } + + /// القسم العلوي لعرض النقاط الإجمالية + Widget _buildTotalPointsSection( + BuildContext context, CaptainWalletController controller) { + return Card( + elevation: 4, + color: _getPointsColor(controller.totalPoints.toString()), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + child: InkWell( + onTap: () { + showCupertinoDialog( + context: context, + builder: (BuildContext context) => CupertinoAlertDialog( + title: Text('Info'.tr), + content: Text( + 'The 30000 points equal 30000 S.P for you \nSo go and gain your money' + .tr), + actions: [ + CupertinoDialogAction( + child: Text("OK".tr), + onPressed: () => Navigator.of(context).pop(), + ), + ], + ), + ); + }, + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 16, horizontal: 8), + child: Column( + children: [ + Text( + '${'Total Points is'.tr} 💎', + style: AppStyle.headTitle2 + .copyWith(color: Colors.white, fontWeight: FontWeight.bold), + textAlign: TextAlign.center, + ), + const SizedBox(height: 8), + Text( + controller.totalPoints.toString(), + style: AppStyle.headTitle2.copyWith( + color: Colors.white, + fontSize: 28, + fontWeight: FontWeight.w900), + textAlign: TextAlign.center, + ), + if (double.parse(controller.totalPoints.toString()) < -30000) + Padding( + padding: const EdgeInsets.only(top: 12.0), + child: CupertinoButton( + color: Colors.white, + padding: const EdgeInsets.symmetric(horizontal: 20), + onPressed: () { + // Add your charge account logic here + }, + child: Text( + 'Charge your Account'.tr, + style: TextStyle( + color: AppColor.redColor, + fontWeight: FontWeight.bold), + ), + ), + ), + ], + ), + ), + ), + ); + } + + /// بطاقة لعرض ØªÙØ§ØµÙŠÙ„ Ø§Ù„Ù…Ø­ÙØ¸Ø© وخيارات الشراء + Widget _buildWalletDetailsCard( + BuildContext context, CaptainWalletController controller) { + return Card( + elevation: 4, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + _BudgetInfoRow( + title: 'Total Budget from trips is '.tr, + amount: controller.totalAmount, + onTap: () { + Get.snackbar( + icon: InkWell( + onTap: () async => await Get.put(TextToSpeechController()) + .speakText( + 'This amount for all trip I get from Passengers' + .tr), + child: const Icon(Icons.headphones)), + '${'Total Amount:'.tr} ${controller.totalAmount} ${'S.P'.tr}', + 'This amount for all trip I get from Passengers'.tr, + duration: const Duration(seconds: 6), + backgroundColor: AppColor.yellowColor, + snackPosition: SnackPosition.BOTTOM, + ); + }, + ), + const Divider(height: 32), + _BudgetInfoRow( + title: 'Total Budget from trips by\nCredit card is '.tr, + amount: controller.totalAmountVisa, + onTap: () { + Get.snackbar( + icon: InkWell( + onTap: () async => await Get.find() + .speakText( + 'This amount for all trip I get from Passengers and Collected For me in' + .tr + + ' SAFAR Wallet'.tr), + child: const Icon(Icons.headphones), + ), + '${'Total Amount:'.tr} ${controller.totalAmountVisa} ${'S.P'.tr}', + 'This amount for all trip I get from Passengers and Collected For me in' + .tr + + ' ${AppInformation.appName} Wallet'.tr, + duration: const Duration(seconds: 6), + backgroundColor: AppColor.redColor, + snackPosition: SnackPosition.BOTTOM, + ); + }, + ), + const SizedBox(height: 24), + _buildBuyPointsButton(controller), + const SizedBox(height: 16), + // _buildTransferBudgetButton(controller), // Uncomment if needed + _buildPurchaseInstructions(), + const SizedBox(height: 8), + _buildPointsOptions(), + ], + ), + ), + ); + } + + /// قسم العروض الترويجية + Widget _buildPromoSection(CaptainWalletController controller) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("Today's Promo".tr, style: AppStyle.headTitle), + const SizedBox(height: 10), + _PromoProgressCard( + title: 'Morning Promo'.tr, + timePromo: 'Morning Promo', + count: (controller.walletDate['message'][0]['morning_count']), + maxCount: 5, + description: + "this is count of your all trips in the morning promo today from 7:00am to 10:00am" + .tr, + controller: controller, + ), + const SizedBox(height: 16), + _PromoProgressCard( + title: 'Afternoon Promo'.tr, + timePromo: 'Afternoon Promo', + count: (controller.walletDate['message'][0]['afternoon_count']), + maxCount: 5, + description: + "this is count of your all trips in the Afternoon promo today from 3:00pm to 6:00 pm" + .tr, + controller: controller, + ), + ], + ); + } + + /// أزرار التنقل السÙلية + Widget _buildNavigationButtons() { + return Row( + children: [ + Expanded( + child: MyElevatedButton( + kolor: AppColor.blueColor, + title: 'Payment History'.tr, + onPressed: () async { + await Get.put(DriverWalletHistoryController()) + .getArchivePayment(); + Get.to(() => const PaymentHistoryDriverPage(), + transition: Transition.size); + }, + ), + ), + const SizedBox(width: 16), + Expanded( + child: MyElevatedButton( + kolor: AppColor.blueColor, + title: 'Weekly Budget'.tr, + onPressed: () async { + await Get.put(DriverWalletHistoryController()) + .getWeekllyArchivePayment(); + Get.to(() => const WeeklyPaymentPage(), + transition: Transition.size); + }, + ), + ), + ], + ); + } + + // --- Ø­Ø§ÙØ¸Øª على هذه الدوال كما هي لأنها تحتوي على منطق مهم --- + Widget _buildBuyPointsButton(CaptainWalletController controller) { + return MyElevatedButton( + title: 'You can buy points from your budget'.tr, + onPressed: () { + Get.defaultDialog( + title: 'Pay from my budget'.tr, + content: Form( + key: controller.formKey, + child: MyTextForm( + controller: controller.amountFromBudgetController, + label: + '${'You have in account'.tr} ${controller.totalAmountVisa}', + hint: '${'You have in account'.tr} ${controller.totalAmountVisa}', + type: TextInputType.number, + ), + ), + confirm: MyElevatedButton( + title: 'Pay'.tr, + onPressed: () async { + bool isAvailable = + await LocalAuthentication().isDeviceSupported(); + if (isAvailable) { + // Authenticate the user + bool didAuthenticate = await LocalAuthentication().authenticate( + localizedReason: + 'Use Touch ID or Face ID to confirm payment'.tr, + options: const AuthenticationOptions( + biometricOnly: true, + sensitiveTransaction: true, + )); + if (didAuthenticate) { + if (double.parse(controller.amountFromBudgetController.text) < + double.parse(controller.totalAmountVisa)) { + await controller.payFromBudget(); + } else { + Get.back(); + + mySnackeBarError('Your Budget less than needed'.tr); + } + } else { + // Authentication failed, handle accordingly + MyDialog().getDialog('Authentication failed'.tr, ''.tr, () { + Get.back(); + }); + } + } else { + MyDialog().getDialog('Biometric Authentication'.tr, + 'You should use Touch ID or Face ID to confirm payment'.tr, + () { + Get.back(); + }); + } + }, + ), + cancel: MyElevatedButton( + title: 'Cancel'.tr, + onPressed: () { + Get.back(); + }, + ), + ); + }, + ); + } + + Widget _buildPurchaseInstructions() { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.accentColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + border: Border.all(color: AppColor.accentColor.withOpacity(0.3)), + ), + child: Column( + children: [ + Text( + "You can purchase a budget to enable online access through the options listed below" + .tr, + textAlign: TextAlign.center, + style: AppStyle.title.copyWith(fontSize: 14), + ), + ], + ), + ), + ); + } + + Widget _buildPointsOptions() { + return SizedBox( + height: Get.height * 0.19, + child: ListView( + scrollDirection: Axis.horizontal, + children: [ + PointsCaptain( + kolor: AppColor.greyColor, + pricePoint: 10000, + countPoint: '10000'), + PointsCaptain( + kolor: AppColor.bronze, pricePoint: 20000, countPoint: '21000'), + PointsCaptain( + kolor: AppColor.goldenBronze, + pricePoint: 40000, + countPoint: '45000'), + PointsCaptain( + kolor: AppColor.gold, pricePoint: 100000, countPoint: '110000'), + ], + ), + ); + } +} + +/// ويدجت Ù…ÙØ­Ø³Ù‘Ù† لعرض ص٠معلومات الرصيد +class _BudgetInfoRow extends StatelessWidget { + final String title; + final String amount; + final VoidCallback onTap; + + const _BudgetInfoRow({ + required this.title, + required this.amount, + required this.onTap, + }); + + @override + Widget build(BuildContext context) { + return InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(12), + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Text( + title, + style: AppStyle.title.copyWith(fontSize: 16), + ), + ), + const SizedBox(width: 10), + Container( + decoration: BoxDecoration( + color: AppColor.accentColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + child: Text( + '$amount ${'S.P'.tr}', + style: + const TextStyle(fontSize: 18, fontWeight: FontWeight.bold), + ), + ), + ], + ), + ), + ); + } +} + +/// ويدجت Ù…ÙØ­Ø³Ù‘Ù† لعرض بطاقة العرض الترويجي +class _PromoProgressCard extends StatelessWidget { + final String title; + final String timePromo; + final int count; + final int maxCount; + final String description; + final CaptainWalletController controller; + + const _PromoProgressCard({ + required this.title, + required this.timePromo, + required this.count, + required this.maxCount, + required this.description, + required this.controller, + }); + + @override + Widget build(BuildContext context) { + return Card( + elevation: 2, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + clipBehavior: Clip.antiAlias, + child: InkWell( + onTap: () { + MyDialog().getDialog(title, description, () async { + if (count >= maxCount) { + controller.addDriverWalletFromPromo(timePromo, 50); + } + Get.back(); + }); + }, + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text(title, + style: + AppStyle.title.copyWith(fontWeight: FontWeight.bold)), + Text( + '$count / $maxCount', + style: AppStyle.title.copyWith(color: AppColor.blueColor), + ), + ], + ), + const SizedBox(height: 12), + ClipRRect( + borderRadius: BorderRadius.circular(10), + child: LinearProgressIndicator( + minHeight: 12, + value: count / maxCount, + backgroundColor: AppColor.accentColor.withOpacity(0.2), + color: count >= maxCount + ? AppColor.greenColor + : AppColor.blueColor, + ), + ), + ], + ), + ), + ), + ); + } +} + +// --- الدوال والويدجتس الخاصة Ø¨Ø§Ù„Ø¯ÙØ¹ ÙÙŠ سوريا تبقى كما هي --- +// This function is a placeholder for adding Syrian payment methods. +// You would implement the UI and logic for mobile wallets or other local options here. +Future addSyrianPaymentMethod( + CaptainWalletController captainWalletController) { + return Get.defaultDialog( + title: "Insert Payment Details".tr, + content: Form( + key: captainWalletController.formKeyAccount, + child: Column( + children: [ + Text( + "Insert your mobile wallet details to receive your money weekly" + .tr), + MyTextForm( + controller: captainWalletController + .cardBank, // Re-using for mobile number + label: "Insert mobile wallet number".tr, + hint: '0912 345 678', + type: TextInputType.phone), + const SizedBox( + height: 10, + ), + MyDropDownSyria() // Dropdown for Syrian providers + ], + )), + confirm: MyElevatedButton( + title: 'Ok'.tr, + onPressed: () async { + if (captainWalletController.formKeyAccount.currentState! + .validate()) { + Get.back(); + // Replace with your actual API endpoint and payload for Syria + var res = + await CRUD().post(link: AppLink.updateAccountBank, payload: { + "paymentProvider": + Get.find().dropdownValue.toString(), + "accountNumber": + captainWalletController.cardBank.text.toString(), + "id": box.read(BoxName.driverID).toString() + }); + print('res: $res'); + if (res != 'failure') { + mySnackbarSuccess('Payment details added successfully'.tr); + } + } + })); +} + +// A new GetX controller for the Syrian payout dropdown +class SyrianPayoutController extends GetxController { + String dropdownValue = 'syriatel'; + + void changeValue(String? newValue) { + if (newValue != null) { + dropdownValue = newValue; + update(); + } + } +} + +// A new Dropdown widget for Syrian mobile wallet providers +class MyDropDownSyria extends StatelessWidget { + const MyDropDownSyria({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(SyrianPayoutController()); + return GetBuilder(builder: (controller) { + return DropdownButton( + value: controller.dropdownValue, + icon: const Icon(Icons.arrow_drop_down), + elevation: 16, + isExpanded: true, + style: const TextStyle(color: Colors.deepPurple), + underline: Container( + height: 2, + color: Colors.deepPurpleAccent, + ), + onChanged: (String? newValue) { + controller.changeValue(newValue); + }, + items: ['syriatel', 'mtn'] + .map>((String value) { + return DropdownMenuItem( + value: value, + child: Text(value.tr), + ); + }).toList(), + ); + }); + } +} diff --git a/lib/views/home/my_wallet/weekly_payment_page.dart b/lib/views/home/my_wallet/weekly_payment_page.dart new file mode 100755 index 0000000..6e9245b --- /dev/null +++ b/lib/views/home/my_wallet/weekly_payment_page.dart @@ -0,0 +1,141 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; +import 'package:sefer_driver/views/widgets/mycircular.dart'; +import 'package:intl/intl.dart'; + +import '../../../controller/payment/driver_payment_controller.dart'; + +class WeeklyPaymentPage extends StatelessWidget { + const WeeklyPaymentPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(DriverWalletHistoryController()); + return MyScafolld( + title: 'Payment History'.tr, + body: [ + GetBuilder( + builder: (controller) => controller.isLoading + ? const MyCircularProgressIndicator() + : Column( + children: [ + Container( + width: Get.width * .8, + decoration: AppStyle.boxDecoration1, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Container( + decoration: AppStyle.boxDecoration1, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + controller.weeklyList.isEmpty + ? '0' + : controller.weeklyList[0] + ['totalAmount'] + .toString(), + style: AppStyle.number, + ), + ), + ), + ), + Text( + ' Total weekly is '.tr, + style: AppStyle.title, + ), + ], + ), + ), + const SizedBox( + height: 10, + ), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 10, vertical: 5), + child: SizedBox( + height: Get.height * .75, + child: controller.weeklyList.isNotEmpty + ? ListView.builder( + itemCount: controller.weeklyList.length, + itemBuilder: + (BuildContext context, int index) { + var list = controller.weeklyList[index]; + return Padding( + padding: const EdgeInsets.all(2.0), + child: Container( + decoration: AppStyle.boxDecoration1, + child: Padding( + padding: const EdgeInsets.all(4), + child: Column( + children: [ + Card( + elevation: 2, + color: list['paymentMethod'] == + 'visa' + ? AppColor.blueColor + : AppColor.secondaryColor, + child: Padding( + padding: + const EdgeInsets.all(8.0), + child: Text( + list['paymentMethod'] == + 'Remainder' + ? 'Remainder'.tr + : list['paymentMethod'] == + 'fromBudget' + ? 'fromBudget'.tr + : list[ + 'paymentMethod'], + style: AppStyle.title, + ), + ), + ), + Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + Card( + child: Padding( + padding: + const EdgeInsets.all( + 8.0), + child: Text( + list['amount'], + style: AppStyle.number, + ), + ), + ), + Text( + DateFormat( + 'yyyy-MM-dd hh:mm a') + .format(DateTime.parse( + list[ + 'dateUpdated'])), + style: AppStyle.number, + ), + ], + ), + ], + ), + ), + ), + ); + }, + ) + : const SizedBox(), + ), + ), + ], + ), + ) + ], + isleading: true); + } +} diff --git a/lib/views/home/on_boarding_page.dart b/lib/views/home/on_boarding_page.dart new file mode 100755 index 0000000..43363cd --- /dev/null +++ b/lib/views/home/on_boarding_page.dart @@ -0,0 +1,33 @@ +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/controller/auth/onboarding_controller.dart'; +import 'package:sefer_driver/onbording_page.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +class OnBoardingPage extends StatelessWidget { + OnBoardingControllerImp onBoardingControllerImp = + Get.put(OnBoardingControllerImp()); + + OnBoardingPage({super.key}); + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.secondaryColor, + body: SafeArea( + child: Column(mainAxisAlignment: MainAxisAlignment.center, children: [ + SizedBox( + height: Get.height * .7, + child: const CustomSliderOnBoarding(), + ), + const CustomDotControllerOnBoarding(), + // const Spacer(flex: 2), + const SizedBox(height: 20), + MyElevatedButton( + onPressed: () => onBoardingControllerImp.next(), + title: 'Next'.tr, + ) + ]), + )); + } +} diff --git a/lib/views/home/profile/behavior_page.dart b/lib/views/home/profile/behavior_page.dart new file mode 100644 index 0000000..c244f2a --- /dev/null +++ b/lib/views/home/profile/behavior_page.dart @@ -0,0 +1,89 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../controller/home/captin/behavior_controller.dart'; + +class BehaviorPage extends StatelessWidget { + const BehaviorPage({ + super.key, + }); + + @override + Widget build(BuildContext context) { + final controller = Get.put(DriverBehaviorController()); + controller.fetchDriverBehavior(); + + return Scaffold( + appBar: AppBar( + title: Text('Driver Behavior'.tr), + centerTitle: true, + ), + body: Obx(() { + if (controller.isLoading.value) { + return const Center(child: CircularProgressIndicator()); + } + + return SingleChildScrollView( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Card( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12)), + elevation: 4, + child: Padding( + padding: const EdgeInsets.all(16), + child: Column( + children: [ + const Text("Overall Behavior Score", + style: TextStyle( + fontSize: 20, fontWeight: FontWeight.bold)), + const SizedBox(height: 10), + Text( + "${controller.overallScore.value.toStringAsFixed(1)} / 100", + style: const TextStyle( + fontSize: 28, color: Colors.blue)), + ], + ), + ), + ), + const SizedBox(height: 20), + const Text("Last 10 Trips", + style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)), + const SizedBox(height: 10), + ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: controller.lastTrips.length, + itemBuilder: (context, index) { + var trip = controller.lastTrips[index]; + return Card( + elevation: 3, + child: ListTile( + leading: CircleAvatar( + backgroundColor: Colors.blue, + child: Text("${index + 1}", + style: const TextStyle(color: Colors.white)), + ), + title: Text("Trip ID: ${trip['trip_id']}"), + subtitle: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("Behavior Score: ${trip['behavior_score']}"), + Text("Max Speed: ${trip['max_speed']} km/h"), + Text("Hard Brakes: ${trip['hard_brakes']}"), + Text("Distance: ${trip['total_distance']} km"), + ], + ), + ), + ); + }, + ), + ], + ), + ); + }), + ); + } +} diff --git a/lib/views/home/profile/captains_cars.dart b/lib/views/home/profile/captains_cars.dart new file mode 100755 index 0000000..ce06550 --- /dev/null +++ b/lib/views/home/profile/captains_cars.dart @@ -0,0 +1,130 @@ +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/functions/encrypt_decrypt.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; +import 'package:sefer_driver/views/widgets/mycircular.dart'; +import 'package:sefer_driver/views/widgets/mydialoug.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; + +import '../../auth/captin/driver_car_controller.dart'; +import '../../widgets/elevated_btn.dart'; +import 'cars_inserting_page.dart'; + +class CaptainsCars extends StatelessWidget { + const CaptainsCars({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(DriverCarController()); + return MyScafolld( + title: "Add new car".tr, + body: [ + Column( + children: [ + MyElevatedButton( + title: "Add new car".tr, + onPressed: () async { + Get.to(() => CarsInsertingPage()); + }, + ), + Expanded( + child: GetBuilder( + builder: (controller) { + return controller.isLoading + ? const MyCircularProgressIndicator() + : ListView.builder( + itemCount: controller.cars.length, + itemBuilder: (context, index) { + final car = controller.cars[index]; + return Padding( + padding: const EdgeInsets.all(4.0), + child: Card( + color: car['isDefault'].toString() == '0' + ? AppColor.accentColor + : AppColor.blueColor, + elevation: 2, + child: ListTile( + leading: Icon( + Fontisto.car, + size: 50, + color: Color(int.parse(car['color_hex'] + .replaceFirst('#', '0xff'))), + ), + title: Text( + car['make'], + style: AppStyle.title, + ), // Assuming `make` is a field in each car item + subtitle: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + car['model'], + style: AppStyle.title, + ), + Container( + decoration: BoxDecoration( + border: Border.all( + color: AppColor.blueColor)), + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 4), + child: Text( + (car['car_plate']), + style: AppStyle.title, + ), + ), + ), + Text( + car['year'], + style: AppStyle.title, + ), + ], + ), // Assuming `model` is a field in each car item + // trailing: IconButton( + // icon: const Icon( + // Icons.delete, + // color: AppColor.redColor, + // ), + // onPressed: () { + // // Add logic here to remove a car + // MyDialog() + // .getDialog('Are you sure to delete this car', '', () { + // controller + // .removeCar(car['id'].toString()); + // }); + + // }, + // ), + onTap: () { + MyDialog().getDialog( + 'Are you sure to make this car as default' + .tr, + '', () { + Get.back(); + //make it default + controller.updateCarRegistration( + car['id'].toString(), + box.read(BoxName.driverID).toString(), + ); + }); + // Add logic to view or edit the car details + }, + ), + ), + ); + }, + ); + }, + ), + ), + ], + ) + ], + isleading: true); + } +} diff --git a/lib/views/home/profile/cars_inserting_page.dart b/lib/views/home/profile/cars_inserting_page.dart new file mode 100755 index 0000000..58c806d --- /dev/null +++ b/lib/views/home/profile/cars_inserting_page.dart @@ -0,0 +1,300 @@ +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../constant/colors.dart'; +import '../../../constant/links.dart'; +import '../../../constant/style.dart'; +import '../../../controller/functions/encrypt_decrypt.dart'; +import '../../../controller/functions/gemeni.dart'; +import '../../auth/captin/driver_car_controller.dart'; + +class CarsInsertingPage extends StatelessWidget { + CarsInsertingPage({super.key}); + final driverCarController = Get.put(DriverCarController()); + @override + Widget build(BuildContext context) { + Get.put(AI()); + return MyScafolld( + title: 'Insert New Car'.tr, + body: [ + Container( + color: AppColor.accentColor.withOpacity(.2), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: ListView( + // crossAxisAlignment: CrossAxisAlignment.center, + children: [ + egyptCarLicenceFront(), + egyptCarLicenceBack(), + const SizedBox(height: 10), + Text('Please make sure to read the license carefully.'.tr), + Text( + 'If your car license has the new design, upload the front side with two images.' + .tr), + const SizedBox(height: 10), + MyElevatedButton( + title: 'Please upload this license.'.tr, + onPressed: () { + final aiFront = + Get.find().responseIdCardDriverEgyptFront; + final aiBack = + Get.find().responseIdCardDriverEgyptBack; + driverCarController.addCarsForDrivers( + aiBack['chassis'].toString(), + aiBack['car_plate'].toString(), + aiBack['make'].toString(), + aiBack['model'].toString(), + aiBack['year'].toString(), + aiFront['LicenseExpirationDate'].toString(), + aiBack['color'].toString(), + aiBack['color_hex'].toString(), + aiFront['address'].toString(), + aiFront['owner'].toString(), + aiBack['inspection_date'].toString(), + aiBack['engine'].toString(), + aiBack['fuel'].toString(), + ); + }) + ], + ), + ), + ) + ], + isleading: true); + } +} + +GetBuilder egyptCarLicenceFront() { + return GetBuilder( + builder: (ai) { + if (ai.responseIdCardDriverEgyptFront.isNotEmpty) { + // No need to access ai.responseIdCardDriverEgyptBack anymore + final licenseExpiryDate = DateTime.parse( + ai.responseIdCardDriverEgyptFront['LicenseExpirationDate']); + + // Check if license has expired + final today = DateTime.now(); + final isLicenseExpired = licenseExpiryDate.isBefore(today); + + return Card( + elevation: 4.0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Text('Vehicle Details Front'.tr, + style: AppStyle.headTitle2), + IconButton( + onPressed: () async { + ai.allMethodForAI((ai.prompts[3]['prompt'].toString()), + AppLink.uploadEgypt, 'car_front'); + }, + icon: const Icon(Icons.refresh), + ), + ], + ), + const SizedBox(height: 8.0), + const Divider(color: AppColor.accentColor), + const SizedBox(height: 8.0), + // Removed Make, Model, etc. as they are not available + + Text( + '${'Plate Number'.tr}: ${ai.responseIdCardDriverEgyptFront['car_plate']}', + ), + const SizedBox(height: 8.0), + Text( + '${'Owner Name'.tr}: ${ai.responseIdCardDriverEgyptFront['owner']}', + ), + const SizedBox(height: 8.0), + Text( + '${'Address'.tr}: ${ai.responseIdCardDriverEgyptFront['address']}', + ), + const SizedBox(height: 8.0), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'License Expiry Date'.tr}: ${licenseExpiryDate.toString().substring(0, 10)}', + style: TextStyle( + color: isLicenseExpired ? Colors.red : Colors.green, + ), + ), + // Removed Fuel as it's not available + ], + ), + // Removed Inspection Date as it's not available + ], + ), + ), + ); + } + return Card( + child: InkWell( + onTap: () async { + ai.allMethodForAINewCar((ai.prompts[3]['prompt'].toString()), + AppLink.uploadEgypt1, 'car_front', 'carId'); //todo + }, + child: Column( + children: [ + Image.asset( + 'assets/images/3.png', + height: Get.height * .25, + width: double.maxFinite, + fit: BoxFit.fitHeight, + ), + Text( + 'Capture an Image of Your car license front '.tr, + style: AppStyle.title, + ), + ], + ), + ), + ); + }, + ); +} + +GetBuilder egyptCarLicenceBack() { + return GetBuilder( + builder: (ai) { + if (ai.responseIdCardDriverEgyptBack.isNotEmpty) { + // Get the tax expiry date from the response + final taxExpiryDate = + ai.responseIdCardDriverEgyptBack['tax_expiry'].toString(); + // final displacement = ai.responseIdCardDriverEgyptBack['displacement']; + // if (int.parse(displacement) < 1000) {} + // Get the inspection date from the response + final inspectionDate = + ai.responseIdCardDriverEgyptBack['inspection_date'].toString(); + final year = int.parse(inspectionDate.toString().split('-')[0]); + +// Set inspectionDateTime to December 31st of the given year + final inspectionDateTime = DateTime(year, 12, 31); + String carBackLicenseExpired = + inspectionDateTime.toString().split(' ')[0]; +// Get the current date + final today = DateTime.now(); + +// Try parsing the tax expiry date. If it fails, set it to null. + final taxExpiryDateTime = DateTime.tryParse(taxExpiryDate ?? ''); + final isExpired = + taxExpiryDateTime != null && taxExpiryDateTime.isBefore(today); +// Check if the inspection date is before today + bool isInspectionExpired = inspectionDateTime.isBefore(today); + + return Card( + elevation: 4.0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('Vehicle Details Back'.tr, style: AppStyle.headTitle2), + IconButton( + onPressed: () async { + ai.allMethodForAI((ai.prompts[4]['prompt'].toString()), + AppLink.uploadEgypt, 'car_back'); + }, + icon: const Icon(Icons.refresh), + ), + ], + ), + const SizedBox(height: 8.0), + const Divider(color: AppColor.accentColor), + const SizedBox(height: 8.0), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Make'.tr}: ${ai.responseIdCardDriverEgyptBack['make']}'), + Text( + '${'Model'.tr}: ${ai.responseIdCardDriverEgyptBack['model']}'), + ], + ), + const SizedBox(height: 8.0), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Year'.tr}: ${ai.responseIdCardDriverEgyptBack['year']}'), + Text( + '${'Chassis'.tr}: ${ai.responseIdCardDriverEgyptBack['chassis']}'), + ], + ), + const SizedBox(height: 8.0), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Color'.tr}: ${ai.responseIdCardDriverEgyptBack['color']}'), + Text( + '${'Displacement'.tr}: ${ai.responseIdCardDriverEgyptBack['displacement']} cc'), + ], + ), + const SizedBox(height: 8.0), + Text( + '${'Fuel'.tr}: ${ai.responseIdCardDriverEgyptBack['fuel']}'), + const SizedBox(height: 8.0), + if (taxExpiryDateTime != null) + Text( + '${'Tax Expiry Date'.tr}: $taxExpiryDate', + style: TextStyle( + color: isExpired ? Colors.red : Colors.green, + ), + ), + const SizedBox(height: 8.0), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Inspection Date'.tr}: $carBackLicenseExpired', + style: TextStyle( + color: isInspectionExpired ? Colors.red : Colors.green, + ), + ), + ], + ), + ], + ), + ), + ); + } + return Card( + child: InkWell( + onTap: () async { + ai.allMethodForAI((ai.prompts[4]['prompt'].toString()), + AppLink.uploadEgypt, 'car_back'); + }, + child: Column( + children: [ + Image.asset( + 'assets/images/4.png', + height: Get.height * .25, + width: double.maxFinite, + fit: BoxFit.fitHeight, + ), + Text( + 'Capture an Image of Your car license back'.tr, + style: AppStyle.title, + ), + ], + ), + ), + ); + }, + ); +} diff --git a/lib/views/home/profile/feed_back_page.dart b/lib/views/home/profile/feed_back_page.dart new file mode 100755 index 0000000..efa632a --- /dev/null +++ b/lib/views/home/profile/feed_back_page.dart @@ -0,0 +1,60 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/controller/home/profile/feed_back_controller.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; +import 'package:sefer_driver/views/widgets/mycircular.dart'; + +import '../../widgets/elevated_btn.dart'; + +class FeedBackPage extends StatelessWidget { + FeedBackPage({super.key}); + FeedBackController feedBackController = Get.put(FeedBackController()); + @override + Widget build(BuildContext context) { + return MyScafolld( + title: 'Feed Back'.tr, + body: [ + Padding( + padding: const EdgeInsets.all(26), + child: Form( + key: feedBackController.formKey, + child: Column( + children: [ + TextFormField( + controller: feedBackController.feedbackController, + decoration: InputDecoration( + border: const OutlineInputBorder(), + hintText: 'Enter your feedback here'.tr, + labelText: 'Feedback', + ), + validator: (value) { + if (value == null || value.isEmpty) { + return 'Please enter your feedback.'; + } + return null; + }, + ), + const SizedBox(height: 20), + feedBackController.isLoading + ? const MyCircularProgressIndicator() + : MyElevatedButton( + onPressed: () { + if (feedBackController.formKey.currentState! + .validate()) { + feedBackController.addFeedBack(); + + // Clear the feedback form + feedBackController.formKey.currentState!.reset(); + } + }, + title: 'Submit '.tr, + ), + ], + ), + ), + ), + ], + isleading: true, + ); + } +} diff --git a/lib/views/home/profile/passenger_profile_page.dart b/lib/views/home/profile/passenger_profile_page.dart new file mode 100755 index 0000000..12782dd --- /dev/null +++ b/lib/views/home/profile/passenger_profile_page.dart @@ -0,0 +1,303 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/profile/profile_controller.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; +import 'package:sefer_driver/views/widgets/my_textField.dart'; +import 'package:sefer_driver/views/widgets/mycircular.dart'; + +import '../../../controller/functions/log_out.dart'; + +class PassengerProfilePage extends StatelessWidget { + PassengerProfilePage({super.key}); + LogOutController logOutController = Get.put(LogOutController()); + @override + Widget build(BuildContext context) { + Get.put(ProfileController()); + + return MyScafolld( + isleading: true, + title: 'My Profile'.tr, + body: [ + GetBuilder( + builder: (controller) => controller.isloading + ? const MyCircularProgressIndicator() + : Padding( + padding: const EdgeInsets.symmetric(horizontal: 15), + child: SizedBox( + height: Get.height, + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Edit Profile'.tr, + style: AppStyle.headTitle2, + ), + ListTile( + title: Text( + 'Name'.tr, + style: AppStyle.title, + ), + leading: const Icon( + Icons.person_pin_rounded, + size: 35, + ), + trailing: const Icon(Icons.arrow_forward_ios), + subtitle: Text( + '${controller.prfoileData['first_name']} ${controller.prfoileData['last_name']}'), + onTap: () { + controller.updatField( + 'first_name', TextInputType.name); + }, + ), + ListTile( + title: Text( + 'Gender'.tr, + style: AppStyle.title, + ), + leading: Image.asset( + 'assets/images/gender.png', + width: 35, + ), + trailing: const Icon(Icons.arrow_forward_ios), + subtitle: Text( + controller.prfoileData['gender'].toString()), + onTap: () { + Get.defaultDialog( + title: 'Update Gender'.tr, + content: Column( + children: [ + GenderPicker(), + MyElevatedButton( + title: 'Update'.tr, + onPressed: () { + controller.updateColumn({ + 'id': controller.prfoileData['id'] + .toString(), + 'gender': controller.gender, + }); + Get.back(); + }, + ) + ], + )); + // controller.updatField('gender'); + }, + ), + ListTile( + title: Text( + 'Education'.tr, + style: AppStyle.title, + ), + leading: Image.asset( + 'assets/images/education.png', + width: 35, + ), + trailing: const Icon(Icons.arrow_forward_ios), + subtitle: Text(controller.prfoileData['education'] + .toString()), + onTap: () { + Get.defaultDialog( + barrierDismissible: true, + title: 'Update Education'.tr, + content: SizedBox( + height: 200, + child: Column( + children: [ + EducationDegreePicker(), + ], + ), + ), + confirm: MyElevatedButton( + title: 'Update Education'.tr, + onPressed: () { + controller.updateColumn({ + 'id': controller.prfoileData['id'] + .toString(), + 'education': + controller.selectedDegree, + }); + Get.back(); + }, + )); + }, + ), + ListTile( + title: Text( + 'Employment Type'.tr, + style: AppStyle.title, + ), + leading: Image.asset( + 'assets/images/employmentType.png', + width: 35, + ), + trailing: const Icon(Icons.arrow_forward_ios), + subtitle: Text(controller + .prfoileData['employmentType'] + .toString()), + onTap: () { + controller.updatField( + 'employmentType', TextInputType.name); + }, + ), + ListTile( + title: Text( + 'Marital Status'.tr, + style: AppStyle.title, + ), + leading: Image.asset( + 'assets/images/maritalStatus.png', + width: 35, + ), + trailing: const Icon(Icons.arrow_forward_ios), + subtitle: Text(controller + .prfoileData['maritalStatus'] + .toString()), + onTap: () { + controller.updatField( + 'maritalStatus', TextInputType.name); + }, + ), + ListTile( + title: Text( + 'SOS Phone'.tr, + style: AppStyle.title, + ), + leading: const Icon( + Icons.sos, + color: AppColor.redColor, + size: 35, + ), + trailing: const Icon(Icons.arrow_forward_ios), + subtitle: Text(controller.prfoileData['sosPhone'] + .toString()), + onTap: () async { + await controller.updatField( + 'sosPhone', TextInputType.phone); + box.write(BoxName.sosPhonePassenger, + controller.prfoileData['sosPhone']); + }, + ), + // const Spacer(), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + MyElevatedButton( + title: 'Sign Out'.tr, + onPressed: () { + LogOutController().logOutPassenger(); + }), + GetBuilder( + builder: (logOutController) { + return MyElevatedButton( + title: 'Delete My Account'.tr, + onPressed: () { + Get.defaultDialog( + title: + 'Are you sure to delete your account?' + .tr, + content: Form( + key: logOutController.formKey1, + child: MyTextForm( + controller: logOutController + .emailTextController, + label: 'Type your Email'.tr, + hint: 'Type your Email'.tr, + type: + TextInputType.emailAddress, + ), + ), + confirm: MyElevatedButton( + title: 'Delete My Account'.tr, + kolor: AppColor.redColor, + onPressed: () async { + await logOutController + .deletePassengerAccount(); + }), + cancel: MyElevatedButton( + title: 'No I want'.tr, + onPressed: () { + logOutController + .emailTextController + .clear(); + logOutController.update(); + Get.back(); + })); + }); + }), + ], + ), + ], + ), + ), + ), + )), + ], + ); + } +} + +class GenderPicker extends StatelessWidget { + final ProfileController controller = Get.put(ProfileController()); + + final List genderOptions = ['Male'.tr, 'Female'.tr, 'Other'.tr]; + + GenderPicker({super.key}); + + @override + Widget build(BuildContext context) { + return SizedBox( + height: 100, + child: CupertinoPicker( + itemExtent: 32.0, + onSelectedItemChanged: (int index) { + controller.setGender(genderOptions[index]); + }, + children: genderOptions.map((String value) { + return Text(value); + }).toList(), + ), + ); + } +} + +class EducationDegreePicker extends StatelessWidget { + final ProfileController controller = Get.put(ProfileController()); + + final List degreeOptions = [ + 'High School Diploma'.tr, + 'Associate Degree'.tr, + 'Bachelor\'s Degree'.tr, + 'Master\'s Degree'.tr, + 'Doctoral Degree'.tr, + ]; + + EducationDegreePicker({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return SizedBox( + height: 200, + child: CupertinoPicker( + // backgroundColor: AppColor.accentColor, + // looping: true, + squeeze: 2, + // diameterRatio: 5, + itemExtent: 32, + onSelectedItemChanged: (int index) { + controller.setDegree(degreeOptions[index]); + }, + children: degreeOptions.map((String value) { + return Text(value); + }).toList(), + ), + ); + } +} diff --git a/lib/views/home/profile/profile_captain.dart b/lib/views/home/profile/profile_captain.dart new file mode 100755 index 0000000..9da5a0b --- /dev/null +++ b/lib/views/home/profile/profile_captain.dart @@ -0,0 +1,377 @@ +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/functions/encrypt_decrypt.dart'; +import 'package:sefer_driver/controller/home/payment/captain_wallet_controller.dart'; +import 'package:sefer_driver/views/auth/captin/criminal_documents_page.dart'; +import 'package:sefer_driver/views/widgets/elevated_btn.dart'; +import 'package:sefer_driver/views/widgets/mycircular.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/controller/profile/captain_profile_controller.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; + +import '../my_wallet/walet_captain.dart'; +import 'behavior_page.dart'; +import 'captains_cars.dart'; + +class ProfileCaptain extends StatelessWidget { + ProfileCaptain({super.key}); + CaptainWalletController captainWalletController = CaptainWalletController(); + @override + Widget build(BuildContext context) { + Get.put(CaptainProfileController()); + return MyScafolld( + title: 'My Profile'.tr, + body: [ + GetBuilder( + builder: (controller) => Padding( + padding: const EdgeInsets.all(16.0), + child: SingleChildScrollView( + child: Center( + child: controller.isLoading + ? const MyCircularProgressIndicator() + : Column( + children: [ + Material( + elevation: 2, + borderRadius: BorderRadius.circular(8), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + InkWell( + onTap: () async { + // addBankCodeEgypt(captainWalletController); + }, + borderRadius: BorderRadius.circular(8), + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 16, horizontal: 16), + child: Text( + 'Add bank Account'.tr, + style: AppStyle.title, + ), + ), + ), + InkWell( + onTap: () async { + Get.to(() => BehaviorPage()); + }, + borderRadius: BorderRadius.circular(8), + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 16, horizontal: 16), + child: Text( + 'Show behavior page'.tr, + style: AppStyle.title, + ), + ), + ), + ], + ), + ), + const SizedBox(height: 15), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + MyElevatedButton( + title: 'Show my Cars'.tr, + onPressed: () async { + Get.to(() => CaptainsCars()); + }, + ), + // const SizedBox(height: 15), + MyElevatedButton( + title: 'Add criminal page'.tr, + onPressed: () async { + Get.to(() => CriminalDocumemtPage()); + }, + ), + ], + ), + SizedBox( + height: Get.height * .7, + child: DriverProfileCard( + driverId: + controller.captainProfileData['driverID'] ?? + '', + name: + '${((controller.captainProfileData['first_name']) ?? '')} ${((controller.captainProfileData['last_name']) ?? '')}', + phoneNumber: + controller.captainProfileData['phone'] ?? '', + email: + controller.captainProfileData['email'] ?? '', + birthdate: controller + .captainProfileData['birthdate'] is String + ? controller.captainProfileData['birthdate'] + : '', + gender: controller.captainProfileData['gender'] + is String + ? controller.captainProfileData['gender'] + : '', + education: controller + .captainProfileData['education'] is String + ? controller.captainProfileData['education'] + : '', + carMake: + controller.captainProfileData['make'] ?? '', + carModel: + controller.captainProfileData['model'] ?? '', + carPlate: + controller.captainProfileData['car_plate'] ?? + '', + carColor: + controller.captainProfileData['color'] ?? '', + vin: controller.captainProfileData['vin'] ?? '', + registrationDate: controller.captainProfileData[ + 'registration_date'] ?? + '', + expirationDate: controller + .captainProfileData['expiration_date'] ?? + '', + ratingCount: int.tryParse(controller + .captainProfileData['ratingCount'] + .toString()) ?? + 0, + ratingDriver: controller + .captainProfileData['ratingDriver'] != + null + ? double.tryParse(controller + .captainProfileData['ratingDriver'] + .toString()) ?? + 0 + : null, + age: int.tryParse(controller + .captainProfileData['age'] + .toString()) ?? + 0, + ), + ), + ], + ), + ), + ), + ), + ) + ], + isleading: true, + ); + } +} + +class DriverProfileCard extends StatelessWidget { + final String driverId; + final String name; + final String phoneNumber; + final String email; + final String birthdate; + final String gender; + final String education; + final String carMake; + final String carModel; + final String carPlate; + final String carColor; + final String vin; + final String registrationDate; + final String expirationDate; + final int ratingCount; + final double? ratingDriver; + final int age; + + DriverProfileCard({ + required this.driverId, + required this.name, + required this.phoneNumber, + required this.email, + required this.birthdate, + required this.gender, + required this.education, + required this.carMake, + required this.carModel, + required this.carPlate, + required this.carColor, + required this.vin, + required this.registrationDate, + required this.expirationDate, + required this.ratingCount, + required this.ratingDriver, + required this.age, + }); + + @override + Widget build(BuildContext context) { + return Container( + // elevation: 8, + decoration: AppStyle.boxDecoration1, + margin: const EdgeInsets.all(16), + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + style: AppStyle.title, + name, + ), + const SizedBox(height: 8), + Row( + children: [ + const Icon(Icons.phone), + const SizedBox(width: 8), + Text(style: AppStyle.title, phoneNumber), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + const Icon(Icons.calendar_today), + const SizedBox(width: 8), + Text( + style: AppStyle.title, + '${'birthdate'.tr} : $birthdate', + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + const Icon(Icons.wc), + const SizedBox(width: 8), + Text( + style: AppStyle.title, + '${'gender'.tr} : $gender', + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + const Icon(Icons.school), + const SizedBox(width: 8), + Text( + style: AppStyle.title, + '${'education'.tr} : $education', + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + const Icon(Icons.car_repair), + const SizedBox(width: 8), + Text( + style: AppStyle.title, + '${'Make'.tr} : $carMake', + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + const Icon(Icons.model_training), + const SizedBox(width: 8), + Text( + style: AppStyle.title, + '${'car_model'.tr} : $carModel', + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + const Icon(Icons.drive_eta), + const SizedBox(width: 8), + Text( + style: AppStyle.title, + '${'car_plate'.tr} : $carPlate', + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + const Icon(Icons.color_lens), + const SizedBox(width: 8), + Text( + style: AppStyle.title, + '${'car_color'.tr} : $carColor', + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + const Icon(Icons.confirmation_number), + const SizedBox(width: 8), + Text( + style: AppStyle.title, + '${'vin'.tr} : $vin', + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + const Icon(Icons.calendar_today), + const SizedBox(width: 8), + Text( + style: AppStyle.title, + '${'registration_date'.tr} : $registrationDate', + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + const Icon(Icons.calendar_today), + const SizedBox(width: 8), + Text( + style: AppStyle.title, + '${'expiration_date'.tr} : $expirationDate', + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + const Icon(Icons.star), + const SizedBox(width: 8), + Text( + style: AppStyle.title, + '${'rating_count'.tr} : $ratingCount', + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + const Icon(Icons.star_rate), + const SizedBox(width: 8), + ratingDriver != null + ? Text( + style: AppStyle.title, + '${'rating_driver'.tr} : $ratingDriver', + ) + : Text( + style: AppStyle.title, + '${'rating_driver'.tr} : 0', + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + const Icon(Icons.person), + const SizedBox(width: 8), + Text( + style: AppStyle.title, + '${'age'.tr} : $age', + ), + ], + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/views/home/profile/promos_passenger_page.dart b/lib/views/home/profile/promos_passenger_page.dart new file mode 100755 index 0000000..90b5a72 --- /dev/null +++ b/lib/views/home/profile/promos_passenger_page.dart @@ -0,0 +1,112 @@ +import 'package:animated_text_kit/animated_text_kit.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/controller/home/profile/promos_controller.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; + +import '../../../constant/colors.dart'; +import '../../../constant/style.dart'; +import '../../widgets/mycircular.dart'; + +class PromosPassengerPage extends StatelessWidget { + const PromosPassengerPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(PromosController()); + return MyScafolld( + title: 'Promos For today'.tr, + isleading: true, + body: [ + GetBuilder( + builder: (orderHistoryController) => orderHistoryController.isLoading + ? const MyCircularProgressIndicator() + : ListView.builder( + itemCount: orderHistoryController.promoList.length, + itemBuilder: (BuildContext context, int index) { + final rides = orderHistoryController.promoList[index]; + return Padding( + padding: const EdgeInsets.all(8.0), + child: Container( + decoration: const BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(12)), + color: AppColor.secondaryColor, + boxShadow: [ + BoxShadow( + color: AppColor.accentColor, + offset: Offset(-3, -3), + blurRadius: 0, + spreadRadius: 0, + blurStyle: BlurStyle.outer), + BoxShadow( + color: AppColor.accentColor, + offset: Offset(3, 3), + blurRadius: 0, + spreadRadius: 0, + blurStyle: BlurStyle.outer) + ]), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + AnimatedTextKit( + animatedTexts: [ + ScaleAnimatedText(rides['promo_code'], + textStyle: AppStyle.title), + WavyAnimatedText(rides['promo_code'], + textStyle: AppStyle.title), + FlickerAnimatedText( + rides['promo_code'], + textStyle: AppStyle.title), + WavyAnimatedText(rides['promo_code'], + textStyle: AppStyle.title), + ], + isRepeatingAnimation: true, + onTap: () {}, + ), + Text( + rides['description'], + style: AppStyle.title, + ), + ], + ), + Column( + children: [ + Text( + rides['validity_start_date'], + style: AppStyle.title, + ), + Text( + rides['validity_end_date'], + style: AppStyle.title, + ), + ], + ), + ], + ), + Text( + 'Copy this Promo to use it in your Ride!'.tr, + textAlign: TextAlign.center, + style: AppStyle.headTitle2 + .copyWith(color: AppColor.accentColor), + ) + ], + ), + ), + ), + ); + }, + ), + ) + ], + ); + } +} diff --git a/lib/views/home/profile/taarif_page.dart b/lib/views/home/profile/taarif_page.dart new file mode 100755 index 0000000..124437c --- /dev/null +++ b/lib/views/home/profile/taarif_page.dart @@ -0,0 +1,88 @@ +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/main.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; + +class TaarifPage extends StatelessWidget { + const TaarifPage({super.key}); + + @override + Widget build(BuildContext context) { + return MyScafolld(isleading: true, title: 'Tariffs'.tr, body: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 4), + child: ListView( + // mainAxisAlignment: MainAxisAlignment.start, + // crossAxisAlignment: CrossAxisAlignment.stretch, + clipBehavior: Clip.hardEdge, + children: [ + Table( + defaultVerticalAlignment: TableCellVerticalAlignment.middle, + border: TableBorder.symmetric(), + textBaseline: TextBaseline.alphabetic, + children: [ + TableRow( + // decoration: AppStyle.boxDecoration, + children: [ + Text('Minimum fare'.tr, style: AppStyle.title), + box.read(BoxName.countryCode) == 'Jordan' + ? Text('1 ${'JOD'.tr}', style: AppStyle.title) + : Text('20 ${'LE'.tr}', style: AppStyle.title), + ], + ), + TableRow( + children: [ + Text('Maximum fare'.tr, style: AppStyle.title), + box.read(BoxName.countryCode) == 'Jordan' + ? Text('200 ${'JOD'.tr}', style: AppStyle.title) + : Text('15000 ${'LE'.tr}', style: AppStyle.title), + ], + ), + TableRow( + children: [ + Text('Flag-down fee'.tr, style: AppStyle.title), + box.read(BoxName.countryCode) == 'Jordan' + ? Text('0.47 ${'JOD'.tr}', style: AppStyle.title) + : Text('15 ${'LE'.tr}', style: AppStyle.title), + ], + ), + TableRow( + children: [ + box.read(BoxName.countryCode) == 'Jordan' + ? Text('0.05 ${'JOD'.tr}/min and 0.21 ${'JOD'.tr}/km', + style: AppStyle.title) + : Text('1 ${'LE'.tr}/min and 4 ${'LE'.tr}/km', + style: AppStyle.title), + Text('Including Tax'.tr, style: AppStyle.title), + ], + ), + ], + ), + const SizedBox(height: 10), + Text('BookingFee'.tr, style: AppStyle.headTitle2), + const SizedBox(height: 10), + Text('10%', style: AppStyle.title), + const SizedBox(height: 20), + Text('Morning'.tr, style: AppStyle.headTitle2), + const SizedBox(height: 10), + Text( + 'from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)'.tr, + style: AppStyle.title), + const SizedBox(height: 20), + Text('Evening'.tr, style: AppStyle.headTitle2), + const SizedBox(height: 10), + Text( + 'from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)'.tr, + style: AppStyle.title), + const SizedBox(height: 20), + Text('Night'.tr, style: AppStyle.headTitle2), + const SizedBox(height: 10), + Text('from 23:59 till 05:30'.tr, style: AppStyle.title), + ], + ), + ), + ]); + } +} diff --git a/lib/views/lang/languages.dart b/lib/views/lang/languages.dart new file mode 100755 index 0000000..ed0954f --- /dev/null +++ b/lib/views/lang/languages.dart @@ -0,0 +1,150 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/views/home/Captin/home_captain/home_captin.dart'; + +import '../../controller/local/local_controller.dart'; + +class Language extends StatelessWidget { + const Language({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + middle: Text('Choose Language'.tr), + border: null, + ), + child: Material( + // Wrap SafeArea with Material widget + child: SafeArea( + child: GetBuilder( + builder: (controller) => Center( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildHeader(), + const SizedBox(height: 20), + Expanded( + child: ListView( + physics: const BouncingScrollPhysics(), + children: [ + _buildLanguageButton( + 'العربية', 'ar', controller, context, '🇪🇬'), + _buildLanguageButton('العربية (الخليج)', 'ar-gulf', + controller, context, '🇸🇦'), + _buildLanguageButton('العربية (المغرب)', 'ar-ma', + controller, context, '🇲🇦'), + _buildLanguageButton( + 'English', 'en', controller, context, '🇺🇸'), + _buildLanguageButton( + 'Türkçe', 'tr', controller, context, '🇹🇷'), + _buildLanguageButton( + 'Français', 'fr', controller, context, '🇫🇷'), + _buildLanguageButton( + 'Italiano', 'it', controller, context, '🇮🇹'), + _buildLanguageButton( + 'Deutsch', 'de', controller, context, '🇩🇪'), + _buildLanguageButton( + 'Ελληνικά', 'el', controller, context, '🇬🇷'), + _buildLanguageButton( + 'Español', 'es', controller, context, '🇪🇸'), + _buildLanguageButton( + 'ÙØ§Ø±Ø³ÛŒ', 'fa', controller, context, '🇮🇷'), + _buildLanguageButton( + '中文', 'zh', controller, context, '🇨🇳'), + _buildLanguageButton( + 'РуÑÑкий', 'ru', controller, context, '🇷🇺'), + _buildLanguageButton( + 'हिनà¥à¤¦à¥€', 'hi', controller, context, '🇮🇳'), + ], + ), + ), + ], + ), + ), + ), + ), + ), + ), + ); + } + + Widget _buildHeader() { + return Padding( + padding: const EdgeInsets.only(top: 20, bottom: 10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Language Options'.tr, + style: const TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + color: CupertinoColors.black, // Or your theme primary color + ), + textAlign: TextAlign.start, + ), + const SizedBox(height: 8), + Text( + 'Select your preferred language for the app interface.', + style: TextStyle( + fontSize: 16, + color: CupertinoColors.secondaryLabel, + ), + textAlign: TextAlign.start, + ), + ], + ), + ); + } + + Widget _buildLanguageButton(String title, String langCode, + LocaleController controller, BuildContext context, String flagIcon) { + return Container( + decoration: BoxDecoration( + color: CupertinoColors.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: CupertinoColors.systemGrey5.withOpacity(0.5), + spreadRadius: 1, + blurRadius: 3, + offset: const Offset(0, 2), + ), + ], + ), + child: ListTile( + leading: Text(flagIcon, + style: const TextStyle(fontSize: 28)), // Using flag icon as leading + title: Text( + title, + style: const TextStyle( + fontWeight: FontWeight.w500, + ), + ), + trailing: const Icon(CupertinoIcons.chevron_forward, + color: CupertinoColors.inactiveGray), + onTap: () async { + controller.changeLang(langCode); + showCupertinoDialog( + context: context, + builder: (context) => CupertinoAlertDialog( + title: Text('You should restart app to change language'.tr), + actions: [ + CupertinoDialogAction( + child: Text('Ok'.tr), + onPressed: () { + Get.offAll(() => HomeCaptain()); + }, + ), + ], + ), + ); + }, + ), + ); + } +} diff --git a/lib/views/notification/available_rides_page.dart b/lib/views/notification/available_rides_page.dart new file mode 100755 index 0000000..5c5dc4c --- /dev/null +++ b/lib/views/notification/available_rides_page.dart @@ -0,0 +1,353 @@ +import 'dart:convert'; + +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/notification/ride_available_controller.dart'; +import 'package:sefer_driver/views/widgets/my_scafold.dart'; +import 'package:sefer_driver/views/widgets/mycircular.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/links.dart'; +import '../../controller/firebase/firbase_messge.dart'; +import '../../controller/functions/crud.dart'; +import '../../controller/home/captin/home_captain_controller.dart'; +import '../../main.dart'; +import '../home/Captin/driver_map_page.dart'; +import '../widgets/mydialoug.dart'; + +class AvailableRidesPage extends StatelessWidget { + const AvailableRidesPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(RideAvailableController()); + return GetBuilder( + builder: (rideAvailableController) { + // rideAvailableController.sortRidesByDistance(); + return MyScafolld( + title: 'Available for rides'.tr, + body: [ + rideAvailableController.isLoading + ? const MyCircularProgressIndicator() + : + // : ListView.builder( + // itemCount: rideAvailableController + // .rideAvailableMap['message'] + // .where((rideInfo) { + // var driverType = + // box.read(BoxName.carTypeOfDriver).toString(); + // return (driverType == 'Comfort' && + // ['Speed', 'Comfort'] + // .contains(rideInfo['carType'])) || + // (driverType == 'Speed' && + // rideInfo['carType'] == 'Speed') || + // (driverType == 'Scooter' && + // rideInfo['carType'] == 'Scooter') || + // (driverType == 'Awfar Car' && + // rideInfo['carType'] == 'Awfar Car') || + // (driverType == 'Lady' && + // ['Comfort', 'Speed', 'Lady'] + // .contains(rideInfo['carType'])); + // }).length, + // itemBuilder: (context, index) { + // var filteredRides = rideAvailableController + // .rideAvailableMap['message'] + // .where((rideInfo) { + // var driverType = + // box.read(BoxName.carTypeOfDriver).toString(); + // return (driverType == 'Comfort' && + // ['Speed', 'Comfort'] + // .contains(rideInfo['carType'])) || + // (driverType == 'Speed' && + // rideInfo['carType'] == 'Speed') || + // (driverType == 'Awfar Car' && + // rideInfo['carType'] == 'Awfar Car') || + // (driverType == 'Scooter' && + // rideInfo['carType'] == 'Scooter') || + // (driverType == 'Lady' && + // ['Comfort', 'Speed', 'Lady'] + // .contains(rideInfo['carType'])); + // }).toList(); + + // return RideAvailableCard( + // rideInfo: filteredRides[index], + // ); + // }, + // ) + ListView.builder( + itemCount: rideAvailableController + .rideAvailableMap['message'] + .where((rideInfo) { + var driverType = + box.read(BoxName.carTypeOfDriver).toString(); + switch (driverType) { + case 'Comfort': + return ['Speed', 'Comfort'] + .contains(rideInfo['carType']); + case 'Speed': + case 'Scooter': + case 'Awfar Car': + return rideInfo['carType'] == driverType; + case 'Lady': + return ['Comfort', 'Speed', 'Lady'] + .contains(rideInfo['carType']); + default: + return false; + } + }).length, + itemBuilder: (context, index) { + var filteredRides = rideAvailableController + .rideAvailableMap['message'] + .where((rideInfo) { + var driverType = + box.read(BoxName.carTypeOfDriver).toString(); + switch (driverType) { + case 'Comfort': + return ['Speed', 'Comfort'] + .contains(rideInfo['carType']); + case 'Speed': + case 'Scooter': + case 'Awfar Car': + return rideInfo['carType'] == driverType; + case 'Lady': + return ['Comfort', 'Speed', 'Lady'] + .contains(rideInfo['carType']); + default: + return false; + } + }).toList(); + + return RideAvailableCard( + rideInfo: filteredRides[index], + ); + }, + ) + // rideAvailableController.isLoading + // ? const MyCircularProgressIndicator() + // : ListView.builder( + // itemCount: rideAvailableController + // .rideAvailableMap['message'].length, + // itemBuilder: (context, index) => RideAvailableCard( + // rideInfo: rideAvailableController + // .rideAvailableMap['message'][index], + // ), + // ) + ], + isleading: true); + }); + } +} + +class RideAvailableCard extends StatelessWidget { + final Map rideInfo; + + const RideAvailableCard({Key? key, required this.rideInfo}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Card( + margin: const EdgeInsets.all(8.0), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + elevation: 4, + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildLocationRow('↑', rideInfo['startName'], AppColor.greenColor), + const SizedBox(height: 8), + _buildLocationRow('↓', rideInfo['endName'], Colors.red), + const SizedBox(height: 16), + _buildInfoRow(), + const SizedBox(height: 16), + _buildActionRow(), + ], + ), + ), + ); + } + + Widget _buildLocationRow(String icon, String location, Color iconColor) { + return Row( + children: [ + Text( + icon, + style: TextStyle( + fontSize: 20, fontWeight: FontWeight.bold, color: iconColor), + ), + const SizedBox(width: 8), + Expanded( + child: Text( + location, + style: AppStyle.subtitle, + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + ), + ], + ); + } + + Widget _buildInfoRow() { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('${'Price:'.tr} ${rideInfo['price']} \$', style: AppStyle.title), + Text( + rideInfo['carType'], + style: AppStyle.title.copyWith(color: AppColor.greenColor), + ), + ], + ); + } + + Widget _buildActionRow() { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('📈 ${rideInfo['passengerRate']}', style: AppStyle.title), + const SizedBox(height: 4), + Text( + '📠${rideInfo['distance']} ${'KM'.tr}', + style: AppStyle.title.copyWith(color: AppColor.greenColor), + ), + ], + ), + ElevatedButton( + onPressed: () => _acceptRide(), + style: ElevatedButton.styleFrom( + backgroundColor: AppColor.greenColor, + shape: + RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), + ), + child: Text('Accept'.tr), + ), + ], + ); + } + + void _acceptRide() async { + var res = await CRUD().post(link: AppLink.updateStausFromSpeed, payload: { + 'id': rideInfo['id'], + 'rideTimeStart': DateTime.now().toString(), + 'status': 'Apply', + 'driver_id': box.read(BoxName.driverID), + }); + if (AppLink.endPoint.toString() != AppLink.seferCairoServer) { + CRUD().post( + link: '${AppLink.endPoint}rides/updateStausFromSpeed.php', + payload: { + 'id': rideInfo['id'], + 'rideTimeStart': DateTime.now().toString(), + 'status': 'Apply', + 'driver_id': box.read(BoxName.driverID), + }); + } + + // .then((value) { + // var json = jsonDecode(res); + if (res != "failure") { + List bodyToPassenger = [ + box.read(BoxName.driverID).toString(), + box.read(BoxName.nameDriver).toString(), + box.read(BoxName.tokenDriver).toString(), + ]; + box.write(BoxName.statusDriverLocation, 'on'); + await CRUD().postFromDialogue(link: AppLink.addDriverOrder, payload: { + 'driver_id': box.read(BoxName.driverID), + 'order_id': rideInfo['id'], + 'status': 'Apply' + }); + await CRUD().post(link: AppLink.updateRides, payload: { + 'id': rideInfo['id'], + 'DriverIsGoingToPassenger': DateTime.now().toString(), + 'status': 'Applied' + }); + await CRUD().post( + link: AppLink.updateWaitingRide, + payload: {'id': rideInfo['id'], 'status': 'Applied'}); + if (AppLink.endPoint.toString() != AppLink.seferCairoServer) { + CRUD().postFromDialogue( + link: '${AppLink.endPoint}/driver_order/add.php', + payload: { + 'driver_id': box.read(BoxName.driverID), + // box.read(BoxName.driverID).toString(), + 'order_id': rideInfo['id'], + 'status': 'Apply' + }); + CRUD().post(link: '${AppLink.endPoint}/rides/update.php', payload: { + 'id': rideInfo['id'], + 'DriverIsGoingToPassenger': DateTime.now().toString(), + 'status': 'Applied' + }); + CRUD().post( + link: + "${AppLink.endPoint}/ride/notificationCaptain/updateWaitingTrip.php", + payload: {'id': rideInfo['id'], 'status': 'Applied'}); + } + + FirebaseMessagesController().sendNotificationToPassengerToken( + "Accepted Ride".tr, + 'your ride is Accepted'.tr, + // arguments['DriverList'][9].toString(), + rideInfo['passengerToken'].toString(), + // box.read(BoxName.tokenDriver).toString(), + bodyToPassenger, + 'start.wav'); + Get.back(); + Get.to(() => PassengerLocationMapPage(), arguments: { + 'passengerLocation': rideInfo['start_location'].toString(), + 'passengerDestination': rideInfo['end_location'].toString(), + 'Duration': rideInfo['duration'].toString(), + 'totalCost': rideInfo['price'].toString(), + 'Distance': rideInfo['distance'].toString(), + 'name': rideInfo['first_name'].toString(), + 'phone': rideInfo['phone'].toString(), + 'email': rideInfo['email'].toString(), + 'WalletChecked': rideInfo['payment_method'].toString(), + 'tokenPassenger': rideInfo['passengerToken'].toString(), + 'direction': + 'https://www.google.com/maps/dir/${rideInfo['start_location']}/${rideInfo['end_location']}/', + 'DurationToPassenger': rideInfo['duration'].toString(), + 'rideId': rideInfo['id'].toString(), + 'passengerId': rideInfo['passenger_id'].toString(), + 'driverId': box.read(BoxName.driverID).toString(), + 'durationOfRideValue': rideInfo['duration'].toString(), + 'paymentAmount': rideInfo['price'].toString(), + 'paymentMethod': 'cash'.toString() == //todo fix payment method + 'true' + ? 'visa' + : 'cash', + 'isHaveSteps': 'startEnd'.toString(), + 'step0': ''.toString(), + 'step1': ''.toString(), + 'step2': ''.toString(), + 'step3': ''.toString(), + 'step4': ''.toString(), + 'passengerWalletBurc': rideInfo['bruc'].toString(), + 'timeOfOrder': DateTime.now().toString(), + 'totalPassenger': rideInfo['price'].toString(), + 'carType': rideInfo['carType'].toString(), + 'kazan': Get.find().kazan.toString(), + }); + } else { + MyDialog().getDialog( + "This ride is already taken by another driver.".tr, '', () { + CRUD().post( + link: AppLink.deleteAvailableRide, payload: {'id': rideInfo['id']}); + if (AppLink.endPoint.toString() != AppLink.seferCairoServer) { + CRUD().post( + link: + '${AppLink.endPoint}/ride/notificationCaptain/deleteAvailableRide.php', + payload: {'id': rideInfo['id']}); + } + Get.back(); + }); + } + } +} diff --git a/lib/views/notification/notification_captain.dart b/lib/views/notification/notification_captain.dart new file mode 100755 index 0000000..61ce4d1 --- /dev/null +++ b/lib/views/notification/notification_captain.dart @@ -0,0 +1,87 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/controller/notification/notification_captain_controller.dart'; +import 'package:flutter/cupertino.dart'; + +class NotificationCaptain extends StatelessWidget { + const NotificationCaptain({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + Get.put(NotificationCaptainController()); + + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + middle: Text('Notifications'.tr), + leading: CupertinoNavigationBarBackButton( + onPressed: () => Get.back(), + ), + ), + child: SafeArea( + child: GetBuilder( + builder: (notificationCaptainController) => + notificationCaptainController.isLoading + ? const Center(child: CupertinoActivityIndicator()) + : ListView.builder( + itemCount: notificationCaptainController + .notificationData['message'].length, + itemBuilder: (BuildContext context, int index) { + if (notificationCaptainController + .notificationData['message'] == + "No notification data found") { + _showCupertinoDialog(context, 'No Notifications', + 'There are no notifications at this time.'); + return const SizedBox.shrink(); + } + var res = notificationCaptainController + .notificationData['message'][index]; + return CupertinoListTile( + leading: const Icon(CupertinoIcons.bell_fill), + title: Text( + res['title'], + style: + CupertinoTheme.of(context).textTheme.textStyle, + ), + subtitle: Text( + res['body'], + style: CupertinoTheme.of(context) + .textTheme + .tabLabelTextStyle, + ), + onTap: () { + _showCupertinoDialog( + context, + res['title'], + res['body'], + onConfirm: () { + notificationCaptainController + .updateNotification(res['id'].toString()); + Navigator.of(context).pop(); + }, + ); + }, + ); + }, + ), + ), + ), + ); + } + + void _showCupertinoDialog(BuildContext context, String title, String content, + {VoidCallback? onConfirm}) { + showCupertinoDialog( + context: context, + builder: (BuildContext context) => CupertinoAlertDialog( + title: Text(title), + content: Text(content), + actions: [ + CupertinoDialogAction( + child: const Text('OK'), + onPressed: onConfirm ?? () => Navigator.of(context).pop(), + ), + ], + ), + ); + } +} diff --git a/lib/views/notification/notification_page.dart b/lib/views/notification/notification_page.dart new file mode 100755 index 0000000..baab42b --- /dev/null +++ b/lib/views/notification/notification_page.dart @@ -0,0 +1,83 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/style.dart'; + +import '../../controller/notification/passenger_notification_controller.dart'; +import '../widgets/elevated_btn.dart'; +import '../widgets/my_scafold.dart'; +import '../widgets/mycircular.dart'; + +class NotificationPage extends StatelessWidget { + const NotificationPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(PassengerNotificationController()); + return MyScafolld( + isleading: true, + title: 'Notifications', + body: [ + GetBuilder( + builder: (notificationCaptainController) => + notificationCaptainController.isloading + ? const MyCircularProgressIndicator() + : SafeArea( + child: ListView.builder( + itemCount: notificationCaptainController + .notificationData['message'].length, + itemBuilder: (BuildContext context, int index) { + if (notificationCaptainController + .notificationData['message'] == + "No notification data found") { + Get.defaultDialog(); + } + var res = notificationCaptainController + .notificationData['message'][index]; + return Card( + elevation: 4, + color: res['isShown'] == 'true' + ? AppColor.secondaryColor.withOpacity(.5) + : AppColor.secondaryColor.withOpacity(.9), + child: ListTile( + onTap: () { + Get.defaultDialog( + title: res['title'], + titleStyle: AppStyle.title, + content: SizedBox( + width: Get.width * .8, + // height: Get.height * .4, + child: Text( + res['body'], + style: AppStyle.title, + ), + ), + confirm: MyElevatedButton( + title: 'Ok', + onPressed: () { + notificationCaptainController + .updateNotification( + res['id'].toString()); + })); + }, + leading: res['isShown'] == 'true' + ? const Icon( + Icons.notifications_off_outlined) + : const Icon(Icons.notifications_active), + title: Text( + res['title'], + style: AppStyle.title, + ), + subtitle: Text( + res['body'], + style: AppStyle.subtitle, + ), + ), + ); + }, + ), + )) + ], + ); + } +} diff --git a/lib/views/widgets/circle_container.dart b/lib/views/widgets/circle_container.dart new file mode 100755 index 0000000..33ce6ec --- /dev/null +++ b/lib/views/widgets/circle_container.dart @@ -0,0 +1,70 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/colors.dart'; + +import 'mydialoug.dart'; + +class MyCircleContainer extends StatelessWidget { + final Widget child; + final Color backgroundColor; + final Color borderColor; + + MyCircleContainer({ + Key? key, + required this.child, + this.backgroundColor = AppColor.secondaryColor, + this.borderColor = AppColor.accentColor, + }) : super(key: key); + + final controller = Get.put(CircleController()); + + @override + Widget build(BuildContext context) { + return GetBuilder( + builder: ((controller) => GestureDetector( + onTap: () { + controller.changeColor(); + MyDialog().getDialog( + 'Rejected Orders Count'.tr, + 'This is the total number of rejected orders per day after accepting the orders' + .tr, () { + Get.back(); + }); + }, + child: AnimatedContainer( + onEnd: () { + controller.onEnd(); + }, + duration: const Duration(milliseconds: 300), + width: controller.size, + height: controller.size, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: controller.backgroundColor, + border: Border.all( + color: borderColor, + width: 1, + ), + ), + child: Center(child: child), + ), + ))); + } +} + +class CircleController extends GetxController { + Color backgroundColor = AppColor.secondaryColor; + double size = 40; + void changeColor() { + backgroundColor = backgroundColor == AppColor.secondaryColor + ? AppColor.accentColor + : AppColor.secondaryColor; + size = 60; + update(); + } + + void onEnd() { + size = 40; + update(); + } +} diff --git a/lib/views/widgets/elevated_btn.dart b/lib/views/widgets/elevated_btn.dart new file mode 100755 index 0000000..be60a32 --- /dev/null +++ b/lib/views/widgets/elevated_btn.dart @@ -0,0 +1,58 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:flutter/services.dart'; +import 'package:vibration/vibration.dart'; + +import '../../constant/box_name.dart'; +import '../../constant/colors.dart'; +import '../../main.dart'; + +class MyElevatedButton extends StatelessWidget { + final String title; + final VoidCallback onPressed; + final Color kolor; + final int vibrateDuration; + const MyElevatedButton({ + Key? key, + required this.title, + required this.onPressed, + this.kolor = AppColor.primaryColor, + this.vibrateDuration = 100, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + bool vibrate = box.read(BoxName.isvibrate) ?? true; + return ElevatedButton( + style: ButtonStyle( + backgroundColor: WidgetStateProperty.all(kolor), + shadowColor: WidgetStateProperty.all(Colors.transparent), + shape: WidgetStateProperty.all( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), + ), + ), + onPressed: () async { + // Handle haptic feedback for both iOS and Android + if (vibrate == true) { + if (Platform.isIOS) { + HapticFeedback.selectionClick(); + } else if (Platform.isAndroid) { + await Vibration.vibrate(duration: vibrateDuration); + } else {} + } + + // Ensure the onPressed callback is called after haptic feedback + onPressed(); + }, + child: Text( + title, + textAlign: TextAlign.center, + style: AppStyle.title.copyWith(color: AppColor.secondaryColor), + ), + ); + } +} diff --git a/lib/views/widgets/error_snakbar.dart b/lib/views/widgets/error_snakbar.dart new file mode 100755 index 0000000..0a129e4 --- /dev/null +++ b/lib/views/widgets/error_snakbar.dart @@ -0,0 +1,123 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; + +import '../../constant/colors.dart'; + +class SnackbarConfig { + static const duration = Duration(seconds: 3); + static const animationDuration = Duration(milliseconds: 300); + static const margin = EdgeInsets.symmetric(horizontal: 16, vertical: 10); + static const borderRadius = 12.0; + static const elevation = 6.0; + + static final BoxShadow shadow = BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 10, + offset: const Offset(0, 2), + ); +} + +SnackbarController mySnackeBarError(String message) { + // Trigger error haptic feedback + HapticFeedback.mediumImpact(); + + return Get.snackbar( + 'Error'.tr, + message, + backgroundColor: AppColor.redColor.withOpacity(0.95), + colorText: AppColor.secondaryColor, + icon: const Icon( + Icons.error_outline_rounded, + color: AppColor.secondaryColor, + size: 28, + ), + shouldIconPulse: true, + snackPosition: SnackPosition.TOP, + margin: SnackbarConfig.margin, + borderRadius: SnackbarConfig.borderRadius, + duration: SnackbarConfig.duration, + animationDuration: SnackbarConfig.animationDuration, + forwardAnimationCurve: Curves.easeOutCirc, + reverseAnimationCurve: Curves.easeInCirc, + boxShadows: [SnackbarConfig.shadow], + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 12), + titleText: Text( + 'Error'.tr, + style: const TextStyle( + fontWeight: FontWeight.w700, + color: Colors.white, + fontSize: 16, + letterSpacing: 0.2, + ), + ), + messageText: Text( + message, + style: TextStyle( + color: Colors.white.withOpacity(0.95), + fontSize: 14, + height: 1.3, + ), + ), + onTap: (_) { + HapticFeedback.lightImpact(); + Get.closeCurrentSnackbar(); + }, + isDismissible: true, + dismissDirection: DismissDirection.horizontal, + overlayBlur: 0.8, + overlayColor: Colors.black12, + ); +} + +SnackbarController mySnackbarSuccess(String message) { + // Trigger success haptic feedback + HapticFeedback.lightImpact(); + + return Get.snackbar( + 'Success'.tr, + message, + backgroundColor: AppColor.greenColor.withOpacity(0.95), + colorText: AppColor.secondaryColor, + icon: const Icon( + Icons.check_circle_outline_rounded, + color: AppColor.secondaryColor, + size: 28, + ), + shouldIconPulse: true, + snackPosition: SnackPosition.TOP, + margin: SnackbarConfig.margin, + borderRadius: SnackbarConfig.borderRadius, + duration: SnackbarConfig.duration, + animationDuration: SnackbarConfig.animationDuration, + forwardAnimationCurve: Curves.easeOutCirc, + reverseAnimationCurve: Curves.easeInCirc, + boxShadows: [SnackbarConfig.shadow], + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 12), + titleText: Text( + 'Success'.tr, + style: const TextStyle( + fontWeight: FontWeight.w700, + color: Colors.white, + fontSize: 16, + letterSpacing: 0.2, + ), + ), + messageText: Text( + message, + style: TextStyle( + color: Colors.white.withOpacity(0.95), + fontSize: 14, + height: 1.3, + ), + ), + onTap: (_) { + HapticFeedback.lightImpact(); + Get.closeCurrentSnackbar(); + }, + isDismissible: true, + dismissDirection: DismissDirection.horizontal, + overlayBlur: 0.8, + overlayColor: Colors.black12, + ); +} diff --git a/lib/views/widgets/icon_widget_menu.dart b/lib/views/widgets/icon_widget_menu.dart new file mode 100755 index 0000000..54638a2 --- /dev/null +++ b/lib/views/widgets/icon_widget_menu.dart @@ -0,0 +1,66 @@ +import 'package:flutter/material.dart'; +import 'package:sefer_driver/constant/style.dart'; + +import '../../constant/colors.dart'; + +class IconWidgetMenu extends StatelessWidget { + const IconWidgetMenu({ + Key? key, + required this.onpressed, + required this.icon, + required this.title, + }) : super(key: key); + + final VoidCallback onpressed; + final IconData icon; + final String title; + + @override + Widget build(BuildContext context) { + return InkWell( + onTap: onpressed, + child: Padding( + padding: const EdgeInsets.only(top: 25), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + width: 50, + decoration: const BoxDecoration( + color: AppColor.secondaryColor, + shape: BoxShape.circle, + boxShadow: [ + BoxShadow( + color: AppColor.secondaryColor, + offset: Offset(-2, -2), + blurRadius: 0, + spreadRadius: 0, + blurStyle: BlurStyle.outer, + ), + BoxShadow( + color: AppColor.accentColor, + offset: Offset(3, 3), + blurRadius: 0, + spreadRadius: 0, + blurStyle: BlurStyle.outer, + ), + ], + ), + child: Center( + child: Icon( + icon, + size: 30, + color: AppColor.primaryColor, + ), + ), + ), + Text( + title, + style: AppStyle.subtitle, + ) + ], + ), + ), + ); + } +} diff --git a/lib/views/widgets/my_circular_indicator_timer.dart b/lib/views/widgets/my_circular_indicator_timer.dart new file mode 100755 index 0000000..07f3cad --- /dev/null +++ b/lib/views/widgets/my_circular_indicator_timer.dart @@ -0,0 +1,73 @@ +import 'package:sefer_driver/constant/style.dart'; +import 'package:flutter/material.dart'; +import 'dart:async'; + +class MyCircularProgressIndicatorWithTimer extends StatelessWidget { + final Color backgroundColor; + final bool isLoading; + + MyCircularProgressIndicatorWithTimer({ + Key? key, + this.backgroundColor = Colors.transparent, + required this.isLoading, + }) : super(key: key); + + final StreamController _streamController = StreamController(); + + void startTimer() { + int _timeLeft = 60; + Timer.periodic(const Duration(seconds: 1), (timer) { + if (_timeLeft > 0 && isLoading) { + _streamController.add(_timeLeft); + _timeLeft--; + } else { + timer.cancel(); + _streamController.close(); + } + }); + } + + @override + Widget build(BuildContext context) { + if (isLoading) { + startTimer(); + } + + return Center( + child: Container( + width: 200, + height: 200, + decoration: BoxDecoration( + color: backgroundColor, + shape: BoxShape.circle, + ), + child: Stack( + children: [ + const Center(child: CircularProgressIndicator()), + Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Align( + alignment: Alignment.center, + child: Image.asset( + 'assets/images/logo.gif', + width: 140, + height: 140, + ), + ), + const SizedBox(height: 10), + StreamBuilder( + stream: _streamController.stream, + initialData: 60, + builder: (context, snapshot) { + return Text('${snapshot.data}', style: AppStyle.title); + }, + ), + ], + ), + ], + ), + ), + ); + } +} diff --git a/lib/views/widgets/my_scafold.dart b/lib/views/widgets/my_scafold.dart new file mode 100755 index 0000000..fe50446 --- /dev/null +++ b/lib/views/widgets/my_scafold.dart @@ -0,0 +1,50 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../constant/colors.dart'; +import '../../constant/style.dart'; + +class MyScafolld extends StatelessWidget { + const MyScafolld({ + super.key, + required this.title, + required this.body, + this.action = const Icon( + Icons.clear, + color: AppColor.secondaryColor, + ), + required this.isleading, + }); + + final String title; + final List body; + final Widget action; + final bool isleading; + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.secondaryColor, + appBar: AppBar( + backgroundColor: AppColor.secondaryColor, + elevation: 0, + leading: isleading + ? IconButton( + onPressed: () { + Get.back(); + }, + icon: const Icon( + Icons.arrow_back_ios_new, + color: AppColor.primaryColor, + ), + ) + : const SizedBox(), + actions: [action], + title: Text( + title, + style: AppStyle.title.copyWith(fontSize: 30), + ), + ), + body: SafeArea(child: Stack(children: body))); + } +} diff --git a/lib/views/widgets/my_textField.dart b/lib/views/widgets/my_textField.dart new file mode 100755 index 0000000..8c44911 --- /dev/null +++ b/lib/views/widgets/my_textField.dart @@ -0,0 +1,94 @@ +import 'package:flutter/cupertino.dart'; +import 'package:get/get.dart'; +import 'package:get_storage/get_storage.dart'; +import 'package:sefer_driver/constant/box_name.dart'; + +class MyTextForm extends StatelessWidget { + const MyTextForm({ + Key? key, + required this.controller, + required this.label, + required this.hint, + required this.type, + }) : super(key: key); + + final TextEditingController controller; + final String label, hint; + final TextInputType type; + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.only(bottom: 10), + child: SizedBox( + width: Get.width * .8, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + label.tr, + style: TextStyle( + color: CupertinoColors.label, + fontSize: 16, + fontWeight: FontWeight.w600, + ), + ), + const SizedBox(height: 8), + CupertinoTextField( + controller: controller, + keyboardType: type, + placeholder: hint.tr, + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + decoration: BoxDecoration( + color: CupertinoColors.systemBackground, + border: Border.all(color: CupertinoColors.systemGrey4), + borderRadius: BorderRadius.circular(8), + ), + style: const TextStyle(color: CupertinoColors.label), + placeholderStyle: + const TextStyle(color: CupertinoColors.placeholderText), + ), + const SizedBox(height: 4), + ValueListenableBuilder( + valueListenable: controller, + builder: (context, value, child) { + String? errorText = _getErrorText(value.text); + return errorText != null + ? Text( + errorText, + style: const TextStyle( + color: CupertinoColors.destructiveRed, + fontSize: 12), + ) + : const SizedBox.shrink(); + }, + ), + ], + ), + ), + ); + } + + String? _getErrorText(String value) { + if (value.isEmpty) { + return '${'Please enter'.tr} $label'.tr; + } + + if (type == TextInputType.emailAddress) { + if (!value.contains('@')) { + return 'Please enter a valid email.'.tr; + } + } else if (type == TextInputType.phone) { + final box = GetStorage(); + if (box.read(BoxName.countryCode) == 'Egypt') { + if (value.length != 11) { + return 'Please enter a valid phone number.'.tr; + } + } else if (value.length != 10) { + return 'Please enter a valid phone number.'.tr; + } + } + + return null; + } +} diff --git a/lib/views/widgets/mycircular.dart b/lib/views/widgets/mycircular.dart new file mode 100755 index 0000000..c0a9d80 --- /dev/null +++ b/lib/views/widgets/mycircular.dart @@ -0,0 +1,132 @@ +import 'package:flutter/material.dart'; + +class MyCircularProgressIndicator extends StatefulWidget { + final Color backgroundColor; + final double size; + final Color progressColor; + final double strokeWidth; + + const MyCircularProgressIndicator({ + super.key, + this.backgroundColor = Colors.transparent, + this.size = 110, + this.progressColor = Colors.blue, + this.strokeWidth = 3.0, + }); + + @override + State createState() => + _MyCircularProgressIndicatorState(); +} + +class _MyCircularProgressIndicatorState + extends State + with SingleTickerProviderStateMixin { + late AnimationController _controller; + late Animation _scaleAnimation; + late Animation _rotationAnimation; + + @override + void initState() { + super.initState(); + _controller = AnimationController( + duration: const Duration(seconds: 2), + vsync: this, + )..repeat(reverse: true); + + _scaleAnimation = Tween( + begin: 0.95, + end: 1.05, + ).animate(CurvedAnimation( + parent: _controller, + curve: Curves.easeInOut, + )); + + _rotationAnimation = Tween( + begin: 0, + end: 2, + ).animate(CurvedAnimation( + parent: _controller, + curve: Curves.linear, + )); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Center( + child: AnimatedBuilder( + animation: _controller, + builder: (context, child) { + return Transform.scale( + scale: _scaleAnimation.value, + child: Container( + width: widget.size, + height: widget.size, + decoration: BoxDecoration( + color: widget.backgroundColor, + shape: BoxShape.circle, + boxShadow: [ + BoxShadow( + color: widget.progressColor.withAlpha(30), + blurRadius: 12, + spreadRadius: 2, + ), + ], + ), + child: Stack( + alignment: Alignment.center, + children: [ + // Outer rotating progress indicator + Transform.rotate( + angle: _rotationAnimation.value * 3.14, + child: CircularProgressIndicator( + strokeWidth: widget.strokeWidth, + valueColor: AlwaysStoppedAnimation( + widget.progressColor, + ), + ), + ), + // Inner static progress indicator + CircularProgressIndicator( + strokeWidth: widget.strokeWidth * 0.7, + valueColor: AlwaysStoppedAnimation( + widget.progressColor.withAlpha(150), + ), + ), + // Logo container with scale animation + ScaleTransition( + scale: Tween( + begin: 0.9, + end: 1.0, + ).animate(CurvedAnimation( + parent: _controller, + curve: Curves.easeInOut, + )), + child: Container( + width: widget.size * 0.7, + height: widget.size * 0.7, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: widget.backgroundColor, + ), + child: Image.asset( + 'assets/images/logo.gif', + fit: BoxFit.contain, + ), + ), + ), + ], + ), + ), + ); + }, + ), + ); + } +} diff --git a/lib/views/widgets/mydialoug.dart b/lib/views/widgets/mydialoug.dart new file mode 100755 index 0000000..60230f3 --- /dev/null +++ b/lib/views/widgets/mydialoug.dart @@ -0,0 +1,245 @@ +import 'dart:ui'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/colors.dart'; +import 'package:sefer_driver/constant/style.dart'; +import 'package:sefer_driver/controller/functions/tts.dart'; + +class DialogConfig { + static const Duration animationDuration = Duration(milliseconds: 200); + static const double blurStrength = 8.0; + static const double cornerRadius = 14.0; + static final BoxDecoration decoration = BoxDecoration( + borderRadius: BorderRadius.circular(cornerRadius), + boxShadow: [ + BoxShadow( + color: Colors.black.withAlpha(38), // 0.15 opacity + blurRadius: 16, + offset: const Offset(0, 8), + ), + ], + ); +} + +class MyDialog extends GetxController { + void getDialog(String title, String? midTitle, VoidCallback onPressed) { + final textToSpeechController = Get.put(TextToSpeechController()); + + HapticFeedback.mediumImpact(); + + Get.dialog( + TweenAnimationBuilder( + duration: DialogConfig.animationDuration, + tween: Tween(begin: 0.0, end: 1.0), + builder: (context, value, child) { + return Transform.scale( + scale: 0.95 + (0.05 * value), + child: Opacity(opacity: value, child: child), + ); + }, + child: BackdropFilter( + filter: ImageFilter.blur( + sigmaX: DialogConfig.blurStrength, + sigmaY: DialogConfig.blurStrength, + ), + child: Theme( + data: ThemeData.light().copyWith( + dialogBackgroundColor: CupertinoColors.systemBackground, + ), + child: CupertinoAlertDialog( + title: Column( + children: [ + Text( + title, + style: AppStyle.title.copyWith( + fontSize: 20, + fontWeight: FontWeight.w700, + letterSpacing: -0.5, + color: AppColor.primaryColor, + ), + ), + const SizedBox(height: 8), + ], + ), + content: Column( + children: [ + CupertinoButton( + padding: const EdgeInsets.all(8), + onPressed: () async { + HapticFeedback.selectionClick(); + await textToSpeechController.speakText(title); + await textToSpeechController.speakText(midTitle!); + }, + child: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: + AppColor.primaryColor.withAlpha(26), // 0.1 opacity + borderRadius: BorderRadius.circular(8), + ), + child: Icon( + CupertinoIcons.speaker_2_fill, + color: AppColor.primaryColor, + size: 24, + ), + ), + ), + const SizedBox(height: 8), + Text( + midTitle!, + style: AppStyle.title.copyWith( + fontSize: 16, + height: 1.3, + color: Colors.black87, + ), + textAlign: TextAlign.center, + ), + ], + ), + actions: [ + CupertinoDialogAction( + onPressed: () { + HapticFeedback.lightImpact(); + Get.back(); + }, + child: Text( + 'Cancel', + style: TextStyle( + color: AppColor.redColor, + fontWeight: FontWeight.w600, + fontSize: 17, + ), + ), + ), + CupertinoDialogAction( + onPressed: () { + HapticFeedback.mediumImpact(); + onPressed(); + }, + child: Text( + 'OK'.tr, + style: TextStyle( + color: AppColor.greenColor, + fontWeight: FontWeight.w600, + fontSize: 17, + ), + ), + ), + ], + ), + ), + ), + ), + barrierDismissible: true, + barrierColor: Colors.black.withAlpha(102), // 0.4 opacity + ); + } +} + +class MyDialogContent extends GetxController { + void getDialog(String title, Widget? content, VoidCallback onPressed) { + final textToSpeechController = Get.put(TextToSpeechController()); + + HapticFeedback.mediumImpact(); + + Get.dialog( + TweenAnimationBuilder( + duration: DialogConfig.animationDuration, + tween: Tween(begin: 0.0, end: 1.0), + builder: (context, value, child) { + return Transform.scale( + scale: 0.95 + (0.05 * value), + child: Opacity(opacity: value, child: child), + ); + }, + child: BackdropFilter( + filter: ImageFilter.blur( + sigmaX: DialogConfig.blurStrength, + sigmaY: DialogConfig.blurStrength, + ), + child: Theme( + data: ThemeData.light().copyWith( + dialogBackgroundColor: CupertinoColors.systemBackground, + ), + child: CupertinoAlertDialog( + title: Column( + children: [ + Text( + title, + style: AppStyle.title.copyWith( + fontSize: 20, + fontWeight: FontWeight.w700, + letterSpacing: -0.5, + color: AppColor.primaryColor, + ), + ), + const SizedBox(height: 8), + ], + ), + content: Column( + children: [ + CupertinoButton( + padding: const EdgeInsets.all(8), + onPressed: () async { + HapticFeedback.selectionClick(); + await textToSpeechController.speakText(title); + }, + child: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: + AppColor.primaryColor.withAlpha(26), // 0.1 opacity + borderRadius: BorderRadius.circular(8), + ), + child: Icon( + CupertinoIcons.headphones, + color: AppColor.primaryColor, + size: 24, + ), + ), + ), + const SizedBox(height: 12), + content!, + ], + ), + actions: [ + CupertinoDialogAction( + onPressed: () { + HapticFeedback.lightImpact(); + Get.back(); + }, + child: Text( + 'Cancel', + style: TextStyle( + color: AppColor.redColor, + fontWeight: FontWeight.w600, + fontSize: 17, + ), + ), + ), + CupertinoDialogAction( + onPressed: () { + HapticFeedback.mediumImpact(); + onPressed(); + }, + child: Text( + 'OK'.tr, + style: TextStyle( + color: AppColor.greenColor, + fontWeight: FontWeight.w600, + fontSize: 17, + ), + ), + ), + ], + ), + ), + ), + ), + barrierDismissible: true, + barrierColor: Colors.black.withAlpha(102), // 0.4 opacity + ); + } +} diff --git a/linux/.gitignore b/linux/.gitignore new file mode 100644 index 0000000..d3896c9 --- /dev/null +++ b/linux/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt new file mode 100644 index 0000000..216c6dc --- /dev/null +++ b/linux/CMakeLists.txt @@ -0,0 +1,128 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.13) +project(runner LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "intaleq_driver") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "com.example.intaleq_driver") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Load bundled libraries from the lib/ directory relative to the binary. +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Root filesystem for cross-building. +if(FLUTTER_TARGET_PLATFORM_SYSROOT) + set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() + +# Define build configuration options. +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") +endif() + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_14) + target_compile_options(${TARGET} PRIVATE -Wall -Werror) + target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") + target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) + +# Only the install-generated bundle's copy of the executable will launch +# correctly, since the resources must in the right relative locations. To avoid +# people trying to run the unbundled copy, put it in a subdirectory instead of +# the default top-level location. +set_target_properties(${BINARY_NAME} + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" +) + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# By default, "installing" just makes a relocatable bundle in the build +# directory. +set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +# Start with a clean build bundle directory every time. +install(CODE " + file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") + " COMPONENT Runtime) + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) + install(FILES "${bundled_library}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endforeach(bundled_library) + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") + install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() diff --git a/linux/flutter/CMakeLists.txt b/linux/flutter/CMakeLists.txt new file mode 100644 index 0000000..d5bd016 --- /dev/null +++ b/linux/flutter/CMakeLists.txt @@ -0,0 +1,88 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.10) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. + +# Serves the same purpose as list(TRANSFORM ... PREPEND ...), +# which isn't available in 3.10. +function(list_prepend LIST_NAME PREFIX) + set(NEW_LIST "") + foreach(element ${${LIST_NAME}}) + list(APPEND NEW_LIST "${PREFIX}${element}") + endforeach(element) + set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) +endfunction() + +# === Flutter Library === +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) +pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) +pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) + +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "fl_basic_message_channel.h" + "fl_binary_codec.h" + "fl_binary_messenger.h" + "fl_dart_project.h" + "fl_engine.h" + "fl_json_message_codec.h" + "fl_json_method_codec.h" + "fl_message_codec.h" + "fl_method_call.h" + "fl_method_channel.h" + "fl_method_codec.h" + "fl_method_response.h" + "fl_plugin_registrar.h" + "fl_plugin_registry.h" + "fl_standard_message_codec.h" + "fl_standard_method_codec.h" + "fl_string_codec.h" + "fl_value.h" + "fl_view.h" + "flutter_linux.h" +) +list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") +target_link_libraries(flutter INTERFACE + PkgConfig::GTK + PkgConfig::GLIB + PkgConfig::GIO +) +add_dependencies(flutter flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CMAKE_CURRENT_BINARY_DIR}/_phony_ + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" + ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} +) diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..8ac2ca5 --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,27 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include +#include +#include +#include + +void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); + file_selector_plugin_register_with_registrar(file_selector_linux_registrar); + g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin"); + flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar); + g_autoptr(FlPluginRegistrar) record_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "RecordLinuxPlugin"); + record_linux_plugin_register_with_registrar(record_linux_registrar); + g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); + url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); +} diff --git a/linux/flutter/generated_plugin_registrant.h b/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..e0f0a47 --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void fl_register_plugins(FlPluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake new file mode 100644 index 0000000..76bed44 --- /dev/null +++ b/linux/flutter/generated_plugins.cmake @@ -0,0 +1,27 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + file_selector_linux + flutter_secure_storage_linux + record_linux + url_launcher_linux +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/linux/runner/CMakeLists.txt b/linux/runner/CMakeLists.txt new file mode 100644 index 0000000..e97dabc --- /dev/null +++ b/linux/runner/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.13) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} + "main.cc" + "my_application.cc" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the application ID. +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Add dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") diff --git a/linux/runner/main.cc b/linux/runner/main.cc new file mode 100644 index 0000000..e7c5c54 --- /dev/null +++ b/linux/runner/main.cc @@ -0,0 +1,6 @@ +#include "my_application.h" + +int main(int argc, char** argv) { + g_autoptr(MyApplication) app = my_application_new(); + return g_application_run(G_APPLICATION(app), argc, argv); +} diff --git a/linux/runner/my_application.cc b/linux/runner/my_application.cc new file mode 100644 index 0000000..1934e6e --- /dev/null +++ b/linux/runner/my_application.cc @@ -0,0 +1,130 @@ +#include "my_application.h" + +#include +#ifdef GDK_WINDOWING_X11 +#include +#endif + +#include "flutter/generated_plugin_registrant.h" + +struct _MyApplication { + GtkApplication parent_instance; + char** dart_entrypoint_arguments; +}; + +G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) + +// Implements GApplication::activate. +static void my_application_activate(GApplication* application) { + MyApplication* self = MY_APPLICATION(application); + GtkWindow* window = + GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); + + // Use a header bar when running in GNOME as this is the common style used + // by applications and is the setup most users will be using (e.g. Ubuntu + // desktop). + // If running on X and not using GNOME then just use a traditional title bar + // in case the window manager does more exotic layout, e.g. tiling. + // If running on Wayland assume the header bar will work (may need changing + // if future cases occur). + gboolean use_header_bar = TRUE; +#ifdef GDK_WINDOWING_X11 + GdkScreen* screen = gtk_window_get_screen(window); + if (GDK_IS_X11_SCREEN(screen)) { + const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); + if (g_strcmp0(wm_name, "GNOME Shell") != 0) { + use_header_bar = FALSE; + } + } +#endif + if (use_header_bar) { + GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); + gtk_widget_show(GTK_WIDGET(header_bar)); + gtk_header_bar_set_title(header_bar, "intaleq_driver"); + gtk_header_bar_set_show_close_button(header_bar, TRUE); + gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); + } else { + gtk_window_set_title(window, "intaleq_driver"); + } + + gtk_window_set_default_size(window, 1280, 720); + gtk_widget_show(GTK_WIDGET(window)); + + g_autoptr(FlDartProject) project = fl_dart_project_new(); + fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); + + FlView* view = fl_view_new(project); + gtk_widget_show(GTK_WIDGET(view)); + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); + + gtk_widget_grab_focus(GTK_WIDGET(view)); +} + +// Implements GApplication::local_command_line. +static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { + MyApplication* self = MY_APPLICATION(application); + // Strip out the first argument as it is the binary name. + self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); + + g_autoptr(GError) error = nullptr; + if (!g_application_register(application, nullptr, &error)) { + g_warning("Failed to register: %s", error->message); + *exit_status = 1; + return TRUE; + } + + g_application_activate(application); + *exit_status = 0; + + return TRUE; +} + +// Implements GApplication::startup. +static void my_application_startup(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application startup. + + G_APPLICATION_CLASS(my_application_parent_class)->startup(application); +} + +// Implements GApplication::shutdown. +static void my_application_shutdown(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application shutdown. + + G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application); +} + +// Implements GObject::dispose. +static void my_application_dispose(GObject* object) { + MyApplication* self = MY_APPLICATION(object); + g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); + G_OBJECT_CLASS(my_application_parent_class)->dispose(object); +} + +static void my_application_class_init(MyApplicationClass* klass) { + G_APPLICATION_CLASS(klass)->activate = my_application_activate; + G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; + G_APPLICATION_CLASS(klass)->startup = my_application_startup; + G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown; + G_OBJECT_CLASS(klass)->dispose = my_application_dispose; +} + +static void my_application_init(MyApplication* self) {} + +MyApplication* my_application_new() { + // Set the program name to the application ID, which helps various systems + // like GTK and desktop environments map this running application to its + // corresponding .desktop file. This ensures better integration by allowing + // the application to be recognized beyond its binary name. + g_set_prgname(APPLICATION_ID); + + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, + "flags", G_APPLICATION_NON_UNIQUE, + nullptr)); +} diff --git a/linux/runner/my_application.h b/linux/runner/my_application.h new file mode 100644 index 0000000..72271d5 --- /dev/null +++ b/linux/runner/my_application.h @@ -0,0 +1,18 @@ +#ifndef FLUTTER_MY_APPLICATION_H_ +#define FLUTTER_MY_APPLICATION_H_ + +#include + +G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, + GtkApplication) + +/** + * my_application_new: + * + * Creates a new Flutter-based application. + * + * Returns: a new #MyApplication. + */ +MyApplication* my_application_new(); + +#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/macos/.gitignore b/macos/.gitignore new file mode 100644 index 0000000..746adbb --- /dev/null +++ b/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/macos/Flutter/Flutter-Debug.xcconfig b/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 0000000..4b81f9b --- /dev/null +++ b/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/Flutter-Release.xcconfig b/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 0000000..5caa9d1 --- /dev/null +++ b/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 0000000..f06987e --- /dev/null +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,64 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import audio_session +import device_info_plus +import file_selector_macos +import firebase_auth +import firebase_core +import firebase_messaging +import flutter_app_group_directory +import flutter_image_compress_macos +import flutter_inappwebview_macos +import flutter_local_notifications +import flutter_secure_storage_macos +import flutter_tts +import geolocator_apple +import google_sign_in_ios +import just_audio +import local_auth_darwin +import location +import package_info_plus +import path_provider_foundation +import record_darwin +import share_plus +import sign_in_with_apple +import sqflite_darwin +import url_launcher_macos +import video_player_avfoundation +import wakelock_plus +import webview_flutter_wkwebview + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) + DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) + FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) + FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) + FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) + FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin")) + FlutterAppGroupDirectoryPlugin.register(with: registry.registrar(forPlugin: "FlutterAppGroupDirectoryPlugin")) + FlutterImageCompressMacosPlugin.register(with: registry.registrar(forPlugin: "FlutterImageCompressMacosPlugin")) + InAppWebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "InAppWebViewFlutterPlugin")) + FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin")) + FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) + FlutterTtsPlugin.register(with: registry.registrar(forPlugin: "FlutterTtsPlugin")) + GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) + FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin")) + JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin")) + LocalAuthPlugin.register(with: registry.registrar(forPlugin: "LocalAuthPlugin")) + LocationPlugin.register(with: registry.registrar(forPlugin: "LocationPlugin")) + FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) + PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + RecordPlugin.register(with: registry.registrar(forPlugin: "RecordPlugin")) + SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin")) + SignInWithApplePlugin.register(with: registry.registrar(forPlugin: "SignInWithApplePlugin")) + SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) + FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin")) + WakelockPlusMacosPlugin.register(with: registry.registrar(forPlugin: "WakelockPlusMacosPlugin")) + WebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "WebViewFlutterPlugin")) +} diff --git a/macos/Podfile b/macos/Podfile new file mode 100644 index 0000000..c795730 --- /dev/null +++ b/macos/Podfile @@ -0,0 +1,43 @@ +platform :osx, '10.14' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + end +end diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..2fc2244 --- /dev/null +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,705 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC10EC2044A3C60003C045; + remoteInfo = Runner; + }; + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* intaleq_driver.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "intaleq_driver.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 331C80D2294CF70F00263BE5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C80D6294CF71000263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C80D7294CF71000263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 331C80D6294CF71000263BE5 /* RunnerTests */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* intaleq_driver.app */, + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C80D4294CF70F00263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C80D1294CF70F00263BE5 /* Sources */, + 331C80D2294CF70F00263BE5 /* Frameworks */, + 331C80D3294CF70F00263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C80DA294CF71000263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* intaleq_driver.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C80D4294CF70F00263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 33CC10EC2044A3C60003C045; + }; + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 331C80D4294CF70F00263BE5 /* RunnerTests */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C80D3294CF70F00263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C80D1294CF70F00263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC10EC2044A3C60003C045 /* Runner */; + targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; + }; + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 331C80DB294CF71000263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.intaleqDriver.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/intaleq_driver.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/intaleq_driver"; + }; + name = Debug; + }; + 331C80DC294CF71000263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.intaleqDriver.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/intaleq_driver.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/intaleq_driver"; + }; + name = Release; + }; + 331C80DD294CF71000263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.intaleqDriver.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/intaleq_driver.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/intaleq_driver"; + }; + name = Profile; + }; + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C80DB294CF71000263BE5 /* Debug */, + 331C80DC294CF71000263BE5 /* Release */, + 331C80DD294CF71000263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..59d072f --- /dev/null +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner.xcworkspace/contents.xcworkspacedata b/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner/AppDelegate.swift b/macos/Runner/AppDelegate.swift new file mode 100644 index 0000000..b3c1761 --- /dev/null +++ b/macos/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Cocoa +import FlutterMacOS + +@main +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } + + override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { + return true + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..96d3fee --- /dev/null +++ b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "info": { + "version": 1, + "author": "xcode" + }, + "images": [ + { + "size": "16x16", + "idiom": "mac", + "filename": "app_icon_16.png", + "scale": "1x" + }, + { + "size": "16x16", + "idiom": "mac", + "filename": "app_icon_32.png", + "scale": "2x" + }, + { + "size": "32x32", + "idiom": "mac", + "filename": "app_icon_32.png", + "scale": "1x" + }, + { + "size": "32x32", + "idiom": "mac", + "filename": "app_icon_64.png", + "scale": "2x" + }, + { + "size": "128x128", + "idiom": "mac", + "filename": "app_icon_128.png", + "scale": "1x" + }, + { + "size": "128x128", + "idiom": "mac", + "filename": "app_icon_256.png", + "scale": "2x" + }, + { + "size": "256x256", + "idiom": "mac", + "filename": "app_icon_256.png", + "scale": "1x" + }, + { + "size": "256x256", + "idiom": "mac", + "filename": "app_icon_512.png", + "scale": "2x" + }, + { + "size": "512x512", + "idiom": "mac", + "filename": "app_icon_512.png", + "scale": "1x" + }, + { + "size": "512x512", + "idiom": "mac", + "filename": "app_icon_1024.png", + "scale": "2x" + } + ] +} \ No newline at end of file diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000..0006500 Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000..fe4e805 Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000..500bc8e Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png new file mode 100644 index 0000000..5bf9213 Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png new file mode 100644 index 0000000..d60f921 Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png new file mode 100644 index 0000000..8a46765 Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000..a9e46fc Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png differ diff --git a/macos/Runner/Base.lproj/MainMenu.xib b/macos/Runner/Base.lproj/MainMenu.xib new file mode 100644 index 0000000..80e867a --- /dev/null +++ b/macos/Runner/Base.lproj/MainMenu.xib @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner/Configs/AppInfo.xcconfig b/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 0000000..ec089b2 --- /dev/null +++ b/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = intaleq_driver + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.example.intaleqDriver + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2025 com.example. All rights reserved. diff --git a/macos/Runner/Configs/Debug.xcconfig b/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 0000000..36b0fd9 --- /dev/null +++ b/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Release.xcconfig b/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 0000000..dff4f49 --- /dev/null +++ b/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Warnings.xcconfig b/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 0000000..42bcbf4 --- /dev/null +++ b/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements new file mode 100644 index 0000000..dddb8a3 --- /dev/null +++ b/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + + diff --git a/macos/Runner/Info.plist b/macos/Runner/Info.plist new file mode 100644 index 0000000..4789daa --- /dev/null +++ b/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/macos/Runner/MainFlutterWindow.swift b/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 0000000..3cc05eb --- /dev/null +++ b/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements new file mode 100644 index 0000000..852fa1a --- /dev/null +++ b/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/macos/RunnerTests/RunnerTests.swift b/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..61f3bd1 --- /dev/null +++ b/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Cocoa +import FlutterMacOS +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..ce8188d --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,2407 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f + url: "https://pub.dev" + source: hosted + version: "85.0.0" + _flutterfire_internals: + dependency: transitive + description: + name: _flutterfire_internals + sha256: ff0a84a2734d9e1089f8aedd5c0af0061b82fb94e95260d943404e0ef2134b11 + url: "https://pub.dev" + source: hosted + version: "1.3.59" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: "974859dc0ff5f37bc4313244b3218c791810d03ab3470a579580279ba971a48d" + url: "https://pub.dev" + source: hosted + version: "7.7.1" + animated_text_kit: + dependency: "direct main" + description: + name: animated_text_kit + sha256: adba517adb7e6adeb1eb5e1c8a147dd7bc664dfdf2f5e92226b572a91393a93d + url: "https://pub.dev" + source: hosted + version: "4.2.3" + archive: + dependency: transitive + description: + name: archive + sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd" + url: "https://pub.dev" + source: hosted + version: "4.0.7" + args: + dependency: transitive + description: + name: args + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 + url: "https://pub.dev" + source: hosted + version: "2.7.0" + asn1lib: + dependency: transitive + description: + name: asn1lib + sha256: "9a8f69025044eb466b9b60ef3bc3ac99b4dc6c158ae9c56d25eeccf5bc56d024" + url: "https://pub.dev" + source: hosted + version: "1.6.5" + async: + dependency: transitive + description: + name: async + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" + url: "https://pub.dev" + source: hosted + version: "2.13.0" + audio_session: + dependency: transitive + description: + name: audio_session + sha256: "2b7fff16a552486d078bfc09a8cde19f426dc6d6329262b684182597bec5b1ac" + url: "https://pub.dev" + source: hosted + version: "0.1.25" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + bubble_head: + dependency: "direct main" + description: + path: bubble-master + relative: true + source: path + version: "0.0.4" + build: + dependency: transitive + description: + name: build + sha256: "51dc711996cbf609b90cbe5b335bbce83143875a9d58e4b5c6d3c4f684d3dda7" + url: "https://pub.dev" + source: hosted + version: "2.5.4" + build_config: + dependency: transitive + description: + name: build_config + sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" + url: "https://pub.dev" + source: hosted + version: "1.1.2" + build_daemon: + dependency: transitive + description: + name: build_daemon + sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" + url: "https://pub.dev" + source: hosted + version: "4.0.4" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + sha256: ee4257b3f20c0c90e72ed2b57ad637f694ccba48839a821e87db762548c22a62 + url: "https://pub.dev" + source: hosted + version: "2.5.4" + build_runner: + dependency: "direct dev" + description: + name: build_runner + sha256: "382a4d649addbfb7ba71a3631df0ec6a45d5ab9b098638144faf27f02778eb53" + url: "https://pub.dev" + source: hosted + version: "2.5.4" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + sha256: "85fbbb1036d576d966332a3f5ce83f2ce66a40bea1a94ad2d5fc29a19a0d3792" + url: "https://pub.dev" + source: hosted + version: "9.1.2" + built_collection: + dependency: transitive + description: + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + sha256: "0b1b12a0a549605e5f04476031cd0bc91ead1d7c8e830773a18ee54179b3cb62" + url: "https://pub.dev" + source: hosted + version: "8.11.0" + cached_network_image: + dependency: transitive + description: + name: cached_network_image + sha256: "7c1183e361e5c8b0a0f21a28401eecdbde252441106a9816400dd4c2b2424916" + url: "https://pub.dev" + source: hosted + version: "3.4.1" + cached_network_image_platform_interface: + dependency: transitive + description: + name: cached_network_image_platform_interface + sha256: "35814b016e37fbdc91f7ae18c8caf49ba5c88501813f73ce8a07027a395e2829" + url: "https://pub.dev" + source: hosted + version: "4.1.1" + cached_network_image_web: + dependency: transitive + description: + name: cached_network_image_web + sha256: "980842f4e8e2535b8dbd3d5ca0b1f0ba66bf61d14cc3a17a9b4788a3685ba062" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + calendar_builder: + dependency: "direct main" + description: + name: calendar_builder + sha256: "4b94a20d7e8136b84cd62fb7c7752f4a723b67a4b7ed3c3c14c2615e6e6a4653" + url: "https://pub.dev" + source: hosted + version: "0.0.6" + camera: + dependency: "direct main" + description: + name: camera + sha256: d6ec2cbdbe2fa8f5e0d07d8c06368fe4effa985a4a5ddade9cc58a8cd849557d + url: "https://pub.dev" + source: hosted + version: "0.11.2" + camera_android_camerax: + dependency: transitive + description: + name: camera_android_camerax + sha256: "4b6c1bef4270c39df96402c4d62f2348c3bb2bbaefd0883b9dbd58f426306ad0" + url: "https://pub.dev" + source: hosted + version: "0.6.19" + camera_avfoundation: + dependency: transitive + description: + name: camera_avfoundation + sha256: cabc6cbdeadca9cbcac178110c9d5e87bde5c646c3b8c9c4c2747fc500a12432 + url: "https://pub.dev" + source: hosted + version: "0.9.20+5" + camera_platform_interface: + dependency: transitive + description: + name: camera_platform_interface + sha256: "2f757024a48696ff4814a789b0bd90f5660c0fb25f393ab4564fb483327930e2" + url: "https://pub.dev" + source: hosted + version: "2.10.0" + camera_web: + dependency: transitive + description: + name: camera_web + sha256: "595f28c89d1fb62d77c73c633193755b781c6d2e0ebcd8dc25b763b514e6ba8f" + url: "https://pub.dev" + source: hosted + version: "0.3.5" + characters: + dependency: transitive + description: + name: characters + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" + url: "https://pub.dev" + source: hosted + version: "2.0.4" + chewie: + dependency: transitive + description: + name: chewie + sha256: "19b93a1e60e4ba640a792208a6543f1c7d5b124d011ce0199e2f18802199d984" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c + url: "https://pub.dev" + source: hosted + version: "0.4.2" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + code_builder: + dependency: transitive + description: + name: code_builder + sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e" + url: "https://pub.dev" + source: hosted + version: "4.10.1" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + convert: + dependency: transitive + description: + name: convert + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + cross_file: + dependency: transitive + description: + name: cross_file + sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" + url: "https://pub.dev" + source: hosted + version: "0.3.4+2" + crypto: + dependency: transitive + description: + name: crypto + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + url: "https://pub.dev" + source: hosted + version: "3.0.6" + csslib: + dependency: transitive + description: + name: csslib + sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" + url: "https://pub.dev" + source: hosted + version: "1.0.2" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + url: "https://pub.dev" + source: hosted + version: "1.0.8" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: "8a0e5fba27e8ee025d2ffb4ee820b4e6e2cf5e4246a6b1a477eb66866947e0bb" + url: "https://pub.dev" + source: hosted + version: "3.1.1" + dbus: + dependency: transitive + description: + name: dbus + sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c" + url: "https://pub.dev" + source: hosted + version: "0.7.11" + device_info_plus: + dependency: "direct main" + description: + name: device_info_plus + sha256: "98f28b42168cc509abc92f88518882fd58061ea372d7999aecc424345c7bff6a" + url: "https://pub.dev" + source: hosted + version: "11.5.0" + device_info_plus_platform_interface: + dependency: transitive + description: + name: device_info_plus_platform_interface + sha256: e1ea89119e34903dca74b883d0dd78eb762814f97fb6c76f35e9ff74d261a18f + url: "https://pub.dev" + source: hosted + version: "7.0.3" + dio: + dependency: "direct main" + description: + name: dio + sha256: "253a18bbd4851fecba42f7343a1df3a9a4c1d31a2c1b37e221086b4fa8c8dbc9" + url: "https://pub.dev" + source: hosted + version: "5.8.0+1" + dio_web_adapter: + dependency: transitive + description: + name: dio_web_adapter + sha256: "7586e476d70caecaf1686d21eee7247ea43ef5c345eab9e0cc3583ff13378d78" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + encrypt: + dependency: "direct main" + description: + name: encrypt + sha256: "62d9aa4670cc2a8798bab89b39fc71b6dfbacf615de6cf5001fb39f7e4a996a2" + url: "https://pub.dev" + source: hosted + version: "5.0.3" + envied: + dependency: "direct main" + description: + name: envied + sha256: a4e2b1d0caa479b5d61332ae516518c175a6d09328a35a0bc0a53894cc5d7e4d + url: "https://pub.dev" + source: hosted + version: "1.1.1" + envied_generator: + dependency: "direct dev" + description: + name: envied_generator + sha256: "894f6c5eb624c60a1ce6f642b6fd7ec68bc3440aa6f1881837aa9acbbeade0c8" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + equatable: + dependency: transitive + description: + name: equatable + sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7" + url: "https://pub.dev" + source: hosted + version: "2.0.7" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" + url: "https://pub.dev" + source: hosted + version: "1.3.3" + ffi: + dependency: transitive + description: + name: ffi + sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + file_selector_linux: + dependency: transitive + description: + name: file_selector_linux + sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" + url: "https://pub.dev" + source: hosted + version: "0.9.3+2" + file_selector_macos: + dependency: transitive + description: + name: file_selector_macos + sha256: "8c9250b2bd2d8d4268e39c82543bacbaca0fda7d29e0728c3c4bbb7c820fd711" + url: "https://pub.dev" + source: hosted + version: "0.9.4+3" + file_selector_platform_interface: + dependency: transitive + description: + name: file_selector_platform_interface + sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b + url: "https://pub.dev" + source: hosted + version: "2.6.2" + file_selector_windows: + dependency: transitive + description: + name: file_selector_windows + sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" + url: "https://pub.dev" + source: hosted + version: "0.9.3+4" + firebase_auth: + dependency: "direct main" + description: + name: firebase_auth + sha256: "0fed2133bee1369ee1118c1fef27b2ce0d84c54b7819a2b17dada5cfec3b03ff" + url: "https://pub.dev" + source: hosted + version: "5.7.0" + firebase_auth_platform_interface: + dependency: transitive + description: + name: firebase_auth_platform_interface + sha256: "871c9df4ec9a754d1a793f7eb42fa3b94249d464cfb19152ba93e14a5966b386" + url: "https://pub.dev" + source: hosted + version: "7.7.3" + firebase_auth_web: + dependency: transitive + description: + name: firebase_auth_web + sha256: d9ada769c43261fd1b18decf113186e915c921a811bd5014f5ea08f4cf4bc57e + url: "https://pub.dev" + source: hosted + version: "5.15.3" + firebase_core: + dependency: "direct main" + description: + name: firebase_core + sha256: "7be63a3f841fc9663342f7f3a011a42aef6a61066943c90b1c434d79d5c995c5" + url: "https://pub.dev" + source: hosted + version: "3.15.2" + firebase_core_platform_interface: + dependency: transitive + description: + name: firebase_core_platform_interface + sha256: "5dbc900677dcbe5873d22ad7fbd64b047750124f1f9b7ebe2a33b9ddccc838eb" + url: "https://pub.dev" + source: hosted + version: "6.0.0" + firebase_core_web: + dependency: transitive + description: + name: firebase_core_web + sha256: "0ed0dc292e8f9ac50992e2394e9d336a0275b6ae400d64163fdf0a8a8b556c37" + url: "https://pub.dev" + source: hosted + version: "2.24.1" + firebase_messaging: + dependency: "direct main" + description: + name: firebase_messaging + sha256: "60be38574f8b5658e2f22b7e311ff2064bea835c248424a383783464e8e02fcc" + url: "https://pub.dev" + source: hosted + version: "15.2.10" + firebase_messaging_platform_interface: + dependency: transitive + description: + name: firebase_messaging_platform_interface + sha256: "685e1771b3d1f9c8502771ccc9f91485b376ffe16d553533f335b9183ea99754" + url: "https://pub.dev" + source: hosted + version: "4.6.10" + firebase_messaging_web: + dependency: transitive + description: + name: firebase_messaging_web + sha256: "0d1be17bc89ed3ff5001789c92df678b2e963a51b6fa2bdb467532cc9dbed390" + url: "https://pub.dev" + source: hosted + version: "3.10.10" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be + url: "https://pub.dev" + source: hosted + version: "1.1.1" + fl_chart: + dependency: "direct main" + description: + name: fl_chart + sha256: "5276944c6ffc975ae796569a826c38a62d2abcf264e26b88fa6f482e107f4237" + url: "https://pub.dev" + source: hosted + version: "0.70.2" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_app_group_directory: + dependency: transitive + description: + name: flutter_app_group_directory + sha256: "680ef9b2dee84c237cd7bb7fc78bc45867b32556a8a5f0de61278078b9fefd05" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + flutter_cache_manager: + dependency: transitive + description: + name: flutter_cache_manager + sha256: "400b6592f16a4409a7f2bb929a9a7e38c72cceb8ffb99ee57bbf2cb2cecf8386" + url: "https://pub.dev" + source: hosted + version: "3.4.1" + flutter_confetti: + dependency: "direct main" + description: + name: flutter_confetti + sha256: "22fc66984c17aea73e3cd300666609c4581176c00c31d4513b1e16758f75cb08" + url: "https://pub.dev" + source: hosted + version: "0.3.4" + flutter_contacts: + dependency: "direct main" + description: + name: flutter_contacts + sha256: "388d32cd33f16640ee169570128c933b45f3259bddbfae7a100bb49e5ffea9ae" + url: "https://pub.dev" + source: hosted + version: "1.1.9+2" + flutter_font_icons: + dependency: "direct main" + description: + name: flutter_font_icons + sha256: d06eb0ab903d0e90a9a758de30892ea0d43221f03dad059970384e62479c787e + url: "https://pub.dev" + source: hosted + version: "2.2.7" + flutter_image_compress: + dependency: "direct main" + description: + name: flutter_image_compress + sha256: "51d23be39efc2185e72e290042a0da41aed70b14ef97db362a6b5368d0523b27" + url: "https://pub.dev" + source: hosted + version: "2.4.0" + flutter_image_compress_common: + dependency: transitive + description: + name: flutter_image_compress_common + sha256: c5c5d50c15e97dd7dc72ff96bd7077b9f791932f2076c5c5b6c43f2c88607bfb + url: "https://pub.dev" + source: hosted + version: "1.0.6" + flutter_image_compress_macos: + dependency: transitive + description: + name: flutter_image_compress_macos + sha256: "20019719b71b743aba0ef874ed29c50747461e5e8438980dfa5c2031898f7337" + url: "https://pub.dev" + source: hosted + version: "1.0.3" + flutter_image_compress_ohos: + dependency: transitive + description: + name: flutter_image_compress_ohos + sha256: e76b92bbc830ee08f5b05962fc78a532011fcd2041f620b5400a593e96da3f51 + url: "https://pub.dev" + source: hosted + version: "0.0.3" + flutter_image_compress_platform_interface: + dependency: transitive + description: + name: flutter_image_compress_platform_interface + sha256: "579cb3947fd4309103afe6442a01ca01e1e6f93dc53bb4cbd090e8ce34a41889" + url: "https://pub.dev" + source: hosted + version: "1.0.5" + flutter_image_compress_web: + dependency: transitive + description: + name: flutter_image_compress_web + sha256: b9b141ac7c686a2ce7bb9a98176321e1182c9074650e47bb140741a44b6f5a96 + url: "https://pub.dev" + source: hosted + version: "0.1.5" + flutter_inappwebview: + dependency: transitive + description: + name: flutter_inappwebview + sha256: "80092d13d3e29b6227e25b67973c67c7210bd5e35c4b747ca908e31eb71a46d5" + url: "https://pub.dev" + source: hosted + version: "6.1.5" + flutter_inappwebview_android: + dependency: transitive + description: + name: flutter_inappwebview_android + sha256: "62557c15a5c2db5d195cb3892aab74fcaec266d7b86d59a6f0027abd672cddba" + url: "https://pub.dev" + source: hosted + version: "1.1.3" + flutter_inappwebview_internal_annotations: + dependency: transitive + description: + name: flutter_inappwebview_internal_annotations + sha256: "787171d43f8af67864740b6f04166c13190aa74a1468a1f1f1e9ee5b90c359cd" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + flutter_inappwebview_ios: + dependency: transitive + description: + name: flutter_inappwebview_ios + sha256: "5818cf9b26cf0cbb0f62ff50772217d41ea8d3d9cc00279c45f8aabaa1b4025d" + url: "https://pub.dev" + source: hosted + version: "1.1.2" + flutter_inappwebview_macos: + dependency: transitive + description: + name: flutter_inappwebview_macos + sha256: c1fbb86af1a3738e3541364d7d1866315ffb0468a1a77e34198c9be571287da1 + url: "https://pub.dev" + source: hosted + version: "1.1.2" + flutter_inappwebview_platform_interface: + dependency: transitive + description: + name: flutter_inappwebview_platform_interface + sha256: cf5323e194096b6ede7a1ca808c3e0a078e4b33cc3f6338977d75b4024ba2500 + url: "https://pub.dev" + source: hosted + version: "1.3.0+1" + flutter_inappwebview_web: + dependency: transitive + description: + name: flutter_inappwebview_web + sha256: "55f89c83b0a0d3b7893306b3bb545ba4770a4df018204917148ebb42dc14a598" + url: "https://pub.dev" + source: hosted + version: "1.1.2" + flutter_inappwebview_windows: + dependency: transitive + description: + name: flutter_inappwebview_windows + sha256: "8b4d3a46078a2cdc636c4a3d10d10f2a16882f6be607962dbfff8874d1642055" + url: "https://pub.dev" + source: hosted + version: "0.6.0" + flutter_launcher_icons: + dependency: "direct main" + description: + name: flutter_launcher_icons + sha256: "10f13781741a2e3972126fae08393d3c4e01fa4cd7473326b94b72cf594195e7" + url: "https://pub.dev" + source: hosted + version: "0.14.4" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + flutter_local_notifications: + dependency: "direct main" + description: + name: flutter_local_notifications + sha256: ef41ae901e7529e52934feba19ed82827b11baa67336829564aeab3129460610 + url: "https://pub.dev" + source: hosted + version: "18.0.1" + flutter_local_notifications_linux: + dependency: transitive + description: + name: flutter_local_notifications_linux + sha256: "8f685642876742c941b29c32030f6f4f6dacd0e4eaecb3efbb187d6a3812ca01" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + flutter_local_notifications_platform_interface: + dependency: transitive + description: + name: flutter_local_notifications_platform_interface + sha256: "6c5b83c86bf819cdb177a9247a3722067dd8cc6313827ce7c77a4b238a26fd52" + url: "https://pub.dev" + source: hosted + version: "8.0.0" + flutter_overlay_apps: + dependency: "direct main" + description: + path: flutter_overlay_apps-main + relative: true + source: path + version: "1.2.0" + flutter_overlay_window: + dependency: "direct main" + description: + name: flutter_overlay_window + sha256: "87a8ed7c47104a9ac1352d081e85304934b3f06ae28507097e49dd5f892e208d" + url: "https://pub.dev" + source: hosted + version: "0.4.5" + flutter_paypal: + dependency: "direct main" + description: + name: flutter_paypal + sha256: "53e82d0931171c0885f5b8989addc4c35fe4e95acfa9eaea3b4ae784bfd41cff" + url: "https://pub.dev" + source: hosted + version: "0.2.1" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e + url: "https://pub.dev" + source: hosted + version: "2.0.28" + flutter_rating_bar: + dependency: "direct main" + description: + name: flutter_rating_bar + sha256: d2af03469eac832c591a1eba47c91ecc871fe5708e69967073c043b2d775ed93 + url: "https://pub.dev" + source: hosted + version: "4.0.1" + flutter_secure_storage: + dependency: "direct main" + description: + name: flutter_secure_storage + sha256: "9cad52d75ebc511adfae3d447d5d13da15a55a92c9410e50f67335b6d21d16ea" + url: "https://pub.dev" + source: hosted + version: "9.2.4" + flutter_secure_storage_linux: + dependency: transitive + description: + name: flutter_secure_storage_linux + sha256: be76c1d24a97d0b98f8b54bce6b481a380a6590df992d0098f868ad54dc8f688 + url: "https://pub.dev" + source: hosted + version: "1.2.3" + flutter_secure_storage_macos: + dependency: transitive + description: + name: flutter_secure_storage_macos + sha256: "6c0a2795a2d1de26ae202a0d78527d163f4acbb11cde4c75c670f3a0fc064247" + url: "https://pub.dev" + source: hosted + version: "3.1.3" + flutter_secure_storage_platform_interface: + dependency: transitive + description: + name: flutter_secure_storage_platform_interface + sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8 + url: "https://pub.dev" + source: hosted + version: "1.1.2" + flutter_secure_storage_web: + dependency: transitive + description: + name: flutter_secure_storage_web + sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + flutter_secure_storage_windows: + dependency: transitive + description: + name: flutter_secure_storage_windows + sha256: b20b07cb5ed4ed74fc567b78a72936203f587eba460af1df11281c9326cd3709 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + flutter_spinkit: + dependency: transitive + description: + name: flutter_spinkit + sha256: d2696eed13732831414595b98863260e33e8882fc069ee80ec35d4ac9ddb0472 + url: "https://pub.dev" + source: hosted + version: "5.2.1" + flutter_stripe: + dependency: "direct main" + description: + name: flutter_stripe + sha256: a474b283f4b07e8973687514bf48762e618073b0d6b7acc45cea9a60466d4f8c + url: "https://pub.dev" + source: hosted + version: "11.5.0" + flutter_svg: + dependency: "direct main" + description: + name: flutter_svg + sha256: cd57f7969b4679317c17af6fd16ee233c1e60a82ed209d8a475c54fd6fd6f845 + url: "https://pub.dev" + source: hosted + version: "2.2.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_tts: + dependency: "direct main" + description: + name: flutter_tts + sha256: bdf2fc4483e74450dc9fc6fe6a9b6a5663e108d4d0dad3324a22c8e26bf48af4 + url: "https://pub.dev" + source: hosted + version: "4.2.3" + flutter_web_browser: + dependency: "direct main" + description: + name: flutter_web_browser + sha256: "15809b5a7b0cd9a6acf2ff5d8b975a08596923ea15efa759e607993a399de8e3" + url: "https://pub.dev" + source: hosted + version: "0.17.3" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + flutter_widget_from_html: + dependency: "direct main" + description: + name: flutter_widget_from_html + sha256: f3967a5b42896662efdd420b5adaf8a7d3692b0f44462a07c80e3b4c173b1a02 + url: "https://pub.dev" + source: hosted + version: "0.15.3" + flutter_widget_from_html_core: + dependency: transitive + description: + name: flutter_widget_from_html_core + sha256: b1048fd119a14762e2361bd057da608148a895477846d6149109b2151d2f7abf + url: "https://pub.dev" + source: hosted + version: "0.15.2" + freezed_annotation: + dependency: transitive + description: + name: freezed_annotation + sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2 + url: "https://pub.dev" + source: hosted + version: "2.4.4" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 + url: "https://pub.dev" + source: hosted + version: "4.0.0" + fwfh_cached_network_image: + dependency: transitive + description: + name: fwfh_cached_network_image + sha256: "8e44226801bfba27930673953afce8af44da7e92573be93f60385d9865a089dd" + url: "https://pub.dev" + source: hosted + version: "0.14.3" + fwfh_chewie: + dependency: transitive + description: + name: fwfh_chewie + sha256: "37bde9cedfb6dc5546176f7f0c56af1e814966cb33ec58f16c9565ed93ccb704" + url: "https://pub.dev" + source: hosted + version: "0.14.8" + fwfh_just_audio: + dependency: transitive + description: + name: fwfh_just_audio + sha256: "38dc2c55803bd3cef33042c473e0c40b891ad4548078424641a32032f6a1245f" + url: "https://pub.dev" + source: hosted + version: "0.15.2" + fwfh_svg: + dependency: transitive + description: + name: fwfh_svg + sha256: "550b1014d12b5528d8bdb6e3b44b58721f3fb1f65d7a852d1623a817008bdfc4" + url: "https://pub.dev" + source: hosted + version: "0.8.3" + fwfh_url_launcher: + dependency: transitive + description: + name: fwfh_url_launcher + sha256: b9f5d55a5ae2c2c07243ba33f7ba49ac9544bdb2f4c16d8139df9ccbebe3449c + url: "https://pub.dev" + source: hosted + version: "0.9.1" + fwfh_webview: + dependency: transitive + description: + name: fwfh_webview + sha256: "06595c7ca945c8d8522864a764e21abbcf50096852f8d256e45c0fa101b6fbc6" + url: "https://pub.dev" + source: hosted + version: "0.15.5" + geolocator: + dependency: "direct main" + description: + name: geolocator + sha256: f62bcd90459e63210bbf9c35deb6a51c521f992a78de19a1fe5c11704f9530e2 + url: "https://pub.dev" + source: hosted + version: "13.0.4" + geolocator_android: + dependency: transitive + description: + name: geolocator_android + sha256: fcb1760a50d7500deca37c9a666785c047139b5f9ee15aa5469fae7dbbe3170d + url: "https://pub.dev" + source: hosted + version: "4.6.2" + geolocator_apple: + dependency: transitive + description: + name: geolocator_apple + sha256: dbdd8789d5aaf14cf69f74d4925ad1336b4433a6efdf2fce91e8955dc921bf22 + url: "https://pub.dev" + source: hosted + version: "2.3.13" + geolocator_platform_interface: + dependency: transitive + description: + name: geolocator_platform_interface + sha256: "30cb64f0b9adcc0fb36f628b4ebf4f731a2961a0ebd849f4b56200205056fe67" + url: "https://pub.dev" + source: hosted + version: "4.2.6" + geolocator_web: + dependency: transitive + description: + name: geolocator_web + sha256: b1ae9bdfd90f861fde8fd4f209c37b953d65e92823cb73c7dee1fa021b06f172 + url: "https://pub.dev" + source: hosted + version: "4.1.3" + geolocator_windows: + dependency: transitive + description: + name: geolocator_windows + sha256: "175435404d20278ffd220de83c2ca293b73db95eafbdc8131fe8609be1421eb6" + url: "https://pub.dev" + source: hosted + version: "0.2.5" + get: + dependency: "direct main" + description: + name: get + sha256: c79eeb4339f1f3deffd9ec912f8a923834bec55f7b49c9e882b8fef2c139d425 + url: "https://pub.dev" + source: hosted + version: "4.7.2" + get_storage: + dependency: "direct main" + description: + name: get_storage + sha256: "39db1fffe779d0c22b3a744376e86febe4ade43bf65e06eab5af707dc84185a2" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + glob: + dependency: transitive + description: + name: glob + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de + url: "https://pub.dev" + source: hosted + version: "2.1.3" + google_fonts: + dependency: "direct main" + description: + name: google_fonts + sha256: b1ac0fe2832c9cc95e5e88b57d627c5e68c223b9657f4b96e1487aa9098c7b82 + url: "https://pub.dev" + source: hosted + version: "6.2.1" + google_identity_services_web: + dependency: transitive + description: + name: google_identity_services_web + sha256: "5d187c46dc59e02646e10fe82665fc3884a9b71bc1c90c2b8b749316d33ee454" + url: "https://pub.dev" + source: hosted + version: "0.3.3+1" + google_maps: + dependency: transitive + description: + name: google_maps + sha256: "4d6e199c561ca06792c964fa24b2bac7197bf4b401c2e1d23e345e5f9939f531" + url: "https://pub.dev" + source: hosted + version: "8.1.1" + google_maps_flutter: + dependency: "direct main" + description: + name: google_maps_flutter + sha256: e1805e5a5885bd14a1c407c59229f478af169bf4d04388586b19f53145a5db3a + url: "https://pub.dev" + source: hosted + version: "2.12.3" + google_maps_flutter_android: + dependency: transitive + description: + name: google_maps_flutter_android + sha256: "67745f7850655faa8a596606b627fece63f3011078eaa0c151a4774568c23ac4" + url: "https://pub.dev" + source: hosted + version: "2.17.0" + google_maps_flutter_ios: + dependency: transitive + description: + name: google_maps_flutter_ios + sha256: d03678415da9de8ce7208c674b264fc75946f326e696b4b7f84c80920fc58df6 + url: "https://pub.dev" + source: hosted + version: "2.15.4" + google_maps_flutter_platform_interface: + dependency: transitive + description: + name: google_maps_flutter_platform_interface + sha256: f8293f072ed8b068b092920a72da6693aa8b3d62dc6b5c5f0bc44c969a8a776c + url: "https://pub.dev" + source: hosted + version: "2.12.1" + google_maps_flutter_web: + dependency: transitive + description: + name: google_maps_flutter_web + sha256: ce2cac714e5462bf761ff2fdfc3564c7e5d7ed0578268dccb0a54dbdb1e6214e + url: "https://pub.dev" + source: hosted + version: "0.5.12+2" + google_polyline_algorithm: + dependency: "direct main" + description: + name: google_polyline_algorithm + sha256: "357874f00d3f93c3ba1bf4b4d9a154aa9ee87147c068238c1e8392012b686a03" + url: "https://pub.dev" + source: hosted + version: "3.1.0" + google_sign_in: + dependency: "direct main" + description: + name: google_sign_in + sha256: d0a2c3bcb06e607bb11e4daca48bd4b6120f0bbc4015ccebbe757d24ea60ed2a + url: "https://pub.dev" + source: hosted + version: "6.3.0" + google_sign_in_android: + dependency: transitive + description: + name: google_sign_in_android + sha256: d5e23c56a4b84b6427552f1cf3f98f716db3b1d1a647f16b96dbb5b93afa2805 + url: "https://pub.dev" + source: hosted + version: "6.2.1" + google_sign_in_ios: + dependency: transitive + description: + name: google_sign_in_ios + sha256: "102005f498ce18442e7158f6791033bbc15ad2dcc0afa4cf4752e2722a516c96" + url: "https://pub.dev" + source: hosted + version: "5.9.0" + google_sign_in_platform_interface: + dependency: transitive + description: + name: google_sign_in_platform_interface + sha256: "5f6f79cf139c197261adb6ac024577518ae48fdff8e53205c5373b5f6430a8aa" + url: "https://pub.dev" + source: hosted + version: "2.5.0" + google_sign_in_web: + dependency: transitive + description: + name: google_sign_in_web + sha256: "460547beb4962b7623ac0fb8122d6b8268c951cf0b646dd150d60498430e4ded" + url: "https://pub.dev" + source: hosted + version: "0.12.4+4" + googleapis_auth: + dependency: "direct main" + description: + name: googleapis_auth + sha256: befd71383a955535060acde8792e7efc11d2fccd03dd1d3ec434e85b68775938 + url: "https://pub.dev" + source: hosted + version: "1.6.0" + graphs: + dependency: transitive + description: + name: graphs + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + html: + dependency: transitive + description: + name: html + sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602" + url: "https://pub.dev" + source: hosted + version: "0.15.6" + http: + dependency: "direct main" + description: + name: http + sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b" + url: "https://pub.dev" + source: hosted + version: "1.4.0" + http_auth: + dependency: transitive + description: + name: http_auth + sha256: b7625acba2987fa69140d9600c679819f33227d665f525fbb2f394e08cf917d1 + url: "https://pub.dev" + source: hosted + version: "1.0.4" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 + url: "https://pub.dev" + source: hosted + version: "3.2.2" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" + url: "https://pub.dev" + source: hosted + version: "4.1.2" + image: + dependency: "direct main" + description: + name: image + sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" + url: "https://pub.dev" + source: hosted + version: "4.5.4" + image_cropper: + dependency: "direct main" + description: + name: image_cropper + sha256: "266760ed426d7121f0ada02c672bfe5c1b5c714e908328716aee756f045709dc" + url: "https://pub.dev" + source: hosted + version: "8.1.0" + image_cropper_for_web: + dependency: transitive + description: + name: image_cropper_for_web + sha256: fd81ebe36f636576094377aab32673c4e5d1609b32dec16fad98d2b71f1250a9 + url: "https://pub.dev" + source: hosted + version: "6.1.0" + image_cropper_platform_interface: + dependency: transitive + description: + name: image_cropper_platform_interface + sha256: "6ca6b81769abff9a4dcc3bbd3d75f5dfa9de6b870ae9613c8cd237333a4283af" + url: "https://pub.dev" + source: hosted + version: "7.1.0" + image_picker: + dependency: "direct main" + description: + name: image_picker + sha256: "021834d9c0c3de46bf0fe40341fa07168407f694d9b2bb18d532dc1261867f7a" + url: "https://pub.dev" + source: hosted + version: "1.1.2" + image_picker_android: + dependency: transitive + description: + name: image_picker_android + sha256: "6fae381e6af2bbe0365a5e4ce1db3959462fa0c4d234facf070746024bb80c8d" + url: "https://pub.dev" + source: hosted + version: "0.8.12+24" + image_picker_for_web: + dependency: transitive + description: + name: image_picker_for_web + sha256: "717eb042ab08c40767684327be06a5d8dbb341fe791d514e4b92c7bbe1b7bb83" + url: "https://pub.dev" + source: hosted + version: "3.0.6" + image_picker_ios: + dependency: transitive + description: + name: image_picker_ios + sha256: "05da758e67bc7839e886b3959848aa6b44ff123ab4b28f67891008afe8ef9100" + url: "https://pub.dev" + source: hosted + version: "0.8.12+2" + image_picker_linux: + dependency: transitive + description: + name: image_picker_linux + sha256: "34a65f6740df08bbbeb0a1abd8e6d32107941fd4868f67a507b25601651022c9" + url: "https://pub.dev" + source: hosted + version: "0.2.1+2" + image_picker_macos: + dependency: transitive + description: + name: image_picker_macos + sha256: "1b90ebbd9dcf98fb6c1d01427e49a55bd96b5d67b8c67cf955d60a5de74207c1" + url: "https://pub.dev" + source: hosted + version: "0.2.1+2" + image_picker_platform_interface: + dependency: transitive + description: + name: image_picker_platform_interface + sha256: "886d57f0be73c4b140004e78b9f28a8914a09e50c2d816bdd0520051a71236a0" + url: "https://pub.dev" + source: hosted + version: "2.10.1" + image_picker_windows: + dependency: transitive + description: + name: image_picker_windows + sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb" + url: "https://pub.dev" + source: hosted + version: "0.2.1+1" + intl: + dependency: "direct main" + description: + name: intl + sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + url: "https://pub.dev" + source: hosted + version: "0.19.0" + io: + dependency: transitive + description: + name: io + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b + url: "https://pub.dev" + source: hosted + version: "1.0.5" + jailbreak_root_detection: + dependency: "direct main" + description: + name: jailbreak_root_detection + sha256: c611229940a09785bd686364e92a40b07724926d2496c931527805101eb3da86 + url: "https://pub.dev" + source: hosted + version: "1.1.6" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + url: "https://pub.dev" + source: hosted + version: "4.9.0" + just_audio: + dependency: "direct main" + description: + name: just_audio + sha256: f978d5b4ccea08f267dae0232ec5405c1b05d3f3cd63f82097ea46c015d5c09e + url: "https://pub.dev" + source: hosted + version: "0.9.46" + just_audio_platform_interface: + dependency: transitive + description: + name: just_audio_platform_interface + sha256: "4cd94536af0219fa306205a58e78d67e02b0555283c1c094ee41e402a14a5c4a" + url: "https://pub.dev" + source: hosted + version: "4.5.0" + just_audio_web: + dependency: transitive + description: + name: just_audio_web + sha256: "6ba8a2a7e87d57d32f0f7b42856ade3d6a9fbe0f1a11fabae0a4f00bb73f0663" + url: "https://pub.dev" + source: hosted + version: "0.4.16" + jwt_decoder: + dependency: "direct main" + description: + name: jwt_decoder + sha256: "54774aebf83f2923b99e6416b4ea915d47af3bde56884eb622de85feabbc559f" + url: "https://pub.dev" + source: hosted + version: "2.0.1" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" + url: "https://pub.dev" + source: hosted + version: "10.0.9" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + url: "https://pub.dev" + source: hosted + version: "3.0.9" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + lints: + dependency: transitive + description: + name: lints + sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 + url: "https://pub.dev" + source: hosted + version: "5.1.1" + live_activities: + dependency: "direct main" + description: + name: live_activities + sha256: f539d1b3458baa87333b16d2e7c90710d1131ba975a6dc21cdad28974bf16408 + url: "https://pub.dev" + source: hosted + version: "2.4.1" + local_auth: + dependency: "direct main" + description: + name: local_auth + sha256: "434d854cf478f17f12ab29a76a02b3067f86a63a6d6c4eb8fbfdcfe4879c1b7b" + url: "https://pub.dev" + source: hosted + version: "2.3.0" + local_auth_android: + dependency: transitive + description: + name: local_auth_android + sha256: "82b2bdeee2199a510d3b7716121e96a6609da86693bb0863edd8566355406b79" + url: "https://pub.dev" + source: hosted + version: "1.0.50" + local_auth_darwin: + dependency: transitive + description: + name: local_auth_darwin + sha256: "25163ce60a5a6c468cf7a0e3dc8a165f824cabc2aa9e39a5e9fc5c2311b7686f" + url: "https://pub.dev" + source: hosted + version: "1.5.0" + local_auth_platform_interface: + dependency: transitive + description: + name: local_auth_platform_interface + sha256: "1b842ff177a7068442eae093b64abe3592f816afd2a533c0ebcdbe40f9d2075a" + url: "https://pub.dev" + source: hosted + version: "1.0.10" + local_auth_windows: + dependency: transitive + description: + name: local_auth_windows + sha256: bc4e66a29b0fdf751aafbec923b5bed7ad6ed3614875d8151afe2578520b2ab5 + url: "https://pub.dev" + source: hosted + version: "1.0.11" + location: + dependency: "direct main" + description: + name: location + sha256: b080053c181c7d152c43dd576eec6436c40e25f326933051c330da563ddd5333 + url: "https://pub.dev" + source: hosted + version: "8.0.1" + location_platform_interface: + dependency: transitive + description: + name: location_platform_interface + sha256: ca8700bb3f6b1e8b2afbd86bd78b2280d116c613ca7bfa1d4d7b64eba357d749 + url: "https://pub.dev" + source: hosted + version: "6.0.1" + location_web: + dependency: transitive + description: + name: location_web + sha256: b8e3add5efe0d65c5e692b7a135d80a4015c580d3ea646fa71973e97668dd868 + url: "https://pub.dev" + source: hosted + version: "6.0.1" + logging: + dependency: transitive + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://pub.dev" + source: hosted + version: "1.3.0" + lottie: + dependency: "direct main" + description: + name: lottie + sha256: c5fa04a80a620066c15cf19cc44773e19e9b38e989ff23ea32e5903ef1015950 + url: "https://pub.dev" + source: hosted + version: "3.3.1" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + meta: + dependency: transitive + description: + name: meta + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + url: "https://pub.dev" + source: hosted + version: "1.16.0" + mime: + dependency: transitive + description: + name: mime + sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" + url: "https://pub.dev" + source: hosted + version: "1.0.6" + nested: + dependency: transitive + description: + name: nested + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + octo_image: + dependency: transitive + description: + name: octo_image + sha256: "34faa6639a78c7e3cbe79be6f9f96535867e879748ade7d17c9b1ae7536293bd" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + package_config: + dependency: transitive + description: + name: package_config + sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc + url: "https://pub.dev" + source: hosted + version: "2.2.0" + package_info_plus: + dependency: "direct main" + description: + name: package_info_plus + sha256: "7976bfe4c583170d6cdc7077e3237560b364149fcd268b5f53d95a991963b191" + url: "https://pub.dev" + source: hosted + version: "8.3.0" + package_info_plus_platform_interface: + dependency: transitive + description: + name: package_info_plus_platform_interface + sha256: "6c935fb612dff8e3cc9632c2b301720c77450a126114126ffaafe28d2e87956c" + url: "https://pub.dev" + source: hosted + version: "3.2.0" + path: + dependency: "direct main" + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + path_parsing: + dependency: transitive + description: + name: path_parsing + sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + path_provider: + dependency: transitive + description: + name: path_provider + sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" + url: "https://pub.dev" + source: hosted + version: "2.1.5" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9 + url: "https://pub.dev" + source: hosted + version: "2.2.17" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 + url: "https://pub.dev" + source: hosted + version: "2.2.1" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 + url: "https://pub.dev" + source: hosted + version: "2.3.0" + permission_handler: + dependency: "direct main" + description: + name: permission_handler + sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849" + url: "https://pub.dev" + source: hosted + version: "11.4.0" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc + url: "https://pub.dev" + source: hosted + version: "12.1.0" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 + url: "https://pub.dev" + source: hosted + version: "9.4.7" + permission_handler_html: + dependency: transitive + description: + name: permission_handler_html + sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" + url: "https://pub.dev" + source: hosted + version: "0.1.3+5" + permission_handler_platform_interface: + dependency: transitive + description: + name: permission_handler_platform_interface + sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 + url: "https://pub.dev" + source: hosted + version: "4.3.0" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" + url: "https://pub.dev" + source: hosted + version: "0.2.1" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646" + url: "https://pub.dev" + source: hosted + version: "6.1.0" + platform: + dependency: transitive + description: + name: platform + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" + url: "https://pub.dev" + source: hosted + version: "3.1.6" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + pointycastle: + dependency: transitive + description: + name: pointycastle + sha256: "4be0097fcf3fd3e8449e53730c631200ebc7b88016acecab2b0da2f0149222fe" + url: "https://pub.dev" + source: hosted + version: "3.9.1" + pool: + dependency: transitive + description: + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" + source: hosted + version: "1.5.1" + posix: + dependency: transitive + description: + name: posix + sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61" + url: "https://pub.dev" + source: hosted + version: "6.0.3" + provider: + dependency: transitive + description: + name: provider + sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84" + url: "https://pub.dev" + source: hosted + version: "6.1.5" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" + url: "https://pub.dev" + source: hosted + version: "1.5.0" + quick_actions: + dependency: "direct main" + description: + name: quick_actions + sha256: "7e35dd6a21f5bbd21acf6899039eaf85001a5ac26d52cbd6a8a2814505b90798" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + quick_actions_android: + dependency: transitive + description: + name: quick_actions_android + sha256: "8d88e90a236ffe92f1026ecc3b85acfefedffccb0c1be1c94c1c0298e8483ad8" + url: "https://pub.dev" + source: hosted + version: "1.0.21" + quick_actions_ios: + dependency: transitive + description: + name: quick_actions_ios + sha256: "837b7e6b5973784d3da56b8c959b446b215914f20405d88cd7d22a2fb94e4e4c" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + quick_actions_platform_interface: + dependency: transitive + description: + name: quick_actions_platform_interface + sha256: "1fec7068db5122cd019e9340d3d7be5d36eab099695ef3402c7059ee058329a4" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + recase: + dependency: transitive + description: + name: recase + sha256: e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213 + url: "https://pub.dev" + source: hosted + version: "4.1.0" + record: + dependency: "direct main" + description: + name: record + sha256: "2e3d56d196abcd69f1046339b75e5f3855b2406fc087e5991f6703f188aa03a6" + url: "https://pub.dev" + source: hosted + version: "5.2.1" + record_android: + dependency: transitive + description: + name: record_android + sha256: "97d7122455f30de89a01c6c244c839085be6b12abca251fc0e78f67fed73628b" + url: "https://pub.dev" + source: hosted + version: "1.3.3" + record_darwin: + dependency: transitive + description: + name: record_darwin + sha256: e487eccb19d82a9a39cd0126945cfc47b9986e0df211734e2788c95e3f63c82c + url: "https://pub.dev" + source: hosted + version: "1.2.2" + record_linux: + dependency: transitive + description: + name: record_linux + sha256: "74d41a9ebb1eb498a38e9a813dd524e8f0b4fdd627270bda9756f437b110a3e3" + url: "https://pub.dev" + source: hosted + version: "0.7.2" + record_platform_interface: + dependency: "direct overridden" + description: + name: record_platform_interface + sha256: "8a575828733d4c3cb5983c914696f40db8667eab3538d4c41c50cbb79e722ef4" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + record_web: + dependency: transitive + description: + name: record_web + sha256: a12856d0b3dd03d336b4b10d7520a8b3e21649a06a8f95815318feaa8f07adbb + url: "https://pub.dev" + source: hosted + version: "1.1.9" + record_windows: + dependency: transitive + description: + name: record_windows + sha256: "85a22fc97f6d73ecd67c8ba5f2f472b74ef1d906f795b7970f771a0914167e99" + url: "https://pub.dev" + source: hosted + version: "1.0.6" + rxdart: + dependency: transitive + description: + name: rxdart + sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" + url: "https://pub.dev" + source: hosted + version: "0.28.0" + sanitize_html: + dependency: transitive + description: + name: sanitize_html + sha256: "12669c4a913688a26555323fb9cec373d8f9fbe091f2d01c40c723b33caa8989" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + secure_string_operations: + dependency: "direct main" + description: + path: secure_string_operations + relative: true + source: path + version: "1.0.0" + share_plus: + dependency: "direct main" + description: + name: share_plus + sha256: "3ef39599b00059db0990ca2e30fca0a29d8b37aae924d60063f8e0184cf20900" + url: "https://pub.dev" + source: hosted + version: "7.2.2" + share_plus_platform_interface: + dependency: transitive + description: + name: share_plus_platform_interface + sha256: "251eb156a8b5fa9ce033747d73535bf53911071f8d3b6f4f0b578505ce0d4496" + url: "https://pub.dev" + source: hosted + version: "3.4.0" + shelf: + dependency: transitive + description: + name: shelf + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 + url: "https://pub.dev" + source: hosted + version: "1.4.2" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" + url: "https://pub.dev" + source: hosted + version: "3.0.0" + shimmer: + dependency: "direct main" + description: + name: shimmer + sha256: "5f88c883a22e9f9f299e5ba0e4f7e6054857224976a5d9f839d4ebdc94a14ac9" + url: "https://pub.dev" + source: hosted + version: "3.0.0" + sign_in_with_apple: + dependency: "direct main" + description: + name: sign_in_with_apple + sha256: e84a62e17b7e463abf0a64ce826c2cd1f0b72dff07b7b275e32d5302d76fb4c5 + url: "https://pub.dev" + source: hosted + version: "6.1.4" + sign_in_with_apple_platform_interface: + dependency: transitive + description: + name: sign_in_with_apple_platform_interface + sha256: c2ef2ce6273fce0c61acd7e9ff5be7181e33d7aa2b66508b39418b786cca2119 + url: "https://pub.dev" + source: hosted + version: "1.1.0" + sign_in_with_apple_web: + dependency: transitive + description: + name: sign_in_with_apple_web + sha256: "2f7c38368f49e3f2043bca4b46a4a61aaae568c140a79aa0675dc59ad0ca49bc" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + slide_to_act: + dependency: "direct main" + description: + name: slide_to_act + sha256: cd4ea5019754347d5a2b0375e802ad948610a0e233adfe51a9cc5b3a1fc3a43b + url: "https://pub.dev" + source: hosted + version: "2.0.2" + source_gen: + dependency: transitive + description: + name: source_gen + sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + source_span: + dependency: transitive + description: + name: source_span + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + url: "https://pub.dev" + source: hosted + version: "1.10.1" + sprintf: + dependency: transitive + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + sqflite: + dependency: "direct main" + description: + name: sqflite + sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03 + url: "https://pub.dev" + source: hosted + version: "2.4.2" + sqflite_android: + dependency: transitive + description: + name: sqflite_android + sha256: "2b3070c5fa881839f8b402ee4a39c1b4d561704d4ebbbcfb808a119bc2a1701b" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + sqflite_common: + dependency: transitive + description: + name: sqflite_common + sha256: "84731e8bfd8303a3389903e01fb2141b6e59b5973cacbb0929021df08dddbe8b" + url: "https://pub.dev" + source: hosted + version: "2.5.5" + sqflite_darwin: + dependency: transitive + description: + name: sqflite_darwin + sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3" + url: "https://pub.dev" + source: hosted + version: "2.4.2" + sqflite_platform_interface: + dependency: transitive + description: + name: sqflite_platform_interface + sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" + url: "https://pub.dev" + source: hosted + version: "2.4.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + stream_transform: + dependency: transitive + description: + name: stream_transform + sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 + url: "https://pub.dev" + source: hosted + version: "2.1.1" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + stripe_android: + dependency: transitive + description: + name: stripe_android + sha256: a666352e0c20753ecd8feebb5944882bf597167be4f020641266515a495bd55f + url: "https://pub.dev" + source: hosted + version: "11.5.0" + stripe_ios: + dependency: transitive + description: + name: stripe_ios + sha256: "0f7afed3ac61e544e7525da9b692b23d93e762d56f6c9aa7f77fc6d9a686a65d" + url: "https://pub.dev" + source: hosted + version: "11.5.0" + stripe_platform_interface: + dependency: transitive + description: + name: stripe_platform_interface + sha256: "23c10f3875da07f85a6196fcb676e64c767ad2d04ec73ba4e941ac797a4ee4d3" + url: "https://pub.dev" + source: hosted + version: "11.5.0" + synchronized: + dependency: transitive + description: + name: synchronized + sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 + url: "https://pub.dev" + source: hosted + version: "3.4.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test_api: + dependency: transitive + description: + name: test_api + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + url: "https://pub.dev" + source: hosted + version: "0.7.4" + timezone: + dependency: transitive + description: + name: timezone + sha256: dd14a3b83cfd7cb19e7888f1cbc20f258b8d71b54c06f79ac585f14093a287d1 + url: "https://pub.dev" + source: hosted + version: "0.10.1" + timing: + dependency: transitive + description: + name: timing + sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe" + url: "https://pub.dev" + source: hosted + version: "1.0.2" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8 + url: "https://pub.dev" + source: hosted + version: "6.3.2" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79" + url: "https://pub.dev" + source: hosted + version: "6.3.16" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb" + url: "https://pub.dev" + source: hosted + version: "6.3.3" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" + url: "https://pub.dev" + source: hosted + version: "3.2.1" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2" + url: "https://pub.dev" + source: hosted + version: "3.2.2" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" + url: "https://pub.dev" + source: hosted + version: "3.1.4" + uuid: + dependency: transitive + description: + name: uuid + sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff + url: "https://pub.dev" + source: hosted + version: "4.5.1" + vector_graphics: + dependency: transitive + description: + name: vector_graphics + sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6 + url: "https://pub.dev" + source: hosted + version: "1.1.19" + vector_graphics_codec: + dependency: transitive + description: + name: vector_graphics_codec + sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146" + url: "https://pub.dev" + source: hosted + version: "1.1.13" + vector_graphics_compiler: + dependency: transitive + description: + name: vector_graphics_compiler + sha256: "557a315b7d2a6dbb0aaaff84d857967ce6bdc96a63dc6ee2a57ce5a6ee5d3331" + url: "https://pub.dev" + source: hosted + version: "1.1.17" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vibration: + dependency: "direct main" + description: + name: vibration + sha256: "3b08a0579c2f9c18d5d78cb5c74f1005f731e02eeca6d72561a2e8059bf98ec3" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + vibration_platform_interface: + dependency: transitive + description: + name: vibration_platform_interface + sha256: "6ffeee63547562a6fef53c05a41d4fdcae2c0595b83ef59a4813b0612cd2bc36" + url: "https://pub.dev" + source: hosted + version: "0.0.3" + video_player: + dependency: "direct main" + description: + name: video_player + sha256: "0d55b1f1a31e5ad4c4967bfaa8ade0240b07d20ee4af1dfef5f531056512961a" + url: "https://pub.dev" + source: hosted + version: "2.10.0" + video_player_android: + dependency: transitive + description: + name: video_player_android + sha256: "9d5af2d233ba69df803dcf2f31e66d9a4c6206f2d96178df06b09b0ec3056b39" + url: "https://pub.dev" + source: hosted + version: "2.8.9" + video_player_avfoundation: + dependency: transitive + description: + name: video_player_avfoundation + sha256: "9fedd55023249f3a02738c195c906b4e530956191febf0838e37d0dac912f953" + url: "https://pub.dev" + source: hosted + version: "2.8.0" + video_player_platform_interface: + dependency: transitive + description: + name: video_player_platform_interface + sha256: cf2a1d29a284db648fd66cbd18aacc157f9862d77d2cc790f6f9678a46c1db5a + url: "https://pub.dev" + source: hosted + version: "6.4.0" + video_player_web: + dependency: transitive + description: + name: video_player_web + sha256: "9f3c00be2ef9b76a95d94ac5119fb843dca6f2c69e6c9968f6f2b6c9e7afbdeb" + url: "https://pub.dev" + source: hosted + version: "2.4.0" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 + url: "https://pub.dev" + source: hosted + version: "15.0.0" + wakelock_plus: + dependency: "direct main" + description: + name: wakelock_plus + sha256: a474e314c3e8fb5adef1f9ae2d247e57467ad557fa7483a2b895bc1b421c5678 + url: "https://pub.dev" + source: hosted + version: "1.3.2" + wakelock_plus_platform_interface: + dependency: transitive + description: + name: wakelock_plus_platform_interface + sha256: e10444072e50dbc4999d7316fd303f7ea53d31c824aa5eb05d7ccbdd98985207 + url: "https://pub.dev" + source: hosted + version: "1.2.3" + watcher: + dependency: transitive + description: + name: watcher + sha256: "0b7fd4a0bbc4b92641dbf20adfd7e3fd1398fe17102d94b674234563e110088a" + url: "https://pub.dev" + source: hosted + version: "1.1.2" + web: + dependency: transitive + description: + name: web + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 + url: "https://pub.dev" + source: hosted + version: "3.0.3" + webview_flutter: + dependency: "direct main" + description: + name: webview_flutter + sha256: ec81f57aa1611f8ebecf1d2259da4ef052281cb5ad624131c93546c79ccc7736 + url: "https://pub.dev" + source: hosted + version: "4.9.0" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: "47a8da40d02befda5b151a26dba71f47df471cddd91dfdb7802d0a87c5442558" + url: "https://pub.dev" + source: hosted + version: "3.16.9" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: f0dc2dc3a2b1e3a6abdd6801b9355ebfeb3b8f6cde6b9dc7c9235909c4a1f147 + url: "https://pub.dev" + source: hosted + version: "2.13.1" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: "71523b9048cf510cfa1fd4e0a3fa5e476a66e0884d5df51d59d5023dba237107" + url: "https://pub.dev" + source: hosted + version: "3.22.1" + win32: + dependency: transitive + description: + name: win32 + sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" + url: "https://pub.dev" + source: hosted + version: "5.14.0" + win32_registry: + dependency: transitive + description: + name: win32_registry + sha256: "6f1b564492d0147b330dd794fee8f512cec4977957f310f9951b5f9d83618dae" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + xml: + dependency: transitive + description: + name: xml + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 + url: "https://pub.dev" + source: hosted + version: "6.5.0" + yaml: + dependency: transitive + description: + name: yaml + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" + source: hosted + version: "3.1.3" + youtube_player_flutter: + dependency: "direct main" + description: + name: youtube_player_flutter + sha256: "4d14aa47f9c84929b5400a87ade4dcfdab87a2ca2e0b18ecc2ef852b1440e123" + url: "https://pub.dev" + source: hosted + version: "9.1.1" +sdks: + dart: ">=3.8.0 <4.0.0" + flutter: ">=3.29.0" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100755 index 0000000..68ac8b7 --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,149 @@ +name: sefer_driver +description: A new Flutter project. +publish_to: "none" # Remove this line if you wish to publish to pub.dev + +version: 1.0.0+1 + +environment: + sdk: ">=3.0.5 <4.0.0" + +dependencies: + flutter: + sdk: flutter + secure_string_operations: + path: ./secure_string_operations + flutter_overlay_apps: + path: ./flutter_overlay_apps-main + bubble_head: + path: ./bubble-master + # flutter_overlay_window: ^0.4.4 + cupertino_icons: ^1.0.2 + firebase_messaging: ^15.0.3 + firebase_core: ^3.2.0 + flutter_local_notifications: ^18.0.1 + google_maps_flutter: ^2.10.1 + sqflite: ^2.3.0 + path: ^1.8.3 + # lottie: ^2.5.0 + intl: ^0.19.0 + google_fonts: ^6.2.1 + http: ^1.2.2 + get: ^4.6.5 + get_storage: ^2.1.1 + url_launcher: ^6.1.12 + location: ^8.0.0 + google_polyline_algorithm: ^3.1.0 + # custom_searchable_dropdown: ^2.1.1 + animated_text_kit: ^4.2.2 + flutter_secure_storage: ^9.0.0 + geolocator: ^13.0.2 + flutter_paypal: ^0.2.0 + flutter_launcher_icons: ^0.14.2 #to be remove + # crypto: ^3.0.3 + encrypt: ^5.0.3 + flutter_rating_bar: ^4.0.1 + flutter_font_icons: ^2.2.5 + image_picker: ^1.0.4 + flutter_stripe: ^11.3.0 + camera: ^0.11.0+1 #to be remove + flutter_widget_from_html: ^0.15.1 + local_auth: ^2.1.7 + image: ^4.1.3 #to be remove + image_cropper: ^8.1.0 + envied: ^1.0.0 + # cached_network_image: ^3.3.0 #to be remove + calendar_builder: ^0.0.6 + fl_chart: ^0.70.0 + # agora_rtc_engine: ^6.2.6 + flutter_tts: ^4.0.2 + permission_handler: ^11.3.0 + # google_generative_ai: ^0.0.1-dev + vibration: ^2.0.1 + wakelock_plus: + # background_location: ^0.13.0 + # background_location: + # git: + # url: https://github.com/dharmik-dalwadi-seaflux/background_location.git + # ref: master + + # flutter_overlay_apps: + # git: + # url: https://github.com/Hamza-Ayed/flutter_overlay_apps.git + # ref: main + record: ^5.0.5 + dio: ^5.4.3+1 + webview_flutter: ^4.9.0 + just_audio: ^0.9.37 + share_plus: ^7.2.1 + google_sign_in: ^6.2.1 + # google_mlkit_text_recognition: ^0.14.0 + sign_in_with_apple: ^6.1.0 + firebase_auth: ^5.1.2 + package_info_plus: ^8.0.0 + flutter_image_compress: ^2.3.0 + flutter_contacts: ^1.1.8 + flutter_overlay_window: ^0.4.4 + googleapis_auth: ^1.6.0 + video_player: ^2.9.2 + youtube_player_flutter: ^9.0.4 + flutter_confetti: ^0.3.0 + slide_to_act: ^2.0.2 + live_activities: ^2.3.0 + quick_actions: ^1.1.0 + jwt_decoder: ^2.0.1 + jailbreak_root_detection: ^1.1.5 + device_info_plus: ^11.3.0 + flutter_web_browser: ^0.17.3 + # flutter_isolate: ^2.1.0 + # lingo_hunter: ^1.0.3 + shimmer: ^3.0.0 + flutter_svg: ^2.2.0 + lottie: ^3.3.1 + +dev_dependencies: + flutter_test: + sdk: flutter + + flutter_lints: ^5.0.0 + envied_generator: ^1.0.0 + build_runner: ^2.4.6 + +flutter_launcher_icons: + android: "launcher_icon" + ios: true + image_path: "assets/images/logo.png" + min_sdk_android: 21 + web: + generate: true + image_path: "assets/images/logo.png" + background_color: "#hexcode" + theme_color: "#hexcode" + windows: + generate: true + image_path: "assets/images/logo.png" + icon_size: 48 + macos: + generate: true + image_path: "assets/images/logo.png" + +flutter: + uses-material-design: true + assets: + - assets/ + - assets/images/ + - assets/fonts/ + - assets/lang/ + # - shorebird.yaml + + fonts: + # - family: mohanad + # fonts: + # - asset: assets/fonts/mohanad.ttf + # - family: josefin + # fonts: + # - asset: assets/fonts/josefin.ttf + - family: digit + fonts: + - asset: assets/fonts/digit.ttf +dependency_overrides: + record_platform_interface: "1.2.0" diff --git a/secure_string_operations/lib/secure_string_operations.dart b/secure_string_operations/lib/secure_string_operations.dart new file mode 100755 index 0000000..d428ac3 --- /dev/null +++ b/secure_string_operations/lib/secure_string_operations.dart @@ -0,0 +1,47 @@ +// File: lib/secure_string_operations.dart + +library secure_string_operations; + +class X { + static String c(String a, Map b) { + StringBuffer c = StringBuffer(); + c.write(a); + + String d = "Bl"; + c.write(b[d] ?? d); + + StringBuffer e = StringBuffer(); + String f = c.toString(); + + for (int g = 0; g < f.length; g++) { + String h = f[g]; + e.write(b[h] ?? h); + } + + return e.toString(); + } + + static String r(String a, Map b) { + StringBuffer c = StringBuffer(); + String d = "Bl"; + int e = d.length; + + for (int f = 0; f < a.length; f++) { + String g = a[f]; + String h = b.keys.firstWhere( + (i) => b[i] == g, + orElse: () => g, + ); + + c.write(h); + } + + String j = c.toString(); + + if (j.endsWith(d)) { + j = j.substring(0, j.length - e); + } + + return j; + } +} diff --git a/secure_string_operations/pubspec.lock b/secure_string_operations/pubspec.lock new file mode 100755 index 0000000..fce7ef1 --- /dev/null +++ b/secure_string_operations/pubspec.lock @@ -0,0 +1,5 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: {} +sdks: + dart: ">=2.12.0 <4.0.0" diff --git a/secure_string_operations/pubspec.yaml b/secure_string_operations/pubspec.yaml new file mode 100755 index 0000000..b910400 --- /dev/null +++ b/secure_string_operations/pubspec.yaml @@ -0,0 +1,6 @@ +name: secure_string_operations +description: A package for secure string operations +version: 1.0.0 + +environment: + sdk: ">=2.12.0 <3.0.0" diff --git a/test/widget_test.dart b/test/widget_test.dart new file mode 100644 index 0000000..db7ddd3 --- /dev/null +++ b/test/widget_test.dart @@ -0,0 +1,30 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility in the flutter_test package. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import '../lib/main.dart'; + +void main() { + testWidgets('Counter increments smoke test', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(const MyApp()); + + // Verify that our counter starts at 0. + expect(find.text('0'), findsOneWidget); + expect(find.text('1'), findsNothing); + + // Tap the '+' icon and trigger a frame. + await tester.tap(find.byIcon(Icons.add)); + await tester.pump(); + + // Verify that our counter has incremented. + expect(find.text('0'), findsNothing); + expect(find.text('1'), findsOneWidget); + }); +} diff --git a/web/favicon.png b/web/favicon.png new file mode 100644 index 0000000..500bc8e Binary files /dev/null and b/web/favicon.png differ diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png new file mode 100644 index 0000000..8b07675 Binary files /dev/null and b/web/icons/Icon-192.png differ diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png new file mode 100644 index 0000000..8a46765 Binary files /dev/null and b/web/icons/Icon-512.png differ diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000..8b07675 Binary files /dev/null and b/web/icons/Icon-maskable-192.png differ diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000..8a46765 Binary files /dev/null and b/web/icons/Icon-maskable-512.png differ diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..492de14 --- /dev/null +++ b/web/index.html @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + intaleq_driver + + + + + + diff --git a/web/manifest.json b/web/manifest.json new file mode 100644 index 0000000..63e5d46 --- /dev/null +++ b/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "intaleq_driver", + "short_name": "intaleq_driver", + "start_url": ".", + "display": "standalone", + "background_color": "#hexcode", + "theme_color": "#hexcode", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} \ No newline at end of file diff --git a/windows/.gitignore b/windows/.gitignore new file mode 100644 index 0000000..d492d0d --- /dev/null +++ b/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/windows/CMakeLists.txt b/windows/CMakeLists.txt new file mode 100644 index 0000000..e516f18 --- /dev/null +++ b/windows/CMakeLists.txt @@ -0,0 +1,108 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(intaleq_driver LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "intaleq_driver") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(VERSION 3.14...3.25) + +# Define build configuration option. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") + endif() +endif() +# Define settings for the Profile build mode. +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/windows/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/windows/flutter/CMakeLists.txt b/windows/flutter/CMakeLists.txt new file mode 100644 index 0000000..903f489 --- /dev/null +++ b/windows/flutter/CMakeLists.txt @@ -0,0 +1,109 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.14) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# Set fallback configurations for older versions of the flutter tool. +if (NOT DEFINED FLUTTER_TARGET_PLATFORM) + set(FLUTTER_TARGET_PLATFORM "windows-x64") +endif() + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + ${FLUTTER_TARGET_PLATFORM} $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..5baf75d --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,47 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void RegisterPlugins(flutter::PluginRegistry* registry) { + FileSelectorWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FileSelectorWindows")); + FirebaseAuthPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FirebaseAuthPluginCApi")); + FirebaseCorePluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); + FlutterInappwebviewWindowsPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FlutterInappwebviewWindowsPluginCApi")); + FlutterSecureStorageWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); + FlutterTtsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FlutterTtsPlugin")); + GeolocatorWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("GeolocatorWindows")); + LocalAuthPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("LocalAuthPlugin")); + PermissionHandlerWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin")); + RecordWindowsPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("RecordWindowsPluginCApi")); + SharePlusWindowsPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi")); + UrlLauncherWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("UrlLauncherWindows")); +} diff --git a/windows/flutter/generated_plugin_registrant.h b/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..dc139d8 --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake new file mode 100644 index 0000000..769cfd2 --- /dev/null +++ b/windows/flutter/generated_plugins.cmake @@ -0,0 +1,35 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + file_selector_windows + firebase_auth + firebase_core + flutter_inappwebview_windows + flutter_secure_storage_windows + flutter_tts + geolocator_windows + local_auth_windows + permission_handler_windows + record_windows + share_plus + url_launcher_windows +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/windows/runner/CMakeLists.txt b/windows/runner/CMakeLists.txt new file mode 100644 index 0000000..394917c --- /dev/null +++ b/windows/runner/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 3.14) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the build version. +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") + +# Disable Windows macros that collide with C++ standard library functions. +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/windows/runner/Runner.rc b/windows/runner/Runner.rc new file mode 100644 index 0000000..25c53c2 --- /dev/null +++ b/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD +#else +#define VERSION_AS_NUMBER 1,0,0,0 +#endif + +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "com.example" "\0" + VALUE "FileDescription", "intaleq_driver" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "intaleq_driver" "\0" + VALUE "LegalCopyright", "Copyright (C) 2025 com.example. All rights reserved." "\0" + VALUE "OriginalFilename", "intaleq_driver.exe" "\0" + VALUE "ProductName", "intaleq_driver" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/windows/runner/flutter_window.cpp b/windows/runner/flutter_window.cpp new file mode 100644 index 0000000..955ee30 --- /dev/null +++ b/windows/runner/flutter_window.cpp @@ -0,0 +1,71 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + + flutter_controller_->engine()->SetNextFrameCallback([&]() { + this->Show(); + }); + + // Flutter can complete the first frame before the "show window" callback is + // registered. The following call ensures a frame is pending to ensure the + // window is shown. It is a no-op if the first frame hasn't completed yet. + flutter_controller_->ForceRedraw(); + + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/windows/runner/flutter_window.h b/windows/runner/flutter_window.h new file mode 100644 index 0000000..6da0652 --- /dev/null +++ b/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/windows/runner/main.cpp b/windows/runner/main.cpp new file mode 100644 index 0000000..2791802 --- /dev/null +++ b/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.Create(L"intaleq_driver", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/windows/runner/resource.h b/windows/runner/resource.h new file mode 100644 index 0000000..66a65d1 --- /dev/null +++ b/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/windows/runner/resources/app_icon.ico b/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000..2e3e6c5 Binary files /dev/null and b/windows/runner/resources/app_icon.ico differ diff --git a/windows/runner/runner.exe.manifest b/windows/runner/runner.exe.manifest new file mode 100644 index 0000000..153653e --- /dev/null +++ b/windows/runner/runner.exe.manifest @@ -0,0 +1,14 @@ + + + + + PerMonitorV2 + + + + + + + + + diff --git a/windows/runner/utils.cpp b/windows/runner/utils.cpp new file mode 100644 index 0000000..3a0b465 --- /dev/null +++ b/windows/runner/utils.cpp @@ -0,0 +1,65 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + unsigned int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr) + -1; // remove the trailing null character + int input_length = (int)wcslen(utf16_string); + std::string utf8_string; + if (target_length == 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + input_length, utf8_string.data(), target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/windows/runner/utils.h b/windows/runner/utils.h new file mode 100644 index 0000000..3879d54 --- /dev/null +++ b/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/windows/runner/win32_window.cpp b/windows/runner/win32_window.cpp new file mode 100644 index 0000000..60608d0 --- /dev/null +++ b/windows/runner/win32_window.cpp @@ -0,0 +1,288 @@ +#include "win32_window.h" + +#include +#include + +#include "resource.h" + +namespace { + +/// Window attribute that enables dark mode window decorations. +/// +/// Redefined in case the developer's machine has a Windows SDK older than +/// version 10.0.22000.0. +/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute +#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE +#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 +#endif + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +/// Registry key for app theme preference. +/// +/// A value of 0 indicates apps should use dark mode. A non-zero or missing +/// value indicates apps should use light mode. +constexpr const wchar_t kGetPreferredBrightnessRegKey[] = + L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; +constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + } + FreeLibrary(user32_module); +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registrar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::Create(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + UpdateTheme(window); + + return OnCreate(); +} + +bool Win32Window::Show() { + return ShowWindow(window_handle_, SW_SHOWNORMAL); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + + case WM_DWMCOLORIZATIONCOLORCHANGED: + UpdateTheme(hwnd); + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} + +void Win32Window::UpdateTheme(HWND const window) { + DWORD light_mode; + DWORD light_mode_size = sizeof(light_mode); + LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, + kGetPreferredBrightnessRegValue, + RRF_RT_REG_DWORD, nullptr, &light_mode, + &light_mode_size); + + if (result == ERROR_SUCCESS) { + BOOL enable_dark_mode = light_mode == 0; + DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, + &enable_dark_mode, sizeof(enable_dark_mode)); + } +} diff --git a/windows/runner/win32_window.h b/windows/runner/win32_window.h new file mode 100644 index 0000000..e901dde --- /dev/null +++ b/windows/runner/win32_window.h @@ -0,0 +1,102 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates a win32 window with |title| that is positioned and sized using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size this function will scale the inputted width and height as + // as appropriate for the default monitor. The window is invisible until + // |Show| is called. Returns true if the window was created successfully. + bool Create(const std::wstring& title, const Point& origin, const Size& size); + + // Show the current window. Returns true if the window was successfully shown. + bool Show(); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + // Update the window frame's theme to match the system theme. + static void UpdateTheme(HWND const window); + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_