diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..f48a581 Binary files /dev/null and b/.DS_Store differ diff --git a/.env b/.env new file mode 100644 index 0000000..04ede4f --- /dev/null +++ b/.env @@ -0,0 +1,10 @@ +Ropsten_Testnet='https://ropsten.infura.io/v3/26424728dcd34559b39e12d25bac4549' +Rinkeby_Testnet='https://rinkeby.infura.io/v3/26424728dcd34559b39e12d25bac4549' +Coerli_Testnet= 'https://coerli.infura.io/v3/26424728dcd34559b39e12d25bac4549' +Kovan_Testnet='https://kovan.infura.io/v3/26424728dcd34559b39e12d25bac4549' +Binance_Mainnet='https://bsc-dataseed.binance.org/' + +Ethereum_Mainnet='https://mainnet.infura.io/v3/a367d9ff5b4e497d9be4ad58ab014c9b' +Matic_Mainnet = 'https://rpc-mainnet.maticvigil.com/v1/fcb3ed080473b5208a414da8aeb918407ec546d5' +Mumbai_Testnet = 'https://rpc-mumbai.maticvigil.com/v1/fcb3ed080473b5208a414da8aeb918407ec546d5' +Default_rpc_url = 'https://rpc-mainnet.maticvigil.com/v1/fcb3ed080473b5208a414da8aeb918407ec546d5' \ No newline at end of file diff --git a/.flutter-plugins b/.flutter-plugins new file mode 100644 index 0000000..4889330 --- /dev/null +++ b/.flutter-plugins @@ -0,0 +1,19 @@ +# This is a generated file; do not edit or check into version control. +flutter_plugin_android_lifecycle=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_plugin_android_lifecycle-2.0.7/ +flutter_secure_storage=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_secure_storage-4.2.1/ +flutter_share=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_share-2.0.0/ +local_auth=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/local_auth-2.1.2/ +local_auth_android=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/local_auth_android-1.0.15/ +local_auth_ios=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/local_auth_ios-1.0.10/ +local_auth_windows=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/local_auth_windows-1.0.4/ +path_provider=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-2.0.11/ +path_provider_android=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_android-2.0.22/ +path_provider_ios=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_ios-2.0.11/ +path_provider_linux=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.7/ +path_provider_macos=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-2.0.6/ +path_provider_windows=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3/ +permission_handler=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler-10.2.0/ +permission_handler_android=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler_android-10.2.0/ +permission_handler_apple=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler_apple-9.0.7/ +permission_handler_windows=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler_windows-0.1.2/ +qrscan=/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/qrscan-0.3.3/ diff --git a/.flutter-plugins-dependencies b/.flutter-plugins-dependencies new file mode 100644 index 0000000..a66bbf1 --- /dev/null +++ b/.flutter-plugins-dependencies @@ -0,0 +1 @@ +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"flutter_secure_storage","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_secure_storage-4.2.1/","native_build":true,"dependencies":[]},{"name":"flutter_share","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_share-2.0.0/","native_build":true,"dependencies":[]},{"name":"local_auth_ios","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/local_auth_ios-1.0.10/","native_build":true,"dependencies":[]},{"name":"path_provider_ios","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_ios-2.0.11/","native_build":true,"dependencies":[]},{"name":"permission_handler_apple","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler_apple-9.0.7/","native_build":true,"dependencies":[]}],"android":[{"name":"flutter_plugin_android_lifecycle","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_plugin_android_lifecycle-2.0.7/","native_build":true,"dependencies":[]},{"name":"flutter_secure_storage","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_secure_storage-4.2.1/","native_build":true,"dependencies":[]},{"name":"flutter_share","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_share-2.0.0/","native_build":true,"dependencies":[]},{"name":"local_auth_android","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/local_auth_android-1.0.15/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"path_provider_android","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_android-2.0.22/","native_build":true,"dependencies":[]},{"name":"permission_handler_android","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler_android-10.2.0/","native_build":true,"dependencies":[]},{"name":"qrscan","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/qrscan-0.3.3/","native_build":true,"dependencies":[]}],"macos":[{"name":"path_provider_macos","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-2.0.6/","native_build":true,"dependencies":[]}],"linux":[{"name":"flutter_secure_storage","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_secure_storage-4.2.1/","native_build":true,"dependencies":[]},{"name":"path_provider_linux","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.7/","native_build":false,"dependencies":[]}],"windows":[{"name":"local_auth_windows","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/local_auth_windows-1.0.4/","native_build":true,"dependencies":[]},{"name":"path_provider_windows","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3/","native_build":false,"dependencies":[]},{"name":"permission_handler_windows","path":"/Users/mac/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler_windows-0.1.2/","native_build":true,"dependencies":[]}],"web":[]},"dependencyGraph":[{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"flutter_secure_storage","dependencies":[]},{"name":"flutter_share","dependencies":[]},{"name":"local_auth","dependencies":["local_auth_android","local_auth_ios","local_auth_windows"]},{"name":"local_auth_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"local_auth_ios","dependencies":[]},{"name":"local_auth_windows","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_ios","path_provider_linux","path_provider_macos","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_ios","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"permission_handler","dependencies":["permission_handler_android","permission_handler_apple","permission_handler_windows"]},{"name":"permission_handler_android","dependencies":[]},{"name":"permission_handler_apple","dependencies":[]},{"name":"permission_handler_windows","dependencies":[]},{"name":"qrscan","dependencies":[]}],"date_created":"2022-12-19 13:56:10.698836","version":"3.3.10"} \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..e33833f --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,33 @@ +on: + pull_request: + branches: + - main + - master + push: + braches: + - main + - master + - develop +name: "Build & Release" +jobs: + build: + name: Build & Release + runs-on: macos-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-java@v1 + with: + java-version: "12.x" + - uses: subosito/flutter-action@v2 + with: + channel: "stable" + flutter-version: "3.3.9" + architecture: x64 + - run: flutter clean + - run: flutter pub get + - run: flutter build apk + - name: Push to Releases + uses: ncipollo/release-action@v1 + with: + artifacts: "build/app/outputs/flutter-apk/*.apk" + tag: v1.0.${{ github.run_number }} \ No newline at end of file diff --git a/.metadata b/.metadata new file mode 100644 index 0000000..db36dec --- /dev/null +++ b/.metadata @@ -0,0 +1,36 @@ +# 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. + +version: + revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + channel: stable + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + - platform: android + create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + - platform: ios + create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + - platform: web + create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + + # 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/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..be4b652 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "cSpell.words": [ + "Accountphrase", + "ARGB", + "pincontroller" + ] +} \ No newline at end of file diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..61b6c4d --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,29 @@ +# 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-lang.github.io/linter/lints/index.html. + # + # 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..6f56801 --- /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/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..659c532 --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,71 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion 33 + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.lazarusnetwork.netsepio" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. + minSdkVersion 21 + targetSdkVersion 33 + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..2feccb0 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..595a652 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/kotlin/com/lazarus/MyriadFlow/lazarus/MainActivity.kt b/android/app/src/main/kotlin/com/lazarus/MyriadFlow/lazarus/MainActivity.kt new file mode 100644 index 0000000..e40eaaf --- /dev/null +++ b/android/app/src/main/kotlin/com/lazarus/MyriadFlow/lazarus/MainActivity.kt @@ -0,0 +1,11 @@ +package com.lazarusnetwork.netsepio +import io.flutter.embedding.android.FlutterFragmentActivity +import io.flutter.plugins.GeneratedPluginRegistrant +import io.flutter.embedding.engine.FlutterEngine +import androidx.annotation.NonNull; + +class MainActivity: FlutterFragmentActivity() { + override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { + GeneratedPluginRegistrant.registerWith(flutterEngine); + } +} \ No newline at end of file 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/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-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-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-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-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/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/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..2feccb0 --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..83ae220 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.6.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.1.2' + 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') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..94adc3a --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..cb24abd --- /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-7.4-all.zip diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..44e62bc --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/assets/abi.json b/assets/abi.json new file mode 100644 index 0000000..21a4fe6 --- /dev/null +++ b/assets/abi.json @@ -0,0 +1,861 @@ +[ + { + "inputs":[ + { + "internalType":"string", + "name":"name", + "type":"string" + }, + { + "internalType":"string", + "name":"symbol", + "type":"string" + } + ], + "stateMutability":"nonpayable", + "type":"constructor" + }, + { + "anonymous":false, + "inputs":[ + { + "indexed":true, + "internalType":"address", + "name":"owner", + "type":"address" + }, + { + "indexed":true, + "internalType":"address", + "name":"approved", + "type":"address" + }, + { + "indexed":true, + "internalType":"uint256", + "name":"tokenId", + "type":"uint256" + } + ], + "name":"Approval", + "type":"event" + }, + { + "anonymous":false, + "inputs":[ + { + "indexed":true, + "internalType":"address", + "name":"owner", + "type":"address" + }, + { + "indexed":true, + "internalType":"address", + "name":"operator", + "type":"address" + }, + { + "indexed":false, + "internalType":"bool", + "name":"approved", + "type":"bool" + } + ], + "name":"ApprovalForAll", + "type":"event" + }, + { + "anonymous":false, + "inputs":[ + { + "indexed":false, + "internalType":"uint256", + "name":"tokenID", + "type":"uint256" + }, + { + "indexed":true, + "internalType":"address", + "name":"creator", + "type":"address" + }, + { + "indexed":false, + "internalType":"string", + "name":"metaDataUri", + "type":"string" + } + ], + "name":"LoyaltyNFTCreated", + "type":"event" + }, + { + "anonymous":false, + "inputs":[ + { + "indexed":false, + "internalType":"address", + "name":"account", + "type":"address" + } + ], + "name":"Paused", + "type":"event" + }, + { + "anonymous":false, + "inputs":[ + { + "indexed":true, + "internalType":"bytes32", + "name":"role", + "type":"bytes32" + }, + { + "indexed":true, + "internalType":"bytes32", + "name":"previousAdminRole", + "type":"bytes32" + }, + { + "indexed":true, + "internalType":"bytes32", + "name":"newAdminRole", + "type":"bytes32" + } + ], + "name":"RoleAdminChanged", + "type":"event" + }, + { + "anonymous":false, + "inputs":[ + { + "indexed":true, + "internalType":"bytes32", + "name":"role", + "type":"bytes32" + }, + { + "indexed":true, + "internalType":"address", + "name":"account", + "type":"address" + }, + { + "indexed":true, + "internalType":"address", + "name":"sender", + "type":"address" + } + ], + "name":"RoleGranted", + "type":"event" + }, + { + "anonymous":false, + "inputs":[ + { + "indexed":true, + "internalType":"bytes32", + "name":"role", + "type":"bytes32" + }, + { + "indexed":true, + "internalType":"address", + "name":"account", + "type":"address" + }, + { + "indexed":true, + "internalType":"address", + "name":"sender", + "type":"address" + } + ], + "name":"RoleRevoked", + "type":"event" + }, + { + "anonymous":false, + "inputs":[ + { + "indexed":true, + "internalType":"address", + "name":"from", + "type":"address" + }, + { + "indexed":true, + "internalType":"address", + "name":"to", + "type":"address" + }, + { + "indexed":true, + "internalType":"uint256", + "name":"tokenId", + "type":"uint256" + } + ], + "name":"Transfer", + "type":"event" + }, + { + "anonymous":false, + "inputs":[ + { + "indexed":false, + "internalType":"address", + "name":"account", + "type":"address" + } + ], + "name":"Unpaused", + "type":"event" + }, + { + "inputs":[ + + ], + "name":"C1337_ADMIN_ROLE", + "outputs":[ + { + "internalType":"bytes32", + "name":"", + "type":"bytes32" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + + ], + "name":"C1337_CREATOR_ROLE", + "outputs":[ + { + "internalType":"bytes32", + "name":"", + "type":"bytes32" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + + ], + "name":"C1337_OPERATOR_ROLE", + "outputs":[ + { + "internalType":"bytes32", + "name":"", + "type":"bytes32" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + + ], + "name":"DEFAULT_ADMIN_ROLE", + "outputs":[ + { + "internalType":"bytes32", + "name":"", + "type":"bytes32" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"address", + "name":"to", + "type":"address" + }, + { + "internalType":"uint256", + "name":"tokenId", + "type":"uint256" + } + ], + "name":"approve", + "outputs":[ + + ], + "stateMutability":"nonpayable", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"address", + "name":"owner", + "type":"address" + } + ], + "name":"balanceOf", + "outputs":[ + { + "internalType":"uint256", + "name":"", + "type":"uint256" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"uint256", + "name":"tokenId", + "type":"uint256" + } + ], + "name":"burn", + "outputs":[ + + ], + "stateMutability":"nonpayable", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"string", + "name":"metadataHash", + "type":"string" + } + ], + "name":"createLoyaltyNFT", + "outputs":[ + { + "internalType":"uint256", + "name":"", + "type":"uint256" + } + ], + "stateMutability":"nonpayable", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"address", + "name":"creator", + "type":"address" + }, + { + "internalType":"string", + "name":"metadataHash", + "type":"string" + } + ], + "name":"delegateLoyaltyNFTCreation", + "outputs":[ + { + "internalType":"uint256", + "name":"", + "type":"uint256" + } + ], + "stateMutability":"nonpayable", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"uint256", + "name":"tokenId", + "type":"uint256" + } + ], + "name":"getApproved", + "outputs":[ + { + "internalType":"address", + "name":"", + "type":"address" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"bytes32", + "name":"role", + "type":"bytes32" + } + ], + "name":"getRoleAdmin", + "outputs":[ + { + "internalType":"bytes32", + "name":"", + "type":"bytes32" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"bytes32", + "name":"role", + "type":"bytes32" + }, + { + "internalType":"uint256", + "name":"index", + "type":"uint256" + } + ], + "name":"getRoleMember", + "outputs":[ + { + "internalType":"address", + "name":"", + "type":"address" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"bytes32", + "name":"role", + "type":"bytes32" + } + ], + "name":"getRoleMemberCount", + "outputs":[ + { + "internalType":"uint256", + "name":"", + "type":"uint256" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"bytes32", + "name":"role", + "type":"bytes32" + }, + { + "internalType":"address", + "name":"account", + "type":"address" + } + ], + "name":"grantRole", + "outputs":[ + + ], + "stateMutability":"nonpayable", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"bytes32", + "name":"role", + "type":"bytes32" + }, + { + "internalType":"address", + "name":"account", + "type":"address" + } + ], + "name":"hasRole", + "outputs":[ + { + "internalType":"bool", + "name":"", + "type":"bool" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"address", + "name":"owner", + "type":"address" + }, + { + "internalType":"address", + "name":"operator", + "type":"address" + } + ], + "name":"isApprovedForAll", + "outputs":[ + { + "internalType":"bool", + "name":"", + "type":"bool" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + + ], + "name":"name", + "outputs":[ + { + "internalType":"string", + "name":"", + "type":"string" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"uint256", + "name":"tokenId", + "type":"uint256" + } + ], + "name":"ownerOf", + "outputs":[ + { + "internalType":"address", + "name":"", + "type":"address" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + + ], + "name":"pause", + "outputs":[ + + ], + "stateMutability":"nonpayable", + "type":"function" + }, + { + "inputs":[ + + ], + "name":"paused", + "outputs":[ + { + "internalType":"bool", + "name":"", + "type":"bool" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"bytes32", + "name":"role", + "type":"bytes32" + }, + { + "internalType":"address", + "name":"account", + "type":"address" + } + ], + "name":"renounceRole", + "outputs":[ + + ], + "stateMutability":"nonpayable", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"bytes32", + "name":"role", + "type":"bytes32" + }, + { + "internalType":"address", + "name":"account", + "type":"address" + } + ], + "name":"revokeRole", + "outputs":[ + + ], + "stateMutability":"nonpayable", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"address", + "name":"from", + "type":"address" + }, + { + "internalType":"address", + "name":"to", + "type":"address" + }, + { + "internalType":"uint256", + "name":"tokenId", + "type":"uint256" + } + ], + "name":"safeTransferFrom", + "outputs":[ + + ], + "stateMutability":"nonpayable", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"address", + "name":"from", + "type":"address" + }, + { + "internalType":"address", + "name":"to", + "type":"address" + }, + { + "internalType":"uint256", + "name":"tokenId", + "type":"uint256" + }, + { + "internalType":"bytes", + "name":"data", + "type":"bytes" + } + ], + "name":"safeTransferFrom", + "outputs":[ + + ], + "stateMutability":"nonpayable", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"address", + "name":"operator", + "type":"address" + }, + { + "internalType":"bool", + "name":"approved", + "type":"bool" + } + ], + "name":"setApprovalForAll", + "outputs":[ + + ], + "stateMutability":"nonpayable", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"bytes4", + "name":"interfaceId", + "type":"bytes4" + } + ], + "name":"supportsInterface", + "outputs":[ + { + "internalType":"bool", + "name":"", + "type":"bool" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + + ], + "name":"symbol", + "outputs":[ + { + "internalType":"string", + "name":"", + "type":"string" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"uint256", + "name":"index", + "type":"uint256" + } + ], + "name":"tokenByIndex", + "outputs":[ + { + "internalType":"uint256", + "name":"", + "type":"uint256" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"address", + "name":"owner", + "type":"address" + }, + { + "internalType":"uint256", + "name":"index", + "type":"uint256" + } + ], + "name":"tokenOfOwnerByIndex", + "outputs":[ + { + "internalType":"uint256", + "name":"", + "type":"uint256" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"uint256", + "name":"tokenId", + "type":"uint256" + } + ], + "name":"tokenURI", + "outputs":[ + { + "internalType":"string", + "name":"", + "type":"string" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs":[ + + ], + "name":"totalSupply", + "outputs":[ + { + "internalType":"uint256", + "name":"", + "type":"uint256" + } + ], + "stateMutability":"view", + "type":"function" + }, + { + "inputs":[ + { + "internalType":"address", + "name":"from", + "type":"address" + }, + { + "internalType":"address", + "name":"to", + "type":"address" + }, + { + "internalType":"uint256", + "name":"tokenId", + "type":"uint256" + } + ], + "name":"transferFrom", + "outputs":[ + + ], + "stateMutability":"nonpayable", + "type":"function" + }, + { + "inputs":[ + + ], + "name":"unpause", + "outputs":[ + + ], + "stateMutability":"nonpayable", + "type":"function" + } + ] \ No newline at end of file diff --git a/assets/fonts/LibreBaskerville-Bold.ttf b/assets/fonts/LibreBaskerville-Bold.ttf new file mode 100644 index 0000000..f415f3e Binary files /dev/null and b/assets/fonts/LibreBaskerville-Bold.ttf differ diff --git a/assets/fonts/LibreBaskerville-Regular.ttf b/assets/fonts/LibreBaskerville-Regular.ttf new file mode 100644 index 0000000..8b87139 Binary files /dev/null and b/assets/fonts/LibreBaskerville-Regular.ttf differ diff --git a/assets/fonts/OFL.txt b/assets/fonts/OFL.txt new file mode 100644 index 0000000..c493ea6 --- /dev/null +++ b/assets/fonts/OFL.txt @@ -0,0 +1,94 @@ +Copyright (c) 2012, Pablo Impallari (www.impallari.com|impallari@gmail.com), +Copyright (c) 2012, Rodrigo Fuenzalida (www.rfuenzalida.com|hello@rfuenzalida.com), with Reserved Font Name Libre Baskerville. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/assets/images/Binance-Icon-Logo.png b/assets/images/Binance-Icon-Logo.png new file mode 100644 index 0000000..8681d3b Binary files /dev/null and b/assets/images/Binance-Icon-Logo.png differ diff --git a/assets/images/ethereum_logo.png b/assets/images/ethereum_logo.png new file mode 100644 index 0000000..11a1926 Binary files /dev/null and b/assets/images/ethereum_logo.png differ diff --git a/assets/images/logo.png b/assets/images/logo.png new file mode 100644 index 0000000..076463c Binary files /dev/null and b/assets/images/logo.png differ diff --git a/assets/images/matic_logo.png b/assets/images/matic_logo.png new file mode 100644 index 0000000..f1e7f13 Binary files /dev/null and b/assets/images/matic_logo.png differ diff --git a/assets/images/nft.png b/assets/images/nft.png new file mode 100644 index 0000000..b963277 Binary files /dev/null and b/assets/images/nft.png differ diff --git a/assets/images/setting2.png b/assets/images/setting2.png new file mode 100644 index 0000000..b559f18 Binary files /dev/null and b/assets/images/setting2.png differ diff --git a/assets/images/settings.png b/assets/images/settings.png new file mode 100644 index 0000000..a6f66c1 Binary files /dev/null and b/assets/images/settings.png differ diff --git a/assets/images/token.png b/assets/images/token.png new file mode 100644 index 0000000..8953ec7 Binary files /dev/null and b/assets/images/token.png differ diff --git a/assets/images/wallet.png b/assets/images/wallet.png new file mode 100644 index 0000000..8ee923a Binary files /dev/null and b/assets/images/wallet.png differ diff --git a/assets/lottiefiles/1.zip b/assets/lottiefiles/1.zip new file mode 100644 index 0000000..e976f90 Binary files /dev/null and b/assets/lottiefiles/1.zip differ diff --git a/assets/lottiefiles/2.json b/assets/lottiefiles/2.json new file mode 100644 index 0000000..92ecd62 --- /dev/null +++ b/assets/lottiefiles/2.json @@ -0,0 +1 @@ +{"v":"5.9.6","fr":60,"ip":0,"op":121,"w":360,"h":373,"nm":"ConnectWithWallet","ddd":0,"assets":[{"id":"comp_0","nm":"Frame 7074","fr":60,"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"BTC","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[240,186.5,0],"ix":2,"l":2},"a":{"a":0,"k":[240,186.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":480,"h":373,"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":0,"nm":"ETH","refId":"comp_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[240,186.5,0],"ix":2,"l":2},"a":{"a":0,"k":[240,186.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":480,"h":373,"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"Circles","refId":"comp_5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[240,186.5,0],"ix":2,"l":2},"a":{"a":0,"k":[240,186.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":480,"h":373,"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":0,"nm":"Three dots Elements","refId":"comp_6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[240,186.5,0],"ix":2,"l":2},"a":{"a":0,"k":[240,186.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":480,"h":373,"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":0,"nm":"Wallet","refId":"comp_7","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":1,"s":[240,194.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":57,"s":[240,182.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":120,"s":[240,194.5,0]}],"ix":2,"l":2},"a":{"a":0,"k":[240,186.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":480,"h":373,"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":0,"nm":"Lite","refId":"comp_8","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[240,186.5,0],"ix":2,"l":2},"a":{"a":0,"k":[240,186.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":480,"h":373,"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":0,"nm":"BNB","refId":"comp_10","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[240,186.5,0],"ix":2,"l":2},"a":{"a":0,"k":[240,186.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":480,"h":373,"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Frame 7074","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[240,186.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[480,373],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Frame 7074","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0}]},{"id":"comp_1","nm":"BTC","fr":60,"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Frame 2","refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":15.571,"ix":10},"p":{"a":0,"k":[317.506,174.488,0],"ix":2,"l":2},"a":{"a":0,"k":[16,22,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":30,"s":[90,90,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":60,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":90,"s":[90,90,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"w":32,"h":44,"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Ellipse 386","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[315.792,175.271,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[80,80],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.090196080506,0.090196080506,0.109803922474,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":15.571,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 386","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Ellipse 387","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.152],"y":[0]},"t":0,"s":[0]},{"t":120,"s":[360]}],"ix":10},"p":{"a":0,"k":[316.13,175.052,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[104,104],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":11,"k":{"a":0,"k":[0,0.812,0.506,0.439,0.122,0.747,0.5,0.653,0.244,0.683,0.495,0.866,0.366,0.583,0.443,0.896,0.489,0.482,0.392,0.925,0.544,0.442,0.404,0.929,0.599,0.401,0.416,0.932,0.669,0.35,0.432,0.937,0.739,0.298,0.447,0.941,0.869,0.231,0.527,0.898,1,0.165,0.608,0.855],"ix":9}},"s":{"a":0,"k":[-55.25,0],"ix":5},"e":{"a":0,"k":[55.25,0],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":15.571,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 387","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0}]},{"id":"comp_2","nm":"Frame 2","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[16,22.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.402,0],[0,1.841],[-0.729,0.027],[-0.587,0.118],[-1.247,3.533],[2.546,2.834],[0.061,0.067],[-0.047,0.055],[0.433,2.831],[3.872,0.81],[0.741,0.04],[0.752,0],[0,1.821],[1.411,0],[0,-1.809],[1.153,0],[0,1.82],[1.412,0],[0,-1.839],[2.603,0],[0,-2.027],[-2.254,0],[0,-6.658],[2.256,0],[0,-2.025],[-2.625,0],[0,-1.819],[-1.408,0],[0,1.823],[-1.161,0],[0,-1.822]],"o":[[0,-1.829],[0.769,0],[0.602,-0.021],[3.799,-0.76],[1.251,-3.545],[-0.058,-0.065],[0.057,-0.066],[1.906,-2.196],[-0.577,-3.767],[-0.722,-0.151],[-0.717,-0.039],[0,-1.841],[-1.412,0],[0,1.834],[-1.162,0],[0,-1.832],[-1.403,0],[0,1.831],[-2.629,0],[0,2.022],[2.27,0],[0,6.651],[-2.269,0],[0,2.029],[2.618,0],[0,1.842],[1.407,0],[0,-1.831],[1.154,0],[0,1.831],[1.41,0]],"v":[[3.682,21.5],[3.682,16.017],[5.909,16.009],[7.711,15.855],[15.415,9.444],[13.335,-0.172],[13.158,-0.367],[13.309,-0.542],[15.542,-8.086],[8.08,-15.771],[5.866,-16.007],[3.677,-16.015],[3.677,-21.496],[-0.524,-21.496],[-0.524,-16.034],[-3.969,-16.034],[-3.969,-21.5],[-8.164,-21.5],[-8.164,-16.012],[-15.993,-16.012],[-15.993,-9.963],[-9.22,-9.963],[-9.22,9.972],[-16,9.972],[-16,16.022],[-8.154,16.022],[-8.154,21.496],[-3.954,21.496],[-3.954,16.029],[-0.509,16.029],[-0.509,21.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[2.674,0],[0.108,0],[-0.001,2.419],[-0.081,0],[-2.832,-0.002],[0.108,-2.159],[1.807,-0.111],[0.281,0]],"o":[[-0.082,0],[0,-2.428],[0.093,0],[2.832,0],[2.249,0.001],[-0.087,1.74],[-0.281,0.018],[-2.674,0.001]],"v":[[-2.628,9.968],[-2.9,9.968],[-2.899,2.728],[-2.645,2.728],[5.85,2.729],[9.673,6.591],[6.24,9.951],[5.396,9.967]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[2.915,0],[0.051,0.008],[-0.001,2.233],[-0.088,0],[-2.816,-0.006],[-0.263,-1.666],[2.131,-0.03]],"o":[[-0.04,0],[0,-2.203],[0.095,0],[2.816,0],[1.819,0.004],[0.313,1.983],[-2.915,0.04]],"v":[[-2.77,-3.319],[-2.9,-3.339],[-2.9,-9.971],[-2.63,-9.971],[5.818,-9.969],[9.335,-7.135],[5.976,-3.33]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Frame","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[16,22,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[32,44],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":15.571,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Frame","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0}]},{"id":"comp_3","nm":"ETH","fr":60,"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Icon ETH","refId":"comp_4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[304,66.5,0],"ix":2,"l":2},"a":{"a":0,"k":[304,66.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":480,"h":373,"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Ellipse 389","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"t":120,"s":[360]}],"ix":10},"p":{"a":0,"k":[304.996,67.004,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":61,"s":[110,110,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[72,72],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.549,0.427,0.91,0.5,0.522,0.649,0.868,1,0.494,0.871,0.825],"ix":9}},"s":{"a":0,"k":[-42.828,36],"ix":5},"e":{"a":0,"k":[36,-45.931],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-0.006,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 389","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0}]},{"id":"comp_4","nm":"Icon ETH","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[304.971,59.82,0],"to":[0,0.792,0],"ti":[0,0.042,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":62,"s":[304.971,64.57,0],"to":[0,-0.042,0],"ti":[0,0.833,0]},{"t":117,"s":[304.971,59.57,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.086,0.06],[3.342,5.683],[3.33,-5.663],[-0.054,-0.033],[-3.124,-1.932],[-0.174,0.104],[-3.239,1.923]],"o":[[-3.33,-5.662],[-3.352,5.699],[0.089,0.059],[3.128,1.925],[0.185,0.115],[3.237,-1.927],[0.071,-0.042]],"v":[[10,5.49],[0.007,-11.5],[-10,5.515],[-9.805,5.643],[-0.424,11.422],[0.062,11.413],[9.778,5.643]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":4.935,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[303.814,74.878,0],"to":[0,0.792,0],"ti":[0,0.042,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":62,"s":[303.814,79.628,0],"to":[0,-0.042,0],"ti":[0,0.833,0]},{"t":117,"s":[303.814,74.628,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-3.353,-4.787],[-0.049,-0.093],[-0.021,0.001],[-0.043,0.061],[-3.367,4.804],[-0.086,0.128],[0.09,-0.053],[3.366,-1.995],[0.218,0.135],[3.237,1.983],[0.149,0.076],[-0.067,-0.096]],"o":[[0.06,0.086],[0.022,0],[0.039,-0.063],[3.367,-4.804],[0.089,-0.126],[-0.132,0.017],[-3.369,1.989],[-0.204,0.121],[-3.231,-1.993],[-0.076,-0.047],[0.112,0.167],[3.355,4.786]],"v":[[-0.194,7.222],[-0.044,7.5],[0.02,7.499],[0.138,7.309],[10.239,-7.102],[10.5,-7.486],[10.187,-7.365],[0.083,-1.394],[-0.487,-1.386],[-10.192,-7.342],[-10.5,-7.5],[-10.257,-7.137]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":4.935,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Ellipse 390","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[304.997,67.003,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[56,56],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.090196080506,0.090196080506,0.109803922474,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-0.006,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 390","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0}]},{"id":"comp_5","nm":"Circles","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-0.006,"ix":10},"p":{"a":0,"k":[408,129.001,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.372,0.372,0.667],"y":[1,1,1]},"o":{"x":[0.666,0.666,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.358,0.358,0.667],"y":[1,1,1]},"o":{"x":[0.682,0.682,0.333],"y":[0,0,0]},"t":40,"s":[200,200,100]},{"t":98,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.103],[-1.103,0],[0,1.103],[1.103,0]],"o":[[0,1.103],[1.103,0],[0,-1.103],[-1.103,0]],"v":[[-2,0.001],[0,2],[2,-0.001],[0,-2]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0.85],[-0.85,0],[0,-0.85],[0.85,0]],"o":[[0,-0.85],[0.85,0],[0,0.85],[-0.85,0]],"v":[[-1.542,0.001],[0,-1.54],[1.542,0.001],[0,1.542]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.274895846844,0.394901782274,0.845833361149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-0.006,"ix":10},"p":{"a":0,"k":[325,257.001,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.372,0.372,0.667],"y":[1,1,1]},"o":{"x":[0.666,0.666,0.333],"y":[0,0,0]},"t":10,"s":[100,100,100]},{"i":{"x":[0.358,0.358,0.667],"y":[1,1,1]},"o":{"x":[0.682,0.682,0.333],"y":[0,0,0]},"t":40,"s":[200,200,100]},{"t":85,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.103],[-1.103,0],[0,1.103],[1.103,0]],"o":[[0,1.103],[1.103,0],[0,-1.103],[-1.103,0]],"v":[[-2,0],[0,2],[2,0],[0,-2]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0.85],[-0.85,0],[0,-0.85],[0.85,0]],"o":[[0,-0.85],[0.85,0],[0,0.85],[-0.85,0]],"v":[[-1.542,0],[0,-1.542],[1.542,0],[0,1.542]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991666674614,0.57847225666,0.643402695656,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-0.006,"ix":10},"p":{"a":0,"k":[101.499,59.501,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.372,0.372,0.667],"y":[1,1,1]},"o":{"x":[0.666,0.666,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.358,0.358,0.667],"y":[1,1,1]},"o":{"x":[0.682,0.682,0.333],"y":[0,0,0]},"t":30,"s":[200,200,100]},{"t":60,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.482],[-2.482,0],[0,2.482],[2.482,0]],"o":[[0,2.482],[2.482,0],[0,-2.482],[-2.482,0]],"v":[[-4.5,0],[0,4.5],[4.5,0],[0,-4.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,1.912],[-1.912,0],[0,-1.912],[1.912,0]],"o":[[0,-1.912],[1.912,0],[0,1.912],[-1.912,0]],"v":[[-3.467,0],[0,-3.467],[3.467,0],[0,3.467]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.274895846844,0.394901782274,0.845833361149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-0.006,"ix":10},"p":{"a":0,"k":[391.5,105.501,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.372,0.372,0.667],"y":[1,1,1]},"o":{"x":[0.666,0.666,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.358,0.358,0.667],"y":[1,1,1]},"o":{"x":[0.682,0.682,0.333],"y":[0,0,0]},"t":48,"s":[200,200,100]},{"t":96,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.482],[-2.482,0],[0,2.48],[2.482,0]],"o":[[0,2.482],[2.482,0],[0,-2.482],[-2.482,0]],"v":[[-4.5,0],[0,4.5],[4.5,0],[0,-4.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,1.912],[-1.912,0],[0,-1.912],[1.912,0]],"o":[[0,-1.912],[1.912,0],[0,1.912],[-1.912,0]],"v":[[-3.467,0],[0,-3.467],[3.467,0],[0,3.467]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991666674614,0.57847225666,0.643402695656,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-0.006,"ix":10},"p":{"a":0,"k":[107,244.001,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.372,0.372,0.667],"y":[1,1,1]},"o":{"x":[0.666,0.666,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.358,0.358,0.667],"y":[1,1,1]},"o":{"x":[0.682,0.682,0.333],"y":[0,0,0]},"t":20,"s":[200,200,100]},{"t":92,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.102],[-1.102,0],[-0.002,1.102],[1.102,0]],"o":[[0,1.102],[1.102,0],[0,-1.102],[-1.102,0]],"v":[[-2,0],[0,2],[2,0],[0,-2]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0.85],[-0.85,0],[0,-0.85],[0.85,0]],"o":[[0,-0.85],[0.848,0],[0,0.85],[-0.85,0]],"v":[[-1.541,0],[0,-1.541],[1.541,0],[0,1.541]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.274895846844,0.394901782274,0.845833361149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0}]},{"id":"comp_6","nm":"Three dots Elements","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Vector 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.713,"y":0},"t":22,"s":[127.535,166.973,0],"to":[0,-1.25,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.713,"y":0},"t":28,"s":[127.535,159.473,0],"to":[0,0,0],"ti":[0,-1.25,0]},{"t":35,"s":[127.535,166.973,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.381,0],[0,1.381],[1.381,0],[0,-1.381]],"o":[[1.381,0],[0,-1.381],[-1.381,0],[0,1.381]],"v":[[0,2.5],[2.5,0],[0,-2.5],[-2.5,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.274895846844,0.394901782274,0.845833361149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-44.574,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Vector 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.666,"y":0},"t":8,"s":[118.273,166.337,0],"to":[0,-1.25,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.666,"y":0},"t":14,"s":[118.273,158.837,0],"to":[0,0,0],"ti":[0,-1.25,0]},{"t":22,"s":[118.273,166.337,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.381,0],[0,1.381],[1.381,0],[0,-1.381]],"o":[[1.381,0],[0,-1.381],[-1.381,0],[0,1.381]],"v":[[0,2.5],[2.5,0],[0,-2.5],[-2.5,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.274895846844,0.394901782274,0.845833361149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-22.205,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Vector 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.666,"y":0},"t":0,"s":[109.273,166.337,0],"to":[0,-0.625,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.666,"y":0},"t":8,"s":[109.273,162.587,0],"to":[0,0,0],"ti":[0,-0.625,0]},{"t":14,"s":[109.273,166.337,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.381,0],[0,1.381],[1.381,0],[0,-1.381]],"o":[[1.381,0],[0,-1.381],[-1.381,0],[0,1.381]],"v":[[0,2.5],[2.5,0],[0,-2.5],[-2.5,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.274895846844,0.394901782274,0.845833361149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-22.205,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.713,"y":0},"t":22,"s":[387.535,289.991,0],"to":[0,-1.25,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.713,"y":0},"t":28,"s":[387.535,282.491,0],"to":[0,0,0],"ti":[0,-1.25,0]},{"t":35,"s":[387.535,289.991,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.381,0],[0,1.381],[1.381,0],[0,-1.381]],"o":[[1.381,0],[0,-1.381],[-1.381,0],[0,1.381]],"v":[[0,2.5],[2.5,0],[0,-2.5],[-2.5,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.274895846844,0.394901782274,0.845833361149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-44.865,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.666,"y":0},"t":8,"s":[378.005,290.014,0],"to":[0,-1.292,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.666,"y":0},"t":14,"s":[378.005,282.264,0],"to":[0,0,0],"ti":[0,-1.292,0]},{"t":22,"s":[378.005,290.014,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.381,0],[0,1.381],[1.381,0],[0,-1.381]],"o":[[1.381,0],[0,-1.381],[-1.381,0],[0,1.381]],"v":[[0,2.5],[2.5,0],[0,-2.5],[-2.5,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.274895846844,0.394901782274,0.845833361149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-76.647,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.666,"y":0},"t":0,"s":[369.005,289.139,0],"to":[0,-0.5,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.666,"y":0},"t":8,"s":[369.005,286.139,0],"to":[0,0,0],"ti":[0,-0.5,0]},{"t":14,"s":[369.005,289.139,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.381,0],[0,1.381],[1.381,0],[0,-1.381]],"o":[[1.381,0],[0,-1.381],[-1.381,0],[0,1.381]],"v":[[0,2.5],[2.5,0],[0,-2.5],[-2.5,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.274895846844,0.394901782274,0.845833361149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-76.648,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0}]},{"id":"comp_7","nm":"Wallet","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[260.885,301.101,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.459,-2.977],[0,0],[2.958,-1.468],[0,0]],"o":[[0,0],[2.951,-1.468],[0,0],[1.459,2.97],[0,0],[0,0]],"v":[[-58,-12.436],[22.455,-52.378],[30.44,-49.651],[57.382,5.338],[54.673,13.377],[-25.137,53]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.3,"ix":5},"lc":2,"lj":2,"bm":0,"d":[{"n":"d","nm":"dash","v":{"a":0,"k":2,"ix":1}},{"n":"g","nm":"gap","v":{"a":0,"k":2,"ix":2}}],"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-5.585,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[258.65,301.553,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.977,1.981],[0,0],[-1.98,0.97],[0,0],[-1.529,-3.106],[0,0],[3.105,-1.529],[0,0]],"o":[[0,0],[0.977,1.981],[0,0],[3.105,-1.529],[0,0],[1.529,3.106],[0,0],[-1.98,0.977]],"v":[[-29.197,53.773],[-63.5,-15.797],[-58.152,-13.978],[25.701,-55.353],[34.094,-52.503],[62.853,5.823],[60.004,14.218],[-23.85,55.586]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0.473,0.373,0.346,1,0.737,0.238,0.224,0.565,1,0.102,0.102,0.129],"ix":9}},"s":{"a":0,"k":[17.349,-142.698],"ix":5},"e":{"a":0,"k":[-4.885,45.321],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-5.585,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[237.118,264.407,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.982,0.978],[0,0],[0,0],[3.108,-1.531],[0,0],[-0.977,-1.982]],"o":[[0,0],[0,0],[-1.53,-3.109],[0,0],[-1.975,0.978],[0.977,1.976]],"v":[[-40.234,23.586],[46,-18.956],[45.238,-20.5],[36.839,-23.352],[-43.773,16.418],[-45.587,21.773]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235663995147,0.216562509537,0.675000011921,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-5.585,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0}]},{"id":"comp_8","nm":"Lite","fr":60,"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Frame","refId":"comp_9","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[186,221,0],"to":[0,0.5,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":61,"s":[186,224,0],"to":[0,0,0],"ti":[0,0.5,0]},{"t":120,"s":[186,221,0]}],"ix":2,"l":2},"a":{"a":0,"k":[12,13,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":24,"h":26,"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Ellipse 388","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[186,221,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[58,58],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.090196080506,0.090196080506,0.109803922474,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 388","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Ellipse 387","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"t":120,"s":[360]}],"ix":10},"p":{"a":0,"k":[186,221,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":61,"s":[110,110,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[74,74],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.812,0.707,0.439,0.5,0.747,0.601,0.653,1,0.683,0.495,0.866],"ix":9}},"s":{"a":0,"k":[-44.017,37],"ix":5},"e":{"a":0,"k":[37,-47.207],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 387","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0}]},{"id":"comp_9","nm":"Frame","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[12,13,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.022,-0.08],[0.701,-2.614],[-7.253,0],[-0.034,0.13],[-0.434,1.621],[4.458,0],[-0.007,0.028],[-0.552,1.988],[-0.151,0.057],[-1.118,0.431],[-0.059,0.187],[-0.202,0.752],[-0.125,0.467],[1.383,-0.496],[-0.956,3.546],[2.71,0],[0.035,-0.13],[1.084,-4.176],[0.796,-0.202],[0.44,-0.478],[0.206,-0.713],[0.111,-0.425],[0.03,-0.161],[-1.062,0.37]],"o":[[-0.701,2.614],[7.253,0],[0.023,-0.133],[0.413,-1.551],[-4.524,0],[-0.024,-0.093],[0.533,-1.993],[0.038,-0.139],[1.122,-0.421],[0.184,-0.071],[0.235,-0.741],[0.102,-0.385],[-1.392,0.499],[0.972,-3.604],[-2.744,0],[-0.043,0.138],[-1.13,4.163],[-0.202,0.775],[-0.709,0.181],[-0.454,0.495],[-0.122,0.422],[-0.031,0.12],[1.044,-0.365],[-0.047,0.194]],"v":[[-8.992,5.159],[-11.095,13],[10.666,13],[10.737,12.604],[12,7.882],[-1.455,7.882],[-1.494,7.726],[0.121,1.75],[0.498,1.411],[3.872,0.171],[4.311,-0.299],[4.93,-2.55],[5.26,-3.786],[1.203,-2.332],[4.079,-13],[-4.069,-13],[-4.191,-12.605],[-7.557,-0.108],[-8.876,1.319],[-10.894,2.119],[-11.581,4.206],[-11.923,5.48],[-12,5.885],[-8.906,4.806]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Frame","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[12,13,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[24,26],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Frame","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0}]},{"id":"comp_10","nm":"BNB","fr":60,"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"BNB","refId":"comp_11","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.932],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.932],"y":[0]},"t":30,"s":[90]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.932],"y":[0]},"t":60,"s":[180]},{"i":{"x":[0.086],"y":[1]},"o":{"x":[1],"y":[0]},"t":90,"s":[270]},{"t":120,"s":[360]}],"ix":10},"p":{"a":0,"k":[197,109.5,0],"ix":2,"l":2},"a":{"a":0,"k":[197,109.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":480,"h":373,"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Ellipse 393","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[197,108,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[78,78],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.090196080506,0.090196080506,0.109803922474,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 393","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Ellipse 392","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"t":120,"s":[360]}],"ix":10},"p":{"a":0,"k":[197.5,108.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[101,101],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.812,0.506,0.439,0.5,0.906,0.703,0.495,1,1,0.901,0.55],"ix":9}},"s":{"a":0,"k":[-22.044,44.488],"ix":5},"e":{"a":0,"k":[50.5,-64.431],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 392","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0}]},{"id":"comp_11","nm":"BNB","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[184,109,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.187,0.186],[0.033,0.005],[0.025,-0.025],[1.285,-1.284],[-0.086,-0.086],[-1.282,-1.282],[-0.089,0.089],[-1.28,1.28],[0.092,0.092],[1.101,1.1]],"o":[[-0.02,-0.02],[-0.037,0.008],[-1.285,1.284],[-0.086,0.086],[1.282,1.282],[0.089,0.089],[1.28,-1.28],[0.092,-0.092],[-1.101,-1.1],[-0.186,-0.186]],"v":[[0.071,-3.949],[0,-4],[-0.082,-3.936],[-3.936,-0.084],[-3.936,0.088],[-0.088,3.933],[0.09,3.933],[3.931,0.094],[3.931,-0.09],[0.63,-3.39]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[197,108,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-1,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.02,-0.017],[-0.009,-0.005],[-0.024,0.024],[-1.284,1.283],[0.089,0.089],[1.282,1.281],[0.087,-0.087],[1.282,-1.281],[-0.092,-0.092],[-1.28,-1.279]],"o":[[0.011,0.009],[0.041,-0.013],[1.284,-1.283],[0.087,-0.087],[-1.282,-1.281],[-0.088,-0.088],[-1.282,1.281],[-0.09,0.09],[1.28,1.279],[0.019,0.019]],"v":[[-0.035,3.98],[-0.002,4],[0.084,3.933],[3.935,0.085],[3.933,-0.091],[0.088,-3.934],[-0.088,-3.935],[-3.933,-0.092],[-3.931,0.089],[-0.092,3.926]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[197.5,118.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.023,0.023],[0.021,-0.001],[0.026,-0.027],[1.236,-1.291],[-0.079,-0.083],[-3.451,-3.608],[-0.09,0.094],[-3.451,3.607],[0.079,0.083],[1.236,1.291],[0.087,-0.091],[2.155,-2.252],[0.096,0.1],[2.146,2.244]],"o":[[-0.012,-0.012],[-0.035,0.011],[-1.236,1.291],[-0.078,0.082],[3.451,3.607],[0.088,0.092],[3.451,-3.607],[0.079,-0.082],[-1.236,-1.291],[-0.088,-0.092],[-2.155,2.252],[-0.094,0.099],[-2.146,-2.244],[-0.022,-0.023]],"v":[[-6.602,-7.477],[-6.649,-7.499],[-6.733,-7.428],[-10.441,-3.556],[-10.44,-3.391],[-0.088,7.431],[0.09,7.429],[10.441,-3.392],[10.441,-3.557],[6.733,-7.431],[6.558,-7.432],[0.094,-0.675],[-0.096,-0.676],[-6.535,-7.408]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[211,109,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.272,1.274],[-0.033,0.03],[0,0.012],[0.031,0.031],[1.274,1.276],[0.085,-0.086],[1.281,-1.283],[-0.089,-0.089],[-1.278,-1.281],[-0.093,0.093]],"o":[[0.031,-0.031],[0,-0.012],[-0.033,-0.03],[-1.274,-1.276],[-0.086,-0.086],[-1.281,1.282],[-0.089,0.088],[1.278,1.281],[0.091,0.092],[1.272,-1.274]],"v":[[3.902,0.108],[4,0.018],[4,-0.018],[3.902,-0.107],[0.079,-3.936],[-0.092,-3.936],[-3.934,-0.088],[-3.933,0.09],[-0.098,3.932],[0.086,3.93]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[197.5,98.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.44,3.591],[0.033,0.037],[0.011,0],[0.037,-0.038],[3.434,-3.585],[-0.1,-0.104],[-1.226,-1.28],[-0.1,0.105],[-2.148,2.242],[-0.019,0.022],[-0.03,-0.033],[-0.02,-0.021],[-2.154,-2.248],[-0.086,0.09],[-1.234,1.288],[0.089,0.092]],"o":[[-0.034,-0.036],[-0.011,0],[-0.035,0.04],[-3.434,3.585],[-0.098,0.102],[1.226,1.28],[0.098,0.102],[2.147,-2.242],[0.02,-0.021],[0.029,-0.033],[0.019,0.022],[2.154,2.248],[0.084,0.087],[1.234,-1.288],[0.087,-0.091],[-3.44,-3.591]],"v":[[0.113,-7.389],[0.015,-7.5],[-0.019,-7.5],[-0.125,-7.381],[-10.427,3.373],[-10.425,3.579],[-6.747,7.419],[-6.549,7.416],[-0.106,0.691],[-0.045,0.628],[0.042,0.628],[0.102,0.691],[6.563,7.435],[6.732,7.432],[10.435,3.568],[10.433,3.384]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Main","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[168,182,0],"ix":2,"l":2},"a":{"a":0,"k":[240,186.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":480,"h":373,"ip":0,"op":300,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/assets/lottiefiles/3.json b/assets/lottiefiles/3.json new file mode 100644 index 0000000..bc7a0a0 --- /dev/null +++ b/assets/lottiefiles/3.json @@ -0,0 +1 @@ +{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.0.0","a":"","k":"","d":"","tc":""},"fr":30,"ip":0,"op":91,"w":500,"h":500,"nm":"Ellipes","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"symbol","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[26.319,-2.347,0],"ix":2},"a":{"a":0,"k":[-9.009,-4.708,0],"ix":1},"s":{"a":0,"k":[153.333,153.333,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.032,-12.164],[5.828,1.453],[0,0]],"o":[[-2.911,11.662],[0,0],[5.828,1.453]],"v":[[15.37,-16.568],[-11.335,-12.284],[-6.195,-32.896]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[3.334,-13.37],[6.998,1.738],[0,0]],"o":[[-3.19,12.82],[0,0],[6.998,1.747]],"v":[[12.177,16.694],[-19.597,20.846],[-13.928,-1.881]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[13.035,4.49],[0,0],[0,0],[0,0],[2.77,0.632],[0,0],[0,0],[0,0],[2.141,0.532],[0,0],[0,0],[0,0],[0.162,-0.109],[0.126,-2.194],[0,0],[-0.412,-0.165],[0.379,0.091],[0,0],[2.923,0.723],[0,0],[0,0],[0,0],[-2.411,-0.617],[0,0],[0,0],[0,0],[-2.676,-0.665],[0,0],[0,0],[0,0],[-5.572,15.922],[9.262,4.822],[-1.356,9.165]],"o":[[1.873,-12.52],[0,0],[0,0],[0,0],[-2.714,-0.676],[0,0],[0,0],[0,0],[-2.246,-0.512],[0,0],[0,0],[0,0],[0,0],[4.181,1.044],[0,0],[0.288,0.074],[-0.344,-0.085],[0,0],[-0.512,1.27],[0.103,0.15],[0,0],[0,0],[2.499,0.626],[0,0],[0,0],[0,0],[2.817,0.764],[0,0],[0,0],[0,0],[17.604,3.331],[4.49,-12.82],[6.745,-1.555],[0,0]],"v":[[35.765,-16.383],[15.07,-40.124],[19.298,-57.084],[8.975,-59.657],[4.858,-43.143],[-3.413,-45.09],[0.733,-61.712],[-9.585,-64.285],[-13.816,-47.331],[-20.409,-48.88],[-20.397,-48.933],[-34.634,-52.488],[-37.381,-41.462],[-29.883,-39.597],[-25.072,-33.593],[-29.889,-14.272],[-28.815,-13.928],[-29.906,-14.198],[-36.657,12.868],[-41.389,15.321],[-48.892,13.448],[-54.018,25.265],[-40.583,28.614],[-33.223,30.514],[-37.495,47.668],[-27.183,50.241],[-22.952,33.269],[-14.725,35.404],[-18.941,52.296],[-8.618,54.869],[-4.345,37.747],[32.069,23.812],[22.583,-1.225],[35.765,-16.383]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"symbol","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":175,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"ellipes_fill_4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":90,"s":[360]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[250,39.5,0],"to":[116.256,0,0],"ti":[0,-116.256,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22.5,"s":[460.5,250,0],"to":[0,116.256,0],"ti":[116.256,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":45,"s":[250,460.5,0],"to":[-116.256,0,0],"ti":[0,116.256,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":67.5,"s":[39.5,250,0],"to":[0,-116.256,0],"ti":[-116.256,0,0]},{"t":90,"s":[250,39.5,0]}],"ix":2},"a":{"a":0,"k":[28,-2,0],"ix":1},"s":{"a":0,"k":[30,30,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[234,234],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.976,0.714,0.239,0.577,0.982,0.557,0.239,1,0.988,0.4,0.239],"ix":9}},"s":{"a":0,"k":[-150,-149.375],"ix":5},"e":{"a":0,"k":[116.875,115.625],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28,-2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":175,"st":0,"bm":0}]},{"id":"comp_1","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 1","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[28.167,-6.27,0],"ix":2},"a":{"a":0,"k":[1.463,-8.195,0],"ix":1},"s":{"a":0,"k":[11.427,11.427,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.7,-2.5],[10.1,4.8],[166.4,112.2],[3.9,5.9],[-1.8,70],[-5.2,9.1],[-5.1,1.5],[-5.4,-1.9],[-189,-127.5],[-3.6,-2.6],[-2.6,-2.7],[-0.3,-80.2]],"o":[[-2.8,10.6],[-2,-0.9],[-298.9,-201.6],[-11.1,-16.6],[1.5,-55],[2.4,-4.2],[4.2,-1.3],[3.2,1.1],[160.9,108.6],[3.6,2.6],[8.7,8.9],[0.2,46.5]],"v":[[324,261.9],[298.8,273.2],[-7.3,67.5],[-313.7,-142.5],[-323.4,-233],[-316.4,-299.7],[-304.2,-309],[-291.5,-308.2],[6,-109.1],[305,93.1],[316.2,102.7],[324.8,187.3]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.4,0.7],[21.1,-0.6],[13.4,-2.3],[9.6,-4.8],[8,-7.9],[4.8,-10],[1.9,-12.7],[0.6,-139.8],[0,0],[0,0],[17.1,11],[62.8,40.5],[31.9,20.6],[14.3,6.7],[22.4,5.6],[1.8,-0.1],[9.9,-0.3],[23.8,-14.4],[6.4,-10.2],[2.1,-33.2],[-1.9,-404.8],[0,0],[0,0],[-14.3,0],[-8.7,1.4],[-13.6,6.8],[-7.4,36.8],[0.6,152.9],[0,0],[0,0],[-310.3,-221.1],[-23.6,-16.9],[-20.8,-10.5],[-22.1,2.2],[-18.4,17.3],[-1.4,42.6]],"o":[[-0.2,-0.2],[-33.6,0.9],[-16.7,2.9],[-10.6,5.4],[-6.7,6.5],[-7,14.7],[-3,20.4],[0,0],[0,0],[-57.5,-37.1],[-18.2,-11.8],[-25,-16.2],[-50.2,-32.5],[-18.8,-8.8],[-8.9,-2.2],[-1.8,0.1],[-33,1.3],[-17.5,10.5],[-10.1,16],[-1.1,16.8],[0,0],[0,0],[4.2,0.5],[20.6,0],[23.7,-4],[34,-17],[4.3,-21],[0,0],[0,0],[3.5,2.5],[126.5,90.1],[58.8,41.8],[25.1,12.7],[23.6,-2.4],[21,-19.8],[0.6,-16.6]],"v":[[525.4,-557.8],[486.8,-557.1],[433.2,-553.5],[396.7,-542.9],[361.9,-518],[348.7,-499],[335.5,-458.4],[331.1,-266.2],[330.5,-126],[292,-150.8],[85.5,-284],[-136,-427],[-239.5,-493.8],[-314,-539],[-359.7,-555],[-379.2,-558.8],[-400.5,-558],[-473.1,-537.9],[-504.3,-510.9],[-522,-440],[-520.4,405.7],[-519.8,538.9],[-512.1,539.6],[-478.5,540.5],[-441.5,538.7],[-391.5,524.3],[-328.9,443],[-323.2,172.3],[-323.7,50.1],[-320.6,52.2],[-8.5,274.5],[264.5,469],[352,526.6],[420.8,541.9],[490,509.4],[520.6,424]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":175,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"ellipes_fill_4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":90,"s":[360]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[250,39.5,0],"to":[116.256,0,0],"ti":[0,-116.256,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22.5,"s":[460.5,250,0],"to":[0,116.256,0],"ti":[116.256,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":45,"s":[250,460.5,0],"to":[-116.256,0,0],"ti":[0,116.256,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":67.5,"s":[39.5,250,0],"to":[0,-116.256,0],"ti":[-116.256,0,0]},{"t":90,"s":[250,39.5,0]}],"ix":2},"a":{"a":0,"k":[28,-2,0],"ix":1},"s":{"a":0,"k":[30,30,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[234,234],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,1,0.259,0.3,0.577,0.594,0.141,0.381,1,0.188,0.024,0.463],"ix":9}},"s":{"a":0,"k":[-150,-149.375],"ix":5},"e":{"a":0,"k":[116.875,115.625],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28,-2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":175,"st":0,"bm":0}]},{"id":"comp_2","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 1","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-100,"ix":10},"p":{"a":0,"k":[20.789,-2.52,0],"ix":2},"a":{"a":0,"k":[2.95,-16.55,0],"ix":1},"s":{"a":0,"k":[48.148,48.148,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[113.3,133.2],[-94.9,133.2],[-82.8,69],[-122.1,96.9],[-108.8,37.1],[-71.3,10.9],[-37.3,-147.5],[40.2,-166.3],[10.9,-46.5],[71.4,-88.5],[55.7,-29.3],[-1.7,11.6],[-18.7,89.5],[128,89.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":175,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"ellipes_fill_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":90,"s":[360]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[249.75,92.25,0],"to":[87.123,0,0],"ti":[0,-87.123,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22.499,"s":[407.5,250,0],"to":[0,87.123,0],"ti":[87.123,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":44.999,"s":[249.75,407.75,0],"to":[-87.123,0,0],"ti":[0,87.123,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":67.5,"s":[92,250,0],"to":[0,-87.123,0],"ti":[-87.123,0,0]},{"t":90,"s":[249.75,92.25,0]}],"ix":2},"a":{"a":0,"k":[28,-2,0],"ix":1},"s":{"a":0,"k":[27,27,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[234,234],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.929,0.8,0.843,0.576,0.898,0.442,0.62,0.998,0.867,0.085,0.398],"ix":9}},"s":{"a":0,"k":[-150,-149.375],"ix":5},"e":{"a":0,"k":[116.875,115.625],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28,-2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":175,"st":0,"bm":0}]},{"id":"comp_3","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 1","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-100,"ix":10},"p":{"a":0,"k":[27.55,-4.542,0],"ix":2},"a":{"a":0,"k":[0.65,-0.35,0],"ix":1},"s":{"a":0,"k":[54.545,54.545,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[92.7,-62.3],[92.4,-62.3],[-10.1,60.1],[92.7,60.1],[92.7,115],[22.9,115],[22.9,160.2],[-30,160.2],[-30,115],[-91.4,115],[-91.4,60.1],[11.1,-62.2],[-91.4,-62.2],[-91.4,-117.1],[-30,-117.1],[-30,-160.9],[22.9,-160.9],[22.9,-117.2],[92.7,-117.2]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":175,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"ellipes_fill_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":90,"s":[-360]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[249.75,138.5,0],"to":[61.58,0,0],"ti":[0,-61.58,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22.5,"s":[361.25,250,0],"to":[0,61.58,0],"ti":[61.58,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":45,"s":[249.75,361.5,0],"to":[-61.58,0,0],"ti":[0,61.58,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":67.5,"s":[138.25,250,0],"to":[0,-61.58,0],"ti":[-61.58,0,0]},{"t":90,"s":[249.75,138.5,0]}],"ix":2},"a":{"a":0,"k":[28,-2,0],"ix":1},"s":{"a":0,"k":[22,22,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[234,234],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.278,0.921,1,0.577,0.2,0.476,0.741,1,0.122,0.031,0.482],"ix":9}},"s":{"a":0,"k":[-150,-149.375],"ix":5},"e":{"a":0,"k":[116.875,115.625],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28,-2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":175,"st":0,"bm":0}]},{"id":"comp_4","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 1","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[27.167,0.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[186.667,186.667,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.539,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.716,-5.282]],"o":[[-1.099,3.378],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[5.55,0],[0,0]],"v":[[30.656,17.774],[22.881,23.431],[-39.854,23.431],[-35.618,11.071],[16.152,11.071],[24.382,-14.371],[-27.79,-14.371],[-23.554,-26.731],[33.819,-26.731],[41.594,-16.033]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-37.951,-7.562],[-6.985,-7.562],[-10.899,4.798],[-42.187,4.798]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":175,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"ellipes_fill_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":90,"s":[360]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[249.75,173.25,0],"to":[42.25,0,0],"ti":[0,-42.25,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22.499,"s":[326.25,249.75,0],"to":[0,42.25,0],"ti":[42.25,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":44.999,"s":[249.75,326.25,0],"to":[-42.25,0,0],"ti":[0,42.25,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":67.5,"s":[173.25,249.75,0],"to":[0,-42.25,0],"ti":[-42.25,0,0]},{"t":90,"s":[249.75,173.25,0]}],"ix":2},"a":{"a":0,"k":[28,-2,0],"ix":1},"s":{"a":0,"k":[15,15,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[234,234],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.008,0.784,0.592,0.577,0.004,0.855,0.796,1,0,0.925,1],"ix":9}},"s":{"a":0,"k":[-150,-149.375],"ix":5},"e":{"a":0,"k":[116.875,115.625],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28,-2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":175,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"ellipes_fill_4 Comp 2","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-160,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[250,250,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":500,"h":500,"ip":0,"op":175,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":0,"nm":"ellipes_fill_4 Comp 1","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":7,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[250,250,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":500,"h":500,"ip":0,"op":175,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"ellipes_fill_3 Comp 1","refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-247,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[250,250,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":500,"h":500,"ip":0,"op":175,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":0,"nm":"ellipes_fill_2 Comp 1","refId":"comp_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":279,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[250,250,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":500,"h":500,"ip":0,"op":175,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":0,"nm":"ellipes_fill_1 Comp 1","refId":"comp_4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":43,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[250,250,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":500,"h":500,"ip":0,"op":175,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Layer 1","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-100,"ix":10},"p":{"a":0,"k":[28.447,-2.13,0],"ix":2},"a":{"a":0,"k":[0.75,6.9,0],"ix":1},"s":{"a":0,"k":[107.222,107.222,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[3.091,-13.852],[3.091,-86.513],[55,8.461]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[3.091,100.313],[3.091,48.866],[53.902,21.929]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[3.091,-6.511],[49.855,13.605],[3.091,38.404]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.822,-13.794],[-53.5,8.461],[-1.822,-86.166],[-1.822,-13.794]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.822,38.288],[-48.413,13.605],[-1.822,-6.453],[-1.822,38.288]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.822,100.024],[-52.402,21.929],[-1.822,48.751]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":175,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"ellipes_fill","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":90,"s":[360]}],"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[28,-2,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[40,40,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":22,"s":[45,45,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":45,"s":[40,40,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":67,"s":[45,45,100]},{"t":90,"s":[40,40,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[234,234],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.992,0.302,0.239,0.577,0.982,0.557,0.239,1,0.973,0.812,0.239],"ix":9}},"s":{"a":0,"k":[-150,-149.375],"ix":5},"e":{"a":0,"k":[116.875,115.625],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28,-2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":175,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"ellipes_line_4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[28,-2,0],"ix":1},"s":{"a":0,"k":[180,180,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-64.617,0],[0,-64.617],[64.617,0],[0,64.617]],"o":[[64.617,0],[0,64.617],[-64.617,0],[0,-64.617]],"v":[[0,-117],[117,0],[0,117],[-117,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.929411764706,0.878385237152,0.878385237152,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[28,-2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":175,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"ellipes_line_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[28,-2,0],"ix":1},"s":{"a":0,"k":[135,135,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[234,234],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.929411764706,0.878385237152,0.878385237152,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[28,-2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":175,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"ellipes_line_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[28,-2,0],"ix":1},"s":{"a":0,"k":[95,95,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[234,234],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.929411764706,0.878385237152,0.878385237152,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[28,-2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":175,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"ellipes_line","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[28,-2,0],"ix":1},"s":{"a":0,"k":[65,65,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[234,234],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.929411764706,0.878385237152,0.878385237152,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[28,-2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":175,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/assets/lottiefiles/bitcoin.json b/assets/lottiefiles/bitcoin.json new file mode 100644 index 0000000..103f8b0 --- /dev/null +++ b/assets/lottiefiles/bitcoin.json @@ -0,0 +1 @@ +{"v":"5.7.6","fr":30,"ip":0,"op":60,"w":300,"h":300,"nm":"BTC","ddd":0,"assets":[{"id":"image_0","w":118,"h":115,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHYAAABzCAMAAAB6tAaQAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAACXBIWXMAAAABAAAAAQBPJcTWAAAA21BMVEVHcEzwli3uiSfwkyX2ukn60XTthyf4zYP61oL3rDv60W/603n6z2nznSLuiyb6yFDsgSrsgyn703Tkbyj60XP5wEL5x0T5x0TznCLthCz5x0PqeS7dXib62Y/5x0TzniL679zfYSfkbyrgZiniairndSzrfC761YrrhDHrfzHwnDjrhz/4wkL2w3vtkDT3vUD0rzvrgjnzpzflejrysmv2tj/0vHPicDTxlyPvjibshCj5xUPqjEnum1Xwo1zmey7rlFDwqWT64q35zF/mgkT63Zv5yU766MP67dPER5itAAAAG3RSTlMAOI5VJf/J//kOit5I329i3qeo4MOUsOys8c8f3wJDAAAMMElEQVRo3rRa12LbOBCMq+Q4l17uTjBl9iKRVJdtVVtO4v//ogN2ARAAQbld8GRLFIe7OzuzIPnmzQvX2bu3X8/b7XYcx+32+fnnt8dv/vj68LV9UVvt8z8K/e5rfNG02p/P/gzo2/bF/nX+7o+Dxq18NsvzVvxHgVXQ/HY5DohY8/vtpKUAH/8J0Hiy9BmYOx+Ph73heDxH7G0uj/j8f5H3RMa5pZjuuNdLO9Ua9noMe74SMbf/j4DfnQvQ2T3FHPY6lhX1xvS7JQeOX13hYwmaU9B5L+o0rbRHM7HlwG9fhyr7tLVkoGaMZsgB8W9fj/tNFLW1dVXQdLmeYOvQNpqslxV8zyX3GPCLifV+Iri59okvQYfr3JSqOF8PxRWNiT97RbxH/4hQb+fEFTWNtrMGhZptq4DXL8U9+Njj5MgpRYeiX1YtA+zn3e/fd6ISK56OgGzhgw/Ppe9pJ8NExitCxiKBWxP04u4SlgDOl5joOVnC/8/qo7NPkUDN51VRl/lFA+rl5YMAnqS8wIj7DN04pGXkqBOfjHl+e7aaPlzK9fCTZxqvckxWoFdPZxL9UYGoa0J4qMOJjUU/L9X1+ycvC1BvTqCBvz4tv6fsNwmiriiBEXVtN/c7Dfby4Td+vIY8B27+1PIeQJtEJxzVRy718oaeMWBliW8hQe48flqaDwHlZsczzFFXzXPM5aUdGHB72EaPdu8nAL0aIJsE6u2eIeaujoslXiGtGA3bj0xYrKzRVbcLweUusimyitJMjBO/L23AlFdLSPP4cXGmqNF1t9uFFMfzPahMt1z+xd2DBZc2UyuFNLNUxfvC/Yig3RGcbUvGkGEb6hqnmL2JpkViPw+AVV/3oQJotwssnpEgbaprzic3+d1PS6ZpfbcQLjOFuFGrTm+uEBX5xFO8stV1QojvedQJK4LXgSmfW+wMczjqvKlzOCgP9hZTPLR2Tsv32JcudxkO/FCDBdXooUbaNeNAgGJl44AMLXSKV0tILLpMSFxNRXRusSYCVo3dVlO4Z39J2B0GO7Sk+JaNx+yzGAXTJ/f079lkJtzwt0YpLhpDtCKb8/4tUaFnafMw2FQ313vgEVz7iodLJluY1MczA5i7UUxPE41JbpfIIwl6vUXOjOssFvyFa8dwq+2ILDNyi1sRNtGQJcUikTLF1wGIGY2L0TiNTdgg7HgEDpkgrlvhrqsh5+5nxYYesGpmC/c9gl7RUxIG1SIBeJ1B4HGIEYLeoVp7xA081ks8+RYRZdePEvnWFuxVCEVCQkHPmue5FRHe8tMx3I5M99LuFRjupC6REOzGrVJ1D4Sqn0ZEGMSU1IG+HaCZsntyzhrRn9ccgQV7w4uE8u777EQTa8Ig3CXb3oU6boDEqa9t5QjHGo1vfE4L12sBd8a2HPOEQWDsWAO2Q0irMdzOPDAd4VS2gdeJqtL2bKooZIIQmePeeinSPLGHu6ok8qCSRQEaCKwtwK6azsBkwhehDnMl+Q2wLTaezQ2JPEVQOFG0Qkal1tIyAIST+eUHYbxeAyx3hK3mCL4EZdMxs5+5y/608JJucH21mjIhKB5h05YsBkcgarhnwCRxosxpUyLPrYyKVy7UX6xlJWK3+Gmer5f395YNoeIIPNxDBZTB/oovCMDWvH2upqXjKW3dmgd8+8HvF5nZZo6gh/vFU28BZA7Fhf5JjaKOiZYW1WupH/q8hcRaWcPdVluxj2qxbgYOxQXYod7yOqjwWriguUi9RyzGoFQXxxuUKuXuEh2mGGy/DpsTtVOF17IatsCEMVjX9VgJwoBywM1tZL6VRlTdA2HDFIN1QPaG5sxmilJAB1ZkGb8gz1O+M5WSSVWKHzJSHYiq4rA6YrCQzNQys+mLSnOgsUw3hkldV8dEZPlIBaWLwXp+jclL0alL7dRGwZfboZKL2JLlCc/ye3bMdTVJMdgNqfUtzmy9lhjexGihgq4q4ZCurLsXcnmHG8ubq64Om4A46k1PTzecyQ2zYJXCMiEea5mL8UXtwn362c6hLXSogXavphQ2Iwk9ZHRiVzqVzdUd1rz2vUvienHdeOc4H9SZka3QpXrhDCDawtlZYSeWW5wTCw1CY9pA+2NhfdNhI1qshH68gIolTLBsuEMTVJekrciBn1s4xVrluwqLc02AnGIOWdK/Tpq9Xtq84RlzUXCvVctSQlg2/632PtdirlGKy65gF9uHI9lFvoG6kt4Y1gexhBT0nD/evDkWY7kYMdjllGSDWWYKXQ9Yb6Ktlon7SkR7loEZYB3aQWIsR9AQwTYuy/IUcC0Ba02kMAe1UtRWL21rCrBwejov/4VjeaVyDGwEWc4cvmoBpxYnEo4sBETLAu3WgQb70dVAEWwBw3dUctiFmemZFu5E3kVRxlgtxSe/HAP2CzGkNerTLwo93FqJe5oTxfgcQR15VL9t79gZRpJSDPbQ1HM2YTh9sBwZbg24pbFqHa9dzZHVpop3+PusguUjnO5q1wsZbuE4GnBsayKP+PqYpSglj5StQvbtD+bzgT41iBEDqzt19LU7sTSRryUsnOs1FSuB2o5QLvhtRgWUroWUjMIx1y+OrDeRkjDpeFWgbPXZdxtSojhSwVDKKu5MMfZ6vtK7JnKsNVEQhGrOGcVOdr/0Hw0gL76DVqDMjtWI0e3L3k0c+/q1mzQ9caPCtav/IIMcb9ifH5RbyAooH6lClwU0cJpWYuKtxT7ULe1HcyLzXS5L5k235vYDVOZFA2rfgC0WTikoltaOnmJpB4LIQCpjxPAwGRuw+5EVdJH52uDs+SVvEqDYwJbjjgul/V6/BYcjBsHfTSHctG9BHYF7hGoTwYAghCs0UxNBjpOqtNUNIjlisIbAWc6QSBlqbW/CI8w4q1zzMvGYgVJaumS41V0MltsShD2qE8Sv7U1EhBHfIBjBpsBj+PTf2s2/6+rWCVKpaAjXrZQwnWYi3JFoz044tVR2A8roqLc8T/URo8OphI7QqYVbyKqyo4RMBH3OqsJgfxnBrTi/z+1HuZ2sjRgdTqWFXSIXvFPCrBIgJhNw3HRU42CBwRaVRMkHBcRwe+73aBRT64mSviYc1InsPQ58SgkGqz80ODJBOZWaHKGIkupapEzYes2ZRnhRmdq0Yn0xW6ITgVB4MM2NnL2Ly8SmWc0SVCDHfEJy4LqG26Mj4M7EqhlKsZENpQ0V6+G603plxYM2w3hHlUQW+8MdNGVkAahRgCn+UX/6dRaZbt/tliCRYefxNDf5hVBpNNAPTU8zVVC+3UXN2OOAzatEjm9I2LfxCcPFeSFVjZcVpB+A8UbTZ6MOUo4alA0pFn6vuT3V6AWwCsj2XNwF9wWKOrWyWKx/TFAuPAU44DNxB5jgKOSxNqIaW3twI+Q9spl38pPWtOBOERAPUQ/2PDeuQIUxeCzNfQ9p1ckWT6MSB6X9SnjL73sd4UCZa9QNr1MGHDd5QqL7Ge/FNCQud82DvY/J8VmfvvcccFw+GGflY0wSbxqlLvH4VT7yhsuxHKYqY0AmlR4JI74326OU/ZEY2xOf+KImj75XcygfCVXGgFq7oI0gZtSsIdVlJkEpNRKelx+Pv2F65pug7Bz4+4KQVChoUkeejuTknNAqbcQB35/ySs1pDZSmtcC0DoIqYGYP2WhQlv1+WU5HWVHtidINnWWFlv544ota9amQaXTJlZ12VNLZuxioJxv821Nf4T1wg7C+9+S4zpSeNEia33RM2Peyu78/4x2t99q1SzcSWWPA7saKnFBNUkDL570Id1gVVdsG9qXwsUJ4aaJscaMk2bBPNzK9/W/Pfefv1AJKNTrIFJ1H7fS9cLMJQ/zH3VRSUp6+4L3sU+OeutgxeAO1R4uN58rZOskGC0UeD170YuVHY+8pdwwbY8ig3UN7yNTko5e+Rfq3seGtdgzFQHehhaP/P83ev+KV2b+NDa8yvKfZtNl8ksPXvR98yEE3LqnvGNJsUDOixaDY+J9e/Qr2UXVPvS6XjG+jwWBawhpkRULp5Z7+N2psK2DktVTGaim2RA4EwlRaYM8pjNzhlcbSjkZK5MKMDFQDfMqIDi9WS2GJXIWZgaqACa+l0NaPCh8D1QGfAPYyGp7IaWEpuIUlKImtjAZbqsxGy+04jIICkhiNd0UVNkYGmgMWZj4mCTZeEGATEBZmIt9KAFuc140+goR3AAAAAElFTkSuQmCC","e":1}],"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"btc.psd","cl":"psd","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":14,"s":[30]},{"t":60,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[150,150,0],"to":[0,-10.167,0],"ti":[0,-10.5,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":21,"s":[150,89,0],"to":[0,10.5,0],"ti":[0,-10.167,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":41,"s":[150,213,0],"to":[0,10.167,0],"ti":[0,10.5,0]},{"t":60,"s":[150,150,0]}],"ix":2,"l":2},"a":{"a":0,"k":[59,57.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/assets/lottiefiles/completed.json b/assets/lottiefiles/completed.json new file mode 100644 index 0000000..445d222 --- /dev/null +++ b/assets/lottiefiles/completed.json @@ -0,0 +1 @@ +{"v":"5.5.7","meta":{"g":"LottieFiles AE 0.1.20","a":"","k":"","d":"","tc":""},"fr":60,"ip":0,"op":180,"w":1920,"h":1920,"nm":"Gpay Tick","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Tick","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[100]},{"t":32,"s":[100]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":30,"s":[-99]},{"t":60,"s":[0]}],"ix":10},"p":{"a":0,"k":[346.916,346.917,0],"ix":2},"a":{"a":0,"k":[278.033,227.218,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":30,"s":[20,20,100]},{"t":60,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-153.033,0.588],[-51.404,102.218],[153.032,-102.218]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":50,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[278.033,227.218],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.33],"y":[1]},"o":{"x":[0.67],"y":[0]},"t":31,"s":[0]},{"t":60,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":1800,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Glow Mask","td":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[100]},{"t":32,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.783,"y":0.496},"o":{"x":0.506,"y":0},"t":0,"s":[1099.01,1187.835,0],"to":[-51.058,-20.951,0],"ti":[23.519,29.424,0]},{"i":{"x":0.576,"y":1},"o":{"x":0.337,"y":0.495},"t":30,"s":[989.1550000000001,1114.015,0],"to":[-26.997,-33.775,0],"ti":[3.563,56.649,0]},{"t":50,"s":[947.01,981.835,0]}],"ix":2},"a":{"a":0,"k":[346.917,346.917,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":30,"s":[20,20,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":60,"s":[110.00000000000001,110.00000000000001,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":80,"s":[95,95,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":92,"s":[102,102,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":100,"s":[98,98,100]},{"t":110,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-191.459],[191.459,0],[0,191.458],[-191.458,0]],"o":[[0,191.458],[-191.458,0],[0,-191.459],[191.459,0]],"v":[[346.667,0],[0,346.667],[-346.667,0],[0,-346.666]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.9882352941176471,0.023529411764705882,0.06666666666666667,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[346.916,346.917],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1800,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Glow","tt":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":4,"s":[100]},{"i":{"x":[0.833],"y":[0.643]},"o":{"x":[0.72],"y":[0]},"t":110,"s":[100]},{"t":140,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.788},"o":{"x":0.72,"y":0},"t":94,"s":[56.00000000000001,440.00000000000006,0],"to":[226.667,131.333,0],"ti":[-226.667,-131.333,0]},{"t":140,"s":[1416,1228,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[348.655,1.947],[0,0],[35.647,880.072]],"o":[[0,0],[-8.868,-0.049],[0,0],[-3.819,-94.283]],"v":[[211.999,-440],[-480,280],[-136,648],[483.999,-312]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.76862745098,0.823067997951,1,1],"ix":4},"o":{"a":0,"k":30,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1800,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Background Circle (Blue)","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[100]},{"t":32,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.783,"y":0.496},"o":{"x":0.506,"y":0},"t":0,"s":[1099.01,1187.835,0],"to":[-51.058,-20.951,0],"ti":[23.519,29.424,0]},{"i":{"x":0.576,"y":1},"o":{"x":0.337,"y":0.495},"t":30,"s":[989.1550000000001,1114.015,0],"to":[-26.997,-33.775,0],"ti":[3.563,56.649,0]},{"t":50,"s":[947.01,981.835,0]}],"ix":2},"a":{"a":0,"k":[346.917,346.917,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":30,"s":[20,20,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":60,"s":[110.00000000000001,110.00000000000001,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":80,"s":[95,95,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":92,"s":[102,102,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":100,"s":[98,98,100]},{"t":110,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-191.459],[191.459,0],[0,191.458],[-191.458,0]],"o":[[0,191.458],[-191.458,0],[0,-191.459],[191.459,0]],"v":[[346.667,0],[0,346.667],[-346.667,0],[0,-346.666]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2901960784313726,0.5647058823529412,0.8862745098039215,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[346.916,346.917],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1800,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Background(Blue)","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[20]},{"t":32,"s":[20]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[346.917,346.917,0],"to":[0,0,0],"ti":[0,0,0]},{"t":49,"s":[346.917,346.917,0]}],"ix":2},"a":{"a":0,"k":[346.917,346.917,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.33,0.33,0.33],"y":[1,1,1]},"o":{"x":[0.67,0.67,0.67],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.33,0.33,0.33],"y":[1,1,1]},"o":{"x":[0.67,0.67,0.67],"y":[0,0,0]},"t":60,"s":[148,148,100]},{"t":110,"s":[88,88,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-191.459],[191.459,0],[0,191.458],[-191.458,0]],"o":[[0,191.458],[-191.458,0],[0,-191.459],[191.459,0]],"v":[[346.667,0],[0,346.667],[-346.667,0],[0,-346.666]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2901960784313726,0.5647058823529412,0.8862745098039215,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[346.916,346.917],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1800,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Element 11","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":4,"s":[100]},{"i":{"x":[0.833],"y":[0.601]},"o":{"x":[0.72],"y":[0]},"t":32,"s":[100]},{"t":87,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.33,"y":1},"o":{"x":0.174,"y":0},"t":10,"s":[1088.545,1185.048,0],"to":[-154.333,61,0],"ti":[34.333,-69,0]},{"t":42,"s":[774.545,1455.048,0]}],"ix":2},"a":{"a":0,"k":[88.379,84.132,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-17.539,13.457],[-12.743,-16.607],[0,0]],"o":[[-12.743,-16.608],[17.539,-13.458],[0,0],[0,0]],"v":[[-25.635,34.132],[-16.894,-20.673],[38.306,-14.931],[38.379,-14.837]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.255000005984,0.685999971278,0.501999978458,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":20,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[88.378,84.131],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1800,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Element 10","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":4,"s":[100]},{"i":{"x":[0.833],"y":[0.601]},"o":{"x":[0.72],"y":[0]},"t":32,"s":[100]},{"t":87,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.33,"y":1},"o":{"x":0.229,"y":0},"t":10,"s":[1088.113,1187.051,0],"to":[37.667,40,0],"ti":[-71.667,-48,0]},{"t":46,"s":[1314.113,1427.051,0]}],"ix":2},"a":{"a":0,"k":[33.514,41.664,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.281,-1.895],[0,0],[1.894,3.281],[0,0],[-3.281,1.894],[0,0],[-1.894,-3.282],[0,0]],"o":[[0,0],[-3.281,1.894],[0,0],[-1.894,-3.283],[0,0],[3.281,-1.895],[0,0],[1.894,3.281]],"v":[[28.859,29.055],[10.732,39.52],[1.361,37.009],[-31.37,-19.681],[-28.859,-29.053],[-10.732,-39.519],[-1.361,-37.008],[31.37,19.683]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.9882352941176471,0.023529411764705882,0.06666666666666667,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[33.514,41.664],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1800,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Element 9","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":4,"s":[100]},{"i":{"x":[0.833],"y":[0.601]},"o":{"x":[0.72],"y":[0]},"t":32,"s":[100]},{"t":87,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.33,"y":1},"o":{"x":0.189,"y":0},"t":10,"s":[1106.768,1189.936,0],"to":[70.333,-5.667,0],"ti":[-62.333,-30.333,0]},{"t":43,"s":[1420.768,1239.936,0]}],"ix":2},"a":{"a":0,"k":[60.548,78.82,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[2.886,-21.917],[20.753,2.734],[0.039,0.005]],"o":[[20.754,2.733],[-2.886,21.918],[-0.04,-0.005],[0,0]],"v":[[-12.409,-41.32],[20.162,3.615],[-22.93,38.586],[-23.048,38.571]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.20392156862745098,0.5647058823529412,0.8627450980392157,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[60.548,78.82],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1800,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Element 8","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":4,"s":[100]},{"i":{"x":[0.833],"y":[0.601]},"o":{"x":[0.72],"y":[0]},"t":32,"s":[100]},{"t":87,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.33,"y":1},"o":{"x":0.263,"y":0},"t":10,"s":[1095.413,1171.271,0],"to":[46.333,-81.667,0],"ti":[-98.333,51.667,0]},{"t":68,"s":[1397.413,873.271,0]}],"ix":2},"a":{"a":0,"k":[47.326,47.325,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-11.644,-3.948],[0,0],[-3.912,2.92],[0,0],[0.157,-12.294],[0,0],[-3.985,-2.819],[0,0],[11.74,-3.65],[0,0],[1.449,-4.662],[0,0],[7.098,10.038],[0,0],[4.882,-0.063],[0,0],[-7.354,9.853],[0,0],[1.569,4.624],[0,0]],"o":[[0,0],[4.623,1.568],[0,0],[9.854,-7.353],[0,0],[-0.062,4.882],[0,0],[10.038,7.099],[0,0],[-4.662,1.449],[0,0],[-3.649,11.74],[0,0],[-2.82,-3.986],[0,0],[-12.293,0.156],[0,0],[2.92,-3.913],[0,0],[-3.948,-11.644]],"v":[[-17.558,-36.37],[-13.481,-34.987],[0.154,-37.147],[3.606,-39.722],[27.31,-27.644],[27.255,-23.339],[33.522,-11.038],[37.038,-8.552],[32.877,17.724],[28.763,19.002],[19.003,28.764],[17.724,32.876],[-8.551,37.037],[-11.037,33.522],[-23.338,27.255],[-27.644,27.31],[-39.721,3.606],[-37.146,0.155],[-34.987,-13.481],[-36.37,-17.558]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.736999990426,0.195999998205,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[47.325,47.325],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1800,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Element 7","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":4,"s":[100]},{"i":{"x":[0.833],"y":[0.601]},"o":{"x":[0.72],"y":[0]},"t":32,"s":[100]},{"t":87,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.33,"y":1},"o":{"x":0.229,"y":0},"t":10,"s":[1086.148,1173.839,0],"to":[18.333,-110,0],"ti":[-64.333,76,0]},{"t":46,"s":[1316.148,645.839,0]}],"ix":2},"a":{"a":0,"k":[77.856,74.774,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-12.731,9.768],[-9.249,-12.055],[-0.018,-0.022]],"o":[[-9.249,-12.055],[12.73,-9.768],[0.018,0.023],[0,0]],"v":[[-18.607,24.774],[-12.262,-15.006],[27.805,-10.838],[27.857,-10.77]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.9882352941176471,0.023529411764705882,0.06666666666666667,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":20,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[77.856,74.774],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1800,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Element 6","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":4,"s":[100]},{"i":{"x":[0.833],"y":[0.601]},"o":{"x":[0.72],"y":[0]},"t":32,"s":[100]},{"t":87,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.33,"y":1},"o":{"x":0.189,"y":0},"t":10,"s":[1081.471,1169.811,0],"to":[-138,24.333,0],"ti":[110,-64.333,0]},{"t":43,"s":[529.471,1363.811,0]}],"ix":2},"a":{"a":0,"k":[47.326,47.325,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-11.644,-3.948],[0,0],[-3.913,2.92],[0,0],[0.157,-12.294],[0,0],[-3.986,-2.819],[0,0],[11.74,-3.65],[0,0],[1.449,-4.662],[0,0],[7.099,10.038],[0,0],[4.881,-0.062],[0,0],[-7.353,9.853],[0,0],[1.568,4.624],[0,0]],"o":[[0,0],[4.623,1.567],[0,0],[9.853,-7.352],[0,0],[-0.063,4.882],[0,0],[10.038,7.1],[0,0],[-4.662,1.449],[0,0],[-3.649,11.741],[0,0],[-2.819,-3.987],[0,0],[-12.293,0.157],[0,0],[2.92,-3.913],[0,0],[-3.948,-11.644]],"v":[[-17.558,-36.37],[-13.481,-34.987],[0.154,-37.147],[3.605,-39.723],[27.31,-27.644],[27.255,-23.339],[33.521,-11.038],[37.037,-8.553],[32.875,17.724],[28.763,19.002],[19.003,28.764],[17.724,32.875],[-8.552,37.037],[-11.039,33.522],[-23.339,27.254],[-27.645,27.31],[-39.722,3.606],[-37.146,0.154],[-34.987,-13.481],[-36.37,-17.558]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.9882352941176471,0.3764705882352941,0.06666666666666667,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[47.325,47.325],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1800,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Element 5","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":4,"s":[100]},{"i":{"x":[0.833],"y":[0.601]},"o":{"x":[0.72],"y":[0]},"t":32,"s":[100]},{"t":87,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.33,"y":1},"o":{"x":0.283,"y":0},"t":10,"s":[1071.297,1171.159,0],"to":[-118.333,-25,0],"ti":[132.333,-35,0]},{"t":70,"s":[517.297,1177.159,0]}],"ix":2},"a":{"a":0,"k":[30.771,30.771,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-16.856],[16.856,0],[0,16.856],[-16.857,0]],"o":[[0,16.856],[-16.857,0],[0,-16.856],[16.856,0]],"v":[[30.521,0],[0,30.521],[-30.521,0],[0,-30.521]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.980000035903,0.752999997606,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.771,30.771],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1800,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Element 4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":4,"s":[100]},{"i":{"x":[0.833],"y":[0.601]},"o":{"x":[0.72],"y":[0]},"t":32,"s":[100]},{"t":87,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.33,"y":1},"o":{"x":0.273,"y":0},"t":10,"s":[1074.624,1178.727,0],"to":[-94.667,-86.667,0],"ti":[140.667,20.667,0]},{"t":69,"s":[446.624,934.727,0]}],"ix":2},"a":{"a":0,"k":[42,25.144,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.829,-3.697],[0,0],[3.698,-0.828],[0,0],[0.83,3.697],[0,0],[-3.697,0.828],[0,0]],"o":[[0,0],[0.829,3.697],[0,0],[-3.697,0.828],[0,0],[-0.828,-3.697],[0,0],[3.697,-0.828]],"v":[[36.343,-18.872],[40.921,1.552],[35.727,9.747],[-28.148,24.066],[-36.344,18.872],[-40.922,-1.553],[-35.728,-9.747],[28.148,-24.066]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3686274509803922,0.5568627450980392,0.7803921568627451,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[42,25.144],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1800,"st":0,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Element 3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":4,"s":[100]},{"i":{"x":[0.833],"y":[0.601]},"o":{"x":[0.72],"y":[0]},"t":32,"s":[100]},{"t":87,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.33,"y":1},"o":{"x":0.174,"y":0},"t":10,"s":[1067.471,1180.071,0],"to":[-115.667,-176,0],"ti":[149.667,68,0]},{"t":61,"s":[529.471,736.071,0]}],"ix":2},"a":{"a":0,"k":[47.326,47.325,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-11.644,-3.948],[0,0],[-3.913,2.92],[0,0],[0.157,-12.294],[0,0],[-3.986,-2.819],[0,0],[11.74,-3.65],[0,0],[1.449,-4.662],[0,0],[7.099,10.038],[0,0],[4.881,-0.063],[0,0],[-7.353,9.854],[0,0],[1.568,4.624],[0,0]],"o":[[0,0],[4.623,1.568],[0,0],[9.853,-7.353],[0,0],[-0.063,4.882],[0,0],[10.038,7.099],[0,0],[-4.662,1.449],[0,0],[-3.649,11.74],[0,0],[-2.819,-3.986],[0,0],[-12.293,0.157],[0,0],[2.92,-3.912],[0,0],[-3.948,-11.644]],"v":[[-17.558,-36.37],[-13.481,-34.987],[0.154,-37.147],[3.605,-39.722],[27.31,-27.644],[27.255,-23.339],[33.521,-11.038],[37.037,-8.552],[32.875,17.724],[28.763,19.002],[19.003,28.764],[17.724,32.876],[-8.552,37.037],[-11.039,33.522],[-23.339,27.255],[-27.645,27.309],[-39.722,3.605],[-37.146,0.154],[-34.987,-13.481],[-36.37,-17.558]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.277999997606,0.677999997606,0.490000017952,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[47.325,47.325],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1800,"st":0,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Element 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":4,"s":[100]},{"i":{"x":[0.833],"y":[0.601]},"o":{"x":[0.72],"y":[0]},"t":32,"s":[100]},{"t":87,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.33,"y":1},"o":{"x":0.292,"y":0},"t":10,"s":[1098.638,1189.457,0],"to":[-95.667,-127,0],"ti":[3.667,95,0]},{"t":71,"s":[788.638,547.457,0]}],"ix":2},"a":{"a":0,"k":[33.515,41.664,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.281,-1.895],[0,0],[1.895,3.281],[0,0],[-3.281,1.894],[0,0],[-1.895,-3.281],[0,0]],"o":[[0,0],[-3.282,1.895],[0,0],[-1.895,-3.281],[0,0],[3.281,-1.894],[0,0],[1.895,3.282]],"v":[[28.859,29.054],[10.733,39.519],[1.36,37.008],[-31.37,-19.683],[-28.859,-29.054],[-10.732,-39.52],[-1.36,-37.009],[31.37,19.682]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2901960784313726,0.5647058823529412,0.8862745098039215,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[33.515,41.664],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1800,"st":0,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"Element 1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":32,"s":[100]},{"t":87,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.33,"y":1},"o":{"x":0.252,"y":0},"t":10,"s":[1087.199,1174.507,0],"to":[22,-151.667,0],"ti":[40,75.667,0]},{"t":67,"s":[1027.199,504.507,0]}],"ix":2},"a":{"a":0,"k":[30.771,30.771,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-16.856],[16.856,0],[0,16.857],[-16.857,0]],"o":[[0,16.857],[-16.857,0],[0,-16.856],[16.856,0]],"v":[[30.522,-0.001],[0,30.522],[-30.522,-0.001],[0,-30.522]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.685999971278,0.501999978458,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.771,30.772],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1800,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/assets/lottiefiles/ethereum.json b/assets/lottiefiles/ethereum.json new file mode 100644 index 0000000..f0b6159 --- /dev/null +++ b/assets/lottiefiles/ethereum.json @@ -0,0 +1 @@ +{"v":"5.7.6","fr":30,"ip":0,"op":60,"w":300,"h":300,"nm":"ete","ddd":0,"assets":[{"id":"image_0","w":148,"h":144,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJQAAACQCAMAAADZc7LwAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAACXBIWXMAAAABAAAAAQBPJcTWAAAAyVBMVEVHcEz61Hz6zVn6y1b61X70r0H2rzn4w0L0rUT0sEL603bmdCjwkSbvjCbujiXxlSb70nHrgCntgCv5xUboeCjzniL5x0TzniXxlCX6x0TqeS762Y/dXib5x0TzniL679zrgjLfYSfqfi7gZinshz7jbi7iain61Yn3zIP3uz/ncyvkeDrxojrvpF71sz3tiCfztm/0qzjwkyXuljbleCv2wXnsjTPum1XxrWbng0Tvk0f65LP5zV7pj07668v6z2363Z35ylD3vVFgukgcAAAAGnRSTlMA5oVn/EsM/jEbyuOUfmTDo9Hwrq/f3PCywZBI1XEAAA3kSURBVHjaxFxpQ9tID4YWMOEsbPtu38QB30ccB4fcoeHY//+j1vZo7Dk04wnQrj61uzQ8lp55JI3kHBzsb6dXFze3Xh/Mu729+X7VO/jv7OT44vqutseHBla/+pN3c3H6XyDqXf28Y+3xwelz5t1c/mGPHfOI7mSH1Xb78/iPhe3yx53SHh9Eh138AYednnt3eqMOc4JtaUHg3F5f/V4qnbu2bfvzBx2qafrr5SgeNBYfvbys//pt1P9eQarNjbxHFNA/Lwwczo4Ov/2GSB5HNmf+SHDY9NfRQGNxPDg6+/q5mC4ETLVF88Zh/2gRtdAOPy+SvfOSu6PIlXG50UPlpHhgbqXDTj4jdI0Ehb4MbF6gPkkqU4H9OMMuOfEZRT4LKRQhJcVql4WNJ8NslxcJhuvLR/x10ZesjeSK80Wy3oU2ZuFuLQOLz97Nr5991EZh6bCM/U1JnoF3sk3Q2iYDz2a7Qorm4ftS0XVfaV7O/JJiQ1yyCRzpB50gIA50N/niE2BdinmW+VUv7UevaydlCKDmCYJNRCPJO+xsX85fVRr0gP6qbatM68oPoQZR47GMcHGTs3GPv+2nBcrCpD9rHneR1U7qmxmN5IY9tYd7MP70bzb/c4XJ7I0+5k4ByalM5bA6jiwlvxjXTj+Uldx4CKCK8rkjHpKzzYsFlc0kWaxXAYKrjnjOMMtQtX4qK6bxcPir/qjKTdyv3K4xoYwXuQSsdhcjvYc9Y5LjNdOQgEqyit8MokKTA0uldxBYm+YhjgyI1ftbh6kCtShDsGnP/CrpzMWL9ZaHVX6Cu2782S1ZEVOYyJhKUIVvu0ErpIlZjRDzDgtKjdg0/u1C9b0pTESzalAvhWv7DaZVskftEhdb3lnhwgxVrylRxJqcYBrmrh3SRw4Wgz0tyVvdC5gQxlpenfOVXFuTTwimKYMpjwf7W5xzIaTiEGvO4LFUfEBNTgg1nPgNJmcxeJ8lTRCdMiuuqDKo9eom9PGanAQv9e0IMAXJ4N22oL52whbVmTK/9BU1+Zg4am678HnbePABi1cMqrwj41wravI5wbS0bcC0GnzQ1gwqynac7CceXpO7hOXTz8PUhrBCBTnnyKwqh0gua0yWb48+DVPJdxA7x7d94CdaX93iNblLWO7YPvHkdvApFgeNXmXqAJ4q6jPC8gkNXhAPPh0V+P4QyTCKKps4KrTn5K/J4LOMRrCsGkD05EuHG7xgnNWYxtRRxX76vdlp/kHiUFqFMc71E7Qm7/fTGlRke0KNbuKKuv7VnIuFGMAviuJOuCxcgqNcj8TyaA9M0DbLCen19ZXTq8x2E9RVF/jt6hQY5cHfzEEVI1Bg0VVP95U91X8midBx7R3qqh94s2CBbnrgthdjTOXPE/3NeC893xN7fm1pFVB/8gfwFOsVHKC5B46amIOqAzMiGYHj4X1jz20APd/eIFp1iRfmdYax4Ogth7Sd6TQom0gACyl2920EA+qqRK4WrnFQdfRmdkgdRRu/DqNlQCSR6p611+YElq4irIoFQcAMSpbaUU79l30wQfwYUr1yoJ5arge2H4sCeolfR9Poee1BNDh+u1ZRyPmL0egBKOIqh9YwZ3xxLl1H392lRKTC9iAaMJ3tin2BVLyn7hlZyIDqTPz8pol5lKLnkOiRg9jNdK5TF0klgHptXdVQvem3TvEmhgTMJ6CgeXgzy/0qUj3L8SOP4dH4feN6ULmJSUnR4jLR62B6LGZ1PamemWRD43eI9nutw0AQmCTYwfRYSugdpKrjl9Dzx5PKQ5uYkBWEMQWlYXoiVz6EVDuFULHxc2iqAVE/bq+jWVuygpBSUG/7YOoi1TOj/z60W1/FS3POYVMiCFGrnFpSLdAikXxUohWFBZBqxzKdbxlCAOZCt+cxgqAhFY4JSLXWx88jpMoY+ewhA4/yszyoOVlBUCtVoeg7JFJhorBlmX6IjIYah9XUTgVBUJFqrbqsJqQKBwpRuG+TpQNRJuXnDf5xKRGEOScIivit1VfoHaR6bf85HL8YBAG994b6jhcEXBRyzb2+RKpnVVJ2iZ7VoE4f0UlMTW3LJaAmLKg3ZamC0kAkFSLqCfwkgU6Lzkdx4wFwTG2/TkzDoSZ+WkwyqZD4xaAJeQPqGp/EWLggyOdv1zGXcQVSYaIggjrBV0SW0FuJgiDpZ+fMSCRVjIi6I4A6xicxIAhCjpGp3j3HkkiFiLoI6gKfxEDRORJyjBg/g9maRCokfgEDKpa7UKzoHIugGqqvTIZ9EqlkUQBPrQFUTzOJoUXnZKhwVWw0gSSkynWiAHEuQNEVXSgUnb6YY3iq50agYCiqItUzfTiXKHqZ+0IbHRFB0elJOYaj+s4IFCGVP1DE75mKJ4S4rBLqgLtSd4UWnZKrzEABqRaK+D1BmnFsF+qpto/hRkQTtOiUXLUyAxWJpHoVJGHN1lNfDy7wERHbhToYJpIAk/77SMW66pU+XABa1ju4wUdEUHQ6SI7hXGW4AiCRKn6S7xNamTpHR0RLRdHJWWysCTKpygg+lWx/fiL3jKAc9PCdoyOimS7HcK5K3kcqpLxveQ49w0gYEU07KUVdpeoXMFHYaK/YAvj/x2zVya5tdakUK+sLY1K5KlACpQ7QEVGkrISxDFi8j1QM61k9P5NAQZ88Z2spJShrPk9MUUXS5afYnQVQR3zBQLUi4KqyMVh5ELK4q5fhSFVobiNblVKAGpscvkoy6CVBbkYqxbDJYUqEuhNFP2EKw7S+HtSyPVG5CahMcy/iwCVW3bOj3RU0Mq6qbgGbMGXuygBUoZkDtImvtL/lfXJwzlhdTFELmQvN7j4r1wnChnxOzIxkhO7KFNSMFeqd/vSFhfb2r80x3KSBAWYKKnVNUa0K/dCP3rh8Q/bKABcHSk304RAmQmttZxPo95m4HNMTx3ytw1KW6DpQS0BVqFAF3QtWAdPIHGm23VJWEiYaUBM6PVsgqAKjja8ELtETZgZyrARFxVOT+4ZDWlX6C16vAtMVNEQQFG1fyk75ZjpQS5rWQgpikefIKmNRaCdeVBBO8DFtC4p2osuhNn4SKvl45RtXqZzkDjZickw9bJBnV7BXNiKgvKE+fhRVFqMLbxtSpfmJvuiMubHMDf8qBdOzO3a/8/hV8WsG2AIqdnc+S0wEoRkgX0F3xTkM9NrvdzI9ZW4LmN8cF7uMKa83cYcg5MKoz0Xa0aEw+O+IH0Xlk+XBxSrj+5BcPWGCojNBhqJiO2qxl7Ce1Rk/Wu+W3soysTfyC/32Ald00vEx0o6mcJXg9XWNHxO/FpVkWdI1AmeLTnFUK/Z9DalmBvHrjxSoNtqVHanobPcDpXZ0zi9yaeM3w1C5vmLRBRUEO5bW307ldhRW3uiC0tgkfpTtZfzDEaQfvzBY9BByjLCMx7SjYyjC/b6+SWbiVz9ZFEWjFmHYlQAdXBDEKRZE0uHjNzWJH1f+up10ahpGly06VXuLVTvq0x3YUberLAWm7tXLrUIQFAO/cMqv4mlZ5WGXZH739h6d0q4kQVCseM5ovznvdwroDOnRQ4ONQm70KO9TXskRsGi/4nRqlSWHrnyItyMjR9Gzh+zDnit2Ti3qKm1V7ImYSLrseFNyC4tTa/N1WOB2wyrHMopfRSe3YaAOVtFnaX6IbjNL/TuhuhWSvQR9scDRKWKdqnz5lmzFeHRDAl9Hvxb7ZHAVLWC0J9BjNH0uuPTtRbONRhfM4hPNWzwsLgDhNHvoagkdi3QS7iGPFMFzXHDUmekLdE77ZoPXQXZLppPoriNsbTijY0Dl2yBss/zw0LqqDCCcQE+JykHoJOL61b78HjeLlIX+tQtxrZJOR9mXG5So0hFGJwQYeQ1+S9erN7r3GxRv9g1pCuxGtRzNZ0Mje/u1pXvMftLlqJLsP9AGcJhGzcsp+ixoZiBr5Qka/6qtZ/5mZtsrV68W+RTVzPo0THBSu74lQEI1bF7CalA56UcgWbPmNZARebz/d790+AMbcNeomgh+JIQptGReZPvk4SyDFzRFVJMWld2gcqbvxDTxGkzwjtDQ6CseTq4fMVpVvLJbuV9OPhC6vhfaLjzXX4Yv/Z7zW8QUVVpK9oiBtbe3Jg7zEh1Q4H/G31TwvSQQcxNDUVmezRCr/OzxPpRPmwKn5DhNR9Y+L2373E1M87tnJbHmXClhiquFVGkBjd1wvy8DoN+cQm5imt88CXlnVfyYTTuVazLjJiJNitz3e0xOz9mbmLTlaonWF9eWnbGG9+mYDXnEpMgvB3vbFfP9KX6b11Kn+rsjFqreDI3kZLzkfoqtuN6BiYflMhXAZF79h7787pa3nI0nqVX9pJVOpuPZUnBoSdWI0sl6H6aq8jtvrj2iKauBtfu8zi9w4CBVVeCyebaPfC9O73tz67G02NP0bzHXssIgDAQlIUmlLySSIniIEYUWESQh//9ptSa2vrDa+tijp8lMmF2XMKkhkE8E9rpMoXpfPfJvTNXBt/urpOWXuTbqpt8J46Jawnx6JlsipgefzfuTzoSQS2XgPkYI45VuoWq0cbpEQo8lLCmdXndMiRTaBqWUSoo+ILNKi3jDM8jCMUsXL470ve9EIq6XuILXJZT9GImseRK6QiSV6x953ypJIdXQA6NQ6bbhs9WC2JAnh51ScmWXp3GqhM7yrtgAOysWPt1mj1QEbBALh67ZjL8Iti5LLWB02vBCNwv1s0pCwMZlo3CXxEgX0mFgJAAIO/sVRhBQVmMjLKAA/tJOnn6yhe9DQ5FPAAAAAElFTkSuQmCC","e":1},{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":2,"nm":"Objeto Inteligente de Vetor","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[74,72,0],"ix":2,"l":2},"a":{"a":0,"k":[74,72,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"ete 2","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[150,150,0],"to":[0,2.333,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":15,"s":[150,164,0],"to":[0,0,0],"ti":[0,5.667,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[150,150,0],"to":[0,-5.667,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":45,"s":[150,130,0],"to":[0,0,0],"ti":[0,-3.333,0]},{"t":60,"s":[150,150,0]}],"ix":2,"l":2},"a":{"a":0,"k":[74,72,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":15,"s":[85,85,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":45,"s":[107,107,100]},{"t":60,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"w":148,"h":144,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/assets/lottiefiles/failed.json b/assets/lottiefiles/failed.json new file mode 100644 index 0000000..407fbf4 --- /dev/null +++ b/assets/lottiefiles/failed.json @@ -0,0 +1 @@ +{"v":"5.7.13","fr":29.9700012207031,"ip":0,"op":180.00000733155,"w":1080,"h":1080,"nm":"Failed","ddd":0,"assets":[{"id":"comp_0","nm":"x merah","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 8 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[214.595,421.61,0],"ix":2,"l":2},"a":{"a":0,"k":[26.735,26.736,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.089,0.089,0.667],"y":[1,1,-27.681]},"o":{"x":[0.686,0.686,0.333],"y":[0,0,0]},"t":15,"s":[0,0,100]},{"i":{"x":[0.17,0.17,0.667],"y":[1,1,1]},"o":{"x":[1,1,0.333],"y":[0.008,0.008,10.43]},"t":26,"s":[110,110,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":30,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":43,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":47,"s":[110,110,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":51,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":62,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":66,"s":[110,110,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":70,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":82,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":86,"s":[110,110,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":90,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":101,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":105,"s":[110,110,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":109,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":122,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":126,"s":[110,110,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":130,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":141,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":145,"s":[110,110,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":149,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":159,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":163,"s":[110,110,100]},{"t":167.000006802049,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[1.425,1.559],[1.559,-1.425],[0,0],[0,0],[1.56,-1.425],[-1.425,-1.56],[0,0],[0,0],[-1.425,-1.559],[-1.56,1.425],[0,0],[0,0],[-1.56,1.425],[1.425,1.559]],"o":[[0,0],[1.559,-1.425],[-1.424,-1.56],[0,0],[0,0],[-1.425,-1.56],[-1.559,1.425],[0,0],[0,0],[-1.559,1.425],[1.425,1.56],[0,0],[0,0],[1.425,1.56],[1.559,-1.425],[0,0]],"v":[[5.404,0.243],[24.817,-17.495],[25.06,-22.899],[19.657,-23.143],[0.244,-5.403],[-17.495,-24.817],[-22.899,-25.061],[-23.142,-19.657],[-5.404,-0.244],[-24.817,17.494],[-25.06,22.898],[-19.656,23.142],[-0.243,5.403],[17.495,24.816],[22.899,25.06],[23.143,19.656]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.956862804936,0.258823529412,0.376470618154,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[26.735,26.736],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":15.0000006109625,"op":315.000012830213,"st":15.0000006109625,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"X","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[253.542,163.42,0],"ix":2,"l":2},"a":{"a":0,"k":[83.59,83.59,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.263,0.263,0.667],"y":[1,1,1]},"o":{"x":[0.606,0.606,0.333],"y":[0,0,0]},"t":11,"s":[0,0,100]},{"i":{"x":[0.382,0.382,0.667],"y":[1,1,1]},"o":{"x":[0.64,0.64,0.333],"y":[0,0,0]},"t":21,"s":[120,120,100]},{"t":24.00000097754,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[4.954,3.732],[3.733,-4.954],[0,0],[0,0],[3.732,-4.954],[-4.954,-3.732],[0,0],[0,0],[-4.954,-3.732],[-3.732,4.954],[0,0],[0,0],[-3.732,4.954],[4.954,3.732]],"o":[[0,0],[3.732,-4.954],[-4.954,-3.733],[0,0],[0,0],[-4.954,-3.732],[-3.732,4.954],[0,0],[0,0],[-3.732,4.954],[4.954,3.732],[0,0],[0,0],[4.954,3.732],[3.732,-4.954],[0,0]],"v":[[15.728,-2.212],[62.185,-63.88],[59.973,-79.607],[44.245,-77.395],[-2.212,-15.727],[-63.88,-62.185],[-79.608,-59.973],[-77.396,-44.246],[-15.728,2.213],[-62.186,63.881],[-59.974,79.608],[-44.246,77.396],[2.212,15.728],[63.88,62.186],[79.607,59.974],[77.395,44.246]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[83.59,83.59],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5.00000020365417,"op":305.000012422905,"st":5.00000020365417,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Box","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":5,"s":[-42]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":27,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":34,"s":[0]},{"i":{"x":[0.672],"y":[1]},"o":{"x":[0.304],"y":[0]},"t":37,"s":[8]},{"i":{"x":[0.639],"y":[1]},"o":{"x":[0.345],"y":[0]},"t":40,"s":[-6]},{"i":{"x":[0.645],"y":[1]},"o":{"x":[0.381],"y":[0]},"t":46,"s":[2]},{"i":{"x":[0.66],"y":[1]},"o":{"x":[0.311],"y":[0]},"t":49,"s":[-6]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":52,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":84,"s":[0]},{"i":{"x":[0.672],"y":[1]},"o":{"x":[0.304],"y":[0]},"t":87,"s":[8]},{"i":{"x":[0.639],"y":[1]},"o":{"x":[0.345],"y":[0]},"t":90,"s":[-6]},{"i":{"x":[0.645],"y":[1]},"o":{"x":[0.381],"y":[0]},"t":96,"s":[2]},{"i":{"x":[0.66],"y":[1]},"o":{"x":[0.311],"y":[0]},"t":99,"s":[-6]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":102,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":145,"s":[0]},{"i":{"x":[0.672],"y":[1]},"o":{"x":[0.304],"y":[0]},"t":148,"s":[8]},{"i":{"x":[0.639],"y":[1]},"o":{"x":[0.345],"y":[0]},"t":151,"s":[-6]},{"i":{"x":[0.645],"y":[1]},"o":{"x":[0.381],"y":[0]},"t":157,"s":[2]},{"i":{"x":[0.66],"y":[1]},"o":{"x":[0.311],"y":[0]},"t":160,"s":[-6]},{"t":163.000006639126,"s":[0]}],"ix":10},"p":{"a":0,"k":[460.716,718.089,0],"ix":2,"l":2},"a":{"a":0,"k":[192.659,365.072,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.368,0.368,0.667],"y":[1,1,1]},"o":{"x":[0.536,0.536,0.333],"y":[0,0,0]},"t":5,"s":[0,0,100]},{"i":{"x":[0.611,0.611,0.667],"y":[1,1,1]},"o":{"x":[0.47,0.47,0.333],"y":[0,0,0]},"t":20,"s":[110,110,100]},{"t":27.0000010997325,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.554,-3.57],[0,0],[-15.7,2.754],[0,0],[-1.474,-2.188],[0,0],[-1.544,5.478],[0,0],[-2.427,0.516],[0,0],[0.481,3.471],[0,0],[12.957,-2.407],[0,0]],"o":[[0,0],[2.444,15.751],[0,0],[2.598,-0.456],[0,0],[3.181,4.72],[0,0],[0.673,-2.388],[0,0],[3.427,-0.729],[0,0],[-1.809,-13.054],[0,0],[-3.552,0.66]],"v":[[-255.854,-89.404],[-221.849,129.756],[-188.804,153.428],[-101.421,138.102],[-94.726,140.95],[-69.69,178.103],[-57.717,176.182],[-45.162,131.635],[-40.12,126.912],[250.699,65.064],[255.928,57.612],[225.659,-160.868],[198.549,-180.415],[-250.472,-96.998]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.956862804936,0.258823529412,0.376470618154,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256.658,183.072],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5.00000020365417,"op":305.000012422905,"st":5.00000020365417,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"line 3","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[392.012,287.044,0],"ix":2,"l":2},"a":{"a":0,"k":[117.667,25.963,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-116.167,24.463],[116.167,-24.463]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.956862807274,0.258823543787,0.376470625401,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[117.667,25.964],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5.00000020365417,"op":305.000012422905,"st":5.00000020365417,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"line 2","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[180.547,365.912,0],"ix":2,"l":2},"a":{"a":0,"k":[35.85,42.639,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-5.245,23.6],[0,0]],"o":[[0,0],[0,0],[2.68,-12.062],[0,0]],"v":[[-28.349,-35.139],[6.264,15.21],[25.669,11.538],[27.88,1.587]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.956862804936,0.258823529412,0.376470618154,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[35.85,42.639],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5.00000020365417,"op":305.000012422905,"st":5.00000020365417,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"line 1","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[51.043,229.493,0],"ix":2,"l":2},"a":{"a":0,"k":[66.516,132.12,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-9.356,-50.368],[0,0],[0,0]],"o":[[0,0],[5.705,30.712],[0,0],[0,0]],"v":[[-59.016,-124.62],[-30.016,93.909],[13.883,120.301],[59.016,113.368]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.956862804936,0.258823529412,0.376470618154,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[66.516,132.12],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5.00000020365417,"op":305.000012422905,"st":5.00000020365417,"bm":0},{"ddd":0,"ind":6,"ty":0,"nm":"x merah","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[826,962,0],"ix":2,"l":2},"a":{"a":0,"k":[540,540,0],"ix":1,"l":2},"s":{"a":0,"k":[125,125,100],"ix":6,"l":2}},"ao":0,"w":1080,"h":1080,"ip":6.00000024438501,"op":306.000012463636,"st":6.00000024438501,"bm":0},{"ddd":0,"ind":7,"ty":0,"nm":"x merah","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1150,420,0],"ix":2,"l":2},"a":{"a":0,"k":[540,540,0],"ix":1,"l":2},"s":{"a":0,"k":[133,133,100],"ix":6,"l":2}},"ao":0,"w":1080,"h":1080,"ip":6.00000024438501,"op":306.000012463636,"st":6.00000024438501,"bm":0},{"ddd":0,"ind":8,"ty":0,"nm":"x merah","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1059,683,0],"ix":2,"l":2},"a":{"a":0,"k":[540,540,0],"ix":1,"l":2},"s":{"a":0,"k":[64,64,100],"ix":6,"l":2}},"ao":0,"w":1080,"h":1080,"ip":0,"op":300.00001221925,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":0,"nm":"x merah","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[540,540,0],"ix":2,"l":2},"a":{"a":0,"k":[540,540,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":1080,"h":1080,"ip":0,"op":300.00001221925,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Layer 7/Failed Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[540,540,0],"ix":2,"l":2},"a":{"a":0,"k":[299.5,299.5,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.382,0.382,0.667],"y":[1,1,1]},"o":{"x":[0.574,0.574,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"i":{"x":[0.472,0.472,0.667],"y":[1,1,1]},"o":{"x":[0.6,0.6,0.333],"y":[0,0,0]},"t":12,"s":[110,110,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":19,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":29,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":47,"s":[110,110,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":66,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":86,"s":[110,110,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":105,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":126,"s":[110,110,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":145,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":163,"s":[110,110,100]},{"t":182.000007413012,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-165],[165.001,0],[0,165],[-165,0]],"o":[[0,165],[-165,0],[0,-165],[165.001,0]],"v":[[298.759,0],[-0.001,298.76],[-298.759,0],[-0.001,-298.76]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.937254961799,0.937254961799,0.937254961799,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[299.009,299.01],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300.00001221925,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/assets/lottiefiles/history.json b/assets/lottiefiles/history.json new file mode 100644 index 0000000..66c2abb --- /dev/null +++ b/assets/lottiefiles/history.json @@ -0,0 +1 @@ +{"v":"4.8.0","meta":{"g":"LottieFiles AE 1.0.0","a":"","k":"","d":"","tc":"none"},"fr":60,"ip":0,"op":120,"w":220,"h":220,"nm":"Bank_History","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Big needle","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"t":40,"s":[360]}],"ix":10},"p":{"a":0,"k":[-34.787,158.328,0],"ix":2},"a":{"a":0,"k":[75.213,268.328,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.657,0],[0,1.657],[0,0],[-1.657,0],[0,-1.657],[0,0]],"o":[[-1.657,0],[0,0],[0,-1.657],[1.657,0],[0,0],[0,1.657]],"v":[[0,10.5],[-3,7.5],[-3,-7.5],[0,-10.5],[3,-7.5],[3,7.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.6392156862745098,0.7176470588235294,0.8431372549019608,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[75.15,260.766],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Small needle","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-34.787,158.328,0],"ix":2},"a":{"a":0,"k":[75.213,268.328,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.657,0],[0,0],[0,1.657],[-1.657,0],[0,0],[0,-1.657]],"o":[[0,0],[-1.657,0],[0,-1.657],[0,0],[1.657,0],[0,1.657]],"v":[[5.5,3],[-5.5,3],[-8.5,0],[-5.5,-3],[5.5,-3],[8.5,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.6392156862745098,0.7176470588235294,0.8431372549019608,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[80.65,268.266],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Clock","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[129.15,135.266,0],"ix":2},"a":{"a":0,"k":[-34.85,158.266,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":4,"s":[100,77,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":10,"s":[111,111,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":20,"s":[100,100,100]},{"t":40,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[12.683,0],[0,-12.683],[-12.683,0],[0,12.683]],"o":[[-12.683,0],[0,12.683],[12.683,0],[0,-12.683]],"v":[[-34.85,135.266],[-57.85,158.266],[-34.85,181.266],[-11.85,158.266]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[15.99,0],[0,15.99],[-15.99,0],[0,-15.99]],"o":[[-15.99,0],[0,-15.99],[15.99,0],[0,15.99]],"v":[[-34.85,187.266],[-63.85,158.266],[-34.85,129.266],[-5.85,158.266]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.6392156862745098,0.7176470588235294,0.8431372549019608,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Paper","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[98.89,100.81,0],"ix":2},"a":{"a":0,"k":[44.89,104.31,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[1.657,0],[0,0],[0,1.657],[-1.657,0],[0,0],[0,-1.657]],"o":[[0,0],[-1.657,0],[0,-1.657],[0,0],[1.657,0],[0,1.657]],"v":[[15.884,3],[-15.884,3],[-18.884,0],[-15.884,-3],[15.884,-3],[18.884,0]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":4,"s":[{"i":[[1.657,0],[0,0],[0,1.657],[-1.657,0],[0,0],[0,-1.657]],"o":[[0,0],[-1.657,0],[0,-1.657],[0,0],[1.657,0],[0,1.657]],"v":[[15.884,3],[-15.884,3],[-18.884,0],[-15.884,-3],[15.884,-3],[18.884,0]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[1.657,0],[0,0],[0,1.657],[-1.657,0],[0,0],[0,-1.657]],"o":[[0,0],[-1.657,0],[0,-1.657],[0,0],[1.657,0],[0,1.657]],"v":[[12.759,3],[-15.884,3],[-18.884,0],[-15.884,-3],[12.759,-3],[15.759,0]],"c":true}]},{"t":20,"s":[{"i":[[1.657,0],[0,0],[0,1.657],[-1.657,0],[0,0],[0,-1.657]],"o":[[0,0],[-1.657,0],[0,-1.657],[0,0],[1.657,0],[0,1.657]],"v":[[15.884,3],[-15.884,3],[-18.884,0],[-15.884,-3],[15.884,-3],[18.884,0]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.6392156862745098,0.7176470588235294,0.8431372549019608,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[38.267,122.028],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.657,0],[0,0],[0,1.657],[-1.657,0],[0,0],[0,-1.657]],"o":[[0,0],[-1.657,0],[0,-1.657],[0,0],[1.657,0],[0,1.657]],"v":[[22.507,3],[-22.507,3],[-25.507,0],[-22.507,-3],[22.507,-3],[25.507,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.6392156862745098,0.7176470588235294,0.8431372549019608,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[44.89,100.958],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.657,0],[0,0],[0,1.657],[-1.657,0],[0,0],[0,-1.657]],"o":[[0,0],[-1.657,0],[0,-1.657],[0,0],[1.657,0],[0,1.657]],"v":[[22.507,3],[-22.507,3],[-25.507,0],[-22.507,-3],[22.507,-3],[25.507,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.6392156862745098,0.7176470588235294,0.8431372549019608,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[44.89,79.887],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0],[0,9.925],[0,0],[-9.925,0],[0,0],[0,-9.925],[0,0],[0,0],[0,0],[6.617,0],[0,0],[0,-6.617],[0,0],[-6.617,0],[0,0]],"o":[[0,0],[-9.925,0],[0,0],[0,-9.925],[0,0],[9.925,0],[0,0],[0,0],[0,0],[0,-6.617],[0,0],[-6.617,0],[0,0],[0,6.617],[0,0],[0,0]],"v":[[6.131,47.535],[-19,47.535],[-37,29.535],[-37,-29.535],[-19,-47.535],[19,-47.535],[37,-29.535],[37,8.555],[31,8.555],[31,-29.535],[19,-41.535],[-19,-41.535],[-31,-29.535],[-31,29.535],[-19,41.535],[6.131,41.535]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":4,"s":[{"i":[[0,0],[0,0],[0,9.925],[0,0],[-9.925,0],[0,0],[0,-9.925],[0,0],[0,0],[0,0],[6.617,0],[0,0],[0,-6.617],[0,0],[-6.617,0],[0,0]],"o":[[0,0],[-9.925,0],[0,0],[0,-9.925],[0,0],[9.925,0],[0,0],[0,0],[0,0],[0,-6.617],[0,0],[-6.617,0],[0,0],[0,6.617],[0,0],[0,0]],"v":[[6.131,47.535],[-19,47.535],[-37,29.535],[-37,-29.535],[-19,-47.535],[19,-47.535],[37,-29.535],[37,15.555],[31,15.555],[31,-29.535],[19,-41.535],[-19,-41.535],[-31,-29.535],[-31,29.535],[-19,41.535],[6.131,41.535]],"c":true}]},{"t":10,"s":[{"i":[[0,0],[0,0],[0,9.925],[0,0],[-9.925,0],[0,0],[0,-9.925],[0,0],[0,0],[0,0],[6.617,0],[0,0],[0,-6.617],[0,0],[-6.617,0],[0,0]],"o":[[0,0],[-9.925,0],[0,0],[0,-9.925],[0,0],[9.925,0],[0,0],[0,0],[0,0],[0,-6.617],[0,0],[-6.617,0],[0,0],[0,6.617],[0,0],[0,0]],"v":[[6.131,47.535],[-19,47.535],[-37,29.535],[-37,-29.535],[-19,-47.535],[19,-47.535],[37,-29.535],[37,8.555],[31,8.555],[31,-29.535],[19,-41.535],[-19,-41.535],[-31,-29.535],[-31,29.535],[-19,41.535],[6.131,41.535]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.6392156862745098,0.7176470588235294,0.8431372549019608,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[44.89,104.31],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/assets/lottiefiles/loading.json b/assets/lottiefiles/loading.json new file mode 100644 index 0000000..fa9617a --- /dev/null +++ b/assets/lottiefiles/loading.json @@ -0,0 +1 @@ +{"v":"4.8.0","meta":{"g":"LottieFiles AE 1.0.0","a":"","k":"","d":"","tc":""},"fr":29.9700012207031,"ip":0,"op":31.0000012626559,"w":500,"h":500,"nm":"Loading ","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":5,"ty":4,"nm":"Rectangle_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":45,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[250,157.375,0],"to":[15.448,15.438,0],"ti":[0.031,-0.052,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":15,"s":[342.688,250,0],"to":[-0.059,0.098,0],"ti":[15.448,-15.427,0]},{"t":30.0000012219251,"s":[250,342.563,0]}],"ix":2},"a":{"a":0,"k":[-125,-107,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[57,-57],[57,57],[-57,57],[-57,-57]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.38823529411764707,0.6941176470588235,0.9372549019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-125,-107],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90.0000036657751,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Rectangle_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":45,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[342.688,250,0],"to":[0.052,-0.073,0],"ti":[-0.01,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":15,"s":[250,342.563,0],"to":[0.104,0,0],"ti":[0.198,-0.073,0]},{"t":30.0000012219251,"s":[157.313,250,0]}],"ix":2},"a":{"a":0,"k":[-125,-107,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[57,-57],[57,57],[-57,57],[-57,-57]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3843137254901961,0.47843137254901963,0.8784313725490196,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-125,-107],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90.0000036657751,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Rectangle_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":45,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[250,342.563,0],"to":[0.052,0.198,0],"ti":[0.04,-0.012,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":15,"s":[157.313,250,0],"to":[-0.492,0.145,0],"ti":[0.052,-0.563,0]},{"t":30.0000012219251,"s":[250,157.375,0]}],"ix":2},"a":{"a":0,"k":[-125,-107,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[57,-57],[57,57],[-57,57],[-57,-57]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.38823529411764707,0.6941176470588235,0.9372549019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-125,-107],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90.0000036657751,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Rectangle_4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":45,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[157.313,250,0],"to":[15.448,-15.438,0],"ti":[-0.079,0.525,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":15,"s":[250,157.375,0],"to":[0.019,-0.125,0],"ti":[-15.448,-15.438,0]},{"t":30.0000012219251,"s":[342.688,250,0]}],"ix":2},"a":{"a":0,"k":[-125,-107,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[57,-57],[57,57],[-57,57],[-57,-57]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3843137254901961,0.47843137254901963,0.8784313725490196,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-125,-107],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90.0000036657751,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/assets/lottiefiles/locked.json b/assets/lottiefiles/locked.json new file mode 100644 index 0000000..4a3000a --- /dev/null +++ b/assets/lottiefiles/locked.json @@ -0,0 +1 @@ +{"v":"5.5.8","fr":25,"ip":0,"op":101,"w":300,"h":300,"nm":"shield icon lock 2","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 2 Outlines","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[13.5,11.5,0],"ix":2},"a":{"a":0,"k":[4.5,4.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.381],[1.381,0],[0,1.381],[-1.381,0]],"o":[[0,1.381],[-1.381,0],[0,-1.381],[1.381,0]],"v":[[2.5,0],[0,2.5],[-2.5,0],[0,-2.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.670588235294,0.760784373564,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[4.5,4.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":236,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Layer 3 Outlines 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":249.951,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.746],"y":[0.959]},"o":{"x":[0.276],"y":[1.234]},"t":14,"s":[229.257]},{"i":{"x":[0.746],"y":[0.764]},"o":{"x":[0],"y":[0]},"t":28,"s":[230.257]},{"i":{"x":[0.833],"y":[1.32]},"o":{"x":[0],"y":[0]},"t":108,"s":[230.257]},{"t":114,"s":[229.257]}],"ix":4}},"a":{"a":0,"k":[13.5,11.5,0],"ix":1},"s":{"a":0,"k":[118,118,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.443,0],[0,0],[0,1.443],[0,0],[-1.443,0],[0,0],[0,-1.443],[0,0]],"o":[[0,0],[-1.443,0],[0,0],[0,-1.443],[0,0],[1.443,0],[0,0],[0,1.443]],"v":[[8.887,9.5],[-8.887,9.5],[-11.5,6.887],[-11.5,-6.887],[-8.887,-9.5],[8.887,-9.5],[11.5,-6.887],[11.5,6.887]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[13.5,11.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":236,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Layer 1 Outlines 2","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.969],"y":[1]},"o":{"x":[0.031],"y":[0]},"t":12,"s":[13.5]},{"i":{"x":[0.969],"y":[1]},"o":{"x":[0],"y":[0]},"t":20,"s":[13.5]},{"t":21,"s":[13.5],"h":1},{"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]},"t":110,"s":[13.5]},{"t":114,"s":[13.5]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.723],"y":[1.626]},"o":{"x":[0.673],"y":[0]},"t":12,"s":[-7.476]},{"i":{"x":[0.723],"y":[1.391]},"o":{"x":[0],"y":[0]},"t":20,"s":[-2.476]},{"t":21,"s":[-2.476],"h":1},{"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]},"t":110,"s":[-2.476]},{"t":114,"s":[-7.476]}],"ix":4}},"a":{"a":0,"k":[10.625,9.976,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":236,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Layer 1 Outlines","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":10.625,"ix":3},"y":{"a":0,"k":9.976,"ix":4}},"a":{"a":0,"k":[10.625,9.976,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-3.106,0],[0,-3.107],[0,0]],"o":[[0,0],[0,-3.107],[3.107,0],[0,0],[0,0]],"v":[[-5.625,4.976],[-5.625,0.649],[0,-4.976],[5.625,0.649],[5.668,11.742]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[10.625,9.976],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":236,"st":0,"bm":0}]},{"id":"comp_1","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 8","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[300]},{"t":201,"s":[660]}],"ix":10},"p":{"a":0,"k":[249.464,225,0],"ix":2},"a":{"a":0,"k":[29.309,-38,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":16,"s":[36,37,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":21,"s":[66,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":88,"s":[49.922,66.235,100]},{"t":101,"s":[36,37,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[78.412,-172],[-21.759,-172],[3.388,-38],[54.489,-38]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.98,0.98,0.98,0.6,0.825,0.871,0.99,1,0.671,0.761,1,0,0,0.5,0.5,1,1],"ix":9}},"s":{"a":0,"k":[31.336,-172.07],"ix":5},"e":{"a":0,"k":[31.258,-38.482],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":236,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[240]},{"t":201,"s":[600]}],"ix":10},"p":{"a":0,"k":[249.464,225,0],"ix":2},"a":{"a":0,"k":[29.309,-38,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":16,"s":[36,37,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":21,"s":[66,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":88,"s":[49.922,66.235,100]},{"t":101,"s":[36,37,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[78.412,-172],[-21.759,-172],[3.388,-38],[54.489,-38]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.98,0.98,0.98,0.6,0.825,0.871,0.99,1,0.671,0.761,1,0,0,0.5,0.5,1,1],"ix":9}},"s":{"a":0,"k":[31.336,-172.07],"ix":5},"e":{"a":0,"k":[31.258,-38.482],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":236,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[180]},{"t":201,"s":[540]}],"ix":10},"p":{"a":0,"k":[249.464,225,0],"ix":2},"a":{"a":0,"k":[29.309,-38,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":16,"s":[36,37,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":21,"s":[66,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":88,"s":[49.922,66.235,100]},{"t":101,"s":[36,37,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[78.412,-172],[-21.759,-172],[3.388,-38],[54.489,-38]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.98,0.98,0.98,0.6,0.825,0.871,0.99,1,0.671,0.761,1,0,0,0.5,0.5,1,1],"ix":9}},"s":{"a":0,"k":[31.336,-172.07],"ix":5},"e":{"a":0,"k":[31.258,-38.482],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":236,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 7","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[120]},{"t":201,"s":[480]}],"ix":10},"p":{"a":0,"k":[249.464,225,0],"ix":2},"a":{"a":0,"k":[29.309,-38,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":16,"s":[36,37,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":21,"s":[66,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":88,"s":[49.922,66.235,100]},{"t":101,"s":[36,37,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[78.412,-172],[-21.759,-172],[3.388,-38],[54.489,-38]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.98,0.98,0.98,0.6,0.825,0.871,0.99,1,0.671,0.761,1,0,0,0.5,0.5,1,1],"ix":9}},"s":{"a":0,"k":[31.336,-172.07],"ix":5},"e":{"a":0,"k":[31.258,-38.482],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":236,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[60]},{"t":201,"s":[420]}],"ix":10},"p":{"a":0,"k":[249.464,225,0],"ix":2},"a":{"a":0,"k":[29.309,-38,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":16,"s":[36,37,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":21,"s":[66,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":88,"s":[49.922,66.235,100]},{"t":101,"s":[36,37,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[78.412,-172],[-21.759,-172],[3.388,-38],[54.489,-38]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.98,0.98,0.98,0.6,0.825,0.871,0.99,1,0.671,0.761,1,0.001,0,0.5,0.5,1,1],"ix":9}},"s":{"a":0,"k":[31.336,-172.07],"ix":5},"e":{"a":0,"k":[31.258,-38.482],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":236,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Shape Layer 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":201,"s":[360]}],"ix":10},"p":{"a":0,"k":[249.464,225,0],"ix":2},"a":{"a":0,"k":[29.309,-38,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":16,"s":[36,37,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":21,"s":[66,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":88,"s":[49.922,66.235,100]},{"t":101,"s":[36,37,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[78.412,-172],[-21.759,-172],[3.388,-38],[54.489,-38]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.98,0.98,0.98,0.6,0.825,0.871,0.99,1,0.671,0.761,1,0,0,0.5,0.5,1,1],"ix":9}},"s":{"a":0,"k":[31.336,-172.07],"ix":5},"e":{"a":0,"k":[31.258,-38.482],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":236,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"lock","parent":2,"refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.541,250,0],"ix":2},"a":{"a":0,"k":[250,250,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":500,"h":500,"ip":0,"op":236,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"circle","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[250,250,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-16.686],[16.686,0],[0,16.686],[-16.686,0]],"o":[[0,16.686],[-16.686,0],[0,-16.686],[16.686,0]],"v":[[30.212,0],[0,30.212],[-30.212,0],[0,-30.212]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.670999983245,0.760999971278,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[250.541,223.952],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":236,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Layer 5 Outlines","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[250,250,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.714,-5.199],[5.945,-0.805],[0,0],[0,0],[-43.542,-19.229],[0,0],[-1.077,0.006],[0,0],[-0.946,0.516],[0,0],[-0.099,2.47],[0,0],[0,0],[6.409,4.311],[9.212,0]],"o":[[-6.41,4.312],[0,0],[0,0],[0.1,2.47],[0,0],[0.947,0.516],[0,0],[1.077,0.006],[0,0],[43.542,-19.229],[0,0],[0,0],[-5.944,-0.804],[-7.714,-5.201],[-8.746,0]],"v":[[-24.418,-43.179],[-43.393,-33.6],[-49.64,-32.761],[-49.452,-26.469],[-3.541,53.445],[-3.258,53.561],[-0.173,54.337],[0.172,54.337],[3.257,53.561],[3.54,53.445],[49.451,-26.469],[49.64,-32.761],[43.392,-33.623],[24.418,-43.2],[0,-54.343]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529471603,0.870588295133,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[250.541,228.169],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":236,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"shield","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":149.459,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[171.79]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":58,"s":[167]},{"t":102,"s":[171.79]}],"ix":4}},"a":{"a":0,"k":[250,250,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[8.441,5.677],[12.12,0],[10.15,-6.842],[7.83,-1.054],[0,0],[0,0],[-57.293,-25.295],[-1.419,0.01],[0,0],[0,0],[-0.139,3.252],[0,0]],"o":[[-7.819,-1.054],[-10.15,-6.842],[-11.51,0],[-8.43,5.677],[0,0],[0,0],[0.133,3.252],[0,0],[0,0],[1.418,0.01],[57.315,-25.295],[0,0],[0,0]],"v":[[57.105,-44.213],[32.132,-56.816],[0.001,-71.505],[-32.131,-56.816],[-57.104,-44.213],[-65.329,-43.103],[-65.079,-34.829],[-4.667,70.318],[-0.238,71.495],[0.217,71.495],[4.645,70.318],[65.08,-34.829],[65.329,-43.103]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.176000004189,0.176000004189,0.176000004189,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[250.54,228.215],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":236,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":0,"nm":"light","parent":6,"refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.541,250,0],"ix":2},"a":{"a":0,"k":[250,250,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":500,"h":500,"ip":0,"op":236,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/assets/lottiefiles/nodata.json b/assets/lottiefiles/nodata.json new file mode 100644 index 0000000..952621f --- /dev/null +++ b/assets/lottiefiles/nodata.json @@ -0,0 +1 @@ +{"v":"5.5.8","fr":29.9700012207031,"ip":0,"op":70.0000028511585,"w":209,"h":267,"nm":"Pre-comp 1","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":5,"nm":"!","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[95.405,118.259,0],"ix":2},"a":{"a":0,"k":[0.013,-3.661,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.34,0.34,0.34],"y":[1,1,1]},"o":{"x":[0.66,0.66,0.66],"y":[0,0,0]},"t":0,"s":[684.536,684.536,100]},{"i":{"x":[0.34,0.34,0.34],"y":[1,1,1]},"o":{"x":[0.66,0.66,0.66],"y":[0,0,0]},"t":10,"s":[740.536,740.536,100]},{"t":22.0000008960784,"s":[684.536,684.536,100]}],"ix":6,"x":"var $bm_rt;\n$bm_rt = loopOut();"}},"ao":0,"t":{"d":{"k":[{"s":{"s":10,"f":"HelveticaRounded-Black","t":"!","j":2,"tr":75,"lh":12,"ls":0,"fc":[0.361,0.47,0.667]},"t":0}]},"p":{},"m":{"g":1,"a":{"a":0,"k":[0,0],"ix":2}},"a":[]},"ip":0,"op":450.000018328876,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[98,122,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[70,44.75],[70,60.125],[27.25,93.375],[2.25,93.375]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.529411764706,0.698039215686,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.529411764706,0.697980633904,1,1],"ix":4},"o":{"a":0,"k":0,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":10,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false}],"ip":0,"op":450.000018328876,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[78.5,101,0],"ix":2},"a":{"a":0,"k":[-14,-11.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[70,-93.5],[70,67.5],[28,50.5],[33,93.5],[-70,93.5],[-70,-93.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":24,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"tm","s":{"a":0,"k":45,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":20,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.529411764706,0.698039215686,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.529411764706,0.697980633904,1,1],"ix":4},"o":{"a":0,"k":0,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-14,-11.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":450.000018328876,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[98,122,0],"ix":2},"a":{"a":0,"k":[-14,-11.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[70,-93.5],[70,67.5],[28,50.5],[33,93.5],[-70,93.5],[-70,-93.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":24,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"st","c":{"a":0,"k":[0.529411764706,0.698039215686,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.529411764706,0.697980633904,1,1],"ix":4},"o":{"a":0,"k":20,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-14,-11.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":450.000018328876,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[98,122,0],"ix":2},"a":{"a":0,"k":[-14,-11.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[70,-93.5],[70,67.5],[28,50.5],[33,93.5],[-70,93.5],[-70,-93.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":24,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"st","c":{"a":0,"k":[0.529411764706,0.698039215686,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-14,-11.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":450.000018328876,"st":0,"bm":0}]}],"fonts":{"list":[{"fName":"HelveticaRounded-Black","fFamily":"Helvetica Rounded Black","fStyle":"Regular","ascent":74.6078491210938},{"fName":"MyriadArabic-Regular","fFamily":"Myriad Arabic","fStyle":"Regular","ascent":50.7125854492188}]},"layers":[{"ddd":0,"ind":2,"ty":4,"nm":"magnifying-glass-finder Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.562,"y":0.562},"o":{"x":0.167,"y":0.167},"t":0,"s":[73,157.5,0],"to":[17.121,0,0],"ti":[0,-17.121,0]},{"i":{"x":0.656,"y":0.656},"o":{"x":0.311,"y":0.311},"t":17.25,"s":[104,188.5,0],"to":[0,17.121,0],"ti":[17.121,0,0]},{"i":{"x":0.689,"y":0.689},"o":{"x":0.343,"y":0.343},"t":34.5,"s":[73,219.5,0],"to":[-17.121,0,0],"ti":[0,17.121,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.437,"y":0.437},"t":51.75,"s":[42,188.5,0],"to":[0,-17.121,0],"ti":[-17.121,0,0]},{"t":69.0000028104276,"s":[73,157.5,0]}],"ix":2},"a":{"a":0,"k":[29,29,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[38,38],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.529411764706,0.698039215686,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.443137224983,0.836216825597,1,1],"ix":4},"o":{"a":0,"k":34,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[25.5,26],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[109.033,109.033],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,10.724],[-10.724,0],[0,-10.725],[2.538,-3.286],[1.046,-0.887],[4.787,0]],"o":[[0,-10.725],[10.724,0],[0,4.462],[-0.838,1.085],[-3.392,2.878],[-10.725,-0.001]],"v":[[-22.63,-2.802],[-3.18,-22.252],[16.27,-2.802],[12.207,9.05],[9.38,12.023],[-3.18,16.648]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[1.461,1.461],[0,0],[0,5.472],[14.025,0],[0,-14.025],[-14.025,0],[-4.305,3.341],[0,0],[-0.956,0],[-0.73,0.731]],"o":[[0,0],[2.952,-4.152],[0,-14.025],[-14.025,0],[0,14.024],[5.859,0],[0,0],[0.73,0.73],[0.958,0],[1.461,-1.459]],"v":[[27.519,21.854],[17.548,11.882],[22.253,-2.803],[-3.182,-28.238],[-28.616,-2.803],[-3.182,22.631],[12.368,17.28],[22.229,27.142],[24.874,28.238],[27.519,27.142]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.443137224983,0.836216825597,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28.615,28.615],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":6,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.961,0],[0,-1.651],[-1.652,0],[-1.603,-3.291],[-1.108,0],[-0.421,0.206],[0.725,1.487]],"o":[[-1.652,0],[0,1.654],[3.656,0],[0.519,1.062],[0.441,0],[1.486,-0.723],[-2.612,-5.362]],"v":[[-5.818,-6.499],[-8.81,-3.507],[-5.818,-0.514],[2.706,4.818],[5.397,6.499],[6.706,6.195],[8.085,2.195]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.443137224983,0.836216825597,1,1],"ix":4},"o":{"a":0,"k":50,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[29.763,15.872],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":450.000018328876,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"data","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[123,119,0],"ix":2},"a":{"a":0,"k":[98,122,0],"ix":1},"s":{"a":0,"k":[88,88,100],"ix":6}},"ao":0,"w":196,"h":244,"ip":0,"op":450.000018328876,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":5,"nm":"NO DATA","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[122.8,246.266,0],"ix":2},"a":{"a":0,"k":[0.625,-7.734,0],"ix":1},"s":{"a":0,"k":[57,57,100],"ix":6}},"ao":0,"t":{"d":{"k":[{"s":{"s":50,"f":"MyriadArabic-Regular","t":"NO DATA","j":2,"tr":0,"lh":60,"ls":0,"fc":[0.529,0.698,1]},"t":0}]},"p":{},"m":{"g":1,"a":{"a":0,"k":[0,0],"ix":2}},"a":[]},"ip":0,"op":450.000018328876,"st":0,"bm":0}],"markers":[],"chars":[{"ch":"!","size":10,"style":"Regular","w":37,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.251],[-2.82,-12.891],[-4.23,0],[-0.806,3.625],[0,7.251],[7.855,0]],"o":[[0,7.251],[0.806,3.625],[4.23,0],[2.82,-12.891],[0,-7.251],[-7.855,0]],"v":[[7.654,-62.036],[12.186,-30.917],[18.631,-25.681],[25.076,-30.917],[29.608,-62.036],[18.631,-73.819]],"c":true},"ix":2},"nm":"!","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,-6.244],[-6.244,0],[0,6.244],[6.244,0]],"o":[[0,6.244],[6.244,0],[0,-6.244],[-6.244,0]],"v":[[7.352,-10.675],[18.631,0.604],[29.91,-10.675],[18.631,-21.954]],"c":true},"ix":2},"nm":"!","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"!","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Helvetica Rounded Black"},{"ch":"N","size":50,"style":"Regular","w":47,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0.359,6.096],[0,0],[-3.371,-5.379],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.574,-6.454],[0,0],[3.514,5.666],[0,0],[0,0]],"o":[[0,0],[0,0],[0,-8.032],[0,0],[2.367,5.235],[0,0],[0,0],[0,0],[0,0],[0,0],[0,7.458],[0,0],[-2.367,-5.02],[0,0],[0,0],[0,0]],"v":[[5.379,0],[11.331,0],[11.331,-20.654],[10.829,-40.591],[11.044,-40.663],[20.081,-24.527],[35.428,0],[41.739,0],[41.739,-48.337],[35.858,-48.337],[35.858,-28.041],[36.575,-8.247],[36.432,-8.104],[27.754,-23.882],[12.263,-48.337],[5.379,-48.337]],"c":true},"ix":2},"nm":"N","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"N","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Myriad Arabic"},{"ch":"O","size":50,"style":"Regular","w":49.21,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-13.124,0],[0,16.064],[13.77,0],[0,-14.845]],"o":[[12.192,0],[0,-13.985],[-13.339,0],[0,14.415]],"v":[[24.312,0.789],[46.759,-24.24],[25.172,-49.126],[2.582,-23.882]],"c":true},"ix":2},"nm":"O","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[10.184,0],[0,10.973],[-10.04,0],[0,-9.897]],"o":[[-9.825,0],[0,-10.829],[10.614,0],[0,10.542]],"v":[[24.67,-4.303],[9.18,-24.097],[24.742,-44.034],[40.161,-24.097]],"c":true},"ix":2},"nm":"O","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"O","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Myriad Arabic"},{"ch":" ","size":50,"style":"Regular","w":19,"data":{},"fFamily":"Myriad Arabic"},{"ch":"D","size":50,"style":"Regular","w":47.57,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-4.446,0],[-4.518,4.518],[0,7.889],[4.303,3.944],[8.965,0],[3.873,-0.574]],"o":[[3.227,0.359],[9.395,0],[4.518,-4.518],[0,-7.817],[-4.231,-3.944],[-4.948,0],[0,0]],"v":[[5.379,-0.143],[16.782,0.43],[38.153,-6.526],[45.11,-25.316],[38.297,-42.671],[18.718,-48.695],[5.379,-47.691]],"c":true},"ix":2},"nm":"D","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[1.578,0.287],[0,0],[-3.227,0],[0.072,-11.403],[13.339,0]],"o":[[0,0],[1.649,-0.287],[13.196,0],[0,13.052],[-2.438,0]],"v":[[11.69,-4.948],[11.69,-43.102],[19.005,-43.747],[38.583,-25.101],[18.001,-4.59]],"c":true},"ix":2},"nm":"D","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"D","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Myriad Arabic"},{"ch":"A","size":50,"style":"Regular","w":43.71,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[1.793,0],[8.319,0],[13.268,-15.204],[30.408,-15.204],[35.571,0],[42.241,0],[25.746,-48.337],[18.216,-48.337]],"c":true},"ix":2},"nm":"A","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.645,2.869],[0,0],[-1.076,-3.156],[0,0]],"o":[[0,0],[0.932,-2.94],[0,0],[0.717,2.797],[0,0],[0,0]],"v":[[14.558,-20.081],[19.292,-34.065],[21.658,-42.815],[21.873,-42.815],[24.384,-33.994],[29.117,-20.081]],"c":true},"ix":2},"nm":"A","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"A","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Myriad Arabic"},{"ch":"T","size":50,"style":"Regular","w":38.14,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[14.63,0],[20.941,0],[20.941,-43.03],[35.715,-43.03],[35.715,-48.337],[-0.072,-48.337],[-0.072,-43.03],[14.63,-43.03]],"c":true},"ix":2},"nm":"T","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"T","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Myriad Arabic"}]} \ No newline at end of file diff --git a/assets/lottiefiles/wallet.json b/assets/lottiefiles/wallet.json new file mode 100644 index 0000000..c348c51 --- /dev/null +++ b/assets/lottiefiles/wallet.json @@ -0,0 +1 @@ +{"v":"5.5.7","meta":{"g":"LottieFiles AE 0.1.20","a":"","k":"","d":"","tc":""},"fr":30,"ip":0,"op":90,"w":400,"h":400,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 8 Outlines 3","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[51.467,76.941,0],"ix":2},"a":{"a":0,"k":[51.467,76.941,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.547],[2.543,0],[0,2.546],[-2.547,0]],"o":[[0,2.546],[-2.547,0],[0,-2.547],[2.543,0]],"v":[[4.61,-0.001],[0,4.61],[-4.61,-0.001],[0,-4.61]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[80.164,79.663],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,2.566],[0,0],[-2.566,0],[0,0],[0,0]],"o":[[-2.566,0],[0,0],[0,-2.565],[0,0],[0,0],[0,0]],"v":[[-11.682,11.037],[-16.327,6.391],[-16.327,-6.392],[-11.682,-11.037],[16.327,-11.037],[16.327,11.037]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.388000009574,0.344999994016,0.875,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[87.482,79.662],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.727,0],[0,0],[0,5.724],[0,0],[-4.39,-2.295],[-2.089,0],[0,0],[0,-5.727],[0,0]],"o":[[0,0],[-5.727,0],[0,0],[0,0],[2.731,1.428],[0,0],[5.727,0],[0,0],[0,5.724]],"v":[[41.412,39.358],[-41.408,39.358],[-51.779,28.992],[-51.779,-39.358],[-47.022,-33.354],[-37.772,-31.942],[41.412,-31.942],[51.779,-21.577],[51.779,28.992]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.522000002394,0.477999997606,0.972999961703,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[52.029,76.071],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":384,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Layer 8 Outlines 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[207.554,284.721,0],"to":[0,-13.333,0],"ti":[0,11.833,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"t":18,"s":[207.554,204.721,0],"to":[0,-11.833,0],"ti":[0,-1.5,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.167,"y":0.167},"t":24,"s":[207.554,213.721,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"t":65,"s":[207.554,213.721,0],"to":[0,-1.5,0],"ti":[0,-11.833,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":72.5,"s":[207.554,204.721,0],"to":[0,11.833,0],"ti":[0,-13.333,0]},{"t":80,"s":[207.554,284.721,0]}],"ix":2},"a":{"a":0,"k":[52.029,57.84,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":80,"s":[178,178,100]},{"t":85,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.773,-0.381],[1.551,0],[0,0],[0,0],[0,0],[-0.821,-0.357],[0,-1.122]],"o":[[-0.777,0.383],[0,0],[0,0],[0,0],[1.805,0],[0.82,0.36],[0,1.12]],"v":[[4.668,6.973],[1.18,7.547],[-2.531,7.547],[-2.531,1.962],[0.66,1.962],[4.598,2.498],[5.828,4.72]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-0.676,-0.347],[0,-1.076],[0.73,-0.322],[1.504,0],[0,0],[0,0],[0,0]],"o":[[0.668,0.348],[0,1.078],[-0.727,0.327],[0,0],[0,0],[0,0],[1.598,0]],"v":[[3.473,-7.025],[4.477,-4.892],[3.383,-2.795],[0.035,-2.308],[-2.531,-2.308],[-2.531,-7.546],[0.07,-7.546]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,1.692],[0.887,1.031],[1.504,0.326],[-0.161,0.082],[-0.414,0.326],[0,1.897],[1.086,1.248],[1.192,0.394],[0.399,0.082],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.063,1.191]],"o":[[0,-1.525],[-0.894,-1.027],[0.414,-0.182],[0.164,-0.079],[1.226,-0.924],[0,-1.571],[-0.602,-0.672],[-0.355,-0.117],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[2.313,-0.248],[1.156,-1.293]],"v":[[11.414,5.395],[10.082,1.561],[6.488,-0.47],[7.356,-0.867],[8.223,-1.476],[10.063,-5.709],[8.434,-9.939],[5.742,-11.536],[4.609,-11.829],[4.609,-14.916],[0.352,-14.916],[0.352,-12.125],[-2.5,-12.125],[-2.5,-14.916],[-6.758,-14.916],[-6.758,-12.125],[-7.945,-12.125],[-11.414,-12.125],[-11.414,-7.546],[-7.945,-7.546],[-7.945,7.547],[-11.414,7.547],[-11.414,12.128],[-7.945,12.128],[-6.758,12.128],[-6.758,14.916],[-2.5,14.916],[-2.5,12.128],[0.352,12.128],[0.352,14.916],[4.609,14.916],[4.609,12.022],[9.68,9.872]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[50.629,33.55],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-13.809],[13.809,0],[0,13.804],[-13.805,0]],"o":[[0,13.804],[-13.805,0],[0,-13.809],[13.809,0]],"v":[[24.998,0.001],[-0.002,24.997],[-24.998,0.001],[-0.002,-24.997]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.964999988032,0.882000014361,0.501999978458,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[50.631,33.552],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-18.395],[18.395,0],[0,18.393],[-18.39,0]],"o":[[0,18.393],[-18.39,0],[0,-18.395],[18.395,0]],"v":[[33.303,0.001],[-0.003,33.302],[-33.303,0.001],[-0.003,-33.302]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.736999990426,0.20800000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[50.631,33.552],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":8,"op":396,"st":19,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Layer 8 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[207.554,204.721,0],"ix":2},"a":{"a":0,"k":[52.029,57.84,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":9,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":12,"s":[170,170,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":15,"s":[178,178,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":78,"s":[178,178,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":83,"s":[190,190,100]},{"t":88,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.723,0],[0,0],[0,5.726],[0,0],[-5.727,0],[0,0],[0,-5.725],[0,0]],"o":[[0,0],[-5.727,0],[0,0],[0,-5.725],[0,0],[5.723,0],[0,0],[0,5.726]],"v":[[39.207,35.651],[-39.199,35.651],[-49.57,25.284],[-49.57,-25.286],[-39.199,-35.651],[39.207,-35.651],[49.57,-25.286],[49.57,25.284]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.388000009574,0.344999994016,0.875,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[49.82,62.306],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":384,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"зв Outlines 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[65.796,293.759,0],"ix":2},"a":{"a":0,"k":[673.894,440.86,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":26,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":31,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":36,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":41,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":46,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":51,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":56,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":61,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":66,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":71,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":77,"s":[160,160,100]},{"i":{"x":[0.569,0.569,0.569],"y":[0.662,0.662,40.041]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":83,"s":[185,185,100]},{"i":{"x":[0.703,0.703,0.703],"y":[1,1,1]},"o":{"x":[0.317,0.317,0.317],"y":[-68.821,-68.821,-43.013]},"t":87,"s":[0,0,100]},{"t":93,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-3.242,-0.812],[0,0],[0,0],[0.813,-3.238],[0,0],[0,0],[3.238,0.813],[0,0],[0,0],[-0.809,3.238],[0,0],[0,0]],"o":[[0,0],[0,0],[-3.242,0.813],[0,0],[0,0],[-0.809,-3.238],[0,0],[0,0],[3.238,-0.812],[0,0],[0,0],[0.813,3.238]],"v":[[6.722,-0.138],[7.277,0.003],[6.722,0.139],[0.136,6.721],[-0.001,7.276],[-0.141,6.721],[-6.723,0.139],[-7.278,0.003],[-6.723,-0.138],[-0.141,-6.72],[-0.001,-7.275],[0.136,-6.72]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.811999990426,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[674.112,440.422],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":26,"op":410,"st":26,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"зв Outlines 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[329.296,141.759,0],"ix":2},"a":{"a":0,"k":[725.861,323.445,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":23,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":28,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":33,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":38,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":43,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":48,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":53,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":58,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":63,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":68,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":73,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":78,"s":[185,185,100]},{"i":{"x":[0.569,0.569,0.569],"y":[0.549,0.549,40.041]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":83,"s":[160,160,100]},{"i":{"x":[0.703,0.703,0.703],"y":[1,1,1]},"o":{"x":[0.317,0.317,0.317],"y":[-79.574,-79.574,-43.013]},"t":87,"s":[0,0,100]},{"t":93,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-3.051,-0.766],[0,0],[0,0],[0.766,-3.055],[0,0],[0,0],[3.055,0.761],[0,0],[0,0],[-0.765,3.055],[0,0],[0,0]],"o":[[0,0],[0,0],[-3.051,0.761],[0,0],[0,0],[-0.765,-3.055],[0,0],[0,0],[3.055,-0.766],[0,0],[0,0],[0.766,3.055]],"v":[[6.334,-0.133],[6.857,0],[6.334,0.133],[0.131,6.336],[-0.002,6.859],[-0.131,6.336],[-6.338,0.133],[-6.857,0],[-6.338,-0.133],[-0.131,-6.336],[-0.002,-6.859],[0.131,-6.336]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.811999990426,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[725.332,323.166],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":23,"op":407,"st":23,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"зв Outlines 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[94.296,342.759,0],"ix":2},"a":{"a":0,"k":[751.142,312.77,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":18,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":23,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":28,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":33,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":38,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":43,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":48,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":53,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":58,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":63,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":68,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":73,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":78,"s":[160,160,100]},{"i":{"x":[0.564,0.564,0.564],"y":[0.708,0.708,34.797]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":83,"s":[185,185,100]},{"i":{"x":[0.841,0.841,0.841],"y":[1,1,1]},"o":{"x":[0.38,0.38,0.38],"y":[-70.654,-70.654,-44.159]},"t":87,"s":[0,0,100]},{"t":93,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.527,-1.133],[0,0],[0,0],[1.132,-4.527],[0,0],[0,0],[4.523,1.132],[0,0],[0,0],[-1.137,4.523],[0,0],[0,0]],"o":[[0,0],[0,0],[-4.527,1.132],[0,0],[0,0],[-1.137,-4.527],[0,0],[0,0],[4.523,-1.133],[0,0],[0,0],[1.132,4.523]],"v":[[9.389,-0.197],[10.162,-0.002],[9.389,0.194],[0.194,9.389],[-0.002,10.162],[-0.193,9.389],[-9.388,0.194],[-10.162,-0.002],[-9.388,-0.197],[-0.193,-9.388],[-0.002,-10.162],[0.194,-9.388]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.811999990426,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[751.422,311.793],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":18,"op":402,"st":18,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"зв Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[292.796,84.259,0],"ix":2},"a":{"a":0,"k":[712.659,465.298,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":21,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":26,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":31,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":36,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":41,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":46,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":51,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":56,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":62,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":67,"s":[185,185,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":72,"s":[160,160,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":77,"s":[185,185,100]},{"i":{"x":[0.564,0.564,0.564],"y":[0.609,0.609,34.797]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":83,"s":[160,160,100]},{"i":{"x":[0.841,0.841,0.841],"y":[1,1,1]},"o":{"x":[0.38,0.38,0.38],"y":[-81.694,-81.694,-44.159]},"t":87,"s":[0,0,100]},{"t":93,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.902,-1.48],[0,0],[0,0],[1.48,-5.902],[0,0],[0,0],[5.902,1.48],[0,0],[0,0],[-1.477,5.898],[0,0],[0,0]],"o":[[0,0],[0,0],[-5.902,1.48],[0,0],[0,0],[-1.477,-5.902],[0,0],[0,0],[5.902,-1.48],[0,0],[0,0],[1.48,5.898]],"v":[[12.246,-0.252],[13.254,0.002],[12.246,0.252],[0.25,12.244],[0,13.252],[-0.254,12.244],[-12.246,0.252],[-13.254,0.002],[-12.246,-0.252],[-0.254,-12.244],[0,-13.252],[0.25,-12.244]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.811999990426,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[712.901,464.848],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":21,"op":405,"st":21,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/assets/privacy_policy.md b/assets/privacy_policy.md new file mode 100644 index 0000000..6c27dc0 --- /dev/null +++ b/assets/privacy_policy.md @@ -0,0 +1,62 @@ +**Privacy Policy** + +Revotic Engineering built the FireFly app as a Commercial app. This SERVICE is provided by Revotic Engineering and is intended for use as is. + +This page is used to inform visitors regarding our policies with the collection, use, and disclosure of Personal Information if anyone decided to use our Service. + +If you choose to use our Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that we collect is used for providing and improving the Service. We will not use or share your information with anyone except as described in this Privacy Policy. + +The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at FireFly unless otherwise defined in this Privacy Policy. + +**Information Collection and Use** + +For a better experience, while using our Service, we may require you to provide us with certain personally identifiable information. The information that we request will be retained by us and used as described in this privacy policy. + +The app does use third party services that may collect information used to identify you. + +Link to privacy policy of third party service providers used by the app + +* [Google Play Services](https://www.google.com/policies/privacy/) + +**Log Data** + +We want to inform you that whenever you use our Service, in a case of an error in the app we collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing our Service, the time and date of your use of the Service, and other statistics. + +**Cookies** + +Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory. + +This Service does not use these “cookies” explicitly. However, the app may use third party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service. + +**Service Providers** + +We may employ third-party companies and individuals due to the following reasons: + +* To facilitate our Service; +* To provide the Service on our behalf; +* To perform Service-related services; or +* To assist us in analyzing how our Service is used. + +We want to inform users of this Service that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose. + +**Security** + +We value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security. + +**Links to Other Sites** + +This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by us. Therefore, we strongly advise you to review the Privacy Policy of these websites. We have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services. + +**Children’s Privacy** + +These Services do not address anyone under the age of 13. We do not knowingly collect personally identifiable information from children under 13 years of age. In the case we discover that a child under 13 has provided us with personal information, we immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact us so that we will be able to do necessary actions. + +**Changes to This Privacy Policy** + +We may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. We will notify you of any changes by posting the new Privacy Policy on this page. + +This policy is effective as of 2021-06-01 + +**Contact Us** + +If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact us at social@revoticengineering.com. \ No newline at end of file diff --git a/assets/terms_and_conditions.md b/assets/terms_and_conditions.md new file mode 100644 index 0000000..c50affe --- /dev/null +++ b/assets/terms_and_conditions.md @@ -0,0 +1,33 @@ +**Terms & Conditions** + +By downloading or using the app, these terms will automatically apply to you – you should make sure therefore that you read them carefully before using the app. You’re not allowed to copy, or modify the app, any part of the app, or our trademarks in any way. You’re not allowed to attempt to extract the source code of the app, and you also shouldn’t try to translate the app into other languages, or make derivative versions. The app itself, and all the trade marks, copyright, database rights and other intellectual property rights related to it, still belong to Revotic Engineering. + +Revotic Engineering is committed to ensuring that the app is as useful and efficient as possible. For that reason, we reserve the right to make changes to the app or to charge for its services, at any time and for any reason. We will never charge you for the app or its services without making it very clear to you exactly what you’re paying for. + +The FireFly app stores and processes personal data that you have provided to us, in order to provide our Service. It’s your responsibility to keep your phone and access to the app secure. We therefore recommend that you do not jailbreak or root your phone, which is the process of removing software restrictions and limitations imposed by the official operating system of your device. It could make your phone vulnerable to malware/viruses/malicious programs, compromise your phone’s security features and it could mean that the FireFly app won’t work properly or at all. + +The app does use third party services that declare their own Terms and Conditions. + +Link to Terms and Conditions of third party service providers used by the app + +* [Google Play Services](https://policies.google.com/terms) + +You should be aware that there are certain things that Revotic Engineering will not take responsibility for. Certain functions of the app will require the app to have an active internet connection. The connection can be Wi-Fi, or provided by your mobile network provider, but Revotic Engineering cannot take responsibility for the app not working at full functionality if you don’t have access to Wi-Fi, and you don’t have any of your data allowance left. + +If you’re using the app outside of an area with Wi-Fi, you should remember that your terms of the agreement with your mobile network provider will still apply. As a result, you may be charged by your mobile provider for the cost of data for the duration of the connection while accessing the app, or other third party charges. In using the app, you’re accepting responsibility for any such charges, including roaming data charges if you use the app outside of your home territory (i.e. region or country) without turning off data roaming. If you are not the bill payer for the device on which you’re using the app, please be aware that we assume that you have received permission from the bill payer for using the app. + +Along the same lines, Revotic Engineering cannot always take responsibility for the way you use the app i.e. You need to make sure that your device stays charged – if it runs out of battery and you can’t turn it on to avail the Service, Revotic Engineering cannot accept responsibility. + +With respect to Revotic Engineering’s responsibility for your use of the app, when you’re using the app, it’s important to bear in mind that although we endeavour to ensure that it is updated and correct at all times, we do rely on third parties to provide information to us so that we can make it available to you. Revotic Engineering accepts no liability for any loss, direct or indirect, you experience as a result of relying wholly on this functionality of the app. + +At some point, we may wish to update the app. The app is currently available on Android & iOS – the requirements for both systems(and for any additional systems we decide to extend the availability of the app to) may change, and you’ll need to download the updates if you want to keep using the app. Revotic Engineering does not promise that it will always update the app so that it is relevant to you and/or works with the Android & iOS version that you have installed on your device. However, you promise to always accept updates to the application when offered to you, We may also wish to stop providing the app, and may terminate use of it at any time without giving notice of termination to you. Unless we tell you otherwise, upon any termination, (a) the rights and licenses granted to you in these terms will end; (b) you must stop using the app, and (if needed) delete it from your device. + +**Changes to This Terms and Conditions** + +We may update our Terms and Conditions from time to time. Thus, you are advised to review this page periodically for any changes. We will notify you of any changes by posting the new Terms and Conditions on this page. + +These terms and conditions are effective as of 2021-06-01 + +**Contact Us** + +If you have any questions or suggestions about our Terms and Conditions, do not hesitate to contact us at social@revoticengineering.com. \ No newline at end of file diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..7a7f987 --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..9625e10 --- /dev/null +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 11.0 + + diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..ec97fc6 --- /dev/null +++ b/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..c4855bf --- /dev/null +++ b/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 0000000..88359b2 --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,41 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '11.0' + +# 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', '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 Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 0000000..d5f3be2 --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,46 @@ +PODS: + - Flutter (1.0.0) + - flutter_secure_storage (3.3.1): + - Flutter + - flutter_share (0.0.1): + - Flutter + - local_auth_ios (0.0.1): + - Flutter + - path_provider_ios (0.0.1): + - Flutter + - permission_handler_apple (9.0.4): + - Flutter + +DEPENDENCIES: + - Flutter (from `Flutter`) + - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) + - flutter_share (from `.symlinks/plugins/flutter_share/ios`) + - local_auth_ios (from `.symlinks/plugins/local_auth_ios/ios`) + - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`) + - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) + +EXTERNAL SOURCES: + Flutter: + :path: Flutter + flutter_secure_storage: + :path: ".symlinks/plugins/flutter_secure_storage/ios" + flutter_share: + :path: ".symlinks/plugins/flutter_share/ios" + local_auth_ios: + :path: ".symlinks/plugins/local_auth_ios/ios" + path_provider_ios: + :path: ".symlinks/plugins/path_provider_ios/ios" + permission_handler_apple: + :path: ".symlinks/plugins/permission_handler_apple/ios" + +SPEC CHECKSUMS: + Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec + flutter_share: 4be0208963c60b537e6255ed2ce1faae61cd9ac2 + local_auth_ios: 0d333dde7780f669e66f19d2ff6005f3ea84008d + path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 + permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce + +PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3 + +COCOAPODS: 1.11.3 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..1acaad1 --- /dev/null +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,552 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 06DF896585EB702CC27BCA07 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C89B21F193F8CBC20A290465 /* Pods_Runner.framework */; }; + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 4117B35B9E8E3D6337D31387 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 5AD504CB84BD7CABCB8F50CD /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 80A56E449EE7097D4505B20D /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + C89B21F193F8CBC20A290465 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 06DF896585EB702CC27BCA07 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 23BD1A40BE7FB1AA194F041B /* Frameworks */ = { + isa = PBXGroup; + children = ( + C89B21F193F8CBC20A290465 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + C3C4D243C861C59A277E4DA0 /* Pods */, + 23BD1A40BE7FB1AA194F041B /* Frameworks */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; + C3C4D243C861C59A277E4DA0 /* Pods */ = { + isa = PBXGroup; + children = ( + 4117B35B9E8E3D6337D31387 /* Pods-Runner.debug.xcconfig */, + 5AD504CB84BD7CABCB8F50CD /* Pods-Runner.release.xcconfig */, + 80A56E449EE7097D4505B20D /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 51B1C647FEE08DD3F11E769E /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 39434A51E306308A1D0238DE /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 39434A51E306308A1D0238DE /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 51B1C647FEE08DD3F11E769E /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + 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_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.lazarusnetwork.netsepio; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + 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_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + 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_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + 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_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.lazarusnetwork.netsepio; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.lazarusnetwork.netsepio; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..c87d15a --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..21a3cc1 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..70693e4 --- /dev/null +++ b/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000..dc9ada4 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 0000000..28c6bf0 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000..2ccbfd9 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000..f091b6b Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000..4cde121 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000..d0ef06e Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 0000000..dcdc230 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 0000000..2ccbfd9 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000..c8f9ed8 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000..a6d6b86 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000..a6d6b86 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000..75b2d16 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000..c4df70d Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 0000000..6a84f41 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000..d0e1f58 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 0000000..0bedcf2 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000..9da19ea Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000..9da19ea Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000..9da19ea Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..89c2725 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist new file mode 100644 index 0000000..4c01fec --- /dev/null +++ b/ios/Runner/Info.plist @@ -0,0 +1,51 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Lazarus + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + lazarus + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..308a2a5 --- /dev/null +++ b/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/lib/main.dart b/lib/main.dart new file mode 100644 index 0000000..e685fe9 --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,126 @@ +import 'dart:developer'; +import 'package:flutter/material.dart'; +import 'package:flutter_dotenv/flutter_dotenv.dart'; +import 'package:get/get.dart'; +import 'package:wallet/models/nft_model.dart'; +import 'package:wallet/models/token_model.dart'; +import 'package:wallet/models/transaction_history_model.dart'; +import 'package:wallet/view/dashboard/dashboard.dart'; +import 'package:wallet/view/Home/home_ctr.dart'; +import 'package:wallet/view/nft/nft.dart'; +import 'package:wallet/view/send/history_details.dart'; +import 'package:wallet/view/setting/about_wallet.dart'; +import 'package:wallet/view/setting/addtoken_screen.dart'; +import 'package:wallet/view/receive/receive_screen.dart'; +import 'package:wallet/view/Authentication/auth_complete_screen.dart'; +import 'package:wallet/view/Authentication/import_account_screen.dart'; +import 'package:wallet/view/Authentication/intro_screen.dart'; +import 'package:wallet/view/Authentication/lock_screen.dart'; +import 'package:wallet/view/Authentication/generate_phrase_screen.dart'; +import 'package:wallet/view/Authentication/verify_phrase_screen.dart'; +import 'package:wallet/view/Authentication/splash_screen.dart'; +import 'package:wallet/view/Authentication/landing_screen.dart'; +import 'package:wallet/view/home/home.dart'; +import 'package:wallet/view/send/send_screen.dart'; +import 'package:wallet/view/send/transaction_complete_screen.dart'; +import 'package:wallet/view/setting/mywallet.dart'; +import 'package:wallet/view/setting/setting.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:hive_flutter/hive_flutter.dart'; +import 'package:wallet/view/widgets/common.dart'; + +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + await Hive.initFlutter(); + Hive.registerAdapter(TokenModelAdapter()); + Hive.registerAdapter(NFTModelAdapter()); + Hive.registerAdapter(TransactionHistoryAdapter()); + await Hive.openBox('darkModeBox'); + await Hive.openBox('fingerprintBox'); + await Hive.openBox('network_config'); + await Hive.openBox('current_network'); + await Hive.openBox('nft_on_Network'); + await Hive.openBox('tokens_on_Network'); + await Hive.openBox('transaction_on_Network'); + await dotenv.load(); + runApp(const MyApp()); +} + +class MyApp extends StatefulWidget { + const MyApp({super.key}); + + @override + State createState() => _MyAppState(); +} + +class _MyAppState extends State with WidgetsBindingObserver { + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addObserver(this); + } + + @override + void dispose() { + WidgetsBinding.instance.removeObserver(this); + super.dispose(); + } + + @override + void didChangeAppLifecycleState(AppLifecycleState state) { + log(state.name); + switch (state) { + case AppLifecycleState.resumed: + //Execute the code here when user come back the app. + //In my case, I needed to show if user active or not, + checkLock(true, splash: false); + break; + case AppLifecycleState.detached: + checkLock(true, splash: false); + break; + case AppLifecycleState.inactive: + // checkLock(); + break; + default: + break; + } + } + + // This widget is the root of the application. + @override + Widget build(BuildContext context) { + return GetMaterialApp( + title: 'Wallet', + debugShowCheckedModeBanner: false, + theme: lightTheme, + darkTheme: darkTheme, + themeMode: box.get('isDarkMode') != null + ? box.get('isDarkMode') + ? ThemeMode.dark + : ThemeMode.light + : ThemeMode.dark, + initialRoute: "splash", + routes: { + "splash": (_) => const SplashScreen(), + "/introductionScreen": (_) => const IntroductionScreen(), + "/landingScreen": (_) => const LandingScreen(), + "/authenticate": (_) => const LockScreen(), + "/phraseScreen": (_) => const GenerateSeedPhrase(), + "/verifyPhrase": (_) => const VerifyPhraseScreen(), + "/importAccount": (_) => const ImportAccountScreen(), + "/authCompleteScreen": (_) => const AuthCompleteScreen(), + "/dashboard": (_) => const Dashboard(), + "/home": (_) => const HomeScreen(), + "/setting": (_) => const SettingScreen(), + "/sendScreen": (_) => const SendScreen(), + "/receiveScreen": (_) => const ReceiveScreen(), + "/addTokenScreen": (_) => const AddTokenScreen(), + "/transactionComplete": (_) => const TransactionCompleteScreen(), + "/myWalletScreen": (_) => const MyWalletScreen(), + "/aboutWalletScreen": (_) => const AboutWalletScreen(), + "/NFTScreen": (_) => const NFTScreen(), + "/historyDetails": (_) => const HistoryDetails(), + }, + ); + } +} diff --git a/lib/models/nft_model.dart b/lib/models/nft_model.dart new file mode 100644 index 0000000..fe4d9c3 --- /dev/null +++ b/lib/models/nft_model.dart @@ -0,0 +1,25 @@ +import 'package:hive/hive.dart'; + +part 'nft_model.g.dart'; + +@HiveType(typeId: 1) +class NFTModel { + @HiveField(0) + final String tokenName; + @HiveField(1) + final String symbol; + @HiveField(2) + final String tokenAddress; + @HiveField(3) + final int tokenID; + @HiveField(4) + final String currentNetwork; + + NFTModel({ + required this.tokenName, + required this.symbol, + required this.tokenAddress, + required this.tokenID, + required this.currentNetwork, + }); +} diff --git a/lib/models/nft_model.g.dart b/lib/models/nft_model.g.dart new file mode 100644 index 0000000..70e6c1c --- /dev/null +++ b/lib/models/nft_model.g.dart @@ -0,0 +1,53 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'nft_model.dart'; + +// ************************************************************************** +// TypeAdapterGenerator +// ************************************************************************** + +class NFTModelAdapter extends TypeAdapter { + @override + final int typeId = 1; + + @override + NFTModel read(BinaryReader reader) { + final numOfFields = reader.readByte(); + final fields = { + for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), + }; + return NFTModel( + tokenName: fields[0] as String, + symbol: fields[1] as String, + tokenAddress: fields[2] as String, + tokenID: fields[3] as int, + currentNetwork: fields[4] as String, + ); + } + + @override + void write(BinaryWriter writer, NFTModel obj) { + writer + ..writeByte(5) + ..writeByte(0) + ..write(obj.tokenName) + ..writeByte(1) + ..write(obj.symbol) + ..writeByte(2) + ..write(obj.tokenAddress) + ..writeByte(3) + ..write(obj.tokenID) + ..writeByte(4) + ..write(obj.currentNetwork); + } + + @override + int get hashCode => typeId.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is NFTModelAdapter && + runtimeType == other.runtimeType && + typeId == other.typeId; +} diff --git a/lib/models/send_transaction_model.dart b/lib/models/send_transaction_model.dart new file mode 100644 index 0000000..10b7e8e --- /dev/null +++ b/lib/models/send_transaction_model.dart @@ -0,0 +1,6 @@ +class SendTransactionModel { + final String sendersAddress; + final String amount; + + SendTransactionModel(this.sendersAddress, this.amount); +} diff --git a/lib/models/token_model.dart b/lib/models/token_model.dart new file mode 100644 index 0000000..5ba5520 --- /dev/null +++ b/lib/models/token_model.dart @@ -0,0 +1,25 @@ +import 'package:hive/hive.dart'; + +part 'token_model.g.dart'; + +@HiveType(typeId: 0) +class TokenModel { + @HiveField(0) + final String tokenName; + @HiveField(1) + final String symbol; + @HiveField(2) + final String decimal; + @HiveField(3) + final String tokenAddress; + @HiveField(4) + final String currentNetwork; + + TokenModel({ + required this.tokenName, + required this.symbol, + required this.decimal, + required this.tokenAddress, + required this.currentNetwork, + }); +} diff --git a/lib/models/token_model.g.dart b/lib/models/token_model.g.dart new file mode 100644 index 0000000..2e425d3 --- /dev/null +++ b/lib/models/token_model.g.dart @@ -0,0 +1,53 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'token_model.dart'; + +// ************************************************************************** +// TypeAdapterGenerator +// ************************************************************************** + +class TokenModelAdapter extends TypeAdapter { + @override + final int typeId = 0; + + @override + TokenModel read(BinaryReader reader) { + final numOfFields = reader.readByte(); + final fields = { + for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), + }; + return TokenModel( + tokenName: fields[0] as String, + symbol: fields[1] as String, + decimal: fields[2] as String, + tokenAddress: fields[3] as String, + currentNetwork: fields[4] as String, + ); + } + + @override + void write(BinaryWriter writer, TokenModel obj) { + writer + ..writeByte(5) + ..writeByte(0) + ..write(obj.tokenName) + ..writeByte(1) + ..write(obj.symbol) + ..writeByte(2) + ..write(obj.decimal) + ..writeByte(3) + ..write(obj.tokenAddress) + ..writeByte(4) + ..write(obj.currentNetwork); + } + + @override + int get hashCode => typeId.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is TokenModelAdapter && + runtimeType == other.runtimeType && + typeId == other.typeId; +} diff --git a/lib/models/transaction_history_model.dart b/lib/models/transaction_history_model.dart new file mode 100644 index 0000000..a9177fa --- /dev/null +++ b/lib/models/transaction_history_model.dart @@ -0,0 +1,49 @@ +import 'package:hive/hive.dart'; +part 'transaction_history_model.g.dart'; + +@HiveType(typeId: 2) +class TransactionHistory { + @HiveField(0) + final String transactionHash; + @HiveField(1) + final String transactionIndex; + @HiveField(2) + final String blockHash; + @HiveField(3) + final String cumulativeGasUsed; + @HiveField(4) + final String blockNumber; + @HiveField(5) + final String contractAddress; + @HiveField(6) + final String status; + @HiveField(7) + final String from; + @HiveField(8) + final String to; + @HiveField(9) + final String gasUsed; + @HiveField(10) + final String effectiveGasPrice; + @HiveField(11) + final String currentNetwork; + @HiveField(12) + // ignore: prefer_typing_uninitialized_variables + var logs; + + TransactionHistory({ + required this.transactionHash, + required this.transactionIndex, + required this.blockHash, + required this.cumulativeGasUsed, + this.blockNumber = "", + required this.contractAddress, + required this.status, + required this.from, + required this.to, + required this.gasUsed, + required this.effectiveGasPrice, + required this.currentNetwork, + this.logs = const [], + }); +} diff --git a/lib/models/transaction_history_model.g.dart b/lib/models/transaction_history_model.g.dart new file mode 100644 index 0000000..fa573fa --- /dev/null +++ b/lib/models/transaction_history_model.g.dart @@ -0,0 +1,77 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'transaction_history_model.dart'; + +// ************************************************************************** +// TypeAdapterGenerator +// ************************************************************************** + +class TransactionHistoryAdapter extends TypeAdapter { + @override + final int typeId = 2; + + @override + TransactionHistory read(BinaryReader reader) { + final numOfFields = reader.readByte(); + final fields = { + for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), + }; + return TransactionHistory( + transactionHash: fields[0] as String, + transactionIndex: fields[1] as String, + blockHash: fields[2] as String, + cumulativeGasUsed: fields[3] as String, + blockNumber: fields[4] as String, + contractAddress: fields[5] as String, + status: fields[6] as String, + from: fields[7] as String, + to: fields[8] as String, + gasUsed: fields[9] as String, + effectiveGasPrice: fields[10] as String, + currentNetwork: fields[11] as String, + logs: fields[12] as dynamic, + ); + } + + @override + void write(BinaryWriter writer, TransactionHistory obj) { + writer + ..writeByte(13) + ..writeByte(0) + ..write(obj.transactionHash) + ..writeByte(1) + ..write(obj.transactionIndex) + ..writeByte(2) + ..write(obj.blockHash) + ..writeByte(3) + ..write(obj.cumulativeGasUsed) + ..writeByte(4) + ..write(obj.blockNumber) + ..writeByte(5) + ..write(obj.contractAddress) + ..writeByte(6) + ..write(obj.status) + ..writeByte(7) + ..write(obj.from) + ..writeByte(8) + ..write(obj.to) + ..writeByte(9) + ..write(obj.gasUsed) + ..writeByte(10) + ..write(obj.effectiveGasPrice) + ..writeByte(11) + ..write(obj.currentNetwork) + ..writeByte(12) + ..write(obj.logs); + } + + @override + int get hashCode => typeId.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is TransactionHistoryAdapter && + runtimeType == other.runtimeType && + typeId == other.typeId; +} diff --git a/lib/utils/secure_storage.dart b/lib/utils/secure_storage.dart new file mode 100644 index 0000000..3ef9fbf --- /dev/null +++ b/lib/utils/secure_storage.dart @@ -0,0 +1,44 @@ +import 'dart:async'; +import 'package:hive/hive.dart'; +import 'package:wallet/models/nft_model.dart'; +import 'package:wallet/models/token_model.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:wallet/models/transaction_history_model.dart'; + +class SecureStorage { + final storage = const FlutterSecureStorage(); + + Future getStoredValue(String key) async { + return await storage.read(key: key); + } + + Future> getAllStoredValues() async { + Map allValues = await storage.readAll(); + return allValues; + } + + Future deleteStoredValue(String key) async { + return await storage.delete(key: key); + } + + Future deleteAllStoredValues() async { + return await storage.deleteAll(); + } + + Future writeStoredValues(String key, String value) async { + return await storage.write(key: key, value: value); + } +} + +class Boxes { + static Box get getdarkModeBox => Hive.box('darkModeBox'); + static Box get getFingerprintBox => Hive.box('fingerprintBox'); + static Box get getNetworkConfigBox => Hive.box('network_config'); + static Box get getCurrentNetworkBox => Hive.box('current_network'); + static Box get getTokenOnCurrentNetworkBox => + Hive.box('tokens_on_Network'); + static Box get getNFTOnCurrentNetworkBox => + Hive.box('nft_on_Network'); + static Box get getTransactionOnCurrentNetworkBox => + Hive.box('transaction_on_Network'); +} diff --git a/lib/utils/theme.dart b/lib/utils/theme.dart new file mode 100644 index 0000000..70dfc97 --- /dev/null +++ b/lib/utils/theme.dart @@ -0,0 +1,113 @@ +import 'package:flutter/material.dart'; + +const grey = Colors.grey; +const white = Colors.white; +const black = Colors.black; +const blue = Color(0xff1565C0); +const blueGray = Color(0xff738FA7); +const darkblue = Color(0xff071330); +const midnightBlue = Color(0xff0C4160); +const appcolor = Color.fromARGB(255, 7, 53, 68); // Main App Color +const lightAppcolor = Color.fromARGB(255, 32, 103, 124); // Light App Color +const midnightAppcolor = Color.fromARGB(255, 21, 72, 88); // MidLight App Color + +// Light Mode Theme + +ThemeData lightTheme = ThemeData( + useMaterial3: true, + primaryColor: appcolor, + brightness: Brightness.light, + cardColor: white, + cardTheme: const CardTheme(elevation: 2), + iconTheme: const IconThemeData(color: appcolor), + elevatedButtonTheme: ElevatedButtonThemeData( + style: TextButton.styleFrom( + backgroundColor: appcolor, + ), + ), + appBarTheme: const AppBarTheme( + iconTheme: IconThemeData(color: black), + backgroundColor: white, + elevation: 0, + actionsIconTheme: IconThemeData(color: black), + titleTextStyle: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: black, + ), + ), + textTheme: ThemeData.light().textTheme.apply( + fontFamily: 'Baskerville', + bodyColor: black, + displayColor: black, + decorationColor: black, + ), + primaryTextTheme: ThemeData.light().textTheme.apply( + fontFamily: 'Baskerville', + ), +).copyWith( + pageTransitionsTheme: const PageTransitionsTheme( + builders: { + TargetPlatform.android: ZoomPageTransitionsBuilder(), + }, + ), +); + +// Dark Mode Theme +ThemeData darkTheme = ThemeData( + useMaterial3: true, + primaryColor: appcolor, + brightness: Brightness.dark, + scaffoldBackgroundColor: black, + cardTheme: const CardTheme(elevation: 2), + cardColor: midnightBlue.withOpacity(0.4), + iconTheme: const IconThemeData(color: lightAppcolor), + elevatedButtonTheme: ElevatedButtonThemeData( + style: TextButton.styleFrom( + backgroundColor: appcolor, + ), + ), + appBarTheme: const AppBarTheme( + iconTheme: IconThemeData(color: white), + elevation: 0, + backgroundColor: black, + actionsIconTheme: IconThemeData(color: white), + titleTextStyle: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: white, + ), + ), + textTheme: ThemeData.light().textTheme.apply( + fontFamily: 'Baskerville', + bodyColor: white, + displayColor: white, + decorationColor: white, + ), + primaryTextTheme: ThemeData.light().textTheme.apply( + fontFamily: 'Baskerville', + ), +).copyWith( + pageTransitionsTheme: const PageTransitionsTheme( + builders: { + TargetPlatform.android: ZoomPageTransitionsBuilder(), + }, + ), +); + +Gradient gradient = const LinearGradient( + colors: [ + Colors.black87, + Color(0xff0F2027), + Colors.black, + Colors.black87, + ], + begin: Alignment.topRight, + end: Alignment.bottomRight, +); + +Gradient gradient2 = const LinearGradient( + colors: [Colors.black87, Color(0xff0F2027), Colors.black, Colors.black87], + begin: Alignment.topRight, + end: Alignment.bottomLeft, +); diff --git a/lib/view/.DS_Store b/lib/view/.DS_Store new file mode 100644 index 0000000..40d1378 Binary files /dev/null and b/lib/view/.DS_Store differ diff --git a/lib/view/Authentication/auth_complete_screen.dart b/lib/view/Authentication/auth_complete_screen.dart new file mode 100644 index 0000000..2f876a1 --- /dev/null +++ b/lib/view/Authentication/auth_complete_screen.dart @@ -0,0 +1,80 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:lottie/lottie.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/view/widgets/common.dart'; + +class AuthCompleteScreen extends StatelessWidget { + const AuthCompleteScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: black, + body: Container( + width: Get.width, + height: Get.height, + decoration: BoxDecoration(gradient: gradient2), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 15), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SafeArea( + child: Icon(Icons.arrow_back_ios, color: white), + ), + height(Get.height * .1), + Center( + child: SizedBox( + height: Get.height * .3, + child: Lottie.asset('assets/lottiefiles/2.json')), + ), + height(40), + const Align( + alignment: Alignment.center, + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 20, vertical: 15), + child: Text( + "You have successfully protected your wallet. Keep your recovery passphrase safe. This is your responsibility!", + style: TextStyle( + color: white, + fontSize: 16, + fontWeight: FontWeight.w500), + textAlign: TextAlign.center, + ), + ), + ), + height(20), + const Center( + child: Text("Additional Information", + style: TextStyle( + decoration: TextDecoration.underline, + decorationColor: blue, + fontSize: 16, + color: Colors.blueAccent, + )), + ), + height(Get.height * .1), + Row( + children: [ + Expanded( + child: ElevatedButton( + onPressed: () { + Get.offAllNamed("/dashboard"); + }, + child: const Padding( + padding: EdgeInsets.symmetric(vertical: 12), + child: Text("Done"), + )), + ), + ], + ), + ], + ), + ), + ), + ), + ); + } +} diff --git a/lib/view/Authentication/auth_controller.dart b/lib/view/Authentication/auth_controller.dart new file mode 100644 index 0000000..c165141 --- /dev/null +++ b/lib/view/Authentication/auth_controller.dart @@ -0,0 +1,209 @@ +// ignore_for_file: unused_field, no_leading_underscores_for_local_identifiers, unnecessary_this +import 'package:bip39/bip39.dart' as bip39; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:local_auth/local_auth.dart'; +import 'package:get/get.dart'; +import 'package:lottie/lottie.dart'; +import 'package:wallet/utils/secure_storage.dart'; +import 'package:wallet/view/Authentication/lock_screen.dart'; +import 'package:wallet/web3dart/web3dart.dart'; + +class AuthController extends GetxController { + final storage = SecureStorage(); + bool loading = false; + bool _isFingerprintOn = false; + final fingerprintBox = Boxes.getFingerprintBox; + + bool get isFingerprintOn => fingerprintBox.get('fingerPrint') ?? false; + TextEditingController pincontroller = TextEditingController(); + TextEditingController oldPINcontroller = TextEditingController(); + TextEditingController newPINcontroller = TextEditingController(); + TextEditingController confirmPINcontroller = TextEditingController(); + TextEditingController importAccountphrase = TextEditingController(); + TextEditingController word1 = TextEditingController(); + TextEditingController word4 = TextEditingController(); + TextEditingController word8 = TextEditingController(); + TextEditingController word12 = TextEditingController(); + late String _mnemonic; + List phrase = []; + + @override + void onClose() { + pincontroller.clear(); + oldPINcontroller.clear(); + newPINcontroller.clear(); + confirmPINcontroller.clear(); + importAccountphrase.clear(); + super.onClose(); + } + + Future approvalCallback() async { + return true; + } + + Future toggleFingerprint(bool value) async { + _isFingerprintOn = value; + await fingerprintBox.put('fingerPrint', value); + update(); + } + + String get mnemonic => _mnemonic; + + String get generateMnemonic => _mnemonic = bip39.generateMnemonic(); + + Future get getMnemonic async { + String? _mnemonic = await storage.getStoredValue('mnemonic'); + return _mnemonic; + } + + Future privateKeyFromMnemonic({String? newMnemonic}) async { + if (newMnemonic != null) { + this._mnemonic = newMnemonic; + } + await storage.writeStoredValues('mnemonic', _mnemonic); + String pvtKey = Web3.privateKeyFromMnemonic(_mnemonic); + await storage.writeStoredValues('pvtKey', pvtKey); + Web3 web3 = Web3(approvalCallback); + await web3.setCredentials(pvtKey); + String accountAddress = await web3.getAddress(); + await storage.writeStoredValues("accountAddress", accountAddress); + } + + void savePin({required bool fromImport}) async { + if (pincontroller.text.isNotEmpty) { + if (pincontroller.text.length >= 6) { + await storage.writeStoredValues('PIN', pincontroller.text); + fromImport + ? Get.toNamed("/importAccount") + : Get.toNamed("/phraseScreen"); + pincontroller.clear(); + } else { + Get.snackbar("Enter a 6 digit PIN", "For a security pin is required"); + } + } else { + Get.snackbar("Enter a PIN", "For a security pin is required"); + } + } + + Future resetPIN({ + required BuildContext context, + }) async { + if (newPINcontroller.text == confirmPINcontroller.text) { + String? originalPin = await storage.getStoredValue('PIN'); + if (originalPin == oldPINcontroller.text) { + await storage.writeStoredValues('PIN', newPINcontroller.text); + Get.snackbar("Your PIN has been changed successfully!", ""); + // ignore: use_build_context_synchronously + Navigator.pop(context); + } else { + Get.snackbar("Incorrect Old PIN", ""); + } + } else { + Get.snackbar("Incorrect confirm PIN", ""); + } + } + + Future checkFingerprint(splash) async { + final isAuthenticated = await LocalAuthApi.authenticate(); + if (isAuthenticated) { + Get.toNamed("/dashboard"); + } else { + // Get.snackbar("Error!", "Your device doesn't support Biometrics!"); + Get.off(() => LockScreen(createPIN: false, splash: splash)); + } + } + + Future checkPIN(BuildContext context, bool tohome, {navigation}) async { + final storage = SecureStorage(); + final String pin = await storage.getStoredValue('PIN') ?? 'No PIN'; + if (pin == pincontroller.text) { + if (tohome) { + Get.offNamed("/dashboard"); + } else { + if (navigation != null) { + navigation; + } + Get.back(); + } + pincontroller.clear(); + } else { + showDialog( + context: context, + barrierDismissible: false, // user must tap button! + builder: (BuildContext context) { + return AlertDialog( + elevation: 0, + title: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: const [ + Text('Wrong PIN!'), + ], + ), + content: SingleChildScrollView( + child: Column( + children: [ + SizedBox( + height: Get.height * .3, + child: Lottie.asset("assets/lottiefiles/failed.json")), + const Text('Please enter correct PIN.'), + ], + ), + ), + actions: [ + Row( + children: [ + Expanded( + child: OutlinedButton( + onPressed: () { + Get.back(); + }, + child: const Text('TRY AGAIN!'), + ), + ), + ], + ) + ], + ); + }, + ); + } + } +} + +class LocalAuthApi { + static final _auth = LocalAuthentication(); + + static Future hasBiometrics() async { + try { + return await _auth.canCheckBiometrics; + } on PlatformException { + rethrow; + } + } + + static Future> getBiometrics() async { + try { + return await _auth.getAvailableBiometrics(); + } on PlatformException catch (_) { + return []; + } + } + + static Future authenticate() async { + final isAvailable = await _auth.canCheckBiometrics; + if (!isAvailable) return false; + try { + return await _auth.authenticate( + localizedReason: 'Wallet needs fingerprint to authenticate', + options: const AuthenticationOptions( + biometricOnly: false, + useErrorDialogs: true, + stickyAuth: true, + ), + ); + } on PlatformException catch (_) { + return false; + } + } +} diff --git a/lib/view/Authentication/generate_phrase_screen.dart b/lib/view/Authentication/generate_phrase_screen.dart new file mode 100644 index 0000000..016b95a --- /dev/null +++ b/lib/view/Authentication/generate_phrase_screen.dart @@ -0,0 +1,171 @@ +import 'dart:developer'; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:wallet/view/Authentication/auth_controller.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/view/widgets/common.dart'; + +class GenerateSeedPhrase extends StatefulWidget { + final bool view; + const GenerateSeedPhrase({super.key, this.view = false}); + + @override + State createState() => _GenerateSeedPhraseState(); +} + +class _GenerateSeedPhraseState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: black, + body: GetBuilder( + init: AuthController(), + builder: (controller) { + return Container( + width: Get.width, + height: Get.height, + decoration: BoxDecoration(gradient: gradient), + child: Padding( + padding: + const EdgeInsets.symmetric(horizontal: 20, vertical: 15), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SafeArea( + child: GestureDetector( + onTap: () => Navigator.pop(context), + child: const Icon(Icons.arrow_back_ios, + color: white)), + ), + height(10), + if (!widget.view) + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const CircleAvatar( + backgroundColor: blueGray, + minRadius: 5, + maxRadius: 5, + ), + width(5), + const CircleAvatar( + backgroundColor: midnightBlue, + minRadius: 5, + maxRadius: 5, + ), + width(5), + const CircleAvatar( + backgroundColor: midnightBlue, + minRadius: 5, + maxRadius: 5, + ), + ], + ), + height(10), + const Align( + alignment: Alignment.center, + child: Padding( + padding: EdgeInsets.symmetric( + horizontal: 20, vertical: 15), + child: Text( + "This is your secret recovery phrase.\nwrite it down on a piece of paper and keep it in a safe place. You will be prompted to enter this phrase again (in the correct order) in the next step.", + style: TextStyle(color: white, fontSize: 12), + textAlign: TextAlign.center, + ), + ), + ), + height(40), + FutureBuilder( + future: controller.getMnemonic, + builder: (context, snapshot) { + if (snapshot.data != null) { + controller.phrase = + snapshot.data!.toString().split(" "); + log(controller.phrase.toString()); + return GridView.builder( + shrinkWrap: true, + gridDelegate: + const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 3, + childAspectRatio: 16 / 10), + itemCount: controller.phrase.length, + itemBuilder: (_, index) => Container( + width: Get.width / 4, + decoration: BoxDecoration( + border: Border.all(color: blue)), + margin: const EdgeInsets.symmetric( + horizontal: 12, vertical: 10), + padding: const EdgeInsets.only( + left: 10, top: 10, bottom: 8, right: 6), + child: Text( + "${index + 1}. ${controller.phrase[index]}", + style: const TextStyle( + color: white, fontSize: 12), + ), + ), + ); + } else { + controller.phrase = controller.generateMnemonic + .toString() + .split(" "); + log(controller.phrase.toString()); + return GridView.builder( + shrinkWrap: true, + gridDelegate: + const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 3, + childAspectRatio: 16 / 9), + itemCount: controller.phrase.length, + itemBuilder: (_, index) => FittedBox( + fit: BoxFit.fill, + child: Container( + decoration: BoxDecoration( + border: Border.all(color: blue)), + margin: const EdgeInsets.symmetric( + horizontal: 12, vertical: 10), + padding: const EdgeInsets.only( + left: 10, + top: 10, + bottom: 8, + right: 6), + child: Text( + "${index + 1}. ${controller.phrase[index]}", + style: const TextStyle( + color: white, fontSize: 12), + ), + ), + ), + ); + } + }), + height(Get.height * .1), + Row( + children: [ + Expanded( + child: ElevatedButton( + onPressed: () { + if (widget.view) { + Navigator.pop(context); + } else { + controller.privateKeyFromMnemonic().then( + (_) => Get.toNamed("/verifyPhrase")); + } + }, + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 12), + child: Text(widget.view ? "Back" : "Next"), + )), + ), + ], + ), + ], + ), + ), + ), + ); + })); + } +} diff --git a/lib/view/Authentication/import_account_screen.dart b/lib/view/Authentication/import_account_screen.dart new file mode 100644 index 0000000..3e3c3be --- /dev/null +++ b/lib/view/Authentication/import_account_screen.dart @@ -0,0 +1,104 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/view/Authentication/auth_controller.dart'; +import 'package:wallet/view/widgets/common.dart'; + +class ImportAccountScreen extends StatelessWidget { + const ImportAccountScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: black, + body: GetBuilder( + init: AuthController(), + builder: (controller) { + return Container( + width: Get.width, + height: Get.height, + decoration: const BoxDecoration( + gradient: LinearGradient( + colors: [ + Color(0xff0F2027), + Colors.black87, + Color.fromARGB(255, 14, 49, 65), + Colors.black87, + ], + begin: Alignment.topRight, + end: Alignment.bottomLeft, + )), + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 15), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SafeArea( + child: Icon(Icons.arrow_back_ios, color: white), + ), + height(50), + const Align( + alignment: Alignment.center, + child: Text( + "Enter your secret phrase", + style: TextStyle(color: white, fontSize: 18), + ), + ), + height(10), + const Center( + child: Text( + "Enter each word in the order", + textAlign: TextAlign.center, + style: TextStyle(color: blueGray), + ), + ), + height(30), + TextField( + style: const TextStyle(color: white), + controller: controller.importAccountphrase, + textInputAction: TextInputAction.next, + keyboardType: TextInputType.multiline, + maxLines: 9, + decoration: InputDecoration( + hintText: "Phrase", + isDense: true, + hintStyle: const TextStyle(color: grey), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey), + ), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey), + ), + ), + ), + height(90), + Row( + children: [ + Expanded( + child: ElevatedButton( + onPressed: () { + controller.privateKeyFromMnemonic( + newMnemonic: controller + .importAccountphrase.text + .trim()); + Get.toNamed("/authCompleteScreen"); + }, + child: const Padding( + padding: EdgeInsets.symmetric(vertical: 12), + child: Text("Next"), + )), + ), + ], + ), + height(30), + ], + ), + ), + ); + }, + ), + ); + } +} diff --git a/lib/view/Authentication/intro_screen.dart b/lib/view/Authentication/intro_screen.dart new file mode 100644 index 0000000..e78e450 --- /dev/null +++ b/lib/view/Authentication/intro_screen.dart @@ -0,0 +1,109 @@ +import 'package:flutter/material.dart'; +import 'package:concentric_transition/concentric_transition.dart'; +import 'package:get/get.dart'; +import 'package:lottie/lottie.dart'; +import 'package:wallet/utils/theme.dart'; + +final pages = [ + PageData( + icon: Lottie.asset('assets/lottiefiles/2.json'), + title: "Secure and easy\n to use wallet", + bgColor: black, + textColor: Colors.white, + ), + PageData( + icon: Lottie.asset('assets/lottiefiles/1.zip'), + title: "Get real-time\n graphs info", + textColor: white, + bgColor: darkblue, + ), + PageData( + icon: Lottie.asset('assets/lottiefiles/3.json'), + title: "Way to manage\n your fund", + bgColor: white, + textColor: black, + ), +]; + +class IntroductionScreen extends StatelessWidget { + const IntroductionScreen({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final screenWidth = MediaQuery.of(context).size.width; + return Scaffold( + body: ConcentricPageView( + colors: pages.map((p) => p.bgColor).toList(), + radius: screenWidth * 0.1, + nextButtonBuilder: (context) => Container( + decoration: const BoxDecoration( + shape: BoxShape.circle, + ), + padding: const EdgeInsets.all(10), + child: Icon( + Icons.navigate_next, + color: pages.map((p) => p.bgColor).toList().last, + size: screenWidth * 0.1, + ), + ), + onChange: (value) { + if (value == 3) { + Get.toNamed("/landingScreen"); + } + }, + itemBuilder: (index) { + final page = pages[index % pages.length]; + return SafeArea( + child: _Page(page: page), + ); + }, + ), + ); + } +} + +class PageData { + final String? title; + // ignore: prefer_typing_uninitialized_variables + final icon; + final Color bgColor; + final Color textColor; + + const PageData({ + this.title, + this.icon, + this.bgColor = Colors.white, + this.textColor = Colors.black, + }); +} + +class _Page extends StatelessWidget { + final PageData page; + + const _Page({Key? key, required this.page}) : super(key: key); + + @override + Widget build(BuildContext context) { + final screenHeight = MediaQuery.of(context).size.height; + space(double p) => SizedBox(height: screenHeight * p / 100); + return Column( + children: [ + space(10), + SizedBox(height: Get.height * .4, child: page.icon), + space(8), + Text( + page.title ?? '', + style: TextStyle( + color: page.textColor, + fontWeight: FontWeight.w600, + fontFamily: 'Helvetica', + letterSpacing: 0.0, + fontSize: 25, + height: 1.2, + ), + textAlign: TextAlign.center, + ), + ], + ); + } +} diff --git a/lib/view/Authentication/landing_screen.dart b/lib/view/Authentication/landing_screen.dart new file mode 100644 index 0000000..7aba08b --- /dev/null +++ b/lib/view/Authentication/landing_screen.dart @@ -0,0 +1,75 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/view/widgets/common.dart'; + +class LandingScreen extends StatelessWidget { + const LandingScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: black, + body: Container( + decoration: BoxDecoration(gradient: gradient2), + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 15, horizontal: 20), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset("assets/images/logo.png", height: Get.height * .3), + const Text( + "Secure and easy\n to use wallet", + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 20, + color: white, + fontWeight: FontWeight.bold, + ), + ), + height(40), + Row( + children: [ + Expanded( + child: ElevatedButton( + onPressed: () { + Get.toNamed("/authenticate", arguments: false); + }, + child: const Padding( + padding: EdgeInsets.all(13.0), + child: Text( + "CREATE A WALLET", + style: TextStyle(color: white), + ), + ), + ), + ), + ], + ), + height(10), + Row( + children: [ + Expanded( + child: TextButton( + style: TextButton.styleFrom( + side: const BorderSide(color: blue)), + onPressed: () { + Get.toNamed("/authenticate", arguments: true); + }, + child: const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + "IMPORT WALLET ", + style: TextStyle(color: white), + ), + )), + ), + ], + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/view/Authentication/lock_screen.dart b/lib/view/Authentication/lock_screen.dart new file mode 100644 index 0000000..4afd6e0 --- /dev/null +++ b/lib/view/Authentication/lock_screen.dart @@ -0,0 +1,166 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:local_auth/local_auth.dart'; +import 'package:lottie/lottie.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/view/Authentication/auth_controller.dart'; +import 'package:wallet/view/widgets/common.dart'; + +class LockScreen extends StatelessWidget { + final bool createPIN; + final bool splash; + final navigation; + const LockScreen( + {super.key, + this.createPIN = true, + this.splash = true, + this.navigation = null}); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: black, + body: GetBuilder( + init: AuthController(), + builder: (controller) { + return SingleChildScrollView( + child: Container( + width: Get.width, + height: Get.height, + decoration: BoxDecoration(gradient: gradient2), + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 15), + child: Column( + children: [ + Flexible( + flex: 1, + fit: FlexFit.loose, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (createPIN) + SafeArea( + child: IconButton( + onPressed: () => Get.back(), + icon: const Icon(Icons.arrow_back_ios, + color: white), + ), + ), + height(40), + Container( + height: 200, + alignment: Alignment.center, + child: Lottie.asset( + "assets/lottiefiles/locked.json", + ), + ), + Center( + child: Text( + createPIN ? 'Create PIN' : "Enter PIN", + style: const TextStyle( + fontSize: 25, + fontWeight: FontWeight.w700, + color: white), + ), + ), + const SizedBox(height: 5), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 30), + child: Text( + 'This PIN will unlock your Wallet only on this device.', + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 12, + color: Colors.white.withOpacity(.7), + ), + ), + ), + height(20), + TextField( + style: const TextStyle(color: white), + textInputAction: TextInputAction.done, + keyboardType: TextInputType.number, + obscureText: true, + keyboardAppearance: Brightness.dark, + controller: controller.pincontroller, + decoration: InputDecoration( + hintText: "Enter 6 digit PIN", + isDense: true, + hintStyle: + const TextStyle(color: grey, fontSize: 12), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey)), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey), + ), + ), + ), + height(10), + createPIN + ? Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + const Text( + 'Sign in with fingerprint?', + style: TextStyle( + fontWeight: FontWeight.w400, + letterSpacing: 1.5, + color: white), + ), + CupertinoSwitch( + value: controller.isFingerprintOn, + activeColor: lightAppcolor, + onChanged: (value) async { + await LocalAuthentication() + .canCheckBiometrics + .then( + (a) => a + ? controller + .toggleFingerprint(value) + : Get.snackbar( + "Device not supported Fingerprint", + "Authenticate using PIN", + colorText: black, + ), + ); + }, + ), + ], + ) + : const Offstage(), + ], + ), + ), + Row( + children: [ + Expanded( + child: ElevatedButton( + onPressed: () { + if (createPIN) { + controller.savePin(fromImport: Get.arguments); + } else { + controller.checkPIN(context, splash, + navigation: navigation); + } + }, + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 12), + child: Text(createPIN ? "Next" : "Done"), + ), + ), + ), + ], + ), + height(30), + ], + ), + ), + ); + }, + ), + ); + } +} diff --git a/lib/view/Authentication/reset_password.dart b/lib/view/Authentication/reset_password.dart new file mode 100644 index 0000000..0f7dfb1 --- /dev/null +++ b/lib/view/Authentication/reset_password.dart @@ -0,0 +1,135 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/view/Authentication/auth_controller.dart'; +import 'package:wallet/view/widgets/common.dart'; + +class ResetPasswordScreen extends StatelessWidget { + const ResetPasswordScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text( + "Reset PIN", + style: TextStyle(fontSize: 18), + ), + elevation: 0.0, + centerTitle: true, + ), + body: GetBuilder( + init: AuthController(), + builder: (controller) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), + child: Card( + color: white, + child: Padding( + padding: + const EdgeInsets.symmetric(horizontal: 25, vertical: 20), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text( + "Old PIN", + style: TextStyle(color: midnightBlue), + ), + height(5), + TextField( + textInputAction: TextInputAction.next, + keyboardType: TextInputType.number, + controller: controller.oldPINcontroller, + style: const TextStyle(color: appcolor), + decoration: InputDecoration( + hintText: "Enter Old PIN", + isDense: true, + hintStyle: const TextStyle(color: grey, fontSize: 12), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey), + ), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey), + ), + ), + ), + height(15), + const Text( + "New PIN", + style: TextStyle(color: midnightBlue), + ), + height(5), + TextField( + textInputAction: TextInputAction.next, + keyboardType: TextInputType.number, + controller: controller.newPINcontroller, + style: const TextStyle(color: appcolor), + decoration: InputDecoration( + hintText: "Enter New PIN", + isDense: true, + hintStyle: const TextStyle(color: grey, fontSize: 12), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey), + ), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey), + ), + ), + ), + height(15), + const Text( + "Confirm PIN", + style: TextStyle(color: midnightBlue), + ), + height(5), + TextField( + textInputAction: TextInputAction.next, + keyboardType: TextInputType.number, + controller: controller.confirmPINcontroller, + style: const TextStyle(color: appcolor), + decoration: InputDecoration( + hintText: "Confirm PIN", + isDense: true, + hintStyle: const TextStyle(color: grey, fontSize: 12), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey), + ), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey), + ), + ), + ), + height(50), + Row( + children: [ + Expanded( + child: ElevatedButton( + onPressed: () { + controller.resetPIN(context: context); + }, + child: const Padding( + padding: EdgeInsets.symmetric(vertical: 12), + child: Text("RESET PIN"), + ), + ), + ), + ], + ), + height(20), + ], + ), + ), + ), + ); + }, + ), + ); + } +} diff --git a/lib/view/Authentication/splash_screen.dart b/lib/view/Authentication/splash_screen.dart new file mode 100644 index 0000000..4632bab --- /dev/null +++ b/lib/view/Authentication/splash_screen.dart @@ -0,0 +1,55 @@ +import 'dart:async'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/view/widgets/common.dart'; + +class SplashScreen extends StatefulWidget { + const SplashScreen({super.key}); + + @override + State createState() => _SplashScreenState(); +} + +class _SplashScreenState extends State { + @override + void initState() { + Timer(const Duration(seconds: 2), () { + checkLock(false, splash: true); + }); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: black, + body: Container( + width: Get.width, + decoration: const BoxDecoration( + gradient: SweepGradient(colors: [ + Colors.black87, + Color(0xff0F2027), + Colors.black87, + Color(0xff0F2027), + Colors.black87, + ], tileMode: TileMode.mirror), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox( + width: Get.width * .5, + child: Image.asset("assets/images/logo.png")), + height(25), + const Text( + "Wallet", + style: TextStyle( + fontSize: 30, color: white, fontWeight: FontWeight.bold), + ) + ], + ), + ), + ); + } +} diff --git a/lib/view/Authentication/verify_phrase_screen.dart b/lib/view/Authentication/verify_phrase_screen.dart new file mode 100644 index 0000000..b146b69 --- /dev/null +++ b/lib/view/Authentication/verify_phrase_screen.dart @@ -0,0 +1,207 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:wallet/view/Authentication/auth_controller.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/view/widgets/common.dart'; + +class VerifyPhraseScreen extends StatelessWidget { + const VerifyPhraseScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: black, + body: GetBuilder( + init: AuthController(), + builder: (controller) { + return Container( + width: Get.width, + height: Get.height, + decoration: BoxDecoration(gradient: gradient2), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 15), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SafeArea( + child: GestureDetector( + onTap: () => Navigator.pop(context), + child: + const Icon(Icons.arrow_back_ios, color: white)), + ), + height(10), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const CircleAvatar( + backgroundColor: midnightBlue, + minRadius: 5, + maxRadius: 5, + ), + width(5), + const CircleAvatar( + backgroundColor: blueGray, + minRadius: 5, + maxRadius: 5, + ), + width(5), + const CircleAvatar( + backgroundColor: midnightBlue, + minRadius: 5, + maxRadius: 5, + ), + ], + ), + height(40), + const Align( + alignment: Alignment.center, + child: Text( + "Confirm the recovery secret phrase", + style: TextStyle(color: white, fontSize: 18), + ), + ), + height(10), + const Center( + child: Text("Enter each word in the order", + textAlign: TextAlign.center, + style: TextStyle(color: blueGray)), + ), + height(30), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + SizedBox( + width: Get.width * .3, + child: TextField( + style: const TextStyle(color: white), + controller: controller.word1, + textAlign: TextAlign.center, + textInputAction: TextInputAction.next, + decoration: InputDecoration( + hintText: "word 1", + isDense: true, + hintStyle: const TextStyle(color: grey), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey)), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey))), + ), + ), + SizedBox( + width: Get.width * .3, + child: TextField( + controller: controller.word4, + textAlign: TextAlign.center, + style: const TextStyle(color: white), + textInputAction: TextInputAction.next, + decoration: InputDecoration( + hintText: "word 4", + isDense: true, + hintStyle: const TextStyle(color: grey), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey)), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey))), + ), + ), + ], + ), + height(30), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + SizedBox( + width: Get.width * .3, + child: TextField( + style: const TextStyle(color: white), + textInputAction: TextInputAction.next, + textAlign: TextAlign.center, + controller: controller.word8, + decoration: InputDecoration( + hintText: "word 8", + isDense: true, + hintStyle: const TextStyle(color: grey), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey)), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey))), + ), + ), + SizedBox( + width: Get.width * .3, + child: TextField( + controller: controller.word12, + textAlign: TextAlign.center, + style: const TextStyle(color: white), + textInputAction: TextInputAction.done, + decoration: InputDecoration( + hintText: "word 12", + isDense: true, + hintStyle: const TextStyle(color: grey), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey)), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(color: grey))), + ), + ), + ], + ), + height(Get.height * .12), + Row( + children: [ + Expanded( + child: OutlinedButton( + onPressed: () => Get.back(), + child: const Padding( + padding: EdgeInsets.symmetric(vertical: 12), + child: Text("Back"), + )), + ), + ], + ), + height(20), + Row( + children: [ + Expanded( + child: ElevatedButton( + onPressed: () { + if (controller.phrase[0] == + controller.word1.text.trim() && + controller.phrase[3] == + controller.word4.text.trim() && + controller.phrase[7] == + controller.word8.text.trim() && + controller.phrase[11] == + controller.word12.text.trim()) { + Get.toNamed("/authCompleteScreen"); + } else { + Get.snackbar("Word Not match", + "Enter each word in order!"); + } + }, + child: const Padding( + padding: EdgeInsets.symmetric(vertical: 12), + child: Text("Next"), + )), + ), + ], + ), + ], + ), + ), + ), + ); + }, + ), + ); + } +} diff --git a/lib/view/Dashboard/dashboard.dart b/lib/view/Dashboard/dashboard.dart new file mode 100644 index 0000000..c8476b8 --- /dev/null +++ b/lib/view/Dashboard/dashboard.dart @@ -0,0 +1,64 @@ +import 'package:flutter/material.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/view/Home/home.dart'; +import 'package:wallet/view/nft/nft.dart'; +import 'package:wallet/view/setting/setting.dart'; + +class Dashboard extends StatefulWidget { + const Dashboard({super.key}); + + @override + State createState() => _DashboardState(); +} + +class _DashboardState extends State { + int _selectedIndex = 0; + static const List _widgetOptions = [ + HomeScreen(), + NFTScreen(), + SettingScreen(), + ]; + @override + Widget build(BuildContext context) { + return Scaffold( + body: Center(child: _widgetOptions.elementAt(_selectedIndex)), + floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat, + bottomNavigationBar: Container( + decoration: BoxDecoration( + color: appcolor, borderRadius: BorderRadius.circular(20)), + margin: const EdgeInsets.only(left: 25, right: 25, bottom: 15), + padding: const EdgeInsets.symmetric(vertical: 15), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + InkWell( + onTap: () { + setState(() { + _selectedIndex = 0; + }); + }, + child: Image.asset( + "assets/images/wallet.png", + height: 30, + width: 50, + )), + InkWell( + onTap: () { + setState(() { + _selectedIndex = 1; + }); + }, + child: Image.asset("assets/images/nft.png", height: 30)), + InkWell( + onTap: () { + setState(() { + _selectedIndex = 2; + }); + }, + child: Image.asset("assets/images/setting2.png", height: 30)), + ], + ), + ), + ); + } +} diff --git a/lib/view/Receive/receive_screen.dart b/lib/view/Receive/receive_screen.dart new file mode 100644 index 0000000..b970655 --- /dev/null +++ b/lib/view/Receive/receive_screen.dart @@ -0,0 +1,123 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_share/flutter_share.dart'; +import 'package:qr_flutter/qr_flutter.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/utils/secure_storage.dart'; +import 'package:wallet/view/widgets/common.dart'; + +class ReceiveScreen extends StatelessWidget { + const ReceiveScreen({super.key}); + Future getAddress() async { + SecureStorage storage = SecureStorage(); + String? address = await storage.getStoredValue('accountAddress'); + return address; + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text("Receive"), + centerTitle: true, + ), + body: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 25), + child: FutureBuilder( + future: getAddress(), + builder: (context, snapshot) { + if (snapshot.hasData) { + return Column( + children: [ + Card( + elevation: 5, + color: Colors.white, + child: Column( + children: [ + height(15), + QrImage( + data: snapshot.data!, + version: QrVersions.auto, + foregroundColor: appcolor, + dataModuleStyle: const QrDataModuleStyle( + dataModuleShape: QrDataModuleShape.circle), + size: 250.0, + ), + const SizedBox( + width: 250, child: Divider(color: appcolor)), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 30, vertical: 15), + child: SizedBox( + width: 250, + child: Text( + snapshot.data!, + textAlign: TextAlign.center, + style: const TextStyle( + fontSize: 14, color: appcolor), + ), + ), + ), + ], + ), + ), + height(20), + const Text( + "Share Qr code for Receive payment", + style: TextStyle(color: grey), + ), + height(50), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + GestureDetector( + onTap: () { + Clipboard.setData(ClipboardData(text: snapshot.data)) + .then( + (_) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text("Address copied to clipboard"), + ), + ); + }, + ); + }, + child: Container( + decoration: BoxDecoration( + color: Colors.blue[100], + shape: BoxShape.circle, + ), + padding: const EdgeInsets.all(10), + child: const Icon(Icons.copy, color: appcolor), + ), + ), + GestureDetector( + onTap: () async { + await FlutterShare.share( + title: snapshot.data!, text: snapshot.data); + }, + child: Container( + decoration: BoxDecoration( + color: Colors.blue[100], + shape: BoxShape.circle, + ), + padding: const EdgeInsets.all(10), + child: const Icon(Icons.share, color: appcolor), + ), + ), + ], + ) + ], + ); + } else { + return const Center( + child: CircularProgressIndicator(), + ); + } + }, + ), + ), + ); + } +} diff --git a/lib/view/home/home.dart b/lib/view/home/home.dart new file mode 100644 index 0000000..267dc9b --- /dev/null +++ b/lib/view/home/home.dart @@ -0,0 +1,427 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; +import 'package:wallet/view/Home/home_ctr.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/view/Home/token_detail_screen.dart'; +import 'package:wallet/view/widgets/common.dart'; +import 'package:web3dart/web3dart.dart'; + +class HomeScreen extends StatelessWidget { + const HomeScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: GetBuilder( + init: HomeController(), + builder: (controller) { + return SafeArea( + child: Column( + children: [ + header(), + walletTile(controller, context), + height(15), + dataCard(controller), + middleNavBar(controller), + if (!controller.history.value && + controller.getTokenBasedOnCurrentNetwork == null || + !controller.history.value && + controller.getTokenBasedOnCurrentNetwork!.isEmpty) + const NoData(), + if (!controller.history.value && + controller.getTokenBasedOnCurrentNetwork != null) + tokenList(controller), + if (controller.history.value && + controller.getTransactionBasedOnCurrentNetwork == + null || + controller.history.value && + controller + .getTransactionBasedOnCurrentNetwork!.isEmpty) + const NoData(), + if (controller.history.value) historyList(controller), + addToken(controller), + ], + ), + ); + }), + ); + } + + Padding addToken(HomeController controller) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 30, vertical: 20), + child: ListTile( + onTap: () => Get.toNamed("/addTokenScreen", arguments: false)! + .whenComplete(() => controller.update()), + dense: true, + shape: const OutlineInputBorder(borderSide: BorderSide(color: grey)), + title: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.add, size: 20), + width(10), + const Text("Add Token"), + ], + ), + ), + ); + } + + Expanded historyList(HomeController controller) { + return Expanded( + child: ListView.builder( + padding: const EdgeInsets.only(left: 20, right: 20, top: 10, bottom: 10), + itemCount: controller.getTransactionBasedOnCurrentNetwork!.length, + itemBuilder: (context, index) { + return Card( + color: Get.isDarkMode ? appcolor : white, + child: ListTile( + onTap: () { + Get.toNamed("/historyDetails", + arguments: controller + .getTransactionBasedOnCurrentNetwork![index])! + .whenComplete(() => controller.update()); + }, + leading: const CircleAvatar( + foregroundImage: AssetImage("assets/images/logo.png"), + backgroundColor: Colors.transparent), + title: Text( + "To : ${controller.getTransactionBasedOnCurrentNetwork![index].to}", + maxLines: 1, + style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 12), + ), + trailing: Column( + children: [ + height(8), + const Text("Index", style: TextStyle(fontSize: 12)), + height(4), + Text( + controller.getTransactionBasedOnCurrentNetwork![index] + .transactionIndex, + style: const TextStyle( + fontWeight: FontWeight.bold, fontSize: 12)), + ], + ), + subtitle: Text( + "GasUsed : ${controller.getTransactionBasedOnCurrentNetwork![index].gasUsed}", + style: const TextStyle(fontSize: 12), + ), + ), + ); + }, + )); + } + + Expanded tokenList(HomeController controller) { + return Expanded( + child: ListView.builder( + padding: const EdgeInsets.only(left: 20, right: 20, top: 10, bottom: 10), + itemCount: controller.getTokenBasedOnCurrentNetwork!.length, + itemBuilder: (context, index) { + return Card( + color: Get.isDarkMode ? appcolor : white, + child: ListTile( + onTap: () { + Get.to(() => TokenDetailScreen( + token: controller.getTokenBasedOnCurrentNetwork![index]))! + .whenComplete(() => controller.update()); + }, + leading: const CircleAvatar( + foregroundImage: AssetImage("assets/images/logo.png"), + backgroundColor: Colors.transparent), + title: Text( + controller.getTokenBasedOnCurrentNetwork![index].tokenName, + style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 14), + ), + trailing: Text( + controller.getTokenBasedOnCurrentNetwork![index].symbol, + style: + const TextStyle(fontWeight: FontWeight.bold, fontSize: 12)), + subtitle: Text( + controller.getTokenBasedOnCurrentNetwork![index].decimal, + style: const TextStyle(fontSize: 12), + ), + ), + ); + }, + )); + } + + Container middleNavBar(HomeController controller) { + return Container( + padding: const EdgeInsets.only(top: 10), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + GestureDetector( + onTap: () { + controller.history.value = false; + controller.update(); + }, + child: Column( + children: [ + height(5), + Text( + "Token", + style: TextStyle( + color: controller.history.value ? grey : blue, + fontWeight: !controller.history.value + ? FontWeight.w600 + : FontWeight.normal, + ), + textAlign: TextAlign.center, + ), + height(15), + if (!controller.history.value) + Container( + height: 2, + width: Get.width / 4, + color: blueGray, + ) + ], + ), + ), + GestureDetector( + onTap: () { + controller.history.value = true; + controller.update(); + }, + child: Column( + children: [ + height(5), + Text( + "History", + style: TextStyle( + color: controller.history.value ? blue : grey, + fontWeight: controller.history.value + ? FontWeight.w600 + : FontWeight.normal, + ), + textAlign: TextAlign.center, + ), + height(15), + if (controller.history.value) + Container( + height: 2, + width: Get.width / 4, + color: blueGray, + ), + ], + ), + ), + ], + ), + ); + } + + Padding dataCard(HomeController controller) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Container( + height: Get.height * .22, + width: Get.width, + decoration: const BoxDecoration( + gradient: LinearGradient( + colors: [ + Color(0xff0F2027), + Color(0xff2C5364), + Color(0xff203A43), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(15), + bottomRight: Radius.circular(15), + topRight: Radius.circular(15), + topLeft: Radius.circular(15), + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + controller.currentNetworkLogoPath, + height: 70, + width: 40, + ), + width(5), + FutureBuilder( + future: controller.getAccountAddressAndBalance( + istokenBalance: false), + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.hasData) { + double amount = + snapshot.data!.getValueInUnit(EtherUnit.ether); + if (amount == 0.0) { + return Text( + '$amount ${controller.currentTickerSymbol}', + style: const TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + color: white, + ), + ); + } else { + return Text( + '${amount.toStringAsFixed(3)} ${controller.currentTickerSymbol}', + style: const TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + color: white, + ), + ); + } + } else { + return Text( + '0.0 ${controller.currentTickerSymbol}', + style: const TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + color: white, + ), + ); + } + }, + ), + ], + ), + height(15), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Column( + children: [ + GestureDetector( + onTap: () { + Get.toNamed("/sendScreen"); + }, + child: Container( + decoration: BoxDecoration( + color: appcolor.withOpacity(0.7), + borderRadius: BorderRadius.circular(20), + ), + padding: const EdgeInsets.all(10), + margin: const EdgeInsets.all(10), + child: Row( + children: [ + width(5), + const Icon( + CupertinoIcons.arrow_up_to_line_alt, + size: 16, + color: white, + ), + width(10), + const Text( + "Send", + style: TextStyle(fontSize: 12, color: white), + ), + width(5), + ], + ), + ), + ), + ], + ), + GestureDetector( + onTap: (() { + Get.toNamed("/receiveScreen"); + }), + child: Container( + decoration: BoxDecoration( + color: appcolor.withOpacity(0.7), + borderRadius: BorderRadius.circular(20), + ), + padding: const EdgeInsets.all(10), + margin: const EdgeInsets.all(10), + child: Row( + children: [ + width(5), + const Icon( + CupertinoIcons.arrow_down_to_line_alt, + size: 16, + color: white, + ), + width(10), + const Text( + "Receive", + style: TextStyle(fontSize: 12, color: white), + ), + width(5) + ], + ), + ), + ), + ], + ) + ], + ), + ), + ); + } + + Padding walletTile(HomeController controller, BuildContext context) { + return Padding( + padding: const EdgeInsets.only(left: 20, right: 20), + child: ListTile( + onTap: () { + Get.toNamed("/myWalletScreen"); + }, + dense: true, + shape: OutlineInputBorder( + borderSide: const BorderSide(color: grey), + borderRadius: BorderRadius.circular(10)), + leading: const CircleAvatar( + foregroundImage: AssetImage("assets/images/logo.png"), + maxRadius: 15, + ), + trailing: IconButton( + onPressed: () { + Clipboard.setData( + ClipboardData(text: controller.accountAddress ?? "")) + .then( + (_) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text("Address copied to clipboard"), + ), + ); + }, + ); + }, + icon: const Icon(Icons.copy)), + title: Text(controller.accountAddress ?? "", + maxLines: 1, overflow: TextOverflow.ellipsis), + subtitle: Text(controller.getCurrentNetwork), + ), + ); + } + + Padding header() { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 20), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const SizedBox(width: 24), + const Text("Wallet", + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + )), + InkWell( + onTap: () => Get.toNamed("/setting"), + child: const Icon( + CupertinoIcons.settings, + ), + ), + ], + ), + ); + } +} diff --git a/lib/view/home/home_ctr.dart b/lib/view/home/home_ctr.dart new file mode 100644 index 0000000..2b13ae9 --- /dev/null +++ b/lib/view/home/home_ctr.dart @@ -0,0 +1,115 @@ +import 'package:get/get.dart'; +import 'package:hive/hive.dart'; +import 'package:wallet/models/nft_model.dart'; +import 'package:wallet/models/token_model.dart'; +import 'package:wallet/models/transaction_history_model.dart'; +import 'package:wallet/utils/secure_storage.dart'; +import 'package:wallet/web3dart/web3dart.dart'; +import 'package:web3dart/web3dart.dart'; + +var box = Boxes.getdarkModeBox; +class HomeController extends GetxController { + RxBool history = false.obs; + RxBool showERC721 = false.obs; + bool darkmode = box.get('isDarkMode') ?? Get.isDarkMode; + final Box _currentNetwork = Boxes.getCurrentNetworkBox; + final Box _tokenOnCurrentNetwork = + Boxes.getTokenOnCurrentNetworkBox; + final Box _nftOnCurrentNetwork = + Boxes.getNFTOnCurrentNetworkBox; + final Box _transactionOnCurrentNetwork = + Boxes.getTransactionOnCurrentNetworkBox; + + @override + void onInit() { + super.onInit(); + getAccountAddressAndBalance(istokenBalance: false); + } + + Future approvalCallback() async { + return true; + } + + Web3 get web3 => Web3(approvalCallback); + String get getCurrentNetwork => + _currentNetwork.get('current_network', defaultValue: 'Ethereum Mainnet'); + + void setCurrentNetwork(String network) { + _currentNetwork.put('current_network', network); + update(); + } + + List get networks => [ + 'Ethereum Mainnet', + 'Ropsten Testnet', // uncomment them only for testing purposes... + // 'Rinkeby Testnet', + // 'Coerli Testnet', + // 'Kovan Testnet', + 'Matic Mainnet', + 'Mumbai Testnet', + 'Binance Mainnet', + ]; + + String get currentNetworkLogoPath => Web3.getCurrentNetworkData['logo_path']; + + String get currentTickerSymbol => Web3.getCurrentNetworkData['symbol']; + + List? get getTokenBasedOnCurrentNetwork { + return _tokenOnCurrentNetwork.values + .where((element) => element.currentNetwork == getCurrentNetwork) + .toList(); + } + + List? get getNFTBasedOnCurrentNetwork { + return _nftOnCurrentNetwork.values + .where((element) => element.currentNetwork == getCurrentNetwork) + .toList(); + } + List? get getTransactionBasedOnCurrentNetwork { + return _transactionOnCurrentNetwork.values + .where((element) => element.currentNetwork == getCurrentNetwork) + .toList(); + } + + String? accountAddress; + String? pvtKey; + Future getAccountAddressAndBalance( + {required bool istokenBalance, String? tokenAddress}) async { + final storage = SecureStorage(); + Web3 web3 = Web3(approvalCallback); + accountAddress = await storage.getStoredValue("accountAddress"); + // print("accountAddress :- " + accountAddress.toString()); + pvtKey = await storage.getStoredValue('pvtKey'); + await web3.setCredentials(pvtKey!); + if (istokenBalance) { + try { + BigInt amount1 = await web3.getTokenBalance( + tokenAddress!, + address: accountAddress, + ); + num amu = amount1.toInt(); + EtherAmount amount = + EtherAmount.fromUnitAndValue(EtherUnit.wei, BigInt.from(amu)); + if (amount.getValueInUnit(EtherUnit.ether) < 0.00000004) { + update(); + + return EtherAmount.zero().getValueInUnit(EtherUnit.ether); + } else { + update(); + return amount.getValueInUnit(EtherUnit.ether); + } + } catch (e) { + Get.snackbar(e.toString(), "Token Balance"); + rethrow; + } + } + EtherAmount balance = await web3.getBalance(address: accountAddress); + if (balance.getValueInUnit(EtherUnit.ether) < 0.00000004) { + update(); + return EtherAmount.zero(); + } else { + update(); + return balance; + } + } +} diff --git a/lib/view/home/token_detail_screen.dart b/lib/view/home/token_detail_screen.dart new file mode 100644 index 0000000..cec5f66 --- /dev/null +++ b/lib/view/home/token_detail_screen.dart @@ -0,0 +1,106 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:wallet/models/token_model.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/view/Home/home_ctr.dart'; +import 'package:wallet/view/send/send_screen.dart'; + +class TokenDetailScreen extends StatelessWidget { + final TokenModel token; + + TokenDetailScreen({super.key, required this.token}); + final controller = Get.put(HomeController()); + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(token.tokenName), + centerTitle: true, + ), + body: SafeArea( + child: Container( + padding: const EdgeInsets.all(20), + child: Center( + child: Column( + children: [ + Column( + children: [ + Image.asset( + 'assets/images/wallet.png', + height: 80, + ), + const SizedBox(height: 20), + FutureBuilder( + future: controller.getAccountAddressAndBalance( + istokenBalance: true, + tokenAddress: token.tokenAddress, + ), + builder: (context, snapshot) { + if (snapshot.data != null) { + return Column( + children: [ + Text( + '${snapshot.data.toStringAsFixed(3)}', + style: + Theme.of(context).textTheme.headline5, + textAlign: TextAlign.center, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + Text( + token.tokenName, + style: + Theme.of(context).textTheme.headline5, + textAlign: TextAlign.center, + ), + ], + ); + } else { + return Text( + '0 ${token.tokenName}', + style: Theme.of(context).textTheme.headline5, + ); + } + }), + const SizedBox(height: 20), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox( + width: MediaQuery.of(context).size.width * .2, + child: OutlinedButton( + child: const Text('Send'), + onPressed: () => Get.to(() => SendScreen( + isTokenTransfer: true, + tokenAddress: token.tokenAddress, + )), + ), + ), + const SizedBox(width: 10), + OutlinedButton( + child: const Text('Receive'), + onPressed: () => Get.toNamed("/receiveScreen"), + ), + ], + ), + const SizedBox(height: 20), + const Divider(color: grey), + ], + ), + const SizedBox(height: 20), + Center( + child: Text( + 'You have no transaction!', + style: Theme.of(context) + .textTheme + .caption! + .copyWith(color: Colors.grey), + ), + ), + ], + ), + ), + ), + )); + } +} diff --git a/lib/view/nft/nft.dart b/lib/view/nft/nft.dart new file mode 100644 index 0000000..c955bcf --- /dev/null +++ b/lib/view/nft/nft.dart @@ -0,0 +1,251 @@ +import 'dart:developer'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:lottie/lottie.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/view/Home/home_ctr.dart'; +import 'package:wallet/view/nft/nft_details.dart'; +import 'package:wallet/view/widgets/common.dart'; + +Future approvalCallback() async { + return true; +} + +class NFTScreen extends StatelessWidget { + const NFTScreen({super.key}); + @override + Widget build(BuildContext context) { + return Scaffold( + // appBar: AppBar( + // title: const Text("NFT Collection"), + // centerTitle: true, + // automaticallyImplyLeading: false, + // ), + body: GetBuilder( + init: HomeController(), + builder: (homeController) { + return homeController.getNFTBasedOnCurrentNetwork == null + ? const Center(child: Text("Can't find any NFT")) + : Padding( + padding: const EdgeInsets.all(20), + child: SafeArea( + child: Column( + children: [ + const Text("NFT Collection", + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + )), + height(20), + Row( + children: [ + Expanded( + child: GestureDetector( + onTap: () { + homeController.showERC721.value = false; + homeController.update(); + }, + child: Column( + children: [ + height(5), + Text( + "Assets", + style: TextStyle( + color: homeController.showERC721.value + ? grey + : blue, + fontWeight: + !homeController.showERC721.value + ? FontWeight.w600 + : FontWeight.normal, + ), + textAlign: TextAlign.center, + ), + height(15), + if (!homeController.showERC721.value) + Container( + height: 2, + color: blueGray, + ) + ], + ), + )), + Expanded( + child: GestureDetector( + onTap: () { + homeController.showERC721.value = true; + homeController.update(); + }, + child: Column( + children: [ + height(5), + Text( + "History", + style: TextStyle( + color: homeController.showERC721.value + ? blue + : grey, + fontWeight: + homeController.showERC721.value + ? FontWeight.w600 + : FontWeight.normal, + ), + textAlign: TextAlign.center, + ), + height(15), + if (homeController.showERC721.value) + Container( + height: 2, + color: blueGray, + ), + ], + ), + )), + ], + ), + height(10), + if (!homeController.showERC721.value && + homeController.getNFTBasedOnCurrentNetwork == + null || + homeController + .getNFTBasedOnCurrentNetwork!.isEmpty) + const NoData(), + if (!homeController.showERC721.value) + Expanded( + child: GridView.builder( + shrinkWrap: true, + gridDelegate: + const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2), + itemCount: homeController + .getNFTBasedOnCurrentNetwork!.length, + itemBuilder: (_, int index) { + return FutureBuilder( + future: homeController + .web3 + .getImageFromToken( + address: homeController + .getNFTBasedOnCurrentNetwork![ + index] + .tokenAddress, + token: homeController + .getNFTBasedOnCurrentNetwork![ + index] + .tokenID), + builder: (context, snapshot) { + if (snapshot.error != null) { + return Center( + child: + Text(snapshot.error.toString()), + ); + } + if (snapshot.connectionState == + ConnectionState.waiting) { + return Center( + child: Lottie.asset( + "assets/lottiefiles/loading.json", + height: 40), + ); + } + if (snapshot.hasData) { + log(snapshot.data!.toString()); + return GestureDetector( + onTap: () { + Get.to(() => NftDetails( + data: snapshot.data!, + ))! + .whenComplete(() => + homeController.update()); + }, + child: Card( + child: Padding( + padding: + const EdgeInsets.all(8.0), + child: FittedBox( + child: Image( + image: NetworkImage( + snapshot.data!["image"] + .toString() + .replaceFirst( + r'ipfs://', + r'https://nftstorage.link/ipfs/', + ), + ), + height: Get.height * .3, + ), + ), + ), + ), + ); + } else { + return const Text( + '\n\n\n Retrieving Data ...\n\n\n'); + } + }, + ); + }), + ), + if (homeController.showERC721.value && + homeController.getNFTBasedOnCurrentNetwork == + null) + const NoData(), + if (homeController.showERC721.value) + Expanded( + child: ListView.builder( + itemCount: homeController + .getNFTBasedOnCurrentNetwork!.length, + itemBuilder: (context, index) { + return Card( + color: Get.isDarkMode ? appcolor : white, + child: ListTile( + leading: const CircleAvatar( + foregroundImage: + AssetImage("assets/images/nft.png"), + backgroundColor: Colors.transparent), + title: Text( + homeController + .getNFTBasedOnCurrentNetwork![index] + .tokenName, + style: const TextStyle( + fontWeight: FontWeight.bold, + fontSize: 14), + ), + trailing: Text( + homeController + .getNFTBasedOnCurrentNetwork![index] + .symbol, + style: const TextStyle( + fontWeight: FontWeight.bold, + fontSize: 12)), + ), + ); + }, + )), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 20, vertical: 10), + child: ListTile( + onTap: () => Get.toNamed("/addTokenScreen", + arguments: true)! + .whenComplete(() => homeController.update()), + dense: true, + shape: const OutlineInputBorder( + borderSide: BorderSide(color: grey)), + title: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.add, size: 20), + width(10), + const Text("Add NFT"), + ], + ), + ), + ), + ], + ), + ), + ); + }), + ); + } +} diff --git a/lib/view/nft/nft_details.dart b/lib/view/nft/nft_details.dart new file mode 100644 index 0000000..2e6ee29 --- /dev/null +++ b/lib/view/nft/nft_details.dart @@ -0,0 +1,75 @@ +import 'package:flutter/material.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/view/widgets/common.dart'; + +class NftDetails extends StatelessWidget { + final Map data; + const NftDetails({super.key, required this.data}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(data["name"]), + ), + body: Padding( + padding: const EdgeInsets.all(20.0), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Card( + child: Padding( + padding: const EdgeInsets.all(20.0), + child: Image( + image: NetworkImage(data["image"].toString().replaceFirst( + 'ipfs://', r'https://nftstorage.link/ipfs/')), + ), + ), + ), + height(5), + const Text("Description", style: TextStyle(color: grey)), + height(5), + Card( + child: Padding( + padding: + const EdgeInsets.symmetric(horizontal: 15, vertical: 10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // const Text("Description", style: TextStyle(color: grey)), + height(5), + Text(data["description"]), + ], + ), + ), + ), + height(5), + const Text("Attributes", style: TextStyle(color: grey)), + height(5), + Card( + child: ListView.builder( + itemCount: data["attributes"].length, + shrinkWrap: true, + itemBuilder: (_, index) { + return Column( + children: [ + ListTile( + dense: true, + title: Text(data["attributes"][index]["trait_type"] + .toString()), + trailing: Text( + data["attributes"][index]["value"].toString()), + ), + const Divider(endIndent: 10, indent: 10), + ], + ); + }), + ) + ], + ), + ), + ), + ); + } +} diff --git a/lib/view/send/history_details.dart b/lib/view/send/history_details.dart new file mode 100644 index 0000000..603751f --- /dev/null +++ b/lib/view/send/history_details.dart @@ -0,0 +1,135 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:lottie/lottie.dart'; +import 'package:wallet/view/Home/home_ctr.dart'; + +class HistoryDetails extends StatelessWidget { + const HistoryDetails({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text("History"), + centerTitle: true, + ), + body: GetBuilder( + init: HomeController(), + builder: (controller) { + return SafeArea( + child: Padding( + padding: + const EdgeInsets.symmetric(horizontal: 20, vertical: 20), + child: SingleChildScrollView( + child: Column( + children: [ + Card( + elevation: 2, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 15, vertical: 20), + child: Column( + children: [ + Lottie.asset("assets/lottiefiles/history.json"), + Table( + border: TableBorder.symmetric( + inside: const BorderSide( + color: Colors.black26)), + defaultVerticalAlignment: + TableCellVerticalAlignment.middle, + children: [ + TableRow(children: [ + const Text("Network"), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text(controller + .getTransactionBasedOnCurrentNetwork![ + 0] + .currentNetwork), + ), + ]), + TableRow(children: [ + const Text("From"), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text(controller + .getTransactionBasedOnCurrentNetwork![ + 0] + .from), + ), + ]), + TableRow(children: [ + const Text("To"), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text(controller + .getTransactionBasedOnCurrentNetwork![ + 0] + .to), + ), + ]), + TableRow(children: [ + const Text("Gas Used"), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text(controller + .getTransactionBasedOnCurrentNetwork![ + 0] + .gasUsed), + ), + ]), + TableRow(children: [ + const Text("Cumulative Gas Used"), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text(controller + .getTransactionBasedOnCurrentNetwork![ + 0] + .cumulativeGasUsed), + ), + ]), + TableRow(children: [ + const Text("Effective Gas Price"), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text(controller + .getTransactionBasedOnCurrentNetwork![ + 0] + .effectiveGasPrice), + ), + ]), + TableRow(children: [ + const Text("Transaction Hash"), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text(controller + .getTransactionBasedOnCurrentNetwork![ + 0] + .transactionHash), + ), + ]), + TableRow(children: [ + const Text("Transaction Index"), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text(controller + .getTransactionBasedOnCurrentNetwork![ + 0] + .transactionIndex), + ), + ]), + ], + ), + ], + ), + ), + ), + ], + ), + ), + ), + ); + }), + ); + } +} diff --git a/lib/view/send/send_ctr.dart b/lib/view/send/send_ctr.dart new file mode 100644 index 0000000..5dfaa17 --- /dev/null +++ b/lib/view/send/send_ctr.dart @@ -0,0 +1,99 @@ +import 'dart:math'; +import 'package:flutter/cupertino.dart'; +import 'package:hive/hive.dart'; +import 'package:permission_handler/permission_handler.dart'; +import 'package:qrscan/qrscan.dart' as scanner; +import 'package:get/get.dart'; +import 'package:wallet/models/send_transaction_model.dart'; +import 'package:wallet/models/transaction_history_model.dart'; +import 'package:wallet/utils/secure_storage.dart'; +import 'package:wallet/web3dart/web3dart.dart'; +import 'package:web3dart/web3dart.dart'; + +class SendController extends GetxController { + TextEditingController accountController = TextEditingController(); + TextEditingController amountController = TextEditingController(); + final SecureStorage storage = SecureStorage(); + final Box transactionOnCurrentNetwork = + Boxes.getTransactionOnCurrentNetworkBox; + @override + void onClose() { + accountController.clear(); + amountController.clear(); + super.onClose(); + } + + Future scanQrCode() async { + var status = await Permission.camera.request(); + if (status.isGranted) { + String? cameraScanResult = await scanner.scan(); + if (cameraScanResult != null) { + accountController.text = cameraScanResult; + } else { + Get.snackbar("Scan Controller", 'Invalid QR Code. Try again!'); + } + } else { + throw 'Permissions denied'; + } + update(); + } + + Future approvalCallback() async { + return true; + } + + Future> sendTransaction() async { + if (accountController.text.isNotEmpty && amountController.text.isNotEmpty) { + num parsedAmount = num.parse(amountController.text); + num calc = pow(10, 18); + + num givenAmount = parsedAmount * calc; + + Web3 web3 = Web3(approvalCallback); + + String senderAddress = await storage.getStoredValue("accountAddress") ?? + 'No Account Address Found!'; + String pvtKey = + await storage.getStoredValue("pvtKey") ?? 'No Private Key found!'; + await web3.setCredentials(pvtKey); + return await web3 + .transfer(amountController, accountController, accountController.text, + givenAmount, senderAddress) + .then((value) { + amountController.clear(); + accountController.clear(); + return value; + }); + } else { + Get.snackbar("Fields are empty", "Fill both text-filed"); + throw "Fields are empty"; + } + } + + Future sendTokenTransaction( + String tokenAddress, sendTransModel) async { + final SendTransactionModel sendTransactionModel = sendTransModel; + debugPrint('tokenAddress => $tokenAddress'); + debugPrint('receiverAddress => ${sendTransactionModel.sendersAddress}'); + debugPrint('amount => ${sendTransactionModel.amount}'); + if (sendTransactionModel.sendersAddress != '' && + sendTransactionModel.amount != '') { + num parsedAmount = num.parse(sendTransactionModel.amount); + + Web3 web3 = Web3(approvalCallback); + + String pvtKey = + await storage.getStoredValue("pvtKey") ?? 'No Private Key found!'; + await web3.setCredentials(pvtKey); + try { + return await web3.tokenTransfer( + tokenAddress, sendTransactionModel.sendersAddress, parsedAmount); + } catch (e) { + Get.snackbar(e.toString(), " "); + rethrow; + } + } else { + throw 'Fields are empty'; + } + } +} diff --git a/lib/view/send/send_screen.dart b/lib/view/send/send_screen.dart new file mode 100644 index 0000000..9544583 --- /dev/null +++ b/lib/view/send/send_screen.dart @@ -0,0 +1,120 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:lottie/lottie.dart'; +import 'package:wallet/models/send_transaction_model.dart'; +import 'package:wallet/view/send/send_ctr.dart'; +import 'package:wallet/view/send/token_complete.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/view/widgets/common.dart'; + +class SendScreen extends StatelessWidget { + final bool isTokenTransfer; + final String? tokenAddress; + const SendScreen( + {super.key, this.isTokenTransfer = false, this.tokenAddress}); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: GetBuilder( + init: SendController(), + builder: (controller) { + return Container( + width: Get.width, + height: Get.height, + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 15), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SafeArea( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + IconButton( + onPressed: () => Navigator.pop(context), + icon: const Icon(Icons.arrow_back), + ), + const Text("Send", + style: TextStyle( + fontSize: 16, fontWeight: FontWeight.bold)), + InkWell( + onTap: () { + controller.scanQrCode(); + }, + child: const Icon(Icons.qr_code_scanner), + ) + ], + ), + ), + Center( + child: SizedBox( + height: Get.height * .15, + child: + Lottie.asset("assets/lottiefiles/ethereum.json")), + ), + Card( + color: Get.isDarkMode + ? midnightBlue.withOpacity(0.4) + : white, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 20, vertical: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text("Address", + style: TextStyle(color: blueGray)), + height(3), + TextField( + textInputAction: TextInputAction.next, + keyboardType: TextInputType.streetAddress, + controller: controller.accountController, + decoration: InputDecoration( + hintText: "Enter Address", + isDense: true, + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(15), + )), + ), + height(15), + const Text("Amount", + style: TextStyle(color: blueGray)), + height(3), + TextField( + textInputAction: TextInputAction.done, + keyboardType: TextInputType.number, + controller: controller.amountController, + decoration: InputDecoration( + hintText: "Amount", + isDense: true, + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(15), + )), + ), + ], + ), + )), + height(Get.height * .25), + CustomButton( + onTap: () { + if (isTokenTransfer) { + Get.to(() => TokenCompleteScreen( + tokenAddress: tokenAddress!, + sendTransactionModel: SendTransactionModel( + controller.accountController.text, + controller.amountController.text))); + } else { + Get.toNamed("/transactionComplete"); + } + }, + title: "Send", + ), + ], + ), + ), + ); + }), + ); + } +} diff --git a/lib/view/send/token_complete.dart b/lib/view/send/token_complete.dart new file mode 100644 index 0000000..bb58ee1 --- /dev/null +++ b/lib/view/send/token_complete.dart @@ -0,0 +1,62 @@ + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:lottie/lottie.dart'; +import 'package:wallet/models/send_transaction_model.dart'; +import 'package:wallet/view/send/send_ctr.dart'; +import 'package:wallet/view/widgets/common.dart'; + +class TokenCompleteScreen extends StatelessWidget { + final String tokenAddress; + final SendTransactionModel sendTransactionModel; + const TokenCompleteScreen( + {super.key, + required this.tokenAddress, + required this.sendTransactionModel}); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: GetBuilder( + init: SendController(), + builder: (controller) { + return FutureBuilder( + future: controller.sendTokenTransaction( + tokenAddress, sendTransactionModel), + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.hasData) { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox( + height: 200, + child: Lottie.asset( + "assets/lottiefiles/completed.json")), + const SizedBox(height: 20), + Text( + 'Transaction Complete!', + style: Theme.of(context).textTheme.headline4, + ), + ], + ), + ); + } else { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Lottie.asset("assets/lottiefiles/loading.json", + height: 120), + height(20), + const Text('Transaction in process...'), + ], + ), + ); + } + }, + ); + }), + ); + } +} diff --git a/lib/view/send/transaction_complete_screen.dart b/lib/view/send/transaction_complete_screen.dart new file mode 100644 index 0000000..c88ca72 --- /dev/null +++ b/lib/view/send/transaction_complete_screen.dart @@ -0,0 +1,176 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:lottie/lottie.dart'; +import 'package:wallet/models/transaction_history_model.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/view/Home/home_ctr.dart'; +import 'package:wallet/view/send/send_ctr.dart'; +import 'package:wallet/view/widgets/common.dart'; +import 'package:web3dart/web3dart.dart'; + +class TransactionCompleteScreen extends StatelessWidget { + const TransactionCompleteScreen({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text( + "Transaction", + style: TextStyle( + color: !Get.isDarkMode ? black : white, + ), + ), + elevation: 0, + iconTheme: IconThemeData(color: !Get.isDarkMode ? black : white), + centerTitle: true, + backgroundColor: Get.isDarkMode ? black : white, + ), + body: GetBuilder( + init: SendController(), + builder: (controller) { + return FutureBuilder>( + future: controller.sendTransaction(), + builder: (context, snapshot) { + if (snapshot.hasError) { + return Column( + children: [ + SizedBox( + height: Get.height * .4, + child: + Lottie.asset("assets/lottiefiles/failed.json")), + height(20), + Center( + child: Text( + snapshot.error.toString(), + style: const TextStyle( + fontSize: 16, + ), + ), + ), + height(50), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 20, vertical: 20), + child: Row( + children: [ + Expanded( + child: OutlinedButton( + onPressed: () => + Navigator.of(context).pop(), + child: const Padding( + padding: + EdgeInsets.symmetric(vertical: 12), + child: Text("Back"), + )), + ), + ], + ), + ), + ], + ); + } + if (snapshot.connectionState == ConnectionState.waiting) { + return Center( + child: Lottie.asset("assets/lottiefiles/loading.json", + height: 120)); + } + if (snapshot.hasData) { + TransactionHistory transactionHistory = TransactionHistory( + transactionHash: snapshot.data!.keys.first.toString(), + transactionIndex: snapshot + .data!.values.first.transactionIndex + .toString(), + blockHash: + snapshot.data!.values.first.blockHash.toString(), + cumulativeGasUsed: snapshot + .data!.values.first.cumulativeGasUsed + .toString(), + contractAddress: snapshot + .data!.values.first.contractAddress + .toString(), + status: snapshot.data!.values.first.status.toString(), + from: snapshot.data!.values.first.from.toString(), + to: snapshot.data!.values.first.to.toString(), + gasUsed: snapshot.data!.values.first.gasUsed + .toString(), + effectiveGasPrice: snapshot + .data!.values.first.effectiveGasPrice + .toString(), + currentNetwork: HomeController().getCurrentNetwork); + controller.transactionOnCurrentNetwork + .add(transactionHistory); + return Container( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Column( + children: [ + Center( + child: Column( + children: [ + SizedBox( + height: Get.height * .4, + child: Lottie.asset( + "assets/lottiefiles/completed.json")), + const Text( + 'Transaction Complete!', + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 20, color: Colors.green), + ), + height(5), + const Text( + 'Details of transaction are included below', + textAlign: TextAlign.center, + style: TextStyle(fontSize: 12, color: grey), + ), + height(15), + const Divider(color: grey), + height(15), + ListTile( + dense: true, + title: const Text( + 'TRANSACTIONS HASH', + ), + subtitle: Text( + snapshot.data!.keys.first, + style: const TextStyle(color: grey), + ), + ), + const Divider(height: 3), + ListTile( + dense: true, + title: const Text( + 'TRANSACTIONS BLOCK NUMBER', + ), + subtitle: Text( + snapshot.data!.values.first.blockNumber + .toString(), + style: const TextStyle(color: grey), + ), + ), + const Divider(height: 3), + ListTile( + dense: true, + title: const Text('TOTAL GAS USED'), + subtitle: Text( + snapshot.data!.values.first.gasUsed + .toString(), + style: const TextStyle(color: grey), + ), + ), + ], + ), + ), + ], + ), + ); + } else { + return const Center( + child: Text("Data Not found"), + ); + } + }); + }), + ); + } +} diff --git a/lib/view/setting/about_wallet.dart b/lib/view/setting/about_wallet.dart new file mode 100644 index 0000000..a63a8f1 --- /dev/null +++ b/lib/view/setting/about_wallet.dart @@ -0,0 +1,77 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_markdown/flutter_markdown.dart'; +import 'package:flutter/services.dart'; +import 'package:wallet/utils/theme.dart'; + +class AboutWalletScreen extends StatefulWidget { + const AboutWalletScreen({super.key}); + + @override + State createState() => _AboutWalletScreenState(); +} + +class _AboutWalletScreenState extends State { + int _selectedIndex = 0; + final List _widgetOptions = [ + FutureBuilder( + future: rootBundle.loadString('assets/privacy_policy.md', cache: true), + builder: (context, snapshot) { + if (snapshot.hasData) { + return Markdown( + data: snapshot.data.toString(), + ); + } else { + return const Center( + child: CircularProgressIndicator(), + ); + } + }, + ), + FutureBuilder( + future: + rootBundle.loadString('assets/terms_and_conditions.md', cache: true), + builder: (context, snapshot) { + if (snapshot.hasData) { + return Markdown( + data: snapshot.data.toString(), + ); + } else { + return const Center( + child: CircularProgressIndicator(), + ); + } + }, + ), + ]; + + void _onItemTapped(int index) { + setState(() { + _selectedIndex = index; + }); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + centerTitle: true, + title: const Text("About Wallet"), + ), + body: Center( + child: _widgetOptions.elementAt(_selectedIndex), + ), + bottomNavigationBar: BottomNavigationBar( + backgroundColor: appcolor, + items: const [ + BottomNavigationBarItem( + icon: Icon(Icons.home), label: 'Privacy Policy '), + BottomNavigationBarItem( + icon: Icon(Icons.business), label: 'Terms of Service'), + ], + currentIndex: _selectedIndex, + selectedItemColor: white, + onTap: _onItemTapped, + ), + ); + } +} diff --git a/lib/view/setting/addtoken_screen.dart b/lib/view/setting/addtoken_screen.dart new file mode 100644 index 0000000..99b55b6 --- /dev/null +++ b/lib/view/setting/addtoken_screen.dart @@ -0,0 +1,351 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:hive/hive.dart'; +import 'package:permission_handler/permission_handler.dart'; +import 'package:wallet/models/nft_model.dart'; +import 'package:wallet/models/token_model.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/utils/secure_storage.dart'; +import 'package:wallet/view/Home/home_ctr.dart'; +import 'package:wallet/web3dart/web3dart.dart'; +import 'package:wallet/view/widgets/common.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; +import 'package:qrscan/qrscan.dart' as scanner; + +class AddTokenController extends GetxController { + HomeController homeController = Get.put(HomeController()); + TextEditingController _tokenAddressController = TextEditingController(); + TextEditingController tokeIdController = TextEditingController(); + TextEditingController get tokenAddressController => _tokenAddressController; + bool scanToken = true; + String tokenName = ""; + String tokenSymbol = ""; + String decimal = ""; + TokenModel? tokenValue; + NFTModel? nftValue; + @override + void onClose() { + _tokenAddressController.clear(); + tokeIdController.clear(); + super.onClose(); + } + + final Box _tokenOnCurrentNetwork = + Boxes.getTokenOnCurrentNetworkBox; + final Box _nftOnCurrentNetwork = Boxes.getNFTOnCurrentNetworkBox; + + Future approvalCallback() async { + return true; + } + + Future insertIntoDB() async { + if (Get.arguments) { + await _nftOnCurrentNetwork.add(nftValue!); + } else { + await _tokenOnCurrentNetwork.add(tokenValue!); + } + } + + searchToken() async { + if (Get.arguments) { + nftValue = await getNFT(); + } else { + tokenValue = await getToken(); + } + } + + Future getToken() async { + try { + Web3 web3 = Web3(approvalCallback); + dynamic name = await web3.getTokenName(_tokenAddressController.text); + dynamic symbol = await web3.getTokenSymbol(_tokenAddressController.text); + dynamic newDecimals = + await web3.getTokenDecimals(_tokenAddressController.text); + decimal = newDecimals.toString().replaceAll('{', '').replaceAll('}', ''); + tokenName = name.toString().replaceAll('{', '').replaceAll('}', ''); + tokenSymbol = symbol.toString().replaceAll('{', '').replaceAll('}', ''); + scanToken = false; + update(); + return TokenModel( + tokenName: tokenName, + symbol: tokenSymbol, + decimal: decimal, + tokenAddress: _tokenAddressController.text, + currentNetwork: HomeController().getCurrentNetwork, + ); + } catch (e) { + Get.showSnackbar(GetSnackBar( + titleText: Text(e.toString()), + duration: const Duration(seconds: 3), + backgroundColor: Colors.red, + messageText: const Text( + ".", + style: TextStyle(fontSize: 1), + ), + )); + rethrow; + } + } + + Future getNFT() async { + try { + Web3 web3 = Web3(approvalCallback); + dynamic name = await web3.getTokenName(_tokenAddressController.text); + dynamic symbol = await web3.getTokenSymbol(_tokenAddressController.text); + tokenName = name.toString().replaceAll('{', '').replaceAll('}', ''); + tokenSymbol = symbol.toString().replaceAll('{', '').replaceAll('}', ''); + scanToken = false; + update(); + return NFTModel( + tokenName: tokenName, + symbol: tokenSymbol, + tokenID: int.parse(tokeIdController.text), + tokenAddress: _tokenAddressController.text, + currentNetwork: HomeController().getCurrentNetwork, + ); + } catch (e) { + Get.showSnackbar(GetSnackBar( + titleText: Text(e.toString()), + duration: const Duration(seconds: 3), + backgroundColor: Colors.red, + messageText: const Text( + ".", + style: TextStyle(fontSize: 1), + ), + )); + rethrow; + } + } + + Future scanQR() async { + var status = await Permission.camera.request(); + if (status.isGranted) { + String? cameraScanResult = await scanner.scan(); + if (cameraScanResult != null) { + _tokenAddressController = TextEditingController(text: cameraScanResult); + } else { + Get.snackbar('Invalid QR Code.', "Try again!"); + } + } else { + throw 'Permissions denied'; + } + update(); + } +} + +class AddTokenScreen extends StatelessWidget { + const AddTokenScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text("Add Custom Token"), + elevation: 0, + centerTitle: true, + ), + body: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Center( + child: GetBuilder( + init: AddTokenController(), + builder: (controller) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + height(15), + Card( + color: + Get.isDarkMode ? midnightBlue.withOpacity(0.4) : white, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Column( + children: [ + height(15), + Container( + decoration: BoxDecoration( + border: Border.all(color: grey), + borderRadius: BorderRadius.circular(5), + ), + margin: const EdgeInsets.symmetric(vertical: 10), + child: ListTile( + onTap: () { + HomeController homeController = + Get.find(); + networkSelect(context, homeController) + .then((value) => controller.update()); + }, + dense: true, + title: const Text("Network"), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text(controller + .homeController.getCurrentNetwork), + const Icon( + Icons.arrow_forward_ios, + size: 16, + ) + ], + ), + ), + ), + Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(5), + border: Border.all(color: grey), + ), + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: TextField( + controller: + controller.tokenAddressController, + textInputAction: TextInputAction.next, + decoration: const InputDecoration( + isDense: true, + border: InputBorder.none, + hintText: "Contract Address", + hintStyle: TextStyle(color: grey), + ), + ), + ), + ), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + InkWell( + onTap: () async { + ClipboardData? cdata = + await Clipboard.getData( + Clipboard.kTextPlain); + + controller._tokenAddressController = + TextEditingController( + text: cdata!.text); + controller.update(); + }, + child: const Text("PAST", + style: TextStyle(color: blue)), + ), + width(10), + InkWell( + onTap: () { + controller.scanQR(); + }, + child: const Icon( + CupertinoIcons.qrcode_viewfinder, + color: blue), + ), + width(13), + ], + ), + ], + ), + ), + height(15), + if (Get.arguments) + TextField( + textInputAction: TextInputAction.done, + controller: controller.tokeIdController, + keyboardType: TextInputType.number, + decoration: InputDecoration( + isDense: true, + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + ), + hintText: "Token Id", + hintStyle: const TextStyle(color: grey), + ), + ), + if (Get.arguments) height(15), + ], + ), + ), + ), + if (controller.tokenName != "") + Card( + color: Get.isDarkMode + ? midnightBlue.withOpacity(0.4) + : white, + child: ListTile( + subtitle: Column( + children: [ + Row( + children: [ + const Text( + " Symbol : ", + style: TextStyle( + color: grey, + ), + ), + Text(controller.tokenSymbol), + ], + ), + if (!Get.arguments) + Row( + children: [ + const Text( + "Decimal : ", + style: TextStyle( + color: grey, + ), + ), + Text(controller.decimal), + ], + ), + ], + ), + title: Row( + children: [ + const Text( + " Name : ", + style: TextStyle( + color: grey, + ), + ), + Text(controller.tokenName), + ], + ), + isThreeLine: Get.arguments ? false : true, + ), + ), + height(40), + Row( + children: [ + if (controller.scanToken) + Expanded( + child: CustomButton( + title: "Scan Token", + onTap: () async { + await controller.searchToken(); + }, + ), + ), + if (!controller.scanToken) + Expanded( + child: CustomButton( + title: Get.arguments ? "Add NFT" : "Add Token", + onTap: () async { + controller + .insertIntoDB() + .then((value) => Get.back()); + }, + ), + ), + ], + ), + ], + ); + }, + ), + ), + ), + ); + } +} diff --git a/lib/view/setting/mywallet.dart b/lib/view/setting/mywallet.dart new file mode 100644 index 0000000..f31d767 --- /dev/null +++ b/lib/view/setting/mywallet.dart @@ -0,0 +1,128 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:lottie/lottie.dart'; +import 'package:qr_flutter/qr_flutter.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/view/Home/home_ctr.dart'; +import 'package:wallet/view/widgets/common.dart'; +import 'package:web3dart/web3dart.dart'; + +class MyWalletScreen extends StatelessWidget { + const MyWalletScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text("My Wallet"), + centerTitle: true, + ), + body: SizedBox( + width: Get.width, + child: GetBuilder( + init: HomeController(), + builder: (controller) { + return Column( + children: [ + SizedBox( + height: Get.height * .2, + child: Lottie.asset('assets/lottiefiles/wallet.json')), + Card( + color: white, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + height(10), + width(Get.width - 50), + const Text( + "My Balance", + style: TextStyle( + fontSize: 20, + color: appcolor, + fontWeight: FontWeight.bold, + ), + ), + height(12), + FutureBuilder( + future: controller.getAccountAddressAndBalance( + istokenBalance: false), + builder: + (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.hasData) { + double amount = snapshot.data! + .getValueInUnit(EtherUnit.ether); + if (amount == 0.0) { + return Text( + '$amount ${controller.currentTickerSymbol}', + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.bold, + color: appcolor, + ), + ); + } else { + return Text( + '${amount.toStringAsFixed(3)} ${controller.currentTickerSymbol}', + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.bold, + color: appcolor, + ), + ); + } + } else { + return Text( + '0.0 ${controller.currentTickerSymbol}', + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.bold, + color: appcolor, + ), + ); + } + }, + ), + const SizedBox( + width: 250, child: Divider(color: appcolor)), + QrImage( + data: controller.accountAddress ?? "", + version: QrVersions.auto, + foregroundColor: appcolor, + // embeddedImage: AssetImage(controller.currentNetworkLogoPath), + dataModuleStyle: const QrDataModuleStyle( + dataModuleShape: QrDataModuleShape.circle), + size: 250.0, + ), + const SizedBox( + width: 250, child: Divider(color: appcolor)), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 30, vertical: 15), + child: SizedBox( + width: 250, + child: Text( + controller.accountAddress ?? "", + textAlign: TextAlign.center, + style: const TextStyle( + fontSize: 14, color: appcolor), + ), + ), + ), + const SizedBox( + width: 250, child: Divider(color: appcolor)), + height(10), + Text( + controller.getCurrentNetwork, + style: const TextStyle(color: appcolor), + ), + height(20), + ], + ), + ), + ], + ); + }), + ), + ); + } +} diff --git a/lib/view/setting/setting.dart b/lib/view/setting/setting.dart new file mode 100644 index 0000000..0693855 --- /dev/null +++ b/lib/view/setting/setting.dart @@ -0,0 +1,327 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:local_auth/local_auth.dart'; +import 'package:lottie/lottie.dart'; +import 'package:wallet/utils/secure_storage.dart'; +import 'package:wallet/view/Home/home_ctr.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/view/Authentication/auth_controller.dart'; +import 'package:wallet/view/Authentication/generate_phrase_screen.dart'; +import 'package:wallet/view/Authentication/reset_password.dart'; +import 'package:wallet/view/widgets/common.dart'; +import 'package:web3dart/web3dart.dart'; + +class SettingScreen extends StatelessWidget { + const SettingScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: GetBuilder( + init: HomeController(), + builder: (controller) { + return Container( + width: Get.width, + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), + child: SingleChildScrollView( + child: Column( + children: [ + height(10), + const SafeArea( + child: Text("Setting", + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + ))), + SizedBox( + height: Get.height * .2, + child: Lottie.asset('assets/lottiefiles/wallet.json')), + height(10), + const Text( + "My Balance", + style: TextStyle(fontSize: 12), + ), + height(12), + FutureBuilder( + future: controller.getAccountAddressAndBalance( + istokenBalance: false), + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.hasData) { + double amount = + snapshot.data!.getValueInUnit(EtherUnit.ether); + if (amount == 0.0) { + return Text( + '$amount ${controller.currentTickerSymbol}', + style: const TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ); + } else { + return Text( + '${amount.toStringAsFixed(3)} ${controller.currentTickerSymbol}', + style: const TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ); + } + } else { + return Text( + '0.0 ${controller.currentTickerSymbol}', + style: const TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ); + } + }, + ), + height(10), + customTile( + trailing: CupertinoSwitch( + value: controller.darkmode, + onChanged: (value) { + Get.changeThemeMode(Get.isDarkMode + ? ThemeMode.light + : ThemeMode.dark); + controller.darkmode = Get.isDarkMode ? false : true; + box.put('isDarkMode', controller.darkmode); + controller.update(); + }), + text: "Dark Mode", + ), + customTile( + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + if (controller.accountAddress != null) + Text( + controller.accountAddress + .toString() + .substring(0, 6), + style: const TextStyle( + fontSize: 12, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis), + const Icon(Icons.arrow_forward_ios, size: 18), + ], + ), + leading: const Icon( + Icons.account_balance_wallet_outlined, + color: Colors.green, + ), + text: "My Wallet", + ontap: () { + Get.toNamed("/myWalletScreen"); + }, + ), + height(10), + const Align( + alignment: Alignment.centerLeft, + child: Text( + "GENERAL", + style: TextStyle(fontSize: 10, color: grey), + ), + ), + height(10), + customTile( + trailing: const Icon(Icons.arrow_forward_ios, size: 20), + leading: const Icon(Icons.network_wifi_2_bar_sharp, + color: Colors.blueGrey), + text: "Select Networks", + subtitle: Text(controller.getCurrentNetwork), + ontap: () { + networkSelect(context, controller); + }, + ), + customTile( + trailing: const Icon(Icons.arrow_forward_ios, size: 20), + leading: const Icon(Icons.token, color: midnightBlue), + text: "Add Tokens", + ontap: () { + Get.toNamed("/addTokenScreen", arguments: false); + }, + ), + height(10), + const Align( + alignment: Alignment.centerLeft, + child: Text( + "SECURITY", + style: TextStyle(fontSize: 10, color: grey), + ), + ), + height(10), + customTile( + trailing: const Icon(Icons.arrow_forward_ios, size: 20), + leading: const Icon( + Icons.select_all, + color: Colors.brown, + ), + text: "Reveal Seed Phrase", + ontap: () { + + checkLock(true, + splash: false, + navigation: Get.to(() => const GenerateSeedPhrase( + view: true, + ))); + }, + ), + customTile( + trailing: const Icon(Icons.arrow_forward_ios, size: 20), + leading: const Icon( + Icons.lock, + color: Colors.teal, + ), + text: "Reset PIN", + ontap: () { + Get.to(() => const ResetPasswordScreen()); + }, + ), + GetBuilder( + init: AuthController(), + builder: (authcontroller) { + return customTile( + trailing: CupertinoSwitch( + value: authcontroller.isFingerprintOn, + onChanged: (value) async { + final auth = LocalAuthentication(); + bool d = await auth.isDeviceSupported(); + if (d) { + Get.showSnackbar(const GetSnackBar( + duration: Duration(seconds: 2), + backgroundColor: Colors.red, + title: + "Device is not capable of checking biometrics", + messageText: Text( + ".", + style: TextStyle(fontSize: 1), + ), + )); + } else { + authcontroller.toggleFingerprint(value); + } + }), + text: "Fingerprint Unlock", + ontap: () {}, + ); + }), + height(10), + const Align( + alignment: Alignment.centerLeft, + child: Text( + "SUPPORT", + style: TextStyle(fontSize: 10, color: grey), + ), + ), + height(10), + customTile( + trailing: const Icon(Icons.arrow_forward_ios, size: 20), + leading: const Icon( + Icons.info_outline, + color: blue, + ), + text: "About wallet", + ontap: () => Get.toNamed("/aboutWalletScreen"), + ), + height(10), + const Align( + alignment: Alignment.centerLeft, + child: Text( + "WE'LL MISS YOU", + style: TextStyle(fontSize: 10, color: grey), + ), + ), + height(10), + customTile( + trailing: const Icon(Icons.arrow_forward_ios, size: 20), + leading: const Icon( + Icons.logout, + color: Colors.red, + ), + text: "Delete Account", + ontap: () async { + showDialog( + context: context, + builder: (BuildContext context) { + return CupertinoAlertDialog( + title: const Text("Delete Account"), + content: const Text( + "Are you sure you want to delete your account?"), + actions: [ + CupertinoDialogAction( + child: const Text( + "No", + style: TextStyle(color: Colors.green), + ), + onPressed: () { + Get.back(); + }, + ), + CupertinoDialogAction( + onPressed: () async { + final storage = SecureStorage(); + await storage.deleteAllStoredValues(); + // await Hive.deleteFromDisk(); + // box.erase(); + Get.toNamed("/introductionScreen"); + }, + child: const Text( + "Yes", + style: TextStyle(color: Colors.red), + )), + ], + ); + }, + ); + }, + ), + height(10), + const Text( + "Wallet", + style: TextStyle( + fontSize: 18, + color: grey, + ), + ), + const Text( + "Copyright © wallet 2022", + style: TextStyle( + fontSize: 12, + color: grey, + ), + ), + ], + ), + ), + ); + }), + ); + } + + Container customTile( + {required String text, + Function()? ontap, + Widget? leading, + Widget? subtitle, + Widget? trailing}) { + return Container( + decoration: BoxDecoration( + border: Border.all(color: grey), + borderRadius: BorderRadius.circular(10), + ), + margin: const EdgeInsets.symmetric(vertical: 10), + child: ListTile( + onTap: ontap, + dense: true, + leading: leading, + trailing: trailing, + title: Text(text), + subtitle: subtitle, + ), + ); + } +} diff --git a/lib/view/widgets/common.dart b/lib/view/widgets/common.dart new file mode 100644 index 0000000..08fa39f --- /dev/null +++ b/lib/view/widgets/common.dart @@ -0,0 +1,155 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:lottie/lottie.dart'; +import 'package:wallet/utils/theme.dart'; +import 'package:wallet/utils/secure_storage.dart'; +import 'package:wallet/view/Home/home_ctr.dart'; +import 'package:wallet/view/Authentication/auth_controller.dart'; +import 'package:wallet/view/Authentication/lock_screen.dart'; + +height(double height) => SizedBox(height: height); +width(double width) => SizedBox(width: width); + +void checkLock(bool check, {required bool splash, navigation}) async { + final storage = SecureStorage(); + AuthController authController = Get.put(AuthController()); + await storage.getStoredValue('PIN').then((value) async { + if (value != null) { + if (authController.isFingerprintOn && navigation == null) { + final isAuthenticated = await LocalAuthApi.authenticate(); + if (isAuthenticated) { + check ? null : Get.offAllNamed("/dashboard"); + } else { + authController.checkFingerprint(splash); + } + } else { + if (navigation != null) { + Get.to(() => LockScreen( + createPIN: false, splash: splash, navigation: navigation)); + } else { + Get.to(() => LockScreen(createPIN: false, splash: splash)); + } + } + } else { + Get.offAllNamed("/introductionScreen"); + } + }); +} + +Future networkSelect(BuildContext context, HomeController controller) { + return showDialog( + context: context, + builder: (context) { + return CupertinoAlertDialog( + title: const Text("Select Network"), + content: Material( + color: Colors.transparent, + child: Column( + children: [ + height(20), + SizedBox( + height: 300, + child: ListView.builder( + shrinkWrap: true, + itemCount: controller.networks.length, + itemBuilder: (context, index) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + ListTile( + title: Text(controller.networks[index]), + dense: true, + trailing: controller.getCurrentNetwork == + controller.networks[index] + ? const Icon(Icons.check) + : null, + onTap: () { + controller.setCurrentNetwork( + controller.networks[index].toString()); + Get.back(); + controller.update(); + }, + ), + const Divider(), + ], + ); + }, + ), + ), + ], + ), + ) + // Row( + // mainAxisAlignment: MainAxisAlignment.center, + // children: [ + // Expanded( + // child: TextButton( + // onPressed: () => Navigator.of(context).pop(), + // child: Container( + // height: 48, + // alignment: Alignment.center, + // decoration: const BoxDecoration( + // color: appcolor, + // borderRadius: BorderRadius.only( + // bottomLeft: Radius.circular(8), + // bottomRight: Radius.circular(8), + // ), + // ), + // child: Text( + // 'CLOSE', + // style: Theme.of(context) + // .textTheme + // .headline4! + // .copyWith(fontSize: 15, color: Colors.white), + // ), + // ), + // ), + // ), + // ], + // ), + ); + }, + ); +} + +class NoData extends StatelessWidget { + const NoData({ + Key? key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Lottie.asset("assets/lottiefiles/nodata.json", height: 110), + ], + )); + } +} + +class CustomButton extends StatelessWidget { + final Function() onTap; + final String title; + const CustomButton({Key? key, required this.onTap, required this.title}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: onTap, + child: Container( + padding: const EdgeInsets.symmetric(vertical: 15), + alignment: Alignment.center, + decoration: BoxDecoration( + color: appcolor, borderRadius: BorderRadius.circular(10)), + child: Text( + title, + style: const TextStyle(color: white, fontWeight: FontWeight.bold), + ), + ), + ); + } +} diff --git a/lib/web3dart/abi.dart b/lib/web3dart/abi.dart new file mode 100644 index 0000000..e1f4b4b --- /dev/null +++ b/lib/web3dart/abi.dart @@ -0,0 +1,207 @@ +import 'dart:convert'; + +class ABI { + static String get(String name) { + List> abi; + switch (name) { + case "BasicToken": + abi = [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + {"internalType": "address", "name": "owner", "type": "address"}, + {"internalType": "address", "name": "spender", "type": "address"} + ], + "name": "allowance", + "outputs": [ + {"internalType": "uint256", "name": "", "type": "uint256"} + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + {"internalType": "address", "name": "spender", "type": "address"}, + {"internalType": "uint256", "name": "amount", "type": "uint256"} + ], + "name": "approve", + "outputs": [ + {"internalType": "bool", "name": "", "type": "bool"} + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + {"internalType": "address", "name": "account", "type": "address"} + ], + "name": "balanceOf", + "outputs": [ + {"internalType": "uint256", "name": "", "type": "uint256"} + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + {"internalType": "uint8", "name": "", "type": "uint8"} + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + {"internalType": "address", "name": "spender", "type": "address"}, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + {"internalType": "bool", "name": "", "type": "bool"} + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + {"internalType": "address", "name": "spender", "type": "address"}, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + {"internalType": "bool", "name": "", "type": "bool"} + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + {"internalType": "string", "name": "", "type": "string"} + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + {"internalType": "string", "name": "", "type": "string"} + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + {"internalType": "uint256", "name": "", "type": "uint256"} + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + {"internalType": "uint256", "name": "amount", "type": "uint256"} + ], + "name": "transfer", + "outputs": [ + {"internalType": "bool", "name": "", "type": "bool"} + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + {"internalType": "address", "name": "sender", "type": "address"}, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + {"internalType": "uint256", "name": "amount", "type": "uint256"} + ], + "name": "transferFrom", + "outputs": [ + {"internalType": "bool", "name": "", "type": "bool"} + ], + "stateMutability": "nonpayable", + "type": "function" + } + ]; + break; + default: + throw 'ABI does not exists for $name'; + } + return jsonEncode(abi); + } +} diff --git a/lib/web3dart/models/api.dart b/lib/web3dart/models/api.dart new file mode 100644 index 0000000..42146ba --- /dev/null +++ b/lib/web3dart/models/api.dart @@ -0,0 +1,19 @@ +import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +// ignore: depend_on_referenced_packages +import 'package:http/http.dart'; + +abstract class Api { + Map responseHandler(Response response) { + debugPrint('response: ${response.statusCode}, ${response.reasonPhrase}'); + switch (response.statusCode) { + case 200: + Map obj = json.decode(response.body); + return obj; + case 401: + throw 'Error! Unauthorized'; + default: + throw 'Error! status: ${response.statusCode}, reason: ${response.reasonPhrase}'; + } + } +} diff --git a/lib/web3dart/web3dart.dart b/lib/web3dart/web3dart.dart new file mode 100644 index 0000000..b00b93f --- /dev/null +++ b/lib/web3dart/web3dart.dart @@ -0,0 +1,329 @@ +// ignore_for_file: depend_on_referenced_packages, deprecated_member_use +import 'dart:math'; +import 'dart:convert'; +import 'package:decimal/decimal.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; +import 'package:wallet/view/Home/home_ctr.dart'; +import 'package:web3dart/json_rpc.dart'; +import 'package:web3dart/web3dart.dart'; +import 'package:bip32/bip32.dart' as bip32; +import 'package:bip39/bip39.dart' as bip39; +import 'package:hex/hex.dart'; +import 'dart:async'; +import 'package:http/http.dart'; +import 'package:flutter_dotenv/flutter_dotenv.dart'; + +class Web3 { + late Credentials _credentials; + late Web3Client _client; + late Future _approveCb; + late int _networkId; + Web3( + Future Function() approveCb, { + String? url, + int? networkId, + String? defaultCommunityAddress, + String? communityManagerAddress, + String? transferManagerAddress, + String? daiPointsManagerAddress, + int? defaultGasLimit, + }) { + _client = Web3Client(getCurrentNetworkData['rpc_url'], Client()); + _networkId = networkId ?? getCurrentNetworkData['network_id']; + _approveCb = approveCb(); + } + + static Map get getCurrentNetworkData { + HomeController homeController = HomeController(); + switch (homeController.getCurrentNetwork) { + case 'Ethereum Mainnet': + return { + 'rpc_url': dotenv.env["Ethereum_Mainnet"], + 'network_id': 1, + 'logo_path': 'assets/images/ethereum_logo.png', + 'symbol': 'ETH', + }; + case 'Ropsten Testnet': + return { + 'rpc_url': dotenv.env["Ropsten_Testnet"], + 'network_id': 3, + 'logo_path': 'assets/images/ethereum_logo.png', + 'symbol': 'ETH', + }; + case 'Rinkeby Testnet': + return { + 'rpc_url': dotenv.env["Rinkeby_Testnet"], + 'network_id': 4, + 'logo_path': 'assets/images/ethereum_logo.png', + 'symbol': 'ETH', + }; + case 'Coerli Testnet': + return { + 'rpc_url': dotenv.env["Coerli_Testnet"], + 'network_id': 5, + 'logo_path': 'assets/images/ethereum_logo.png', + 'symbol': 'ETH', + }; + case 'Kovan Testnet': + return { + 'rpc_url': dotenv.env["Kovan_Testnet"], + 'network_id': 42, + 'logo_path': 'assets/images/ethereum_logo.png', + 'symbol': 'ETH', + }; + case 'Matic Mainnet': + return { + 'rpc_url': dotenv.env["Matic_Mainnet"], + 'network_id': 137, + 'logo_path': 'assets/images/matic_logo.png', + 'symbol': 'MATIC', + }; + case 'Mumbai Testnet': + return { + 'rpc_url': dotenv.env["Mumbai_Testnet"], + 'network_id': 80001, + 'logo_path': 'assets/images/matic_logo.png', + 'symbol': 'MATIC', + }; + case 'Binance Mainnet': + return { + 'rpc_url': 'https://bsc-dataseed.binance.org/', + 'network_id': 65, + 'logo_path': 'assets/images/Binance-Icon-Logo.png', + 'symbol': 'BNB', + }; + default: + return { + 'rpc_url': dotenv.env["Default_rpc_url"], + 'network_id': 56, + 'logo_path': 'assets/images/ethereum_logo.png', + 'symbol': 'ETH', + }; + } + } + + static String privateKeyFromMnemonic(String mnemonic, {int childIndex = 0}) { + String seed = bip39.mnemonicToSeedHex(mnemonic); + bip32.BIP32 root = + bip32.BIP32.fromSeed(Uint8List.fromList(HEX.decode(seed))); + bip32.BIP32 child = root.derivePath("m/44'/60'/0'/0/$childIndex"); + String privateKey = HEX.encode(child.privateKey!.toList()); + return privateKey; + } + + Future setCredentials(String privateKey) async { + _credentials = await _client.credentialsFromPrivateKey(privateKey); + } + + Future getAddress() async { + return (await _credentials.extractAddress()).toString(); + } + + Future getBalance({String? address}) async { + EthereumAddress a; + if (address != null && address.isNotEmpty) { + a = EthereumAddress.fromHex(address); + } else { + a = EthereumAddress.fromHex(await getAddress()); + } + + return await _client.getBalance(a); + } + + Future> transfer( + amountController, + accountController, + String receiverAddress, + num amountInWei, + String senderAddress) async { + debugPrint( + 'transferring --> receiver: $receiverAddress, sender: $senderAddress amountInWei: $amountInWei'); + + bool isApproved = await _approveCb; + if (!isApproved) { + throw 'transaction not approved'; + } + try { + EthereumAddress receiver = EthereumAddress.fromHex(receiverAddress); + EthereumAddress sender = EthereumAddress.fromHex(senderAddress); + EtherAmount amount = + EtherAmount.fromUnitAndValue(EtherUnit.wei, BigInt.from(amountInWei)); + + Map transactionMap = + await _sendTransactionAndWaitForReceipt(Transaction( + to: receiver, + value: amount, + from: sender, + maxGas: 100000, + )); + debugPrint('transaction ${transactionMap.keys} successful'); + return transactionMap; + } on RPCError { + Get.snackbar("insufficient funds", "Add some amount"); + amountController.clear(); + accountController.clear(); + throw "insufficient funds"; + } catch (e) { + Get.snackbar(e.toString(), ""); + throw e.toString(); + } + } + + Future> _sendTransactionAndWaitForReceipt( + Transaction transaction) async { + debugPrint('sendTransactionAndWaitForReceipt'); + String txHash = await _client.sendTransaction( + _credentials, + transaction, + chainId: _networkId, + ); + TransactionReceipt? receipt; + try { + receipt = await _client.getTransactionReceipt(txHash); + } catch (err) { + debugPrint('could not get $txHash receipt, try again'); + } + debugPrint('Receipt ==> $receipt'); + int delay = 1; + int retries = 10; + while (receipt == null) { + debugPrint('waiting for receipt'); + await Future.delayed(Duration(seconds: delay)); + delay *= 2; + retries--; + if (retries == 0) { + throw 'transaction $txHash not mined yet...'; + } + try { + receipt = await _client.getTransactionReceipt(txHash); + } catch (err) { + debugPrint('could not get $txHash receipt, try again'); + } + } + debugPrint('Transaction successful Status => ${receipt.status}'); + return {txHash: receipt}; + } + + Future _contract( + String contractName, String contractAddress) async { + String abi = await rootBundle.loadString('assets/abi.json'); + DeployedContract contract = DeployedContract( + ContractAbi.fromJson(abi, contractName), + EthereumAddress.fromHex(contractAddress), + ); + return contract; + } + + Future> _readFromContract(String contractName, + String contractAddress, String functionName, List params) async { + DeployedContract contract = await _contract(contractName, contractAddress); + return await _client.call( + contract: contract, + function: contract.function(functionName), + params: params); + } + + Future _callContract(String contractName, String contractAddress, + String functionName, List params) async { + bool isApproved = await _approveCb; + if (!isApproved) { + throw 'transaction not approved'; + } + DeployedContract contract = await _contract(contractName, contractAddress); + Transaction tx = Transaction.callContract( + contract: contract, + function: contract.function(functionName), + parameters: params); + Map map = + await _sendTransactionAndWaitForReceipt(tx); + return map.keys.first; + } + + Future getTokenName(String tokenAddress) async { + try { + return { + (await _readFromContract('BasicToken', tokenAddress, 'name', [])).first, + }; + } catch (e) { + debugPrint(e.toString()); + rethrow; + } + } + + Future getTokenSymbol(String tokenAddress) async { + try { + return { + (await _readFromContract('BasicToken', tokenAddress, 'symbol', [])) + .first, + }; + } catch (e) { + debugPrint(e.toString()); + rethrow; + } + } + + Future getImageFromToken( + {required int token, required String address}) async { + List result = await _readFromContract( + 'BasicToken', address, 'tokenURI', [BigInt.from(token)]); + String json = result[0]; + String url = json + .toString() + .replaceFirst(r'ipfs://', r'https://nftstorage.link/ipfs/'); + var resp = await Client().get(Uri.parse(url)); + var decodeRes = jsonDecode(resp.body); + return decodeRes; + } + + Future getTokenDecimals(String tokenAddress) async { + try { + return { + (await _readFromContract('BasicToken', tokenAddress, 'decimals', [])) + .first + }; + } catch (e) { + debugPrint(e.toString()); + rethrow; + } + } + + Future getTokenDetails(String tokenAddress) async { + return { + "name": (await _readFromContract('BasicToken', tokenAddress, 'name', [])) + .first, + "symbol": + (await _readFromContract('BasicToken', tokenAddress, 'symbol', [])) + .first, + "decimals": + (await _readFromContract('BasicToken', tokenAddress, 'decimals', [])) + .first + }; + } + + Future getTokenBalance(String tokenAddress, + {String? address}) async { + List params = []; + if (address != null && address != "") { + params = [EthereumAddress.fromHex(address)]; + } else { + params = [EthereumAddress.fromHex(await getAddress())]; + } + return (await _readFromContract( + 'BasicToken', tokenAddress, 'balanceOf', params)) + .first; + } + + Future tokenTransfer( + String tokenAddress, String receiverAddress, num tokensAmount) async { + EthereumAddress receiver = EthereumAddress.fromHex(receiverAddress); + dynamic tokenDetails = await getTokenDetails(tokenAddress); + int tokenDecimals = int.parse(tokenDetails["decimals"].toString()); + Decimal tokensAmountDecimal = Decimal.parse(tokensAmount.toString()); + Decimal decimals = Decimal.parse(pow(10, tokenDecimals).toString()); + BigInt amount = BigInt.parse((tokensAmountDecimal * decimals).toString()); + return await _callContract( + 'BasicToken', tokenAddress, 'transfer', [receiver, amount]); + } +} diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 0000000..f53cf0f --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,101 @@ +name: wallet +description: A new Flutter project. + +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +# In Windows, build-name is used as the major, minor, and patch parts +# of the product and file versions while build-number is used as the build suffix. +version: 1.0.0+1 + +environment: + sdk: '>=2.18.5 <3.0.0' + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + flutter: + sdk: flutter + + cupertino_icons: ^1.0.2 + # web3dart: ^2.5.1 + web3dart: ^2.1.3 + animations: ^2.0.7 + local_auth: ^2.1.2 + get: ^4.6.5 + flutter_dotenv: ^5.0.2 + get_storage: ^2.0.3 + concentric_transition: ^1.0.3 + lottie: ^2.0.0 + permission_handler: ^10.2.0 + qrscan: ^0.3.3 + bip32: ^2.0.0 + bip39: ^1.0.6 + decimal: ^2.3.1 + qr_flutter: ^4.0.0 + hive: ^2.2.3 + flutter_secure_storage: ^4.2.1 + hive_flutter: ^1.1.0 + modal_bottom_sheet: ^2.1.2 + flutter_share: ^2.0.0 + flutter_markdown: ^0.6.13 + +dev_dependencies: + flutter_test: + + sdk: flutter + build_runner: ^2.0.4 + hive_generator: ^2.0.0 + flutter_lints: ^2.0.0 + +# The following section is specific to Flutter packages. +flutter: + + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + assets: + - assets/ + - assets/images/ + - assets/lottiefiles/ + - .env + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/assets-and-images/#from-packages + + # To add custom fonts to your application, 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: Baskerville + fonts: + - asset: assets/fonts/LibreBaskerville-Bold.ttf + - asset: assets/fonts/LibreBaskerville-Regular.ttf + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/custom-fonts/#from-packages diff --git a/test/widget_test.dart b/test/widget_test.dart new file mode 100644 index 0000000..934aea6 --- /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 'package:wallet/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..8aaa46a 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..b749bfe 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..88cfd48 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..eb9b4d7 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..d69c566 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..c993b94 --- /dev/null +++ b/web/index.html @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + lazarus + + + + + + + + + + diff --git a/web/manifest.json b/web/manifest.json new file mode 100644 index 0000000..0f7ef57 --- /dev/null +++ b/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "lazarus", + "short_name": "lazarus", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "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" + } + ] +}